put installed app on top after refresh

This commit is contained in:
Vinicius Moreira
2019-08-27 18:39:53 -03:00
parent 82145a35a3
commit e508e3a345
2 changed files with 24 additions and 4 deletions

View File

@@ -92,12 +92,28 @@ class UpdateSelectedApps(AsyncAction):
class RefreshApps(AsyncAction):
def __init__(self, manager: ApplicationManager):
def __init__(self, manager: ApplicationManager, app: ApplicationView = None):
super(RefreshApps, self).__init__()
self.manager = manager
self.app = app # app that should be on list top
def run(self):
self.notify_finished(self.manager.read_installed())
installed = self.manager.read_installed()
if installed and self.app:
idx_found, app_found = None, None
for idx, ins in enumerate(installed):
if ins.get_type() == self.app.model.get_type() and ins.base_data.id == self.app.model.base_data.id:
idx_found = idx
app_found = ins
break
if app_found:
del installed[idx_found]
installed.insert(0, app_found)
self.notify_finished(installed)
self.app = None
class UninstallApp(AsyncAction):

View File

@@ -299,7 +299,7 @@ class ManageWindow(QWidget):
self.checkbox_console.setChecked(False)
self.textarea_output.hide()
def refresh_apps(self, keep_console: bool = True):
def refresh_apps(self, keep_console: bool = True, top_app: ApplicationView = None):
self.filter_types.clear()
self.input_search.clear()
@@ -309,6 +309,10 @@ class ManageWindow(QWidget):
self.ref_checkbox_updates.setVisible(False)
self.ref_checkbox_only_apps.setVisible(False)
self._begin_action(self.locale_keys['manage_window.status.refreshing'], clear_filters=True)
if top_app:
self.thread_refresh.app = top_app # the app will be on top when refresh happens
self.thread_refresh.start()
def _finish_refresh_apps(self, apps: List[Application]):
@@ -736,7 +740,7 @@ class ManageWindow(QWidget):
if self._can_notify_user():
util.notify_user(msg='{} ({}) {}'.format(app.model.base_data.name, app.model.get_type(), self.locale_keys['installed']))
self.refresh_apps()
self.refresh_apps(top_app=app)
else:
if self._can_notify_user():
util.notify_user('{}: {}'.format(app.model.base_data.name, self.locale_keys['notification.install.failed']))