From e9746cbfe618193ab580836643812e601ac4295a Mon Sep 17 00:00:00 2001 From: vantezzen Date: Sat, 14 Sep 2019 13:47:49 +0200 Subject: Implement #7 --- src/config.js | 1 + src/i18n/locales/defaultMessages.json | 73 +++++++++++++++++++++-------------- src/i18n/locales/en-US.json | 1 + src/i18n/messages/src/lib/Menu.json | 73 +++++++++++++++++++++-------------- src/lib/Menu.js | 17 ++++++++ src/stores/SettingsStore.js | 11 +++++- 6 files changed, 114 insertions(+), 62 deletions(-) (limited to 'src') diff --git a/src/config.js b/src/config.js index 3e0000a57..66789f2a4 100644 --- a/src/config.js +++ b/src/config.js @@ -50,6 +50,7 @@ export const DEFAULT_APP_SETTINGS = { isAppMuted: false, enableGPUAcceleration: true, serviceLimit: 5, + autohideMenuBar: false, }; export const DEFAULT_FEATURES_CONFIG = { diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 03bc6f036..907f519b0 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -5464,198 +5464,211 @@ } }, { - "defaultMessage": "!!!Quit", + "defaultMessage": "!!!Auto-hide menu bar", "end": { "column": 3, "line": 207 }, "file": "src/lib/Menu.js", + "id": "menu.app.autohideMenuBar", + "start": { + "column": 19, + "line": 204 + } + }, + { + "defaultMessage": "!!!Quit", + "end": { + "column": 3, + "line": 211 + }, + "file": "src/lib/Menu.js", "id": "menu.app.quit", "start": { "column": 8, - "line": 204 + "line": 208 } }, { "defaultMessage": "!!!Add New Service...", "end": { "column": 3, - "line": 211 + "line": 215 }, "file": "src/lib/Menu.js", "id": "menu.services.addNewService", "start": { "column": 17, - "line": 208 + "line": 212 } }, { "defaultMessage": "!!!Add New Workspace...", "end": { "column": 3, - "line": 215 + "line": 219 }, "file": "src/lib/Menu.js", "id": "menu.workspaces.addNewWorkspace", "start": { "column": 19, - "line": 212 + "line": 216 } }, { "defaultMessage": "!!!Open workspace drawer", "end": { "column": 3, - "line": 219 + "line": 223 }, "file": "src/lib/Menu.js", "id": "menu.workspaces.openWorkspaceDrawer", "start": { "column": 23, - "line": 216 + "line": 220 } }, { "defaultMessage": "!!!Close workspace drawer", "end": { "column": 3, - "line": 223 + "line": 227 }, "file": "src/lib/Menu.js", "id": "menu.workspaces.closeWorkspaceDrawer", "start": { "column": 24, - "line": 220 + "line": 224 } }, { "defaultMessage": "!!!Activate next service...", "end": { "column": 3, - "line": 227 + "line": 231 }, "file": "src/lib/Menu.js", "id": "menu.services.setNextServiceActive", "start": { "column": 23, - "line": 224 + "line": 228 } }, { "defaultMessage": "!!!Activate previous service...", "end": { "column": 3, - "line": 231 + "line": 235 }, "file": "src/lib/Menu.js", "id": "menu.services.activatePreviousService", "start": { "column": 27, - "line": 228 + "line": 232 } }, { "defaultMessage": "!!!Disable notifications & audio", "end": { "column": 3, - "line": 235 + "line": 239 }, "file": "src/lib/Menu.js", "id": "sidebar.muteApp", "start": { "column": 11, - "line": 232 + "line": 236 } }, { "defaultMessage": "!!!Enable notifications & audio", "end": { "column": 3, - "line": 239 + "line": 243 }, "file": "src/lib/Menu.js", "id": "sidebar.unmuteApp", "start": { "column": 13, - "line": 236 + "line": 240 } }, { "defaultMessage": "!!!Workspaces", "end": { "column": 3, - "line": 243 + "line": 247 }, "file": "src/lib/Menu.js", "id": "menu.workspaces", "start": { "column": 14, - "line": 240 + "line": 244 } }, { "defaultMessage": "!!!Default", "end": { "column": 3, - "line": 247 + "line": 251 }, "file": "src/lib/Menu.js", "id": "menu.workspaces.defaultWorkspace", "start": { "column": 20, - "line": 244 + "line": 248 } }, { "defaultMessage": "!!!Todos", "end": { "column": 3, - "line": 251 + "line": 255 }, "file": "src/lib/Menu.js", "id": "menu.todos", "start": { "column": 9, - "line": 248 + "line": 252 } }, { "defaultMessage": "!!!Open Todos drawer", "end": { "column": 3, - "line": 255 + "line": 259 }, "file": "src/lib/Menu.js", "id": "menu.Todoss.openTodosDrawer", "start": { "column": 19, - "line": 252 + "line": 256 } }, { "defaultMessage": "!!!Close Todos drawer", "end": { "column": 3, - "line": 259 + "line": 263 }, "file": "src/lib/Menu.js", "id": "menu.Todoss.closeTodosDrawer", "start": { "column": 20, - "line": 256 + "line": 260 } }, { "defaultMessage": "!!!Enable Todos", "end": { "column": 3, - "line": 263 + "line": 267 }, "file": "src/lib/Menu.js", "id": "menu.todos.enableTodos", "start": { "column": 15, - "line": 260 + "line": 264 } } ], diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index 5b72e9d70..12e2bea88 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -61,6 +61,7 @@ "menu.Todoss.openTodosDrawer": "Open Todos drawer", "menu.app.about": "About Ferdi", "menu.app.announcement": "What's new?", + "menu.app.autohideMenuBar": "Auto-hide menu bar", "menu.app.checkForUpdates": "Check for updates", "menu.app.hide": "Hide", "menu.app.hideOthers": "Hide Others", diff --git a/src/i18n/messages/src/lib/Menu.json b/src/i18n/messages/src/lib/Menu.json index 3e6a6a936..aac207e0a 100644 --- a/src/i18n/messages/src/lib/Menu.json +++ b/src/i18n/messages/src/lib/Menu.json @@ -610,16 +610,29 @@ "column": 3 } }, + { + "id": "menu.app.autohideMenuBar", + "defaultMessage": "!!!Auto-hide menu bar", + "file": "src/lib/Menu.js", + "start": { + "line": 204, + "column": 19 + }, + "end": { + "line": 207, + "column": 3 + } + }, { "id": "menu.app.quit", "defaultMessage": "!!!Quit", "file": "src/lib/Menu.js", "start": { - "line": 204, + "line": 208, "column": 8 }, "end": { - "line": 207, + "line": 211, "column": 3 } }, @@ -628,11 +641,11 @@ "defaultMessage": "!!!Add New Service...", "file": "src/lib/Menu.js", "start": { - "line": 208, + "line": 212, "column": 17 }, "end": { - "line": 211, + "line": 215, "column": 3 } }, @@ -641,11 +654,11 @@ "defaultMessage": "!!!Add New Workspace...", "file": "src/lib/Menu.js", "start": { - "line": 212, + "line": 216, "column": 19 }, "end": { - "line": 215, + "line": 219, "column": 3 } }, @@ -654,11 +667,11 @@ "defaultMessage": "!!!Open workspace drawer", "file": "src/lib/Menu.js", "start": { - "line": 216, + "line": 220, "column": 23 }, "end": { - "line": 219, + "line": 223, "column": 3 } }, @@ -667,11 +680,11 @@ "defaultMessage": "!!!Close workspace drawer", "file": "src/lib/Menu.js", "start": { - "line": 220, + "line": 224, "column": 24 }, "end": { - "line": 223, + "line": 227, "column": 3 } }, @@ -680,11 +693,11 @@ "defaultMessage": "!!!Activate next service...", "file": "src/lib/Menu.js", "start": { - "line": 224, + "line": 228, "column": 23 }, "end": { - "line": 227, + "line": 231, "column": 3 } }, @@ -693,11 +706,11 @@ "defaultMessage": "!!!Activate previous service...", "file": "src/lib/Menu.js", "start": { - "line": 228, + "line": 232, "column": 27 }, "end": { - "line": 231, + "line": 235, "column": 3 } }, @@ -706,11 +719,11 @@ "defaultMessage": "!!!Disable notifications & audio", "file": "src/lib/Menu.js", "start": { - "line": 232, + "line": 236, "column": 11 }, "end": { - "line": 235, + "line": 239, "column": 3 } }, @@ -719,11 +732,11 @@ "defaultMessage": "!!!Enable notifications & audio", "file": "src/lib/Menu.js", "start": { - "line": 236, + "line": 240, "column": 13 }, "end": { - "line": 239, + "line": 243, "column": 3 } }, @@ -732,11 +745,11 @@ "defaultMessage": "!!!Workspaces", "file": "src/lib/Menu.js", "start": { - "line": 240, + "line": 244, "column": 14 }, "end": { - "line": 243, + "line": 247, "column": 3 } }, @@ -745,11 +758,11 @@ "defaultMessage": "!!!Default", "file": "src/lib/Menu.js", "start": { - "line": 244, + "line": 248, "column": 20 }, "end": { - "line": 247, + "line": 251, "column": 3 } }, @@ -758,11 +771,11 @@ "defaultMessage": "!!!Todos", "file": "src/lib/Menu.js", "start": { - "line": 248, + "line": 252, "column": 9 }, "end": { - "line": 251, + "line": 255, "column": 3 } }, @@ -771,11 +784,11 @@ "defaultMessage": "!!!Open Todos drawer", "file": "src/lib/Menu.js", "start": { - "line": 252, + "line": 256, "column": 19 }, "end": { - "line": 255, + "line": 259, "column": 3 } }, @@ -784,11 +797,11 @@ "defaultMessage": "!!!Close Todos drawer", "file": "src/lib/Menu.js", "start": { - "line": 256, + "line": 260, "column": 20 }, "end": { - "line": 259, + "line": 263, "column": 3 } }, @@ -797,11 +810,11 @@ "defaultMessage": "!!!Enable Todos", "file": "src/lib/Menu.js", "start": { - "line": 260, + "line": 264, "column": 15 }, "end": { - "line": 263, + "line": 267, "column": 3 } } diff --git a/src/lib/Menu.js b/src/lib/Menu.js index faf4d1902..c0436a501 100644 --- a/src/lib/Menu.js +++ b/src/lib/Menu.js @@ -201,6 +201,10 @@ const menuItems = defineMessages({ id: 'menu.app.unhide', defaultMessage: '!!!Unhide', }, + autohideMenuBar: { + id: 'menu.app.autohideMenuBar', + defaultMessage: '!!!Auto-hide menu bar', + }, quit: { id: 'menu.app.quit', defaultMessage: '!!!Quit', @@ -724,6 +728,19 @@ export default class FranzMenu { label: intl.formatMessage(menuItems.unhide), role: 'unhide', }, + ...(!isMac ? [{ + label: intl.formatMessage(menuItems.autohideMenuBar), + type: 'checkbox', + checked: this.stores.settings.app.autohideMenuBar, + click: () => { + this.actions.settings.update({ + type: 'app', + data: { + autohideMenuBar: !this.stores.settings.app.autohideMenuBar, + }, + }); + }, + }] : []), { type: 'separator', }, diff --git a/src/stores/SettingsStore.js b/src/stores/SettingsStore.js index 6c7b586a5..2975499b3 100644 --- a/src/stores/SettingsStore.js +++ b/src/stores/SettingsStore.js @@ -1,6 +1,6 @@ -import { ipcRenderer } from 'electron'; +import { ipcRenderer, remote } from 'electron'; import { - action, computed, observable, set, + action, computed, observable, set, reaction, } from 'mobx'; import localStorage from 'mobx-localstorage'; @@ -55,6 +55,13 @@ export default class SettingsStore extends Store { // We need to wait until `appSettingsRequest` has been executed once, otherwise we can't patch the result. If we don't wait we'd run into an issue with mobx not reacting to changes of previously not existing keys await this.appSettingsRequest._promise; await this._migrate(); + + reaction( + () => this.all.app.autohideMenuBar, + () => remote.getCurrentWindow().setAutoHideMenuBar( + this.all.app.autohideMenuBar, + ), + ); } @computed get app() { -- cgit v1.2.3-70-g09d2