mirror of
https://github.com/noctalia-dev/noctalia-shell.git
synced 2026-05-11 17:08:27 +08:00
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:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user