diff --git a/src/MobileApp.vue b/src/MobileApp.vue
index e5d4640f..2dbf7008 100644
--- a/src/MobileApp.vue
+++ b/src/MobileApp.vue
@@ -12,6 +12,13 @@ import routes from './router/mobile.js';
export default {
data() {
const self = this;
+ let darkMode = 'auto';
+
+ if (self.$settings.getTheme() === 'light') {
+ darkMode = false;
+ } else if (self.$settings.getTheme() === 'dark') {
+ darkMode = true;
+ }
return {
isProduction: self.$settings.isProduction(),
@@ -23,7 +30,7 @@ export default {
primary: '#c67e48'
},
routes: routes,
- darkMode: self.$settings.isEnableAutoDarkMode() ? 'auto' : false,
+ darkMode: darkMode,
touch: {
disableContextMenu: true,
tapHold: true
diff --git a/src/lib/settings.js b/src/lib/settings.js
index 7f8493c6..b64ded3f 100644
--- a/src/lib/settings.js
+++ b/src/lib/settings.js
@@ -7,6 +7,7 @@ const settingsLocalStorageKey = 'ebk_app_settings';
const serverSettingsCookieKey = 'ebk_server_settings';
const defaultSettings = {
+ theme: 'auto',
timeZone: '',
debug: false,
applicationLock: false,
@@ -26,8 +27,7 @@ const defaultSettings = {
defaultTransactionCategoryFilter: {},
defaultSortingType: statisticsConstants.defaultSortingType
},
- animate: true,
- autoDarkMode: true
+ animate: true
};
function getOriginalSettings() {
@@ -124,6 +124,8 @@ function clearSettings() {
export default {
isProduction: () => process.env.NODE_ENV === 'production',
+ getTheme: () => getOption('theme'),
+ setTheme: value => setOption('theme', value),
getTimezone: () => getOption('timeZone'),
setTimezone: value => setOption('timeZone', value),
isEnableDebug: () => getOption('debug'),
@@ -160,8 +162,6 @@ export default {
setStatisticsSortingType: value => setSubOption('statistics', 'defaultSortingType', value),
isEnableAnimate: () => getOption('animate'),
setEnableAnimate: value => setOption('animate', value),
- isEnableAutoDarkMode: () => getOption('autoDarkMode'),
- setEnableAutoDarkMode: value => setOption('autoDarkMode', value),
isUserRegistrationEnabled: () => getServerSetting('r') === '1',
isDataExportingEnabled: () => getServerSetting('e') === '1',
getMapProvider: () => getServerSetting('m'),
diff --git a/src/locales/en.js b/src/locales/en.js
index decab858..1b85ca90 100644
--- a/src/locales/en.js
+++ b/src/locales/en.js
@@ -934,6 +934,9 @@ export default {
'Filter Transaction Categories': 'Filter Transaction Categories',
'User Profile': 'User Profile',
'Language': 'Language',
+ 'Theme': 'Theme',
+ 'Light': 'Light',
+ 'Dark': 'Dark',
'Timezone': 'Timezone',
'System Default': 'System Default',
'Language Default': 'Language Default',
@@ -948,7 +951,6 @@ export default {
'Show Account Balance': 'Show Account Balance',
'Show Total Amount In Transaction List Page': 'Show Total Amount In Transaction List Page',
'Enable Animate': 'Enable Animate',
- 'Enable Auto Dark Mode': 'Enable Auto Dark Mode',
'Use preset transaction categories': 'Use preset transaction categories',
'Preset Categories': 'Preset Categories',
'You have been successfully registered': 'You have been successfully registered',
diff --git a/src/locales/zh_Hans.js b/src/locales/zh_Hans.js
index 181c83f4..2620439a 100644
--- a/src/locales/zh_Hans.js
+++ b/src/locales/zh_Hans.js
@@ -934,6 +934,9 @@ export default {
'Filter Transaction Categories': '过滤交易类型',
'User Profile': '用户信息',
'Language': '语言',
+ 'Theme': '主题',
+ 'Light': '浅色',
+ 'Dark': '深色',
'Timezone': '时区',
'System Default': '系统默认',
'Language Default': '语言默认',
@@ -948,7 +951,6 @@ export default {
'Show Account Balance': '显示账户余额',
'Show Total Amount In Transaction List Page': '交易列表页显示总金额',
'Enable Animate': '启用动画',
- 'Enable Auto Dark Mode': '启用自动深色模式',
'Use preset transaction categories': '使用预设交易分类',
'Preset Categories': '预设分类',
'You have been successfully registered': '注册成功',
diff --git a/src/views/mobile/SettingsPage.vue b/src/views/mobile/SettingsPage.vue
index f7e689bc..f6d4ce31 100644
--- a/src/views/mobile/SettingsPage.vue
+++ b/src/views/mobile/SettingsPage.vue
@@ -15,6 +15,16 @@
{{ $t('Application') }}
+
+
+
+
@@ -77,11 +87,6 @@
-
- {{ $t('Enable Auto Dark Mode') }}
-
-
-
@@ -107,6 +112,17 @@ export default {
allTimezones() {
return this.$locale.getAllTimezones(true);
},
+ theme: {
+ get: function () {
+ return this.$settings.getTheme();
+ },
+ set: function (value) {
+ if (value !== this.$settings.getTheme()) {
+ this.$settings.setTheme(value);
+ location.reload();
+ }
+ }
+ },
currentTimezone: {
get: function () {
return this.$locale.getTimezone();
@@ -188,17 +204,6 @@ export default {
location.reload();
}
}
- },
- isEnableAutoDarkMode: {
- get: function () {
- return this.$settings.isEnableAutoDarkMode();
- },
- set: function (value) {
- if (value !== this.$settings.isEnableAutoDarkMode()) {
- this.$settings.setEnableAutoDarkMode(value);
- location.reload();
- }
- }
}
},
methods: {