mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-11 00:37:50 -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._scope = JsonDecoratorScope(UltimakerCloudScope(CuraApplication.getInstance()))
|
||||||
|
|
||||||
self._package_type_filter = ""
|
self._package_type_filter = ""
|
||||||
self._search_string = ""
|
self._requested_search_string = ""
|
||||||
|
self._current_search_string = ""
|
||||||
self._request_url = self._initialRequestUrl()
|
self._request_url = self._initialRequestUrl()
|
||||||
|
self.isLoadingChanged.connect(self._onLoadingChanged)
|
||||||
self.isLoadingChanged.emit()
|
self.isLoadingChanged.emit()
|
||||||
|
|
||||||
def __del__(self) -> None:
|
def __del__(self) -> None:
|
||||||
|
@ -79,10 +81,8 @@ class RemotePackageList(PackageList):
|
||||||
self.packageTypeFilterChanged.emit()
|
self.packageTypeFilterChanged.emit()
|
||||||
|
|
||||||
def setSearchString(self, new_search: str) -> None:
|
def setSearchString(self, new_search: str) -> None:
|
||||||
if new_search != self._search_string:
|
self._requested_search_string = new_search
|
||||||
self._search_string = new_search
|
self._onLoadingChanged()
|
||||||
self.reset()
|
|
||||||
self.searchStringChanged.emit()
|
|
||||||
|
|
||||||
@pyqtProperty(str, fset = setPackageTypeFilter, notify = packageTypeFilterChanged)
|
@pyqtProperty(str, fset = setPackageTypeFilter, notify = packageTypeFilterChanged)
|
||||||
def packageTypeFilter(self) -> str:
|
def packageTypeFilter(self) -> str:
|
||||||
|
@ -95,11 +95,18 @@ class RemotePackageList(PackageList):
|
||||||
@pyqtProperty(str, fset = setSearchString, notify = searchStringChanged)
|
@pyqtProperty(str, fset = setSearchString, notify = searchStringChanged)
|
||||||
def searchString(self) -> str:
|
def searchString(self) -> str:
|
||||||
"""
|
"""
|
||||||
Get the string the user is currently searching for within the packages, or an empty string if no extra search
|
Get the string the user is currently searching for (as in: the list is updating) within the packages,
|
||||||
filter has to be applied. Does not override package-type filter!
|
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: 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:
|
def _initialRequestUrl(self) -> str:
|
||||||
"""
|
"""
|
||||||
|
@ -109,8 +116,8 @@ class RemotePackageList(PackageList):
|
||||||
request_url = f"{Marketplace.PACKAGES_URL}?limit={self.ITEMS_PER_PAGE}"
|
request_url = f"{Marketplace.PACKAGES_URL}?limit={self.ITEMS_PER_PAGE}"
|
||||||
if self._package_type_filter != "":
|
if self._package_type_filter != "":
|
||||||
request_url += f"&package_type={self._package_type_filter}"
|
request_url += f"&package_type={self._package_type_filter}"
|
||||||
if self._search_string != "":
|
if self._current_search_string != "":
|
||||||
request_url += f"&search={self._search_string}"
|
request_url += f"&search={self._current_search_string}"
|
||||||
return request_url
|
return request_url
|
||||||
|
|
||||||
def _parseResponse(self, reply: "QNetworkReply") -> None:
|
def _parseResponse(self, reply: "QNetworkReply") -> None:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue