11 changed files with 3388 additions and 2647 deletions
@ -1,334 +1,444 @@ |
|||||||
Ext.define('Rambox.Application', { |
Ext.define("Rambox.Application", { |
||||||
extend: 'Ext.app.Application' |
extend: "Ext.app.Application", |
||||||
|
|
||||||
,name: 'Rambox' |
name: "Rambox", |
||||||
|
|
||||||
,requires: [ |
requires: [ |
||||||
'Rambox.ux.Auth0' |
"Rambox.ux.Auth0", |
||||||
,'Rambox.util.MD5' |
"Rambox.util.MD5", |
||||||
,'Ext.window.Toast' |
"Ext.window.Toast", |
||||||
,'Ext.util.Cookies' |
"Ext.util.Cookies", |
||||||
] |
], |
||||||
|
|
||||||
,stores: [ |
|
||||||
'ServicesList' |
|
||||||
,'Services' |
|
||||||
] |
|
||||||
|
|
||||||
,profiles: [ |
stores: ["ServicesList", "Services"], |
||||||
'Offline' |
|
||||||
,'Online' |
|
||||||
] |
|
||||||
|
|
||||||
,config: { |
profiles: ["Offline", "Online"], |
||||||
totalServicesLoaded: 0 |
|
||||||
,totalNotifications: 0 |
|
||||||
,googleURLs: [] |
|
||||||
} |
|
||||||
|
|
||||||
,launch: function () { |
config: { |
||||||
|
totalServicesLoaded: 0, |
||||||
|
totalNotifications: 0, |
||||||
|
googleURLs: [], |
||||||
|
}, |
||||||
|
|
||||||
const isOnline = require('is-online'); |
launch: function () { |
||||||
const Mousetrap = require('mousetrap'); |
const isOnline = require("is-online"); |
||||||
|
const Mousetrap = require("mousetrap"); |
||||||
(async () => { |
(async () => { |
||||||
await isOnline().then(res => { |
await isOnline().then((res) => { |
||||||
var hideNoConnection = ipc.sendSync('getConfig').hideNoConnectionDialog |
var hideNoConnection = ipc.sendSync("getConfig").hideNoConnectionDialog; |
||||||
if (!res && !hideNoConnection) { |
if (!res && !hideNoConnection) { |
||||||
Ext.get('spinner') ? Ext.get('spinner').destroy() : null; |
Ext.get("spinner") ? Ext.get("spinner").destroy() : null; |
||||||
Ext.get('background') ? Ext.get('background').destroy() : null; |
Ext.get("background") ? Ext.get("background").destroy() : null; |
||||||
Ext.Msg.show({ |
Ext.Msg.show({ |
||||||
title: 'No Internet Connection' |
title: "No Internet Connection", |
||||||
,msg: 'Please, check your internet connection. If you use a Proxy, please go to Preferences to configure it. Rambox will try to re-connect in 10 seconds' |
msg: |
||||||
,width: 300 |
"Please, check your internet connection. If you use a Proxy, please go to Preferences to configure it. Rambox will try to re-connect in 10 seconds", |
||||||
,closable: false |
width: 300, |
||||||
,buttons: Ext.Msg.YESNO |
closable: false, |
||||||
,buttonText: { |
buttons: Ext.Msg.YESNO, |
||||||
yes: 'Ok' |
buttonText: { |
||||||
,no: 'Never show this again' |
yes: "Ok", |
||||||
} |
no: "Never show this again", |
||||||
,multiline: false |
}, |
||||||
,fn: function(buttonValue, inputText, showConfig) { |
multiline: false, |
||||||
if ( buttonValue === 'no' ) { |
fn: function (buttonValue, inputText, showConfig) { |
||||||
ipc.send('sConfig', { hideNoConnectionDialog: true }); |
if (buttonValue === "no") { |
||||||
|
ipc.send("sConfig", { hideNoConnectionDialog: true }); |
||||||
hideNoConnection = true; |
hideNoConnection = true; |
||||||
} |
} |
||||||
} |
}, |
||||||
,icon: Ext.Msg.QUESTION |
icon: Ext.Msg.QUESTION, |
||||||
}); |
}); |
||||||
setTimeout(function () { |
setTimeout(function () { |
||||||
if ( !hideNoConnection ) ipc.send('reloadApp') |
if (!hideNoConnection) ipc.send("reloadApp"); |
||||||
}, 10000) |
}, 10000); |
||||||
} |
} |
||||||
}) |
}); |
||||||
})(); |
})(); |
||||||
|
|
||||||
if ( !localStorage.getItem('hideMacPermissions') && process.platform === 'darwin' && (require('electron').remote.systemPreferences.getMediaAccessStatus('microphone') !== 'granted' || require('electron').remote.systemPreferences.getMediaAccessStatus('camera') !== 'granted') ) { |
if ( |
||||||
console.info('Checking mac permissions...'); |
!localStorage.getItem("hideMacPermissions") && |
||||||
Ext.cq1('app-main').addDocked({ |
process.platform === "darwin" && |
||||||
xtype: 'toolbar' |
(require("electron").remote.systemPreferences.getMediaAccessStatus( |
||||||
,dock: 'top' |
"microphone" |
||||||
,style: {background: '#30BBF3'} |
) !== "granted" || |
||||||
,items: [ |
require("electron").remote.systemPreferences.getMediaAccessStatus( |
||||||
'->' |
"camera" |
||||||
,{ |
) !== "granted") |
||||||
xtype: 'label' |
) { |
||||||
,html: '<b>Rambox CE needs permissions to use Microphone and Camera for the apps.</b>' |
console.info("Checking mac permissions..."); |
||||||
} |
Ext.cq1("app-main").addDocked({ |
||||||
,{ |
xtype: "toolbar", |
||||||
xtype: 'button' |
dock: "top", |
||||||
,text: 'Grant permissions' |
style: { background: "#30BBF3" }, |
||||||
,ui: 'decline' |
items: [ |
||||||
,handler: async function(btn) { |
"->", |
||||||
await require('electron').remote.systemPreferences.askForMediaAccess('microphone'); |
{ |
||||||
await require('electron').remote.systemPreferences.askForMediaAccess('camera'); |
xtype: "label", |
||||||
Ext.cq1('app-main').removeDocked(btn.up('toolbar'), true); |
html: |
||||||
} |
"<b>Rambox CE needs permissions to use Microphone and Camera for the apps.</b>", |
||||||
} |
}, |
||||||
,{ |
{ |
||||||
xtype: 'button' |
xtype: "button", |
||||||
,text: 'Never ask again' |
text: "Grant permissions", |
||||||
,ui: 'decline' |
ui: "decline", |
||||||
,handler: function(btn) { |
handler: async function (btn) { |
||||||
Ext.cq1('app-main').removeDocked(btn.up('toolbar'), true); |
await require("electron").remote.systemPreferences.askForMediaAccess( |
||||||
localStorage.setItem('hideMacPermissions', true); |
"microphone" |
||||||
} |
); |
||||||
} |
await require("electron").remote.systemPreferences.askForMediaAccess( |
||||||
,'->' |
"camera" |
||||||
,{ |
); |
||||||
glyph: 'xf00d@FontAwesome' |
Ext.cq1("app-main").removeDocked(btn.up("toolbar"), true); |
||||||
,baseCls: '' |
}, |
||||||
,style: 'cursor:pointer;' |
}, |
||||||
,handler: function(btn) { Ext.cq1('app-main').removeDocked(btn.up('toolbar'), true); } |
{ |
||||||
} |
xtype: "button", |
||||||
] |
text: "Never ask again", |
||||||
|
ui: "decline", |
||||||
|
handler: function (btn) { |
||||||
|
Ext.cq1("app-main").removeDocked(btn.up("toolbar"), true); |
||||||
|
localStorage.setItem("hideMacPermissions", true); |
||||||
|
}, |
||||||
|
}, |
||||||
|
"->", |
||||||
|
{ |
||||||
|
glyph: "xf00d@FontAwesome", |
||||||
|
baseCls: "", |
||||||
|
style: "cursor:pointer;", |
||||||
|
handler: function (btn) { |
||||||
|
Ext.cq1("app-main").removeDocked(btn.up("toolbar"), true); |
||||||
|
}, |
||||||
|
}, |
||||||
|
], |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
|
Ext.getStore("ServicesList").load(function (records, operations, success) { |
||||||
Ext.getStore('ServicesList').load(function (records, operations, success) { |
|
||||||
|
|
||||||
if (!success) { |
if (!success) { |
||||||
Ext.cq1('app-main').addDocked({ |
Ext.cq1("app-main").addDocked({ |
||||||
xtype: 'toolbar' |
xtype: "toolbar", |
||||||
,dock: 'top' |
dock: "top", |
||||||
,ui: 'servicesnotloaded' |
ui: "servicesnotloaded", |
||||||
,style: { background: '#efef6d' } |
style: { background: "#efef6d" }, |
||||||
,items: [ |
items: [ |
||||||
'->' |
"->", |
||||||
,{ |
{ |
||||||
xtype: 'label' |
xtype: "label", |
||||||
,html: '<b>Services couldn\'t be loaded, some Rambox features will not be available.</b>' |
html: |
||||||
} |
"<b>Services couldn't be loaded, some Rambox features will not be available.</b>", |
||||||
,{ |
}, |
||||||
xtype: 'button' |
{ |
||||||
,text: 'Reload' |
xtype: "button", |
||||||
,handler: function() { ipc.send('reloadApp'); } |
text: "Reload", |
||||||
} |
handler: function () { |
||||||
,'->' |
ipc.send("reloadApp"); |
||||||
,{ |
}, |
||||||
glyph: 'xf00d@FontAwesome' |
}, |
||||||
,baseCls: '' |
"->", |
||||||
,style: 'cursor:pointer;' |
{ |
||||||
,handler: function(btn) { Ext.cq1('app-main').removeDocked(btn.up('toolbar'), true); } |
glyph: "xf00d@FontAwesome", |
||||||
} |
baseCls: "", |
||||||
] |
style: "cursor:pointer;", |
||||||
|
handler: function (btn) { |
||||||
|
Ext.cq1("app-main").removeDocked(btn.up("toolbar"), true); |
||||||
|
}, |
||||||
|
}, |
||||||
|
], |
||||||
}); |
}); |
||||||
} |
} |
||||||
// Prevent track if the user have disabled this option (default: false)
|
// Prevent track if the user have disabled this option (default: false)
|
||||||
if ( !ipc.sendSync('sendStatistics') ) { |
if (!ipc.sendSync("sendStatistics")) { |
||||||
ga_storage = { |
ga_storage = { |
||||||
_enableSSL: Ext.emptyFn |
_enableSSL: Ext.emptyFn, |
||||||
,_disableSSL: Ext.emptyFn |
_disableSSL: Ext.emptyFn, |
||||||
,_setAccount: Ext.emptyFn |
_setAccount: Ext.emptyFn, |
||||||
,_setDomain: Ext.emptyFn |
_setDomain: Ext.emptyFn, |
||||||
,_setLocale: Ext.emptyFn |
_setLocale: Ext.emptyFn, |
||||||
,_setCustomVar: Ext.emptyFn |
_setCustomVar: Ext.emptyFn, |
||||||
,_deleteCustomVar: Ext.emptyFn |
_deleteCustomVar: Ext.emptyFn, |
||||||
,_trackPageview: Ext.emptyFn |
_trackPageview: Ext.emptyFn, |
||||||
,_trackEvent: Ext.emptyFn |
_trackEvent: Ext.emptyFn, |
||||||
} |
}; |
||||||
} |
} |
||||||
|
|
||||||
// Set Google Analytics events
|
// Set Google Analytics events
|
||||||
ga_storage._setAccount('UA-80680424-1'); |
ga_storage._setAccount("UA-80680424-1"); |
||||||
ga_storage._trackPageview('/index.html', 'main'); |
ga_storage._trackPageview("/index.html", "main"); |
||||||
ga_storage._trackEvent('Versions', require('electron').remote.app.getVersion()); |
ga_storage._trackEvent( |
||||||
|
"Versions", |
||||||
|
require("electron").remote.app.getVersion() |
||||||
|
); |
||||||
|
|
||||||
// Load language for Ext JS library
|
// Load language for Ext JS library
|
||||||
Ext.Loader.loadScript({url: Ext.util.Format.format("ext/packages/ext-locale/build/ext-locale-{0}.js", localStorage.getItem('locale-auth0') || 'en')}); |
Ext.Loader.loadScript({ |
||||||
|
url: Ext.util.Format.format( |
||||||
|
"ext/packages/ext-locale/build/ext-locale-{0}.js", |
||||||
|
localStorage.getItem("locale-auth0") || "en" |
||||||
|
), |
||||||
|
}); |
||||||
|
|
||||||
// Initialize Auth0
|
// Initialize Auth0
|
||||||
if ( auth0Cfg.clientID !== '' && auth0Cfg.domain !== '' ) Rambox.ux.Auth0.init(); |
if (auth0Cfg.clientID !== "" && auth0Cfg.domain !== "") |
||||||
|
Rambox.ux.Auth0.init(); |
||||||
|
|
||||||
// Set cookies to help Tooltip.io messages segmentation
|
// Set cookies to help Tooltip.io messages segmentation
|
||||||
Ext.util.Cookies.set('version', require('electron').remote.app.getVersion()); |
Ext.util.Cookies.set( |
||||||
if ( Ext.util.Cookies.get('auth0') === null ) Ext.util.Cookies.set('auth0', false); |
"version", |
||||||
|
require("electron").remote.app.getVersion() |
||||||
|
); |
||||||
|
if (Ext.util.Cookies.get("auth0") === null) |
||||||
|
Ext.util.Cookies.set("auth0", false); |
||||||
|
|
||||||
// Check for updates
|
// Check for updates
|
||||||
if ( require('electron').remote.process.argv.indexOf('--without-update') === -1 ) Rambox.app.checkUpdate(true); |
if ( |
||||||
|
require("electron").remote.process.argv.indexOf("--without-update") === |
||||||
|
-1 |
||||||
|
) |
||||||
|
Rambox.app.checkUpdate(true); |
||||||
|
|
||||||
// Get Google URLs
|
// Get Google URLs
|
||||||
Ext.Ajax.request({ |
Ext.Ajax.request({ |
||||||
url: 'https://raw.githubusercontent.com/ramboxapp/community-edition/gh-pages/api/google.json' |
url: |
||||||
,method: 'GET' |
"https://raw.githubusercontent.com/ramboxapp/community-edition/gh-pages/api/google.json", |
||||||
,success: function(response) { |
method: "GET", |
||||||
|
success: function (response) { |
||||||
Rambox.app.config.googleURLs = Ext.decode(response.responseText); |
Rambox.app.config.googleURLs = Ext.decode(response.responseText); |
||||||
} |
}, |
||||||
}); |
}); |
||||||
|
|
||||||
// Shortcuts
|
// Shortcuts
|
||||||
const platform = require('electron').remote.process.platform; |
const platform = require("electron").remote.process.platform; |
||||||
// Prevents default behaviour of Mousetrap, that prevents shortcuts in textareas
|
// Prevents default behaviour of Mousetrap, that prevents shortcuts in textareas
|
||||||
Mousetrap.prototype.stopCallback = function (e, element, combo) { |
Mousetrap.prototype.stopCallback = function (e, element, combo) { |
||||||
return false; |
return false; |
||||||
}; |
}; |
||||||
// Add shortcuts to switch services using CTRL + Number
|
// Add shortcuts to switch services using CTRL + Number
|
||||||
Mousetrap.bind(platform === 'darwin' ? ["command+1","command+2","command+3","command+4","command+5","command+6","command+7","command+8","command+9"] : ["ctrl+1","ctrl+2","ctrl+3","ctrl+4","ctrl+5","ctrl+6","ctrl+7","ctrl+8","ctrl+9"], function(e, combo) { // GROUPS
|
Mousetrap.bind( |
||||||
var tabPanel = Ext.cq1('app-main'); |
platform === "darwin" |
||||||
|
? [ |
||||||
|
"command+1", |
||||||
|
"command+2", |
||||||
|
"command+3", |
||||||
|
"command+4", |
||||||
|
"command+5", |
||||||
|
"command+6", |
||||||
|
"command+7", |
||||||
|
"command+8", |
||||||
|
"command+9", |
||||||
|
] |
||||||
|
: [ |
||||||
|
"ctrl+1", |
||||||
|
"ctrl+2", |
||||||
|
"ctrl+3", |
||||||
|
"ctrl+4", |
||||||
|
"ctrl+5", |
||||||
|
"ctrl+6", |
||||||
|
"ctrl+7", |
||||||
|
"ctrl+8", |
||||||
|
"ctrl+9", |
||||||
|
], |
||||||
|
function (e, combo) { |
||||||
|
// GROUPS
|
||||||
|
var tabPanel = Ext.cq1("app-main"); |
||||||
var arg = parseInt(e.key); |
var arg = parseInt(e.key); |
||||||
if ( arg >= tabPanel.items.indexOf(Ext.getCmp('tbfill')) ) arg++; |
if (arg >= tabPanel.items.indexOf(Ext.getCmp("tbfill"))) arg++; |
||||||
tabPanel.setActiveTab(arg); |
tabPanel.setActiveTab(arg); |
||||||
}); |
} |
||||||
|
); |
||||||
// Add shortcut to main tab (ctrl+,)
|
// Add shortcut to main tab (ctrl+,)
|
||||||
Mousetrap.bind(platform === 'darwin' ? 'command+,' : 'ctrl+,', (e, combo) => { |
Mousetrap.bind( |
||||||
Ext.cq1('app-main').setActiveTab(0); |
platform === "darwin" ? "command+," : "ctrl+,", |
||||||
}); |
(e, combo) => { |
||||||
|
Ext.cq1("app-main").setActiveTab(0); |
||||||
|
} |
||||||
|
); |
||||||
// Add shortcuts to navigate through services
|
// Add shortcuts to navigate through services
|
||||||
Mousetrap.bind(['ctrl+tab', 'ctrl+pagedown'], (e, combo) => { |
Mousetrap.bind(["ctrl+tab", "ctrl+pagedown"], (e, combo) => { |
||||||
var tabPanel = Ext.cq1('app-main'); |
var tabPanel = Ext.cq1("app-main"); |
||||||
var activeIndex = tabPanel.items.indexOf(tabPanel.getActiveTab()); |
var activeIndex = tabPanel.items.indexOf(tabPanel.getActiveTab()); |
||||||
var i = activeIndex + 1; |
var i = activeIndex + 1; |
||||||
// "cycle" (go to the start) when the end is reached or the end is the spacer "tbfill"
|
// "cycle" (go to the start) when the end is reached or the end is the spacer "tbfill"
|
||||||
if (i === tabPanel.items.items.length || i === tabPanel.items.items.length - 1 && tabPanel.items.items[i].id === 'tbfill') i = 0; |
if ( |
||||||
|
i === tabPanel.items.items.length || |
||||||
|
(i === tabPanel.items.items.length - 1 && |
||||||
|
tabPanel.items.items[i].id === "tbfill") |
||||||
|
) |
||||||
|
i = 0; |
||||||
// skip spacer
|
// skip spacer
|
||||||
while (tabPanel.items.items[i].id === 'tbfill') i++; |
while (tabPanel.items.items[i].id === "tbfill") i++; |
||||||
tabPanel.setActiveTab(i); |
tabPanel.setActiveTab(i); |
||||||
}); |
}); |
||||||
Mousetrap.bind(['ctrl+shift+tab', 'ctrl+pageup'], (e, combo) => { |
Mousetrap.bind(["ctrl+shift+tab", "ctrl+pageup"], (e, combo) => { |
||||||
var tabPanel = Ext.cq1('app-main'); |
var tabPanel = Ext.cq1("app-main"); |
||||||
var activeIndex = tabPanel.items.indexOf(tabPanel.getActiveTab()); |
var activeIndex = tabPanel.items.indexOf(tabPanel.getActiveTab()); |
||||||
var i = activeIndex - 1; |
var i = activeIndex - 1; |
||||||
if (i < 0) i = tabPanel.items.items.length - 1; |
if (i < 0) i = tabPanel.items.items.length - 1; |
||||||
while ( tabPanel.items.items[i].id === 'tbfill' || i < 0 ) i--; |
while (tabPanel.items.items[i].id === "tbfill" || i < 0) i--; |
||||||
tabPanel.setActiveTab(i); |
tabPanel.setActiveTab(i); |
||||||
}); |
}); |
||||||
// Add shortcut to search inside a service
|
// Add shortcut to search inside a service
|
||||||
Mousetrap.bind(process.platform === 'darwin' ? ['command+alt+f'] : ['shift+alt+f'], (e, combo) => { |
Mousetrap.bind( |
||||||
var currentTab = Ext.cq1('app-main').getActiveTab(); |
process.platform === "darwin" ? ["command+alt+f"] : ["shift+alt+f"], |
||||||
|
(e, combo) => { |
||||||
|
var currentTab = Ext.cq1("app-main").getActiveTab(); |
||||||
if (currentTab.getWebView) currentTab.showSearchBox(true); |
if (currentTab.getWebView) currentTab.showSearchBox(true); |
||||||
}); |
} |
||||||
|
); |
||||||
// Add shortcut to Do Not Disturb
|
// Add shortcut to Do Not Disturb
|
||||||
Mousetrap.bind(platform === 'darwin' ? ["command+alt+d"] : ["shift+alt+d"], function(e, combo) { |
Mousetrap.bind( |
||||||
var btn = Ext.getCmp('disturbBtn'); |
platform === "darwin" ? ["command+alt+d"] : ["shift+alt+d"], |
||||||
|
function (e, combo) { |
||||||
|
var btn = Ext.getCmp("disturbBtn"); |
||||||
btn.toggle(); |
btn.toggle(); |
||||||
Ext.cq1('app-main').getController().dontDisturb(btn, true); |
Ext.cq1("app-main").getController().dontDisturb(btn, true); |
||||||
}); |
} |
||||||
|
); |
||||||
// Add shortcut to Lock Rambox
|
// Add shortcut to Lock Rambox
|
||||||
Mousetrap.bind(platform === 'darwin' ? ['command+alt+l'] : ['shift+alt+l'], (e, combo) => { |
Mousetrap.bind( |
||||||
var btn = Ext.getCmp('lockRamboxBtn'); |
platform === "darwin" ? ["command+alt+l"] : ["shift+alt+l"], |
||||||
Ext.cq1('app-main').getController().lockRambox(btn); |
(e, combo) => { |
||||||
}); |
var btn = Ext.getCmp("lockRamboxBtn"); |
||||||
|
Ext.cq1("app-main").getController().lockRambox(btn); |
||||||
|
} |
||||||
|
); |
||||||
|
|
||||||
// Mouse Wheel zooming
|
// Mouse Wheel zooming
|
||||||
document.addEventListener('mousewheel', function(e) { |
document.addEventListener("mousewheel", function (e) { |
||||||
if (e.ctrlKey) { |
if (e.ctrlKey) { |
||||||
var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail))); |
var delta = Math.max(-1, Math.min(1, e.wheelDelta || -e.detail)); |
||||||
|
|
||||||
var tabPanel = Ext.cq1('app-main'); |
var tabPanel = Ext.cq1("app-main"); |
||||||
if ( tabPanel.items.indexOf(tabPanel.getActiveTab()) === 0 ) return false; |
if (tabPanel.items.indexOf(tabPanel.getActiveTab()) === 0) |
||||||
|
return false; |
||||||
|
|
||||||
if ( delta === 1 ) { // Zoom In
|
if (delta === 1) { |
||||||
|
// Zoom In
|
||||||
tabPanel.getActiveTab().zoomIn(); |
tabPanel.getActiveTab().zoomIn(); |
||||||
} else { // Zoom Out
|
} else { |
||||||
|
// Zoom Out
|
||||||
tabPanel.getActiveTab().zoomOut(); |
tabPanel.getActiveTab().zoomOut(); |
||||||
} |
} |
||||||
} |
} |
||||||
}); |
}); |
||||||
|
|
||||||
// Define default value
|
// Define default value
|
||||||
if ( localStorage.getItem('dontDisturb') === null ) localStorage.setItem('dontDisturb', false); |
if (localStorage.getItem("dontDisturb") === null) |
||||||
ipc.send('setDontDisturb', localStorage.getItem('dontDisturb')); // We store it in config
|
localStorage.setItem("dontDisturb", false); |
||||||
|
ipc.send("setDontDisturb", localStorage.getItem("dontDisturb")); // We store it in config
|
||||||
|
|
||||||
if ( localStorage.getItem('locked') ) { |
if (localStorage.getItem("locked")) { |
||||||
console.info('Lock Rambox:', 'Enabled'); |
console.info("Lock Rambox:", "Enabled"); |
||||||
Ext.cq1('app-main').getController().showLockWindow(); |
Ext.cq1("app-main").getController().showLockWindow(); |
||||||
} |
} |
||||||
Ext.getStore('Services').load(); |
Ext.getStore("Services").load(); |
||||||
}); |
}); |
||||||
} |
}, |
||||||
|
|
||||||
,updateTotalNotifications: function( newValue, oldValue ) { |
updateTotalNotifications: function (newValue, oldValue) { |
||||||
newValue = parseInt(newValue); |
newValue = parseInt(newValue); |
||||||
if (newValue > 0) { |
if (newValue > 0) { |
||||||
if ( Ext.cq1('app-main').getActiveTab().record ) { |
if (Ext.cq1("app-main").getActiveTab().record) { |
||||||
document.title = 'Rambox (' + Rambox.util.Format.formatNumber(newValue) + ') - '+Ext.cq1('app-main').getActiveTab().record.get('name'); |
document.title = |
||||||
|
"Rambox (" + |
||||||
|
Rambox.util.Format.formatNumber(newValue) + |
||||||
|
") - " + |
||||||
|
Ext.cq1("app-main").getActiveTab().record.get("name"); |
||||||
} else { |
} else { |
||||||
document.title = 'Rambox (' + Rambox.util.Format.formatNumber(newValue) + ')'; |
document.title = |
||||||
|
"Rambox (" + Rambox.util.Format.formatNumber(newValue) + ")"; |
||||||
} |
} |
||||||
} else { |
} else { |
||||||
if ( Ext.cq1('app-main') && Ext.cq1('app-main').getActiveTab().record ) { |
if (Ext.cq1("app-main") && Ext.cq1("app-main").getActiveTab().record) { |
||||||
document.title = 'Rambox - '+Ext.cq1('app-main').getActiveTab().record.get('name'); |
document.title = |
||||||
|
"Rambox - " + Ext.cq1("app-main").getActiveTab().record.get("name"); |
||||||
} else { |
} else { |
||||||
document.title = 'Rambox'; |
document.title = "Rambox"; |
||||||
} |
|
||||||
} |
} |
||||||
} |
} |
||||||
|
}, |
||||||
|
|
||||||
,checkUpdate: function(silence) { |
checkUpdate: function (silence) { |
||||||
console.info('Checking for updates...'); |
console.info("Checking for updates..."); |
||||||
Ext.Ajax.request({ |
Ext.Ajax.request({ |
||||||
url: 'https://api.github.com/repos/ramboxapp/community-edition/releases/latest' |
url: |
||||||
,method: 'GET' |
"https://api.github.com/repos/ramboxapp/community-edition/releases/latest", |
||||||
,success: function(response) { |
method: "GET", |
||||||
|
success: function (response) { |
||||||
var json = Ext.decode(response.responseText); |
var json = Ext.decode(response.responseText); |
||||||
var appVersion = new Ext.Version(require('electron').remote.app.getVersion()); |
var appVersion = new Ext.Version( |
||||||
if ( appVersion.isLessThan(json.name) && !json.draft && !json.prerelease ) { |
require("electron").remote.app.getVersion() |
||||||
console.info('New version is available', json.version); |
); |
||||||
Ext.cq1('app-main').addDocked({ |
if ( |
||||||
xtype: 'toolbar' |
appVersion.isLessThan(json.name) && |
||||||
,dock: 'top' |
!json.draft && |
||||||
,ui: 'newversion' |
!json.prerelease |
||||||
,items: [ |
) { |
||||||
'->' |
console.info("New version is available", json.version); |
||||||
,{ |
Ext.cq1("app-main").addDocked({ |
||||||
xtype: 'label' |
xtype: "toolbar", |
||||||
,html: '<b>'+locale['app.update[0]']+'</b> ('+json.version+')' + ( process.platform === 'win32' ? ' is downloading in the background and you will be notified when it is ready to be installed.' : '' ) |
dock: "top", |
||||||
} |
ui: "newversion", |
||||||
,{ |
items: [ |
||||||
xtype: 'button' |
"->", |
||||||
,text: locale['app.update[1]'] |
{ |
||||||
,href: process.platform === 'darwin' ? 'https://getrambox.herokuapp.com/download/'+process.platform+'_'+process.arch : 'https://github.com/ramboxapp/community-edition/releases/latest' |
xtype: "label", |
||||||
,hidden: process.platform === 'win32' |
html: |
||||||
} |
"<b>" + |
||||||
,{ |
locale["app.update[0]"] + |
||||||
xtype: 'button' |
"</b> (" + |
||||||
,text: locale['app.update[2]'] |
json.version + |
||||||
,ui: 'decline' |
")" + |
||||||
,tooltip: 'Click here to see more information about the new version.' |
(process.platform === "win32" |
||||||
,href: 'https://github.com/ramboxapp/community-edition/releases/tag/'+json.version |
? " is downloading in the background and you will be notified when it is ready to be installed." |
||||||
} |
: ""), |
||||||
,'->' |
}, |
||||||
,{ |
{ |
||||||
glyph: 'xf00d@FontAwesome' |
xtype: "button", |
||||||
,baseCls: '' |
text: locale["app.update[1]"], |
||||||
,style: 'cursor:pointer;' |
href: |
||||||
,handler: function(btn) { Ext.cq1('app-main').removeDocked(btn.up('toolbar'), true); } |
process.platform === "darwin" |
||||||
} |
? "https://getrambox.herokuapp.com/download/" + |
||||||
] |
process.platform + |
||||||
|
"_" + |
||||||
|
process.arch |
||||||
|
: "https://github.com/ramboxapp/community-edition/releases/latest", |
||||||
|
hidden: process.platform === "win32", |
||||||
|
}, |
||||||
|
{ |
||||||
|
xtype: "button", |
||||||
|
text: locale["app.update[2]"], |
||||||
|
ui: "decline", |
||||||
|
tooltip: |
||||||
|
"Click here to see more information about the new version.", |
||||||
|
href: |
||||||
|
"https://github.com/ramboxapp/community-edition/releases/tag/" + |
||||||
|
json.version, |
||||||
|
}, |
||||||
|
"->", |
||||||
|
{ |
||||||
|
glyph: "xf00d@FontAwesome", |
||||||
|
baseCls: "", |
||||||
|
style: "cursor:pointer;", |
||||||
|
handler: function (btn) { |
||||||
|
Ext.cq1("app-main").removeDocked(btn.up("toolbar"), true); |
||||||
|
}, |
||||||
|
}, |
||||||
|
], |
||||||
}); |
}); |
||||||
ipc.send('autoUpdater:check-for-updates'); |
ipc.send("autoUpdater:check-for-updates"); |
||||||
return; |
return; |
||||||
} else if (!silence) { |
} else if (!silence) { |
||||||
Ext.Msg.show({ |
Ext.Msg.show({ |
||||||
title: locale['app.update[3]'] |
title: locale["app.update[3]"], |
||||||
,message: locale['app.update[4]'] |
message: locale["app.update[4]"], |
||||||
,icon: Ext.Msg.INFO |
icon: Ext.Msg.INFO, |
||||||
,buttons: Ext.Msg.OK |
buttons: Ext.Msg.OK, |
||||||
}); |
}); |
||||||
} |
} |
||||||
|
|
||||||
console.info('Your version is the latest. No need to update.'); |
console.info("Your version is the latest. No need to update."); |
||||||
} |
}, |
||||||
}); |
}); |
||||||
} |
}, |
||||||
}); |
}); |
||||||
|
@ -1,42 +1,43 @@ |
|||||||
Ext.define('Rambox.store.ServicesList', { |
Ext.define("Rambox.store.ServicesList", { |
||||||
extend: 'Ext.data.Store' |
extend: "Ext.data.Store", |
||||||
,alias: 'store.serviceslist' |
alias: "store.serviceslist", |
||||||
|
|
||||||
,requires: [ |
requires: ["Ext.data.proxy.LocalStorage"], |
||||||
'Ext.data.proxy.LocalStorage' |
|
||||||
] |
|
||||||
|
|
||||||
,model: 'Rambox.model.ServiceList' |
model: "Rambox.model.ServiceList", |
||||||
|
|
||||||
,proxy: { |
proxy: { |
||||||
type: 'ajax', |
type: "ajax", |
||||||
url: 'https://raw.githubusercontent.com/ramboxapp/community-edition/gh-pages/api/services.json', |
url: |
||||||
|
"https://raw.githubusercontent.com/ramboxapp/community-edition/gh-pages/api/services.json", |
||||||
reader: { |
reader: { |
||||||
type: 'json', |
type: "json", |
||||||
rootProperty: 'responseText' |
rootProperty: "responseText", |
||||||
} |
}, |
||||||
} |
}, |
||||||
,listeners: { |
listeners: { |
||||||
load: function () { |
load: function () { |
||||||
Ext.get('spinner') ? Ext.get('spinner').destroy() : null; |
Ext.get("spinner") ? Ext.get("spinner").destroy() : null; |
||||||
Ext.get('background') ? Ext.get('background').destroy() : null; |
Ext.get("background") ? Ext.get("background").destroy() : null; |
||||||
this.add({ |
this.add({ |
||||||
id: 'custom' |
id: "custom", |
||||||
,logo: 'custom.png' |
logo: "custom.png", |
||||||
,name: '_Custom Service' |
name: "_Custom Service", |
||||||
,description: locale['services[38]'] |
description: locale["services[38]"], |
||||||
,url: '___' |
url: "___", |
||||||
,type: 'custom' |
type: "custom", |
||||||
,allow_popups: true |
allow_popups: true, |
||||||
}) |
}); |
||||||
} |
}, |
||||||
} |
}, |
||||||
,sorters: [{ |
sorters: [ |
||||||
property: 'name' |
{ |
||||||
,direction: 'ASC' |
property: "name", |
||||||
}] |
direction: "ASC", |
||||||
|
}, |
||||||
|
], |
||||||
|
|
||||||
,autoLoad: true |
autoLoad: true, |
||||||
,autoSync: true |
autoSync: true, |
||||||
,pageSize: 100000 |
pageSize: 100000, |
||||||
}); |
}); |
||||||
|
@ -1,382 +1,412 @@ |
|||||||
Ext.define('Rambox.view.preferences.Preferences',{ |
Ext.define("Rambox.view.preferences.Preferences", { |
||||||
extend: 'Ext.window.Window' |
extend: "Ext.window.Window", |
||||||
,xtype: 'preferences' |
xtype: "preferences", |
||||||
|
|
||||||
,requires: [ |
requires: [ |
||||||
'Rambox.view.preferences.PreferencesController' |
"Rambox.view.preferences.PreferencesController", |
||||||
,'Rambox.view.preferences.PreferencesModel' |
"Rambox.view.preferences.PreferencesModel", |
||||||
,'Ext.form.field.ComboBox' |
"Ext.form.field.ComboBox", |
||||||
,'Ext.form.field.Checkbox' |
"Ext.form.field.Checkbox", |
||||||
] |
], |
||||||
|
|
||||||
,controller: 'preferences-preferences' |
controller: "preferences-preferences", |
||||||
,viewModel: { |
viewModel: { |
||||||
type: 'preferences-preferences' |
type: "preferences-preferences", |
||||||
} |
}, |
||||||
|
|
||||||
,title: locale['preferences[0]'] |
title: locale["preferences[0]"], |
||||||
,width: 420 |
width: 420, |
||||||
,height: 500 |
height: 500, |
||||||
,modal: true |
modal: true, |
||||||
,closable: true |
closable: true, |
||||||
,minimizable: false |
minimizable: false, |
||||||
,maximizable: false |
maximizable: false, |
||||||
,draggable: true |
draggable: true, |
||||||
,resizable: false |
resizable: false, |
||||||
,scrollable: 'vertical' |
scrollable: "vertical", |
||||||
,bodyStyle: 'margin-right:15px;' |
bodyStyle: "margin-right:15px;", |
||||||
,buttons: [ |
buttons: [ |
||||||
{ |
{ |
||||||
text: locale['button[1]'] |
text: locale["button[1]"], |
||||||
,ui: 'decline' |
ui: "decline", |
||||||
,handler: 'cancel' |
handler: "cancel", |
||||||
} |
}, |
||||||
,'->' |
"->", |
||||||
,{ |
{ |
||||||
text: locale['button[4]'] |
text: locale["button[4]"], |
||||||
,handler: 'save' |
handler: "save", |
||||||
} |
}, |
||||||
] |
], |
||||||
|
|
||||||
,initComponent: function() { |
initComponent: function () { |
||||||
var config = ipc.sendSync('getConfig'); |
var config = ipc.sendSync("getConfig"); |
||||||
|
|
||||||
var defaultServiceOptions = []; |
var defaultServiceOptions = []; |
||||||
defaultServiceOptions.push({ value: 'ramboxTab', label: 'Rambox Tab' }); |
defaultServiceOptions.push({ value: "ramboxTab", label: "Rambox Tab" }); |
||||||
defaultServiceOptions.push({ value: 'last', label: 'Last Active Service' }); |
defaultServiceOptions.push({ value: "last", label: "Last Active Service" }); |
||||||
Ext.getStore('Services').each(function(rec) { |
Ext.getStore("Services").each(function (rec) { |
||||||
defaultServiceOptions.push({ |
defaultServiceOptions.push({ |
||||||
value: rec.get('id') |
value: rec.get("id"), |
||||||
,label: rec.get('name') |
label: rec.get("name"), |
||||||
}); |
}); |
||||||
}); |
}); |
||||||
|
|
||||||
this.items = [ |
this.items = [ |
||||||
{ |
{ |
||||||
xtype: 'form' |
xtype: "form", |
||||||
,bodyPadding: 20 |
bodyPadding: 20, |
||||||
,items: [ |
items: [ |
||||||
{ |
{ |
||||||
xtype: 'container' |
xtype: "container", |
||||||
,layout: 'hbox' |
layout: "hbox", |
||||||
,items: [ |
items: [ |
||||||
{ |
{ |
||||||
xtype: 'combo' |
xtype: "combo", |
||||||
,name: 'locale' |
name: "locale", |
||||||
,fieldLabel: 'Language' |
fieldLabel: "Language", |
||||||
,labelAlign: 'left' |
labelAlign: "left", |
||||||
,flex: 1 |
flex: 1, |
||||||
,labelWidth: 80 |
labelWidth: 80, |
||||||
,value: config.locale |
value: config.locale, |
||||||
,displayField: 'label' |
displayField: "label", |
||||||
,valueField: 'value' |
valueField: "value", |
||||||
,editable: false |
editable: false, |
||||||
,store: Ext.create('Ext.data.Store', { |
store: Ext.create("Ext.data.Store", { |
||||||
fields: ['value', 'label'] |
fields: ["value", "label"], |
||||||
,data: [ |
data: [ |
||||||
{ 'value': 'af', 'auth0': 'af', 'label': 'Afrikaans' } |
{ value: "af", auth0: "af", label: "Afrikaans" }, |
||||||
,{ 'value': 'ar', 'auth0': 'en', 'label': 'Arabic' } |
{ value: "ar", auth0: "en", label: "Arabic" }, |
||||||
,{ 'value': 'bs2', 'auth0': 'en', 'label': 'Barndutsch, Switzerland' } |
{ |
||||||
,{ 'value': 'bn', 'auth0': 'en', 'label': 'Bengali' } |
value: "bs2", |
||||||
,{ 'value': 'bg', 'auth0': 'en', 'label': 'Bulgarian' } |
auth0: "en", |
||||||
,{ 'value': 'ca', 'auth0': 'ca', 'label': 'Catalan' } |
label: "Barndutsch, Switzerland", |
||||||
,{ 'value': 'ceb', 'auth0': 'en', 'label': 'Cebuano' } |
}, |
||||||
,{ 'value': 'zh-CN', 'auth0': 'zh', 'label': 'Chinese Simplified' } |
{ value: "bn", auth0: "en", label: "Bengali" }, |
||||||
,{ 'value': 'zh-TW', 'auth0': 'zh-tw', 'label': 'Chinese Traditional' } |
{ value: "bg", auth0: "en", label: "Bulgarian" }, |
||||||
,{ 'value': 'hr', 'auth0': 'en', 'label': 'Croatian' } |
{ value: "ca", auth0: "ca", label: "Catalan" }, |
||||||
,{ 'value': 'cs', 'auth0': 'cs', 'label': 'Czech' } |
{ value: "ceb", auth0: "en", label: "Cebuano" }, |
||||||
,{ 'value': 'da', 'auth0': 'da', 'label': 'Danish' } |
{ |
||||||
,{ 'value': 'nl', 'auth0': 'nl', 'label': 'Dutch' } |
value: "zh-CN", |
||||||
,{ 'value': 'en', 'auth0': 'en', 'label': 'English' } |
auth0: "zh", |
||||||
,{ 'value': 'fi', 'auth0': 'fi', 'label': 'Finnish' } |
label: "Chinese Simplified", |
||||||
,{ 'value': 'fil', 'auth0': 'en', 'label': 'Filipino' } |
}, |
||||||
,{ 'value': 'fr', 'auth0': 'fr', 'label': 'French' } |
{ |
||||||
,{ 'value': 'de', 'auth0': 'de', 'label': 'German' } |
value: "zh-TW", |
||||||
,{ 'value': 'de-CH', 'auth0': 'de', 'label': 'German, Switzerland' } |
auth0: "zh-tw", |
||||||
,{ 'value': 'el', 'auth0': 'el', 'label': 'Greek' } |
label: "Chinese Traditional", |
||||||
,{ 'value': 'he', 'auth0': 'en', 'label': 'Hebrew' } |
}, |
||||||
,{ 'value': 'hi', 'auth0': 'en', 'label': 'Hindi' } |
{ value: "hr", auth0: "en", label: "Croatian" }, |
||||||
,{ 'value': 'hu', 'auth0': 'hu', 'label': 'Hungarian' } |
{ value: "cs", auth0: "cs", label: "Czech" }, |
||||||
,{ 'value': 'id', 'auth0': 'en', 'label': 'Indonesian' } |
{ value: "da", auth0: "da", label: "Danish" }, |
||||||
,{ 'value': 'it', 'auth0': 'it', 'label': 'Italian' } |
{ value: "nl", auth0: "nl", label: "Dutch" }, |
||||||
,{ 'value': 'ja', 'auth0': 'ja', 'label': 'Japanese' } |
{ value: "en", auth0: "en", label: "English" }, |
||||||
,{ 'value': 'ko', 'auth0': 'ko', 'label': 'Korean' } |
{ value: "fi", auth0: "fi", label: "Finnish" }, |
||||||
,{ 'value': 'no', 'auth0': 'no', 'label': 'Norwegian' } |
{ value: "fil", auth0: "en", label: "Filipino" }, |
||||||
,{ 'value': 'fa', 'auth0': 'fa', 'label': 'Persian' } |
{ value: "fr", auth0: "fr", label: "French" }, |
||||||
,{ 'value': 'pl', 'auth0': 'pl', 'label': 'Polish' } |
{ value: "de", auth0: "de", label: "German" }, |
||||||
,{ 'value': 'pt-PT', 'auth0': 'pt-br', 'label': 'Portuguese' } |
{ |
||||||
,{ 'value': 'pt-BR', 'auth0': 'pt-br', 'label': 'Portuguese (Brazilian)' } |
value: "de-CH", |
||||||
,{ 'value': 'ro', 'auth0': 'ro', 'label': 'Romanian' } |
auth0: "de", |
||||||
,{ 'value': 'ru', 'auth0': 'ru', 'label': 'Russian' } |
label: "German, Switzerland", |
||||||
,{ 'value': 'sr', 'auth0': 'en', 'label': 'Serbian (Cyrillic)' } |
}, |
||||||
,{ 'value': 'sk', 'auth0': 'sk', 'label': 'Slovak' } |
{ value: "el", auth0: "el", label: "Greek" }, |
||||||
,{ 'value': 'es-ES', 'auth0': 'es', 'label': 'Spanish' } |
{ value: "he", auth0: "en", label: "Hebrew" }, |
||||||
,{ 'value': 'sv-SE', 'auth0': 'sv', 'label': 'Swedish' } |
{ value: "hi", auth0: "en", label: "Hindi" }, |
||||||
,{ 'value': 'tl', 'auth0': 'en', 'label': 'Tagalog' } |
{ value: "hu", auth0: "hu", label: "Hungarian" }, |
||||||
,{ 'value': 'th', 'auth0': 'en', 'label': 'Thai' } |
{ value: "id", auth0: "en", label: "Indonesian" }, |
||||||
,{ 'value': 'tr', 'auth0': 'tr', 'label': 'Turkish' } |
{ value: "it", auth0: "it", label: "Italian" }, |
||||||
,{ 'value': 'uk', 'auth0': 'en', 'label': 'Ukrainian' } |
{ value: "ja", auth0: "ja", label: "Japanese" }, |
||||||
,{ 'value': 'ur-PK', 'auth0': 'en', 'label': 'Urdu (Pakistan)' } |
{ value: "ko", auth0: "ko", label: "Korean" }, |
||||||
,{ 'value': 'vi', 'auth0': 'en', 'label': 'Vietnamese' } |
{ value: "no", auth0: "no", label: "Norwegian" }, |
||||||
] |
{ value: "fa", auth0: "fa", label: "Persian" }, |
||||||
}) |
{ value: "pl", auth0: "pl", label: "Polish" }, |
||||||
} |
{ value: "pt-PT", auth0: "pt-br", label: "Portuguese" }, |
||||||
,{ |
{ |
||||||
xtype: 'button' |
value: "pt-BR", |
||||||
,text: 'Help us Translate' |
auth0: "pt-br", |
||||||
,style: 'border-top-left-radius:0;border-bottom-left-radius:0;' |
label: "Portuguese (Brazilian)", |
||||||
,href: 'https://crowdin.com/project/rambox/invite' |
}, |
||||||
} |
{ value: "ro", auth0: "ro", label: "Romanian" }, |
||||||
] |
{ value: "ru", auth0: "ru", label: "Russian" }, |
||||||
} |
{ value: "sr", auth0: "en", label: "Serbian (Cyrillic)" }, |
||||||
,{ |
{ value: "sk", auth0: "sk", label: "Slovak" }, |
||||||
xtype: 'label' |
{ value: "es-ES", auth0: "es", label: "Spanish" }, |
||||||
,text: 'English is the only language that has full translation. We are working with all the others, help us!' |
{ value: "sv-SE", auth0: "sv", label: "Swedish" }, |
||||||
,style: 'display:block;font-size:10px;line-height:15px;' |
{ value: "tl", auth0: "en", label: "Tagalog" }, |
||||||
,margin: '0 0 10 0' |
{ value: "th", auth0: "en", label: "Thai" }, |
||||||
} |
{ value: "tr", auth0: "tr", label: "Turkish" }, |
||||||
,{ |
{ value: "uk", auth0: "en", label: "Ukrainian" }, |
||||||
xtype: 'checkbox' |
{ value: "ur-PK", auth0: "en", label: "Urdu (Pakistan)" }, |
||||||
,name: 'auto_launch' |
{ value: "vi", auth0: "en", label: "Vietnamese" }, |
||||||
,boxLabel: locale['preferences[5]'] |
], |
||||||
,value: config.auto_launch |
}), |
||||||
} |
}, |
||||||
,{ |
{ |
||||||
xtype: 'checkbox' |
xtype: "button", |
||||||
,name: 'start_minimized' |
text: "Help us Translate", |
||||||
,boxLabel: locale['preferences[4]'] |
style: "border-top-left-radius:0;border-bottom-left-radius:0;", |
||||||
,value: config.start_minimized |
href: "https://crowdin.com/project/rambox/invite", |
||||||
} |
}, |
||||||
,{ |
], |
||||||
xtype: 'checkbox' |
}, |
||||||
,name: 'darkreader' |
{ |
||||||
,boxLabel: locale['preferences[29]'] |
xtype: "label", |
||||||
,value: config.darkreader |
text: |
||||||
} |
"English is the only language that has full translation. We are working with all the others, help us!", |
||||||
,{ |
style: "display:block;font-size:10px;line-height:15px;", |
||||||
xtype: 'checkbox' |
margin: "0 0 10 0", |
||||||
,name: 'hide_menu_bar' |
}, |
||||||
,boxLabel: locale['preferences[1]']+' (<code>Alt</code> key to display)' |
{ |
||||||
,value: config.hide_menu_bar |
xtype: "checkbox", |
||||||
,hidden: process.platform === 'darwin' |
name: "auto_launch", |
||||||
} |
boxLabel: locale["preferences[5]"], |
||||||
,{ |
value: config.auto_launch, |
||||||
xtype: 'combo' |
}, |
||||||
,name: 'tabbar_location' |
{ |
||||||
,fieldLabel: locale['preferences[11]'] |
xtype: "checkbox", |
||||||
,labelAlign: 'left' |
name: "start_minimized", |
||||||
,width: 380 |
boxLabel: locale["preferences[4]"], |
||||||
,labelWidth: 180 |
value: config.start_minimized, |
||||||
,value: config.tabbar_location |
}, |
||||||
,displayField: 'label' |
{ |
||||||
,valueField: 'value' |
xtype: "checkbox", |
||||||
,editable: false |
name: "darkreader", |
||||||
,store: Ext.create('Ext.data.Store', { |
boxLabel: locale["preferences[29]"], |
||||||
fields: ['value', 'label'] |
value: config.darkreader, |
||||||
,data: [ |
}, |
||||||
{ 'value': 'top', 'label': 'Top' } |
{ |
||||||
,{ 'value': 'left', 'label': 'Left' } |
xtype: "checkbox", |
||||||
,{ 'value': 'bottom', 'label': 'Bottom' } |
name: "hide_menu_bar", |
||||||
,{ 'value': 'right', 'label': 'Right' } |
boxLabel: |
||||||
] |
locale["preferences[1]"] + " (<code>Alt</code> key to display)", |
||||||
}) |
value: config.hide_menu_bar, |
||||||
} |
hidden: process.platform === "darwin", |
||||||
,{ |
}, |
||||||
xtype: 'checkbox' |
{ |
||||||
,name: 'hide_tabbar_labels' |
xtype: "combo", |
||||||
,boxLabel: locale['preferences[28]'] |
name: "tabbar_location", |
||||||
,value: config.hide_tabbar_labels |
fieldLabel: locale["preferences[11]"], |
||||||
} |
labelAlign: "left", |
||||||
,{ |
width: 380, |
||||||
xtype: 'combo' |
labelWidth: 180, |
||||||
,name: 'default_service' |
value: config.tabbar_location, |
||||||
,fieldLabel: locale['preferences[12]'] |
displayField: "label", |
||||||
,labelAlign: 'top' |
valueField: "value", |
||||||
|
editable: false, |
||||||
|
store: Ext.create("Ext.data.Store", { |
||||||
|
fields: ["value", "label"], |
||||||
|
data: [ |
||||||
|
{ value: "top", label: "Top" }, |
||||||
|
{ value: "left", label: "Left" }, |
||||||
|
{ value: "bottom", label: "Bottom" }, |
||||||
|
{ value: "right", label: "Right" }, |
||||||
|
], |
||||||
|
}), |
||||||
|
}, |
||||||
|
{ |
||||||
|
xtype: "checkbox", |
||||||
|
name: "hide_tabbar_labels", |
||||||
|
boxLabel: locale["preferences[28]"], |
||||||
|
value: config.hide_tabbar_labels, |
||||||
|
}, |
||||||
|
{ |
||||||
|
xtype: "combo", |
||||||
|
name: "default_service", |
||||||
|
fieldLabel: locale["preferences[12]"], |
||||||
|
labelAlign: "top", |
||||||
//,width: 380
|
//,width: 380
|
||||||
//,labelWidth: 105
|
//,labelWidth: 105
|
||||||
,value: config.default_service |
value: config.default_service, |
||||||
,displayField: 'label' |
displayField: "label", |
||||||
,valueField: 'value' |
valueField: "value", |
||||||
,editable: false |
editable: false, |
||||||
,store: Ext.create('Ext.data.Store', { |
store: Ext.create("Ext.data.Store", { |
||||||
fields: ['value', 'label'] |
fields: ["value", "label"], |
||||||
,data: defaultServiceOptions |
data: defaultServiceOptions, |
||||||
}) |
}), |
||||||
} |
}, |
||||||
,{ |
{ |
||||||
xtype: 'combo' |
xtype: "combo", |
||||||
,name: 'window_display_behavior' |
name: "window_display_behavior", |
||||||
,fieldLabel: locale['preferences[13]'] |
fieldLabel: locale["preferences[13]"], |
||||||
,labelAlign: 'left' |
labelAlign: "left", |
||||||
,width: 380 |
width: 380, |
||||||
,labelWidth: 105 |
labelWidth: 105, |
||||||
,value: config.window_display_behavior |
value: config.window_display_behavior, |
||||||
,displayField: 'label' |
displayField: "label", |
||||||
,valueField: 'value' |
valueField: "value", |
||||||
,editable: false |
editable: false, |
||||||
,store: Ext.create('Ext.data.Store', { |
store: Ext.create("Ext.data.Store", { |
||||||
fields: ['value', 'label'] |
fields: ["value", "label"], |
||||||
,data: [ |
data: [ |
||||||
{ 'value': 'show_taskbar', 'label': locale['preferences[14]'] } |
{ value: "show_taskbar", label: locale["preferences[14]"] }, |
||||||
,{ 'value': 'show_trayIcon', 'label': locale['preferences[15]'] } |
{ value: "show_trayIcon", label: locale["preferences[15]"] }, |
||||||
,{ 'value': 'taskbar_tray', 'label': locale['preferences[16]'] } |
{ value: "taskbar_tray", label: locale["preferences[16]"] }, |
||||||
] |
], |
||||||
}) |
}), |
||||||
,hidden: process.platform === 'darwin' |
hidden: process.platform === "darwin", |
||||||
} |
}, |
||||||
,{ |
{ |
||||||
xtype: 'combo' |
xtype: "combo", |
||||||
,name: 'window_close_behavior' |
name: "window_close_behavior", |
||||||
,fieldLabel: locale['preferences[17]'] |
fieldLabel: locale["preferences[17]"], |
||||||
,labelAlign: 'left' |
labelAlign: "left", |
||||||
,width: 380 |
width: 380, |
||||||
,labelWidth: 180 |
labelWidth: 180, |
||||||
,value: config.window_close_behavior |
value: config.window_close_behavior, |
||||||
,displayField: 'label' |
displayField: "label", |
||||||
,valueField: 'value' |
valueField: "value", |
||||||
,editable: false |
editable: false, |
||||||
,store: Ext.create('Ext.data.Store', { |
store: Ext.create("Ext.data.Store", { |
||||||
fields: ['value', 'label'] |
fields: ["value", "label"], |
||||||
,data: [ |
data: [ |
||||||
{ 'value': 'keep_in_tray', 'label': locale['preferences[18]'] } |
{ value: "keep_in_tray", label: locale["preferences[18]"] }, |
||||||
,{ 'value': 'keep_in_tray_and_taskbar', 'label': locale['preferences[19]'] } |
{ |
||||||
,{ 'value': 'quit', 'label': locale['preferences[20]'] } |
value: "keep_in_tray_and_taskbar", |
||||||
] |
label: locale["preferences[19]"], |
||||||
}) |
}, |
||||||
,hidden: process.platform === 'darwin' |
{ value: "quit", label: locale["preferences[20]"] }, |
||||||
} |
], |
||||||
,{ |
}), |
||||||
xtype: 'checkbox' |
hidden: process.platform === "darwin", |
||||||
,name: 'always_on_top' |
}, |
||||||
,boxLabel: locale['preferences[21]'] |
{ |
||||||
,value: config.always_on_top |
xtype: "checkbox", |
||||||
} |
name: "always_on_top", |
||||||
,{ |
boxLabel: locale["preferences[21]"], |
||||||
xtype: 'checkbox' |
value: config.always_on_top, |
||||||
,name: 'systemtray_indicator' |
}, |
||||||
,boxLabel: locale['preferences[22]'] |
{ |
||||||
,value: config.systemtray_indicator |
xtype: "checkbox", |
||||||
,hidden: process.platform === 'darwin' |
name: "systemtray_indicator", |
||||||
} |
boxLabel: locale["preferences[22]"], |
||||||
,{ |
value: config.systemtray_indicator, |
||||||
xtype: 'checkbox' |
hidden: process.platform === "darwin", |
||||||
,name: 'flash_frame' |
}, |
||||||
,boxLabel: process.platform === 'darwin' ? locale['preferences[10]'] : locale['preferences[9]'] |
{ |
||||||
,value: config.flash_frame |
xtype: "checkbox", |
||||||
} |
name: "flash_frame", |
||||||
,{ |
boxLabel: |
||||||
xtype: 'checkbox' |
process.platform === "darwin" |
||||||
,name: 'disable_gpu' |
? locale["preferences[10]"] |
||||||
,boxLabel: locale['preferences[23]'] |
: locale["preferences[9]"], |
||||||
,value: config.disable_gpu |
value: config.flash_frame, |
||||||
} |
}, |
||||||
,{ |
{ |
||||||
xtype: 'checkbox' |
xtype: "checkbox", |
||||||
,name: 'enable_hidpi_support' |
name: "disable_gpu", |
||||||
,boxLabel: locale['preferences[8]'] |
boxLabel: locale["preferences[23]"], |
||||||
,value: config.enable_hidpi_support |
value: config.disable_gpu, |
||||||
,hidden: process.platform !== 'win32' |
}, |
||||||
}, |
{ |
||||||
{ |
xtype: "checkbox", |
||||||
xtype: 'textfield' |
name: "enable_hidpi_support", |
||||||
,fieldLabel: 'Override User-Agent for all services (needs to relaunch)' |
boxLabel: locale["preferences[8]"], |
||||||
,labelAlign: 'top' |
value: config.enable_hidpi_support, |
||||||
,name: 'user_agent' |
hidden: process.platform !== "win32", |
||||||
,value: config.user_agent |
}, |
||||||
,width: 360 |
{ |
||||||
,emptyText: 'Leave blank for default user agent' |
xtype: "textfield", |
||||||
} |
fieldLabel: |
||||||
,{ |
"Override User-Agent for all services (needs to relaunch)", |
||||||
xtype: 'fieldset' |
labelAlign: "top", |
||||||
,title: locale['preferences[24]'] |
name: "user_agent", |
||||||
,collapsed: !config.master_password |
value: config.user_agent, |
||||||
,checkboxToggle: true |
width: 360, |
||||||
,checkboxName: 'master_password' |
emptyText: "Leave blank for default user agent", |
||||||
,margin: '10 0 0 0' |
}, |
||||||
,padding: 10 |
{ |
||||||
,layout: 'hbox' |
xtype: "fieldset", |
||||||
,defaults: { labelAlign: 'top' } |
title: locale["preferences[24]"], |
||||||
,items: [ |
collapsed: !config.master_password, |
||||||
{ |
checkboxToggle: true, |
||||||
xtype: 'textfield' |
checkboxName: "master_password", |
||||||
,inputType: 'password' |
margin: "10 0 0 0", |
||||||
,fieldLabel: locale['preferences[25]'] |
padding: 10, |
||||||
,name: 'master_password1' |
layout: "hbox", |
||||||
,itemId: 'pass' |
defaults: { labelAlign: "top" }, |
||||||
,flex: 1 |
items: [ |
||||||
,listeners: { |
{ |
||||||
|
xtype: "textfield", |
||||||
|
inputType: "password", |
||||||
|
fieldLabel: locale["preferences[25]"], |
||||||
|
name: "master_password1", |
||||||
|
itemId: "pass", |
||||||
|
flex: 1, |
||||||
|
listeners: { |
||||||
validitychange: function (field) { |
validitychange: function (field) { |
||||||
field.next().validate(); |
field.next().validate(); |
||||||
}, |
}, |
||||||
blur: function (field) { |
blur: function (field) { |
||||||
field.next().validate(); |
field.next().validate(); |
||||||
} |
}, |
||||||
} |
}, |
||||||
} |
}, |
||||||
,{ |
{ |
||||||
xtype: 'textfield' |
xtype: "textfield", |
||||||
,inputType: 'password' |
inputType: "password", |
||||||
,fieldLabel: locale['preferences[26]'] |
fieldLabel: locale["preferences[26]"], |
||||||
,name: 'master_password2' |
name: "master_password2", |
||||||
,margin: '0 0 0 10' |
margin: "0 0 0 10", |
||||||
,vtype: 'password' |
vtype: "password", |
||||||
,initialPassField: 'pass' |
initialPassField: "pass", |
||||||
,flex: 1 |
flex: 1, |
||||||
} |
}, |
||||||
] |
], |
||||||
} |
}, |
||||||
,{ |
{ |
||||||
xtype: 'fieldset' |
xtype: "fieldset", |
||||||
,title: 'Proxy (needs to relaunch) - <a href="https://github.com/saenzramiro/rambox/wiki/FREE-PROXY-SERVERS" target="_blank">Free Proxy Servers</a>' |
title: |
||||||
,collapsed: !config.proxy |
'Proxy (needs to relaunch) - <a href="https://github.com/saenzramiro/rambox/wiki/FREE-PROXY-SERVERS" target="_blank">Free Proxy Servers</a>', |
||||||
,checkboxToggle: true |
collapsed: !config.proxy, |
||||||
,checkboxName: 'proxy' |
checkboxToggle: true, |
||||||
,margin: '10 0 0 0' |
checkboxName: "proxy", |
||||||
,padding: 10 |
margin: "10 0 0 0", |
||||||
,layout: 'vbox' |
padding: 10, |
||||||
,defaults: { labelAlign: 'left' } |
layout: "vbox", |
||||||
,items: [ |
defaults: { labelAlign: "left" }, |
||||||
{ |
items: [ |
||||||
xtype: 'textfield' |
{ |
||||||
,vtype: 'url' |
xtype: "textfield", |
||||||
,fieldLabel: 'Host' |
vtype: "url", |
||||||
,name: 'proxyHost' |
fieldLabel: "Host", |
||||||
,value: config.proxyHost |
name: "proxyHost", |
||||||
|
value: config.proxyHost, |
||||||
//,flex: 1
|
//,flex: 1
|
||||||
} |
}, |
||||||
,{ |
{ |
||||||
xtype: 'numberfield' |
xtype: "numberfield", |
||||||
,fieldLabel: 'Port' |
fieldLabel: "Port", |
||||||
,name: 'proxyPort' |
name: "proxyPort", |
||||||
,value: config.proxyPort |
value: config.proxyPort, |
||||||
} |
}, |
||||||
,{ |
{ |
||||||
xtype: 'textfield' |
xtype: "textfield", |
||||||
,fieldLabel: 'Login' |
fieldLabel: "Login", |
||||||
,name: 'proxyLogin' |
name: "proxyLogin", |
||||||
,value: config.proxyLogin |
value: config.proxyLogin, |
||||||
,emptyText: 'Optional' |
emptyText: "Optional", |
||||||
} |
}, |
||||||
,{ |
{ |
||||||
xtype: 'textfield' |
xtype: "textfield", |
||||||
,fieldLabel: 'Password' |
fieldLabel: "Password", |
||||||
,name: 'proxyPassword' |
name: "proxyPassword", |
||||||
,value: config.proxyPassword |
value: config.proxyPassword, |
||||||
,emptyText: 'Optional' |
emptyText: "Optional", |
||||||
,inputType: 'password' |
inputType: "password", |
||||||
} |
}, |
||||||
] |
], |
||||||
} |
}, |
||||||
,{ |
{ |
||||||
xtype: 'checkbox' |
xtype: "checkbox", |
||||||
,name: 'sendStatistics' |
name: "sendStatistics", |
||||||
,boxLabel: locale['preferences[27]'] |
boxLabel: locale["preferences[27]"], |
||||||
,value: config.sendStatistics |
value: config.sendStatistics, |
||||||
} |
}, |
||||||
] |
], |
||||||
} |
}, |
||||||
]; |
]; |
||||||
|
|
||||||
this.callParent(); |
this.callParent(); |
||||||
} |
}, |
||||||
}); |
}); |
||||||
|
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue