When the `_onGetProjectsFirstPageFinished` is reached, the pagination manager already contains the correct pagination metadata and links, so calling `clear()` there resets them giving the impression that there is no next page.
This commit fixed that by calling the `clear()` function should when the search filter is applied, instead.
CURA-8009
When checking whether the user is allowed to create a new library project, we need to retrieve the **private** (aka non-shared) projects that are linked to the user's account. If the user has reached the maximum private projects, then they are no longer allowed to create new ones.
**Note**: We need to set the `pagination_manager` to `None` when doing this get request, or else the next/previous links of the pagination will become mixed up with the pagination links of the list of projects shown to the user, corrupting them and creating the wrong "get more projects" link.
CURA-8112
When the tooltip text is too long and the tooltip width ends up being longer than the window it is supposed to be drawn into, the tooltip is not drawn at all. This commit fixed that by allowing the tooltip width of the ActionButton to be changed within QML, limiting it to a certain size that fits the purpose.
CURA-8112
Instead of letting users go through the project creation process only to get rejected with a "subscription limits reached" message, now the "New Library project" button is being replaced with an "Upgrade plan" button when the maximum allowed projects have been reached for the specific amount. The button is accompanied by a tooltip that explains the situation to the user. Once clicked, the user is redirected to the subscriptions page.
CURA-8112
Instead of using the default of 5 pixels, we should use this element from the theme to match the margin around the page.
Contributes to issue CURA-8009.
Because this item is in a layout, the height gets overridden. We should use the preferredHeight, or the one it defaults to, implicitHeight.
Contributes to issue CURA-8009.
This adds an option to the TextField element to show an icon on the left side in the text field. The icon remains visible when the user types in something (it's not part of the placeholder string).
Then we use that optional icon for the search bar in the Digital Library.
Contributes to issue CURA-8009.
This is the standard style for text fields in Cura. The spacing around the search icon is customised with the best approximation I could get using a simple string of placeholderText.
Contributes to issue CURA-8009.
Most people should be able to type 5 characters per second. And those that can't will just have to see it refresh after every stroke.
Contributes to issue CURA-8009.
Otherwise when we refresh the project list after searching it would put the new results at the end. That's not what we want.
Contributes to issue CURA-8009.
This passes the filter on to the API call and causes the API call, so that we only get the projects that the user searched for.
Contributes to issue CURA-8009.
Seems to work fine.
The pyqtSignal is not technically necessary unless we display this filter in the interface anywhere. We don't currently. If the signal is not present it would complain about non-notifyable properties. And making it a slot instead of a signal seems a bit unintuitive to me in how the field is being used.
Contributes to issue CURA-8009.
This was a desire from the developer. It shouldn't be consistent with the printer selector. The margins being all the same is more important.
Contributes to issue CURA-8008.
Users with an account and an UM printer should have some basic access to the Digital Library. To this end, and to remain future proof, the online team has made an extension to its API so now feature budgets can be gauge. At the moment it's only checked wether the user has any access to personal projects at all. If so, the interface shows Digital Library functionality. Known issue: Removing the last printer from DF while still logged in leaves the DL access in the Cura interface until logged out or Cura restarted. Additionally, I think the response for a logged in user without any printer from the API is just 'data = empty list' instead of everything set to False and 0 (which should be the case as they're all listed as required fields in their docs ... maybe I'm missing something). In any case, the code as is now can handle that as well.
CURA-8138
It's quite different in detail because there is a lot less content to show here (no machine type, icons, etc), but the basics are the same now.
One possible issue is that the button doesn't extend all the way to the right, so you can't click everywhere on the shortest item. I'll see if that can still be fixed.
Contributes to issue CURA-8008.
The layout isn't quite there yet, but it mostly works and I want to have a save point to return to if I tinker too much.
Contributes to issue CURA-8008.
It was quite a hassle to allow the column to grow to the size of its contents. For some reason, things update the size to 0. And the size updates again once the pop-up actually gets opened for the first time, because then the column actually gets populated lazily.
Contributes to issue CURA-8008.
If there's just 1 provider, show the button. If there are multiple, show the menu. If there are 0, also show the button but disable the button.
The behaviour is not yet implemented though. It doesn't actually look at which providers are available and what they do.
Contributes to issue CURA-8008.
All of what we were about to implement is already implemented in ExpandablePopup. So let's re-use that one. That guarantees that it looks consistent too.
Contributes to issue CURA-8008.
This re-links the widths, heights and paddings such that we can later change the width of the button depending on its contents.
However there is a complication: Buttons automatically change the size of the contents based on the size of the button minus its padding. So making the size of the button in turn depend on its contents causes a binding loop.
To get around this binding loop, we need to manually calculate the size of the button, such that the size of the contents ends up exactly right.
Contributes to issue CURA-8008.
The new button should be consistent with the looks of the tool buttons. I've given it the same size as the inner part of the tool buttons, reworked the background so that it matches. I'm also giving it the 'secondary button' style which is also used for one other button. But that other detail button should get the same style anyway so that's fine too.
I've also turned this icon into an actual button. That way it can get focus when using keyboard navigation and works better with tools for blind and such.
Contributes to issue CURA-8202.
For some reason, the prepare menu is still one pixel too small. I think it's got to do with that one being a layout rather than a normal row.
Contributes to issue CURA-8202.
There are still some discrepancies (e.g. when the extruder is empty, the Preview tab just keeps it disabled and mentions "Generic PLA" while the Monitor tab shows it disabled by mentions "Empty" in the material. But we consider this acceptable for the time being, since it has been like that for a long time.
CURA-8011