diff --git a/src/BasePlatform.js b/src/BasePlatform.js index 803fe0e500..a97c14bf90 100644 --- a/src/BasePlatform.js +++ b/src/BasePlatform.js @@ -128,6 +128,18 @@ export default class BasePlatform { throw new Error("Unimplemented"); } + supportsAutoHideMenuBar(): boolean { + return false; + } + + async getAutoHideMenuBarEnabled(): boolean { + return false; + } + + async setAutoHideMenuBarEnabled(enabled: boolean): void { + throw new Error("Unimplemented"); + } + supportsMinimizeToTray(): boolean { return false; } diff --git a/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js b/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js index a645632dbc..e02524a7b3 100644 --- a/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js +++ b/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js @@ -64,6 +64,8 @@ export default class PreferencesUserSettingsTab extends React.Component { this.state = { autoLaunch: false, autoLaunchSupported: false, + alwaysShowMenuBar: true, + alwaysShowMenuBarSupported: false, minimizeToTray: true, minimizeToTraySupported: false, autocompleteDelay: SettingsStore.getValueAt(SettingLevel.DEVICE, 'autocompleteDelay').toString(10), @@ -80,6 +82,13 @@ export default class PreferencesUserSettingsTab extends React.Component { autoLaunch = await platform.getAutoLaunchEnabled(); } + const alwaysShowMenuBarSupported = await platform.supportsAutoHideMenuBar(); + let alwaysShowMenuBar = true; + + if (alwaysShowMenuBarSupported) { + alwaysShowMenuBar = !await platform.getAutoHideMenuBarEnabled(); + } + const minimizeToTraySupported = await platform.supportsMinimizeToTray(); let minimizeToTray = true; @@ -87,13 +96,24 @@ export default class PreferencesUserSettingsTab extends React.Component { minimizeToTray = await platform.getMinimizeToTrayEnabled(); } - this.setState({autoLaunch, autoLaunchSupported, minimizeToTraySupported, minimizeToTray}); + this.setState({ + autoLaunch, + autoLaunchSupported, + alwaysShowMenuBarSupported, + alwaysShowMenuBar, + minimizeToTraySupported, + minimizeToTray, + }); } _onAutoLaunchChange = (checked) => { PlatformPeg.get().setAutoLaunchEnabled(checked).then(() => this.setState({autoLaunch: checked})); }; + _onAlwaysShowMenuBarChange = (checked) => { + PlatformPeg.get().setAutoHideMenuBarEnabled(!checked).then(() => this.setState({alwaysShowMenuBar: checked})); + }; + _onMinimizeToTrayChange = (checked) => { PlatformPeg.get().setMinimizeToTrayEnabled(checked).then(() => this.setState({minimizeToTray: checked})); }; @@ -116,6 +136,13 @@ export default class PreferencesUserSettingsTab extends React.Component { label={_t('Start automatically after system login')} />; } + let autoHideMenuOption = null; + if (this.state.alwaysShowMenuBarSupported) { + autoHideMenuOption = ; + } + let minimizeToTrayOption = null; if (this.state.minimizeToTraySupported) { minimizeToTrayOption = {_t("Advanced")} {this._renderGroup(PreferencesUserSettingsTab.ADVANCED_SETTINGS)} {minimizeToTrayOption} + {autoHideMenuOption} {autoLaunchOption}