Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Toggle on click #42

Merged
merged 8 commits into from
Feb 12, 2024
40 changes: 25 additions & 15 deletions extension/extension.js
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ const PrivacyQuickToggle = GObject.registerClass(
//Class for the privacy quick settings group
const PrivacyQuickGroup = GObject.registerClass(
class PrivacyQuickGroup extends QuickSettings.QuickMenuToggle {
_init(useQuickSubtitle) {
_init(useQuickSubtitle, clickToToggle) {
//Set up the quick setting toggle
super._init({
title: _('Privacy'),
Expand All @@ -140,11 +140,20 @@ const PrivacyQuickGroup = GObject.registerClass(
});

//Set a menu header
this.menu.setHeader('preferences-system-privacy-symbolic', _('Privacy Settings'))
this.menu.setHeader('preferences-system-privacy-symbolic', _('Privacy Settings'));

//Open the menu when the body is clicked
//Open the menu or toggle all settings when the body is clicked
this.connect('clicked', () => {
this.menu.open();
if (clickToToggle) {
//Enable / disable every setting according to its bind flag
let targetState = this.checked;
this._settingsInfo.forEach((settingInfo) => {
let newState = targetState ^ (settingInfo[2] == Gio.SettingsBindFlags.INVERT_BOOLEAN);
settingInfo[0].set_boolean(settingInfo[1], newState);
});
} else {
this.menu.open();
}
});

//GSettings access
Expand Down Expand Up @@ -200,12 +209,12 @@ const PrivacyQuickGroup = GObject.registerClass(
}

_updateVisualState() {
//If any of the privacy settings are enabled, set enableToggle
let enableToggle = false;
this._settingsInfo.forEach((settingInfo, i) => {
//If all of the privacy settings are disabled, set enableToggle to true
let enableToggle = true;
this._settingsInfo.forEach((settingInfo) => {
let settingEnabled = settingInfo[0].get_boolean(settingInfo[1]);
if (settingEnabled == (settingInfo[2] != Gio.SettingsBindFlags.INVERT_BOOLEAN)) {
enableToggle = true;
enableToggle = false;
}
});

Expand All @@ -231,15 +240,15 @@ const PrivacyQuickGroup = GObject.registerClass(
});

if (enabledSettingsCount == 0) {
//If no settings are enabled, display 'All disabled'
this.subtitle = _('All disabled');
//If no settings are enabled, display 'Private'
this.subtitle = _('Private');
} else if (enabledSettingsCount == 1) {
//If 1 setting is enabled, mention it by name
this.subtitle = enabledSettingName;
} else {
//If multiple are enabled, display how many
//Translators: this displays which setting is enabled, e.g. 'Location enabled'
this.subtitle = enabledSettingsCount + _(' enabled');
//Translators: this displays how many settings are enabled, e.g. '1 allowed'
this.subtitle = enabledSettingsCount + _(' allowed');
}
}

Expand Down Expand Up @@ -291,9 +300,9 @@ class QuickSettingsManager {
}

class QuickGroupManager {
constructor(useQuickSubtitle) {
constructor(useQuickSubtitle, clickToToggle) {
//Create quick settings group and add to the system menu
this._quickSettingsGroup = new PrivacyQuickGroup(useQuickSubtitle);
this._quickSettingsGroup = new PrivacyQuickGroup(useQuickSubtitle, clickToToggle);
let backgroundApps = QuickSettingsMenu._backgroundApps?.quickSettingsItems?.at(-1) ?? null;
QuickSettingsMenu.menu.insertItemBefore(this._quickSettingsGroup, backgroundApps);
}
Expand Down Expand Up @@ -393,7 +402,8 @@ class PrivacyExtension {
this._privacyManager = new QuickSettingsManager();
} else if (menuType == 'quick-group') {
let useQuickSubtitle = this._extensionSettings.get_boolean('use-quick-subtitle')
this._privacyManager = new QuickGroupManager(useQuickSubtitle);
let clickToToggle = this._extensionSettings.get_boolean('click-to-toggle')
this._privacyManager = new QuickGroupManager(useQuickSubtitle, clickToToggle);
} else if (menuType == 'indicator') {
let forceIconRight = this._extensionSettings.get_boolean('move-icon-right');
this._privacyManager = new IndicatorSettingsManager(forceIconRight);
Expand Down
69 changes: 39 additions & 30 deletions extension/po/cs.po
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: privacy-menu-extension\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-20 19:26+0100\n"
"POT-Creation-Date: 2024-02-12 16:55+0000\n"
"PO-Revision-Date: 2023-04-05 15:15+0200\n"
"Last-Translator: Amerey.eu <[email protected]>\n"
"Language-Team: \n"
Expand All @@ -26,18 +26,18 @@ msgstr "Indikátor nabídky nastavení soukromí"
msgid "Privacy Settings"
msgstr "Nastavení soukromí"

#: extension/extension.js:68 extension/extension.js:156
#: extension/extension.js:245
#: extension/extension.js:68 extension/extension.js:165
#: extension/extension.js:270
msgid "Location"
msgstr "Poloha"

#: extension/extension.js:69 extension/extension.js:157
#: extension/extension.js:246
#: extension/extension.js:69 extension/extension.js:166
#: extension/extension.js:271
msgid "Camera"
msgstr "Kamera"

#: extension/extension.js:70 extension/extension.js:158
#: extension/extension.js:247
#: extension/extension.js:70 extension/extension.js:167
#: extension/extension.js:272
msgid "Microphone"
msgstr "Mikrofon"

Expand All @@ -53,83 +53,92 @@ msgstr "Nastavit výchozí hodnoty"
msgid "Privacy"
msgstr ""

#: extension/extension.js:219
msgid "All disabled"
#: extension/extension.js:244
msgid "Private"
msgstr ""

#. Translators: this displays which setting is enabled, e.g. 'Location enabled'
#: extension/extension.js:226
msgid " enabled"
#. Translators: this displays how many settings are enabled, e.g. '1 allowed'
#: extension/extension.js:251
msgid " allowed"
msgstr ""

#: extension/prefs.js:127
#: extension/prefs.js:131
msgid "Settings"
msgstr "Nastavení"

#: extension/prefs.js:131
#: extension/prefs.js:135
msgid "General settings"
msgstr "Obecné nastavení"

#: extension/prefs.js:132
#: extension/prefs.js:136
msgid "Menu settings"
msgstr ""

#: extension/prefs.js:137
#: extension/prefs.js:141
msgid "Move status icon right"
msgstr "Přesunout ikonu doprava"

#: extension/prefs.js:137
#: extension/prefs.js:141
msgid "Force the icon to move to right side of the status area"
msgstr "Vynutit přesun ikony na pravou stranu ve stavové oblasti"

#: extension/prefs.js:138
#: extension/prefs.js:142
msgid "Use quick settings menu"
msgstr "Použijte nabídku rychlého nastavení"

#: extension/prefs.js:138
#: extension/prefs.js:142
msgid "Use the system quick settings area, instead of an indicator"
msgstr "Místo ikony použijte oblast rychlého nastavení systému"

#: extension/prefs.js:139
#: extension/prefs.js:143
msgid "Group quick settings"
msgstr ""

#: extension/prefs.js:139
#: extension/prefs.js:143
msgid "Group quick settings together, into a menu"
msgstr ""

#: extension/prefs.js:140
#: extension/prefs.js:144
msgid "Use quick settings subtitle"
msgstr ""

#: extension/prefs.js:140
#: extension/prefs.js:144
msgid "Show the privacy status in the quick settings subtitle"
msgstr ""

#: extension/prefs.js:149
#: extension/prefs.js:145
msgid "Toggle all settings at once"
msgstr ""

#: extension/prefs.js:145
msgid ""
"Enable or disable all privacy settings at once, when the group is pressed"
msgstr ""

#: extension/prefs.js:154
msgid "Report an issue"
msgstr ""

#: extension/prefs.js:149
#: extension/prefs.js:154
msgid "GitHub issue tracker"
msgstr ""

#: extension/prefs.js:150
#: extension/prefs.js:155
msgid "Donate via GitHub"
msgstr ""

#: extension/prefs.js:150
#: extension/prefs.js:155
msgid "Become a sponsor"
msgstr ""

#: extension/prefs.js:151
#: extension/prefs.js:156
msgid "Donate via PayPal"
msgstr ""

#: extension/prefs.js:151
#: extension/prefs.js:156
msgid "Thanks for your support :)"
msgstr ""

#: extension/prefs.js:153
#: extension/prefs.js:158
msgid "Links"
msgstr ""
73 changes: 41 additions & 32 deletions extension/po/de.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: privacy-menu-extension\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-08-20 19:26+0100\n"
"POT-Creation-Date: 2024-02-12 16:55+0000\n"
"PO-Revision-Date: 2023-07-12 13:02+0200\n"
"Last-Translator: Philipp Kiemle <[email protected]>\n"
"Language-Team: \n"
Expand All @@ -27,18 +27,18 @@ msgstr "Menü-Indikator für Datenschutzeinstellungen"
msgid "Privacy Settings"
msgstr "Datenschutzeinstellungen"

#: extension/extension.js:68 extension/extension.js:156
#: extension/extension.js:245
#: extension/extension.js:68 extension/extension.js:165
#: extension/extension.js:270
msgid "Location"
msgstr "Ortungsdienste"

#: extension/extension.js:69 extension/extension.js:157
#: extension/extension.js:246
#: extension/extension.js:69 extension/extension.js:166
#: extension/extension.js:271
msgid "Camera"
msgstr "Kamera"

#: extension/extension.js:70 extension/extension.js:158
#: extension/extension.js:247
#: extension/extension.js:70 extension/extension.js:167
#: extension/extension.js:272
msgid "Microphone"
msgstr "Mikrofon"

Expand All @@ -54,87 +54,96 @@ msgstr "Auf Voreinstellungen zurücksetzen"
msgid "Privacy"
msgstr "Privatsphäre"

#: extension/extension.js:219
msgid "All disabled"
msgstr "Alles deaktiviert"
#: extension/extension.js:244
msgid "Private"
msgstr ""

#. Translators: this displays which setting is enabled, e.g. 'Location enabled'
#: extension/extension.js:226
msgid " enabled"
msgstr " aktiviert"
#. Translators: this displays how many settings are enabled, e.g. '1 allowed'
#: extension/extension.js:251
msgid " allowed"
msgstr ""

#: extension/prefs.js:127
#: extension/prefs.js:131
msgid "Settings"
msgstr "Einstellungen"

#: extension/prefs.js:131
#: extension/prefs.js:135
msgid "General settings"
msgstr "Allgemeine Einstellungen"

#: extension/prefs.js:132
#: extension/prefs.js:136
msgid "Menu settings"
msgstr ""

#: extension/prefs.js:137
#: extension/prefs.js:141
msgid "Move status icon right"
msgstr "Status-Symbol nach rechts verschieben"

#: extension/prefs.js:137
#: extension/prefs.js:141
msgid "Force the icon to move to right side of the status area"
msgstr ""
"Das Symbol wird auf die rechte Privacy Quick Settings Menu GNOME "
"ExtensionSeite der Statusleiste verschoben"

#: extension/prefs.js:138
#: extension/prefs.js:142
msgid "Use quick settings menu"
msgstr "Schnelleinstellungsmenü verwenden"

#: extension/prefs.js:138
#: extension/prefs.js:142
msgid "Use the system quick settings area, instead of an indicator"
msgstr ""
"Den Schnelleinstellungen-Bereich des Systems statt eines Indikators verwenden"

#: extension/prefs.js:139
#: extension/prefs.js:143
msgid "Group quick settings"
msgstr "Schnelleinstellungen bündeln"

#: extension/prefs.js:139
#: extension/prefs.js:143
msgid "Group quick settings together, into a menu"
msgstr "Schnelleinstellungen in einem Menü bündeln"

#: extension/prefs.js:140
#: extension/prefs.js:144
msgid "Use quick settings subtitle"
msgstr "Untertitel für Schnelleinstellungen verwenden"

#: extension/prefs.js:140
#: extension/prefs.js:144
msgid "Show the privacy status in the quick settings subtitle"
msgstr ""
"Den Privatsphäre-Status im Untertitel für Schnelleinstellungen anzeigen"

#: extension/prefs.js:149
#: extension/prefs.js:145
msgid "Toggle all settings at once"
msgstr ""

#: extension/prefs.js:145
msgid ""
"Enable or disable all privacy settings at once, when the group is pressed"
msgstr ""

#: extension/prefs.js:154
msgid "Report an issue"
msgstr ""

#: extension/prefs.js:149
#: extension/prefs.js:154
msgid "GitHub issue tracker"
msgstr ""

#: extension/prefs.js:150
#: extension/prefs.js:155
msgid "Donate via GitHub"
msgstr ""

#: extension/prefs.js:150
#: extension/prefs.js:155
msgid "Become a sponsor"
msgstr ""

#: extension/prefs.js:151
#: extension/prefs.js:156
msgid "Donate via PayPal"
msgstr ""

#: extension/prefs.js:151
#: extension/prefs.js:156
msgid "Thanks for your support :)"
msgstr ""

#: extension/prefs.js:153
#: extension/prefs.js:158
msgid "Links"
msgstr ""
Loading
Loading