summaryrefslogtreecommitdiff
path: root/tidal_dl_ng/dialog.py
diff options
context:
space:
mode:
Diffstat (limited to 'tidal_dl_ng/dialog.py')
-rw-r--r--tidal_dl_ng/dialog.py22
1 files changed, 19 insertions, 3 deletions
diff --git a/tidal_dl_ng/dialog.py b/tidal_dl_ng/dialog.py
index 6a2a8b7..2c01626 100644
--- a/tidal_dl_ng/dialog.py
+++ b/tidal_dl_ng/dialog.py
@@ -206,11 +206,20 @@ class DialogPreferences(QtWidgets.QDialog):
self.ui.lw_categories.addItem("Paths & Formats")
self.ui.lw_categories.addItem("Delimiters")
- # Set the first category as selected
+ # Connect category selection to page switching before setting default
+ self.ui.lw_categories.currentRowChanged.connect(self._on_category_changed)
+
+ # Set the first category as selected and force corresponding page
self.ui.lw_categories.setCurrentRow(0)
+ self._on_category_changed(0)
- # Connect category selection to page switching
- self.ui.lw_categories.currentRowChanged.connect(self._on_category_changed)
+ # Add keyboard navigation for convenience
+ shortcut_next = QtGui.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key.Key_Tab), self)
+ shortcut_prev = QtGui.QShortcut(QtGui.QKeySequence(QtCore.Qt.Key.Key_Backtab), self)
+ shortcut_next.activated.connect(lambda: self._navigate_categories(1) if self.ui.lw_categories.count() else None)
+ shortcut_prev.activated.connect(
+ lambda: self._navigate_categories(-1) if self.ui.lw_categories.count() else None
+ )
def _on_category_changed(self, index: int):
"""Handle category change to switch pages."""
@@ -335,3 +344,10 @@ class DialogPreferences(QtWidgets.QDialog):
setattr(self.settings.data, item, getattr(self.ui, self.prefix_spin_box + item).value())
self.s_settings_save.emit()
+
+ def _navigate_categories(self, direction: int) -> None:
+ """Move category selection forward/backward with wrap-around."""
+ current = self.ui.lw_categories.currentRow()
+ count = self.ui.lw_categories.count()
+ target = (current + direction) % count
+ self.ui.lw_categories.setCurrentRow(target)