From b02b37125014bc160767c1ac811538b922d46ee5 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Sun, 24 Feb 2019 01:06:53 +0000
Subject: [PATCH 1/3] Allow configuration of whether closing window closes or
minimizes to tray
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/BasePlatform.js | 25 +++++++++++++++++
.../settings/tabs/PreferencesSettingsTab.js | 28 +++++++++++++++++--
src/i18n/strings/en_EN.json | 1 +
3 files changed, 51 insertions(+), 3 deletions(-)
diff --git a/src/BasePlatform.js b/src/BasePlatform.js
index 79f0d69e2c..cac8c36267 100644
--- a/src/BasePlatform.js
+++ b/src/BasePlatform.js
@@ -113,4 +113,29 @@ export default class BasePlatform {
reload() {
throw new Error("reload not implemented!");
}
+
+ supportsAutoLaunch() {
+ return false;
+ }
+
+ // XXX: Surely this should be a setting like any other?
+ async getAutoLaunchEnabled() {
+ return false;
+ }
+
+ async setAutoLaunchEnabled(enabled) {
+ throw new Error("Unimplemented");
+ }
+
+ supportsMinimizeToTray() {
+ return false;
+ }
+
+ async getMinimizeToTrayEnabled() {
+ return false;
+ }
+
+ async setMinimizeToTrayEnabled() {
+ throw new Error("Unimplemented");
+ }
}
diff --git a/src/components/views/settings/tabs/PreferencesSettingsTab.js b/src/components/views/settings/tabs/PreferencesSettingsTab.js
index d76dc8f3dd..b6273c5d47 100644
--- a/src/components/views/settings/tabs/PreferencesSettingsTab.js
+++ b/src/components/views/settings/tabs/PreferencesSettingsTab.js
@@ -59,24 +59,39 @@ export default class PreferencesSettingsTab extends React.Component {
this.state = {
autoLaunch: false,
autoLaunchSupported: false,
+ minimizeToTray: true,
+ minimizeToTraySupported: false,
};
}
async componentWillMount(): void {
- const autoLaunchSupported = await PlatformPeg.get().supportsAutoLaunch();
+ const platform = PlatformPeg.get();
+
+ const autoLaunchSupported = await platform.supportsAutoLaunch();
let autoLaunch = false;
if (autoLaunchSupported) {
- autoLaunch = await PlatformPeg.get().getAutoLaunchEnabled();
+ autoLaunch = await platform.getAutoLaunchEnabled();
}
- this.setState({autoLaunch, autoLaunchSupported});
+ const minimizeToTraySupported = await platform.supportsMinimizeToTray();
+ let minimizeToTray = true;
+
+ if (minimizeToTraySupported) {
+ minimizeToTray = await platform.getMinimizeToTrayEnabled();
+ }
+
+ this.setState({autoLaunch, autoLaunchSupported, minimizeToTraySupported, minimizeToTray});
}
_onAutoLaunchChange = (checked) => {
PlatformPeg.get().setAutoLaunchEnabled(checked).then(() => this.setState({autoLaunch: checked}));
};
+ _onMinimizeToTrayChange = (checked) => {
+ PlatformPeg.get().setMinimizeToTrayEnabled(checked).then(() => this.setState({minimizeToTray: checked}));
+ };
+
_onAutocompleteDelayChange = (e) => {
SettingsStore.setValue("autocompleteDelay", null, SettingLevel.DEVICE, e.target.value);
};
@@ -93,6 +108,12 @@ export default class PreferencesSettingsTab extends React.Component {
onChange={this._onAutoLaunchChange}
label={_t('Start automatically after system login')} />;
}
+ let minimizeToTrayOption = null;
+ if (this.state.minimizeToTraySupported) {
+ minimizeToTrayOption =