2015-10-17 23:49:24 +02:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
var Backbone = require('backbone'),
|
2015-10-25 10:44:19 +01:00
|
|
|
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-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',
|
2015-11-06 21:42:37 +01:00
|
|
|
'change .settings__general-expand': 'changeExpandGroups',
|
2015-11-11 20:26:04 +01:00
|
|
|
'change .settings__general-auto-update': 'changeAutoUpdate',
|
2015-11-18 19:33:04 +01:00
|
|
|
'change .settings__general-idle-minutes': 'changeIdleMinutes',
|
2015-11-16 21:36:07 +01:00
|
|
|
'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',
|
2015-12-02 22:41:53 +01:00
|
|
|
'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',
|
2015-11-16 20:04:33 +01:00
|
|
|
'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'),
|
2015-11-06 21:42:37 +01:00
|
|
|
expandGroups: AppSettingsModel.instance.get('expandGroups'),
|
2015-11-16 21:36:07 +01:00
|
|
|
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,
|
2015-10-25 20:26:33 +01:00
|
|
|
canAutoUpdate: !!Launcher,
|
2015-12-02 22:41:53 +01:00
|
|
|
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(),
|
2015-11-16 20:04:33 +01:00
|
|
|
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: Launcher && !updateManual,
|
|
|
|
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':
|
|
|
|
return 'Checking for updates...';
|
|
|
|
case 'error':
|
|
|
|
var errMsg = 'Error checking for updates';
|
|
|
|
if (UpdateModel.instance.get('lastError')) {
|
|
|
|
errMsg += ': ' + UpdateModel.instance.get('lastError');
|
|
|
|
}
|
|
|
|
if (UpdateModel.instance.get('lastSuccessCheckDate')) {
|
|
|
|
errMsg += '. Last successful check was at ' + Format.dtStr(UpdateModel.instance.get('lastSuccessCheckDate')) +
|
|
|
|
': the latest version was ' + UpdateModel.instance.get('lastVersion');
|
|
|
|
}
|
|
|
|
return errMsg;
|
|
|
|
case 'ok':
|
|
|
|
var msg = 'Checked at ' + Format.dtStr(UpdateModel.instance.get('lastCheckDate')) + ': ';
|
|
|
|
if (RuntimeInfo.version === UpdateModel.instance.get('lastVersion')) {
|
|
|
|
msg += 'you are using the latest version';
|
|
|
|
} else {
|
|
|
|
msg += 'new version ' + UpdateModel.instance.get('lastVersion') + ' available, released at ' +
|
|
|
|
Format.dStr(UpdateModel.instance.get('lastVersionReleaseDate'));
|
|
|
|
}
|
2015-11-14 12:09:36 +01:00
|
|
|
switch (UpdateModel.instance.get('updateStatus')) {
|
|
|
|
case 'downloading':
|
|
|
|
return msg + '. Downloading update...';
|
|
|
|
case 'extracting':
|
|
|
|
return msg + '. Extracting update...';
|
|
|
|
case 'error':
|
|
|
|
return msg + '. There was an error downloading new version';
|
|
|
|
}
|
2015-10-29 22:20:01 +01:00
|
|
|
return msg;
|
|
|
|
default:
|
|
|
|
return 'Never checked for updates';
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
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
|
|
|
},
|
|
|
|
|
2015-11-16 21:36:07 +01: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) {
|
2015-11-16 20:04:33 +01:00
|
|
|
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);
|
|
|
|
},
|
|
|
|
|
2015-12-02 22:41:53 +01:00
|
|
|
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
|
|
|
},
|
|
|
|
|
2015-11-16 20:04:33 +01:00
|
|
|
installFoundUpdate: function() {
|
|
|
|
Updater.update(true, function() {
|
|
|
|
Launcher.requestRestart();
|
|
|
|
});
|
|
|
|
},
|
|
|
|
|
2015-11-06 21:42:37 +01:00
|
|
|
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;
|