keeweb/app/scripts/views/settings/settings-general-view.js

200 lines
7.7 KiB
JavaScript
Raw Normal View History

2015-10-17 23:49:24 +02:00
'use strict';
var Backbone = require('backbone'),
Launcher = require('../../comp/launcher'),
2015-10-25 20:26:33 +01:00
Updater = require('../../comp/updater'),
Format = require('../../util/format'),
2015-10-29 22:20:01 +01:00
AppSettingsModel = require('../../models/app-settings-model'),
UpdateModel = require('../../models/update-model'),
2015-11-14 16:28:36 +01:00
RuntimeInfo = require('../../comp/runtime-info'),
2015-11-21 15:55:42 +01:00
FeatureDetector = require('../../util/feature-detector'),
2015-12-17 19:25:25 +01:00
Locale = require('../../util/locale'),
2015-11-14 16:28:36 +01:00
Links = require('../../const/links');
2015-10-17 23:49:24 +02:00
var SettingsGeneralView = Backbone.View.extend({
2015-12-16 22:50:45 +01:00
template: require('templates/settings/settings-general.hbs'),
2015-10-17 23:49:24 +02:00
events: {
2015-10-23 22:12:12 +02:00
'change .settings__general-theme': 'changeTheme',
'change .settings__general-expand': 'changeExpandGroups',
'change .settings__general-auto-update': 'changeAutoUpdate',
2015-11-18 19:33:04 +01:00
'change .settings__general-idle-minutes': 'changeIdleMinutes',
'change .settings__general-clipboard': 'changeClipboard',
2015-11-17 21:57:32 +01:00
'change .settings__general-auto-save': 'changeAutoSave',
2015-11-21 08:29:49 +01:00
'change .settings__general-minimize': 'changeMinimize',
'change .settings__general-lock-on-minimize': 'changeLockOnMinimize',
2015-11-21 15:55:42 +01:00
'change .settings__general-table-view': 'changeTableView',
2015-12-02 22:12:14 +01:00
'change .settings__general-colorful-icons': 'changeColorfulIcons',
2015-11-14 12:09:36 +01:00
'click .settings__general-update-btn': 'checkUpdate',
'click .settings__general-restart-btn': 'restartApp',
2015-11-14 16:28:36 +01:00
'click .settings__general-download-update-btn': 'downloadUpdate',
'click .settings__general-update-found-btn': 'installFoundUpdate',
2015-10-23 22:12:12 +02:00
'click .settings__general-dev-tools-link': 'openDevTools'
2015-10-17 23:49:24 +02:00
},
allThemes: {
2015-12-05 14:57:43 +01:00
fb: 'Flat blue',
db: 'Dark brown',
wh: 'White'
2015-10-17 23:49:24 +02:00
},
2015-10-29 22:20:01 +01:00
initialize: function() {
this.listenTo(UpdateModel.instance, 'change:status', this.render, this);
2015-11-14 12:09:36 +01:00
this.listenTo(UpdateModel.instance, 'change:updateStatus', this.render, this);
2015-10-29 22:20:01 +01:00
},
2015-10-17 23:49:24 +02:00
render: function() {
2015-12-16 22:50:45 +01:00
var updateReady = UpdateModel.instance.get('updateStatus') === 'ready',
updateFound = UpdateModel.instance.get('updateStatus') === 'found',
updateManual = UpdateModel.instance.get('updateManual');
2015-10-17 23:49:24 +02:00
this.renderTemplate({
themes: this.allThemes,
2015-10-25 20:26:33 +01:00
activeTheme: AppSettingsModel.instance.get('theme'),
expandGroups: AppSettingsModel.instance.get('expandGroups'),
canClearClipboard: !!Launcher,
clipboardSeconds: AppSettingsModel.instance.get('clipboardSeconds'),
2015-11-17 21:57:32 +01:00
autoSave: AppSettingsModel.instance.get('autoSave'),
2015-11-18 19:33:04 +01:00
idleMinutes: AppSettingsModel.instance.get('idleMinutes'),
2015-11-21 08:29:49 +01:00
minimizeOnClose: AppSettingsModel.instance.get('minimizeOnClose'),
2015-10-29 22:20:01 +01:00
devTools: Launcher && Launcher.devTools,
canAutoUpdate: Updater.enabled,
canMinimize: Launcher && Launcher.canMinimize(),
lockOnMinimize: Launcher && AppSettingsModel.instance.get('lockOnMinimize'),
2015-11-21 15:55:42 +01:00
tableView: AppSettingsModel.instance.get('tableView'),
canSetTableView: FeatureDetector.isDesktop(),
autoUpdate: Updater.getAutoUpdateType(),
2015-11-14 12:09:36 +01:00
updateInProgress: Updater.updateInProgress(),
updateInfo: this.getUpdateInfo(),
2015-12-16 22:50:45 +01:00
updateWaitingReload: updateReady && !Launcher,
showUpdateBlock: Updater.enabled && !updateManual,
2015-12-16 22:50:45 +01:00
updateReady: updateReady,
updateFound: updateFound,
updateManual: updateManual,
2015-12-02 22:12:14 +01:00
releaseNotesLink: Links.ReleaseNotes,
colorfulIcons: AppSettingsModel.instance.get('colorfulIcons')
2015-10-17 23:49:24 +02:00
});
},
2015-10-29 22:20:01 +01:00
getUpdateInfo: function() {
switch (UpdateModel.instance.get('status')) {
case 'checking':
2015-12-17 19:25:25 +01:00
return Locale.setGenUpdateChecking + '...';
2015-10-29 22:20:01 +01:00
case 'error':
2015-12-17 19:25:25 +01:00
var errMsg = Locale.setGenErrorChecking;
2015-10-29 22:20:01 +01:00
if (UpdateModel.instance.get('lastError')) {
errMsg += ': ' + UpdateModel.instance.get('lastError');
}
if (UpdateModel.instance.get('lastSuccessCheckDate')) {
2015-12-17 19:25:25 +01:00
errMsg += '. ' + Locale.setGenLastCheckSuccess.replace('{}', Format.dtStr(UpdateModel.instance.get('lastSuccessCheckDate'))) +
': ' + Locale.setGenLastCheckVer.replace('{}', UpdateModel.instance.get('lastVersion'));
2015-10-29 22:20:01 +01:00
}
return errMsg;
case 'ok':
2015-12-17 19:25:25 +01:00
var msg = Locale.setGenCheckedAt + ' ' + Format.dtStr(UpdateModel.instance.get('lastCheckDate')) + ': ';
2015-10-29 22:20:01 +01:00
if (RuntimeInfo.version === UpdateModel.instance.get('lastVersion')) {
2015-12-17 19:25:25 +01:00
msg += Locale.setGenLatestVer;
2015-10-29 22:20:01 +01:00
} else {
2015-12-17 19:25:25 +01:00
msg += Locale.setGenNewVer.replace('{}', UpdateModel.instance.get('lastVersion')) + ' ' +
2015-10-29 22:20:01 +01:00
Format.dStr(UpdateModel.instance.get('lastVersionReleaseDate'));
}
2015-11-14 12:09:36 +01:00
switch (UpdateModel.instance.get('updateStatus')) {
case 'downloading':
2015-12-17 19:25:25 +01:00
return msg + '. ' + Locale.setGenDownloadingUpdate;
2015-11-14 12:09:36 +01:00
case 'extracting':
2015-12-17 19:25:25 +01:00
return msg + '. ' + Locale.setGenExtractingUpdate;
2015-11-14 12:09:36 +01:00
case 'error':
2015-12-17 19:25:25 +01:00
return msg + '. ' + Locale.setGenCheckErr;
2015-11-14 12:09:36 +01:00
}
2015-10-29 22:20:01 +01:00
return msg;
default:
2015-12-17 19:25:25 +01:00
return Locale.setGenNeverChecked;
2015-10-29 22:20:01 +01:00
}
},
2015-10-17 23:49:24 +02:00
changeTheme: function(e) {
var theme = e.target.value;
AppSettingsModel.instance.set('theme', theme);
2015-10-23 22:12:12 +02:00
},
changeClipboard: function(e) {
var clipboardSeconds = +e.target.value;
AppSettingsModel.instance.set('clipboardSeconds', clipboardSeconds);
},
2015-11-18 19:33:04 +01:00
changeIdleMinutes: function(e) {
var idleMinutes = +e.target.value;
AppSettingsModel.instance.set('idleMinutes', idleMinutes);
},
2015-10-25 20:26:33 +01:00
changeAutoUpdate: function(e) {
var autoUpdate = e.target.value || false;
2015-10-25 20:26:33 +01:00
AppSettingsModel.instance.set('autoUpdate', autoUpdate);
if (autoUpdate) {
2015-10-29 22:20:01 +01:00
Updater.scheduleNextCheck();
2015-10-25 20:26:33 +01:00
}
},
2015-11-14 12:09:36 +01:00
checkUpdate: function() {
Updater.check(true);
},
2015-11-17 21:57:32 +01:00
changeAutoSave: function(e) {
var autoSave = e.target.checked || false;
AppSettingsModel.instance.set('autoSave', autoSave);
},
2015-11-21 08:29:49 +01:00
changeMinimize: function(e) {
var minimizeOnClose = e.target.checked || false;
AppSettingsModel.instance.set('minimizeOnClose', minimizeOnClose);
},
changeLockOnMinimize: function(e) {
var lockOnMinimize = e.target.checked || false;
AppSettingsModel.instance.set('lockOnMinimize', lockOnMinimize);
},
2015-11-21 15:55:42 +01:00
changeTableView: function(e) {
var tableView = e.target.checked || false;
AppSettingsModel.instance.set('tableView', tableView);
Backbone.trigger('refresh');
},
2015-12-02 22:12:14 +01:00
changeColorfulIcons: function(e) {
var colorfulIcons = e.target.checked || false;
AppSettingsModel.instance.set('colorfulIcons', colorfulIcons);
Backbone.trigger('refresh');
},
2015-11-14 12:09:36 +01:00
restartApp: function() {
2015-11-14 16:28:36 +01:00
if (Launcher) {
Launcher.requestRestart();
} else {
window.location.reload();
}
},
downloadUpdate: function() {
Launcher.openLink(Links.Desktop);
2015-11-14 12:09:36 +01:00
},
installFoundUpdate: function() {
Updater.update(true, function() {
Launcher.requestRestart();
});
},
changeExpandGroups: function(e) {
var expand = e.target.checked;
AppSettingsModel.instance.set('expandGroups', expand);
Backbone.trigger('refresh');
},
2015-10-23 22:12:12 +02:00
openDevTools: function() {
if (Launcher) {
Launcher.openDevTools();
}
2015-10-17 23:49:24 +02:00
}
});
module.exports = SettingsGeneralView;