Skip to content

Commit

Permalink
Merge pull request #42 from stuarthayhurst/toggle-on-click
Browse files Browse the repository at this point in the history
Toggle on click
  • Loading branch information
stuarthayhurst committed Feb 12, 2024
2 parents 4ca0df5 + ab20f45 commit c8bd238
Show file tree
Hide file tree
Showing 12 changed files with 405 additions and 303 deletions.
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

0 comments on commit c8bd238

Please sign in to comment.