Auto-load next batch with searched-for text in Marketplace.

part of CURA-8559
This commit is contained in:
Remco Burema 2021-11-12 15:20:46 +01:00
parent 79f7724923
commit 44242dcd02
No known key found for this signature in database
GPG key ID: 215C49431D43F98C

View file

@ -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: