settings+connections: unified the way to open the settings on a particular tab/subtab + QoL settings access for bt and wifi

This commit is contained in:
Lemmy
2026-02-14 09:42:13 -05:00
parent 0647a12e2e
commit c038878152
8 changed files with 79 additions and 50 deletions
+1 -9
View File
@@ -452,15 +452,7 @@ Variants {
icon: "settings"
tooltipText: I18n.tr("actions.open-settings")
onClicked: {
if (Settings.data.ui.settingsPanelMode === "window") {
SettingsPanelService.toggleWindow(SettingsPanel.Tab.DesktopWidgets);
} else {
var settingsPanel = PanelService.getPanel("settingsPanel", screenLoader.modelData);
if (settingsPanel) {
settingsPanel.requestedTab = SettingsPanel.Tab.DesktopWidgets;
settingsPanel.toggle();
}
}
SettingsPanelService.toggle(SettingsPanel.Tab.DesktopWidgets, -1, screenLoader.modelData);
}
}
+9 -4
View File
@@ -63,6 +63,13 @@ SmartPanel {
baseSize: Style.baseWidgetSize * 0.65
}
NIconButton {
icon: "settings"
tooltipText: I18n.tr("commont.settings")
baseSize: Style.baseWidgetSize * 0.8
onClicked: SettingsPanelService.openToTab(SettingsPanel.Tab.Connections, 1, screen)
}
NIconButton {
icon: "close"
tooltipText: I18n.tr("common.close")
@@ -174,11 +181,9 @@ SmartPanel {
text: I18n.tr("common.settings")
icon: "settings"
Layout.alignment: Qt.AlignHCenter
onClicked: {
SettingsPanelService.openToTab(SettingsPanel.Tab.Connections, 1, screen);
root.close();
}
onClicked: SettingsPanelService.openToTab(SettingsPanel.Tab.Connections, 1, screen)
}
Item {
Layout.fillHeight: true
}
+16 -9
View File
@@ -153,15 +153,6 @@ SmartPanel {
Layout.fillWidth: true
}
NToggle {
id: wifiSwitch
visible: panelViewMode === "wifi"
checked: Settings.data.network.wifiEnabled
enabled: !Settings.data.network.airplaneModeEnabled && NetworkService.wifiAvailable
onToggled: checked => NetworkService.setWifiEnabled(checked)
baseSize: Style.baseWidgetSize * 0.7 // Slightly smaller
}
NIconButton {
icon: "refresh"
tooltipText: I18n.tr("common.refresh")
@@ -175,6 +166,22 @@ SmartPanel {
}
}
NToggle {
id: wifiSwitch
visible: panelViewMode === "wifi"
checked: Settings.data.network.wifiEnabled
enabled: !Settings.data.network.airplaneModeEnabled && NetworkService.wifiAvailable
onToggled: checked => NetworkService.setWifiEnabled(checked)
baseSize: Style.baseWidgetSize * 0.7 // Slightly smaller
}
NIconButton {
icon: "settings"
tooltipText: I18n.tr("commont.settings")
baseSize: Style.baseWidgetSize * 0.8
onClicked: SettingsPanelService.openToTab(SettingsPanel.Tab.Connections, 0, screen)
}
NIconButton {
icon: "close"
tooltipText: I18n.tr("common.close")
+1 -2
View File
@@ -65,8 +65,7 @@ NBox {
NText {
text: root.label
pointSize: Style.fontSizeS
color: Color.mSecondary
pointSize: Style.fontSizeM
font.weight: Style.fontWeightBold
Layout.fillWidth: true
}
@@ -628,7 +628,13 @@ Item {
function initialize() {
ProgramCheckerService.checkAllPrograms();
// Guard _pendingSubTab during model rebuild: updateTabsModel() triggers
// a ListView model reset which can set currentTabIndex=0 via the sidebar
// sync handler, causing the wrong tab to load and consume _pendingSubTab.
const savedPendingSubTab = _pendingSubTab;
_pendingSubTab = -1;
updateTabsModel();
_pendingSubTab = savedPendingSubTab;
selectTabById(requestedTab);
// Skip auto-focus on Nvidia GPUs - cursor blink causes UI choppiness
const isNvidia = SystemStatService.gpuType === "nvidia";
@@ -310,13 +310,13 @@ Item {
id: miscSettingsBox
visible: !root.showOnlyLists && BluetoothService.enabled
Layout.fillWidth: true
Layout.preferredHeight: miscSettingsCol.implicitHeight + (Style.marginL * 2)
Layout.preferredHeight: miscSettingsCol.implicitHeight + (Style.marginXL * 2)
color: Color.mSurface
ColumnLayout {
id: miscSettingsCol
anchors.fill: parent
anchors.margins: Style.marginL
anchors.margins: Style.marginXL
spacing: Style.marginM
NToggle {
+6 -24
View File
@@ -105,33 +105,15 @@ Singleton {
}
function _settingsToggle(tabId, subTabId) {
if (Settings.data.ui.settingsPanelMode === "window") {
if (SettingsPanelService.isWindowOpen) {
SettingsPanelService.closeWindow();
} else {
SettingsPanelService.openToTab(tabId, subTabId);
}
} else {
root.screenDetector.withCurrentScreen(screen => {
var settingsPanel = PanelService.getPanel("settingsPanel", screen);
if (settingsPanel?.isPanelOpen) {
settingsPanel.close();
} else {
settingsPanel?.openToTab(tabId, subTabId);
}
});
}
root.screenDetector.withCurrentScreen(screen => {
SettingsPanelService.toggle(tabId, subTabId, screen);
});
}
function _settingsOpen(tabId, subTabId) {
if (Settings.data.ui.settingsPanelMode === "window") {
SettingsPanelService.openToTab(tabId, subTabId);
} else {
root.screenDetector.withCurrentScreen(screen => {
var settingsPanel = PanelService.getPanel("settingsPanel", screen);
settingsPanel?.openToTab(tabId, subTabId);
});
}
root.screenDetector.withCurrentScreen(screen => {
SettingsPanelService.openToTab(tabId, subTabId, screen);
});
}
IpcHandler {
+38
View File
@@ -99,4 +99,42 @@ Singleton {
openWindow(tab);
}
}
// Unified toggle: opens to tab/subtab if closed, closes if open
// Respects settingsPanelMode setting
function toggle(tab, subTab, screen) {
const tabId = tab !== undefined ? tab : 0;
const subTabId = subTab !== undefined ? subTab : -1;
if (Settings.data.ui.settingsPanelMode === "window") {
if (isWindowOpen) {
closeWindow();
} else {
openToTab(tabId, subTabId);
}
} else {
if (!screen) {
Logger.w("SettingsPanelService", "Screen parameter required for panel mode");
return;
}
var settingsPanel = PanelService.getPanel("settingsPanel", screen);
if (settingsPanel?.isPanelOpen) {
settingsPanel.close();
} else {
settingsPanel?.openToTab(tabId, subTabId);
}
}
}
// Unified close for both modes
function close(screen) {
if (Settings.data.ui.settingsPanelMode === "window") {
closeWindow();
} else {
if (!screen)
return;
var settingsPanel = PanelService.getPanel("settingsPanel", screen);
settingsPanel?.close();
}
}
}