mirror of https://github.com/borgbase/vorta
Ignore case when sorting the profile list
This commit is contained in:
parent
de6f018edd
commit
27ba337097
|
@ -59,10 +59,10 @@ class TrayMenu(QSystemTrayIcon):
|
||||||
cancel_action.triggered.connect(self.app.backup_cancelled_event.emit)
|
cancel_action.triggered.connect(self.app.backup_cancelled_event.emit)
|
||||||
else:
|
else:
|
||||||
status.setText(self.tr('Next Task: %s') % next_task_time)
|
status.setText(self.tr('Next Task: %s') % next_task_time)
|
||||||
profiles = BackupProfileModel.select().order_by(BackupProfileModel.name)
|
profiles = BackupProfileModel.select()
|
||||||
if profiles.count() > 1:
|
if profiles.count() > 1:
|
||||||
profile_menu = menu.addMenu(self.tr('Backup Now'))
|
profile_menu = menu.addMenu(self.tr('Backup Now'))
|
||||||
for profile in profiles:
|
for profile in sorted(profiles, key=lambda p: (p.name.casefold(), p.name)):
|
||||||
new_item = profile_menu.addAction(profile.name)
|
new_item = profile_menu.addAction(profile.name)
|
||||||
new_item.triggered.connect(lambda state, i=profile.id: self.app.create_backup_action(i))
|
new_item.triggered.connect(lambda state, i=profile.id: self.app.create_backup_action(i))
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -65,7 +65,8 @@ class MainWindow(MainWindowBase, MainWindowUI):
|
||||||
prev_profile_id = SettingsModel.get(key='previous_profile_id')
|
prev_profile_id = SettingsModel.get(key='previous_profile_id')
|
||||||
self.current_profile = BackupProfileModel.get_or_none(id=prev_profile_id.str_value)
|
self.current_profile = BackupProfileModel.get_or_none(id=prev_profile_id.str_value)
|
||||||
if self.current_profile is None:
|
if self.current_profile is None:
|
||||||
self.current_profile = BackupProfileModel.select().order_by('name').first()
|
profiles = BackupProfileModel.select()
|
||||||
|
self.current_profile = min(profiles, key=lambda p: (p.name.casefold(), p.name))
|
||||||
|
|
||||||
# Load tab models
|
# Load tab models
|
||||||
self.repoTab = RepoTab(self.repoTabSlot)
|
self.repoTab = RepoTab(self.repoTabSlot)
|
||||||
|
@ -161,7 +162,8 @@ class MainWindow(MainWindowBase, MainWindowUI):
|
||||||
current_item = None
|
current_item = None
|
||||||
|
|
||||||
# Add items to the QListWidget
|
# Add items to the QListWidget
|
||||||
for profile in BackupProfileModel.select().order_by(BackupProfileModel.name):
|
profiles = BackupProfileModel.select()
|
||||||
|
for profile in sorted(profiles, key=lambda p: (p.name.casefold(), p.name)):
|
||||||
item = QListWidgetItem(profile.name)
|
item = QListWidgetItem(profile.name)
|
||||||
item.setData(Qt.ItemDataRole.UserRole, profile.id)
|
item.setData(Qt.ItemDataRole.UserRole, profile.id)
|
||||||
|
|
||||||
|
@ -291,9 +293,13 @@ class MainWindow(MainWindowBase, MainWindowUI):
|
||||||
profile = QListWidgetItem(profile_name)
|
profile = QListWidgetItem(profile_name)
|
||||||
profile.setData(Qt.ItemDataRole.UserRole, profile_id)
|
profile.setData(Qt.ItemDataRole.UserRole, profile_id)
|
||||||
# Insert the profile at the correct position
|
# Insert the profile at the correct position
|
||||||
row = len(
|
# Both the casefolded and the original name are used as the key to keep the order stable
|
||||||
[i for i in range(self.profileSelector.count()) if self.profileSelector.item(i).text() < profile.text()]
|
profile_key = (profile.text().casefold(), profile.text())
|
||||||
)
|
row = 0
|
||||||
|
for i in range(self.profileSelector.count()):
|
||||||
|
item_name = self.profileSelector.item(i).text()
|
||||||
|
if (item_name.casefold(), item_name) < profile_key:
|
||||||
|
row += 1
|
||||||
self.profileSelector.insertItem(row, profile)
|
self.profileSelector.insertItem(row, profile)
|
||||||
self.profileSelector.setCurrentItem(profile)
|
self.profileSelector.setCurrentItem(profile)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue