snappymail/dev/Settings/User/General.js

203 lines
5.9 KiB
JavaScript
Raw Normal View History

2014-08-21 23:08:34 +08:00
2014-09-05 06:49:03 +08:00
(function () {
2014-08-21 23:08:34 +08:00
2014-08-25 23:49:01 +08:00
'use strict';
2014-08-21 23:08:34 +08:00
var
_ = require('_'),
2014-08-25 23:49:01 +08:00
ko = require('ko'),
2014-08-25 15:10:51 +08:00
2014-09-05 06:49:03 +08:00
Enums = require('Common/Enums'),
Consts = require('Common/Consts'),
Globals = require('Common/Globals'),
Utils = require('Common/Utils'),
Translator = require('Common/Translator'),
AppStore = require('Stores/User/App'),
LanguageStore = require('Stores/Language'),
SettingsStore = require('Stores/User/Settings'),
NotificationStore = require('Stores/User/Notification'),
2014-08-21 23:08:34 +08:00
2014-10-18 21:43:44 +08:00
Data = require('Storage/User/Data'),
Remote = require('Storage/User/Remote')
2014-08-21 23:08:34 +08:00
;
/**
* @constructor
*/
function GeneralUserSettings()
2014-08-21 23:08:34 +08:00
{
this.language = LanguageStore.language;
this.messagesPerPage = SettingsStore.messagesPerPage;
this.messagesPerPageArray = Consts.Defaults.MessagesPerPageArray;
this.editorDefaultType = SettingsStore.editorDefaultType;
this.layout = SettingsStore.layout;
this.usePreviewPane = SettingsStore.usePreviewPane;
this.soundNotificationIsSupported = NotificationStore.soundNotificationIsSupported;
this.enableSoundNotification = NotificationStore.enableSoundNotification;
this.enableDesktopNotification = NotificationStore.enableDesktopNotification;
this.isDesktopNotificationSupported = NotificationStore.isDesktopNotificationSupported;
this.isDesktopNotificationDenied = NotificationStore.isDesktopNotificationDenied;
this.showImages = SettingsStore.showImages;
this.useCheckboxesInList = SettingsStore.useCheckboxesInList;
2015-02-03 07:58:58 +08:00
this.threadsAllowed = AppStore.threadsAllowed;
this.useThreads = SettingsStore.useThreads;
this.replySameFolder = SettingsStore.replySameFolder;
this.allowLanguagesOnSettings = AppStore.allowLanguagesOnSettings;
2014-08-21 23:08:34 +08:00
this.languageFullName = ko.computed(function () {
return Utils.convertLangName(this.language());
2014-08-21 23:08:34 +08:00
}, this);
this.languageTrigger = ko.observable(Enums.SaveSettingsStep.Idle).extend({'throttle': 100});
2014-10-30 07:27:13 +08:00
2014-08-21 23:08:34 +08:00
this.mppTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
2014-10-30 07:27:13 +08:00
this.editorDefaultTypeTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
this.layoutTrigger = ko.observable(Enums.SaveSettingsStep.Idle);
2014-08-21 23:08:34 +08:00
this.isAnimationSupported = Globals.bAnimationSupported;
this.editorDefaultTypes = ko.computed(function () {
Translator.trigger();
return [
{'id': Enums.EditorDefaultType.Html, 'name': Translator.i18n('SETTINGS_GENERAL/LABEL_EDITOR_HTML')},
{'id': Enums.EditorDefaultType.Plain, 'name': Translator.i18n('SETTINGS_GENERAL/LABEL_EDITOR_PLAIN')},
{'id': Enums.EditorDefaultType.HtmlForced, 'name': Translator.i18n('SETTINGS_GENERAL/LABEL_EDITOR_HTML_FORCED')},
{'id': Enums.EditorDefaultType.PlainForced, 'name': Translator.i18n('SETTINGS_GENERAL/LABEL_EDITOR_PLAIN_FORCED')}
];
}, this);
2014-08-21 23:08:34 +08:00
this.layoutTypes = ko.computed(function () {
Translator.trigger();
return [
{'id': Enums.Layout.NoPreview, 'name': Translator.i18n('SETTINGS_GENERAL/LABEL_LAYOUT_NO_SPLIT')},
{'id': Enums.Layout.SidePreview, 'name': Translator.i18n('SETTINGS_GENERAL/LABEL_LAYOUT_VERTICAL_SPLIT')},
{'id': Enums.Layout.BottomPreview, 'name': Translator.i18n('SETTINGS_GENERAL/LABEL_LAYOUT_HORIZONTAL_SPLIT')}
];
}, this);
}
2014-08-21 23:08:34 +08:00
GeneralUserSettings.prototype.testSoundNotification = function ()
{
NotificationStore.playSoundNotification(true);
};
GeneralUserSettings.prototype.onBuild = function ()
2014-08-21 23:08:34 +08:00
{
var self = this;
_.delay(function () {
var
2014-10-30 07:27:13 +08:00
f0 = Utils.settingsSaveHelperSimpleFunction(self.editorDefaultTypeTrigger, self),
2014-09-30 04:01:31 +08:00
f1 = Utils.settingsSaveHelperSimpleFunction(self.mppTrigger, self),
f2 = Utils.settingsSaveHelperSimpleFunction(self.layoutTrigger, self),
2014-09-30 04:01:31 +08:00
fReloadLanguageHelper = function (iSaveSettingsStep) {
return function() {
self.languageTrigger(iSaveSettingsStep);
_.delay(function () {
self.languageTrigger(Enums.SaveSettingsStep.Idle);
}, 1000);
};
}
2014-08-21 23:08:34 +08:00
;
self.language.subscribe(function (sValue) {
2014-08-21 23:08:34 +08:00
self.languageTrigger(Enums.SaveSettingsStep.Animate);
Translator.reload(sValue,
2014-09-30 04:01:31 +08:00
fReloadLanguageHelper(Enums.SaveSettingsStep.TrueResult),
fReloadLanguageHelper(Enums.SaveSettingsStep.FalseResult));
2014-08-21 23:08:34 +08:00
Remote.saveSettings(null, {
2014-08-21 23:08:34 +08:00
'Language': sValue
});
});
self.editorDefaultType.subscribe(function (sValue) {
2014-10-30 07:27:13 +08:00
Remote.saveSettings(f0, {
2014-08-21 23:08:34 +08:00
'EditorDefaultType': sValue
});
});
self.messagesPerPage.subscribe(function (iValue) {
2014-08-21 23:08:34 +08:00
Remote.saveSettings(f1, {
'MPP': iValue
});
});
self.showImages.subscribe(function (bValue) {
Remote.saveSettings(null, {
2014-08-21 23:08:34 +08:00
'ShowImages': bValue ? '1' : '0'
});
});
self.enableDesktopNotification.subscribe(function (bValue) {
2014-08-21 23:08:34 +08:00
Utils.timeOutAction('SaveDesktopNotifications', function () {
Remote.saveSettings(null, {
2014-08-21 23:08:34 +08:00
'DesktopNotifications': bValue ? '1' : '0'
});
}, 3000);
});
self.enableSoundNotification.subscribe(function (bValue) {
Utils.timeOutAction('SaveSoundNotification', function () {
Remote.saveSettings(null, {
'SoundNotification': bValue ? '1' : '0'
});
}, 3000);
});
self.replySameFolder.subscribe(function (bValue) {
2014-08-21 23:08:34 +08:00
Utils.timeOutAction('SaveReplySameFolder', function () {
Remote.saveSettings(null, {
2014-08-21 23:08:34 +08:00
'ReplySameFolder': bValue ? '1' : '0'
});
}, 3000);
});
self.useThreads.subscribe(function (bValue) {
2014-08-21 23:08:34 +08:00
2014-08-22 23:08:56 +08:00
Data.messageList([]);
2014-08-21 23:08:34 +08:00
Remote.saveSettings(null, {
2014-08-21 23:08:34 +08:00
'UseThreads': bValue ? '1' : '0'
});
});
self.layout.subscribe(function (nValue) {
2014-08-21 23:08:34 +08:00
2014-08-22 23:08:56 +08:00
Data.messageList([]);
2014-08-21 23:08:34 +08:00
Remote.saveSettings(f2, {
2014-08-21 23:08:34 +08:00
'Layout': nValue
});
});
self.useCheckboxesInList.subscribe(function (bValue) {
Remote.saveSettings(null, {
2014-08-21 23:08:34 +08:00
'UseCheckboxesInList': bValue ? '1' : '0'
});
});
}, 50);
};
GeneralUserSettings.prototype.onShow = function ()
2014-08-21 23:08:34 +08:00
{
this.enableDesktopNotification.valueHasMutated();
2014-08-21 23:08:34 +08:00
};
GeneralUserSettings.prototype.selectLanguage = function ()
2014-08-21 23:08:34 +08:00
{
require('Knoin/Knoin').showScreenPopup(require('View/Popup/Languages'));
2014-08-21 23:08:34 +08:00
};
2014-08-25 15:10:51 +08:00
module.exports = GeneralUserSettings;
2014-08-21 23:08:34 +08:00
2014-09-05 06:49:03 +08:00
}());