mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-10 16:27:51 -06:00
Auto-load next batch with searched-for text in Marketplace.
part of CURA-8559
This commit is contained in:
parent
79f7724923
commit
44242dcd02
1 changed files with 17 additions and 10 deletions
|
@ -32,8 +32,10 @@ class RemotePackageList(PackageList):
|
|||
self._scope = JsonDecoratorScope(UltimakerCloudScope(CuraApplication.getInstance()))
|
||||
|
||||
self._package_type_filter = ""
|
||||
self._search_string = ""
|
||||
self._requested_search_string = ""
|
||||
self._current_search_string = ""
|
||||
self._request_url = self._initialRequestUrl()
|
||||
self.isLoadingChanged.connect(self._onLoadingChanged)
|
||||
self.isLoadingChanged.emit()
|
||||
|
||||
def __del__(self) -> None:
|
||||
|
@ -79,10 +81,8 @@ class RemotePackageList(PackageList):
|
|||
self.packageTypeFilterChanged.emit()
|
||||
|
||||
def setSearchString(self, new_search: str) -> None:
|
||||
if new_search != self._search_string:
|
||||
self._search_string = new_search
|
||||
self.reset()
|
||||
self.searchStringChanged.emit()
|
||||
self._requested_search_string = new_search
|
||||
self._onLoadingChanged()
|
||||
|
||||
@pyqtProperty(str, fset = setPackageTypeFilter, notify = packageTypeFilterChanged)
|
||||
def packageTypeFilter(self) -> str:
|
||||
|
@ -95,11 +95,18 @@ class RemotePackageList(PackageList):
|
|||
@pyqtProperty(str, fset = setSearchString, notify = searchStringChanged)
|
||||
def searchString(self) -> str:
|
||||
"""
|
||||
Get the string the user is currently searching for within the packages, or an empty string if no extra search
|
||||
filter has to be applied. Does not override package-type filter!
|
||||
Get the string the user is currently searching for (as in: the list is updating) within the packages,
|
||||
or an empty string if no extra search filter has to be applied. Does not override package-type filter!
|
||||
:return: String the user is searching for. Empty denotes 'no search filter'.
|
||||
"""
|
||||
return self._search_string
|
||||
return self._current_search_string
|
||||
|
||||
def _onLoadingChanged(self) -> None:
|
||||
if self._requested_search_string != self._current_search_string and not self._is_loading:
|
||||
self._current_search_string = self._requested_search_string
|
||||
self.reset()
|
||||
self.updatePackages()
|
||||
self.searchStringChanged.emit()
|
||||
|
||||
def _initialRequestUrl(self) -> str:
|
||||
"""
|
||||
|
@ -109,8 +116,8 @@ class RemotePackageList(PackageList):
|
|||
request_url = f"{Marketplace.PACKAGES_URL}?limit={self.ITEMS_PER_PAGE}"
|
||||
if self._package_type_filter != "":
|
||||
request_url += f"&package_type={self._package_type_filter}"
|
||||
if self._search_string != "":
|
||||
request_url += f"&search={self._search_string}"
|
||||
if self._current_search_string != "":
|
||||
request_url += f"&search={self._current_search_string}"
|
||||
return request_url
|
||||
|
||||
def _parseResponse(self, reply: "QNetworkReply") -> None:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue