Ext.define('Rambox.view.preferences.Preferences',{
extend: 'Ext.window.Window'
,xtype: 'preferences'
,requires: [
'Rambox.view.preferences.PreferencesController'
,'Rambox.view.preferences.PreferencesModel'
,'Ext.form.field.ComboBox'
,'Ext.form.field.Checkbox'
]
,controller: 'preferences-preferences'
,viewModel: {
type: 'preferences-preferences'
}
,title: locale['preferences[0]']
,width: 420
,height: 500
,modal: true
,closable: true
,minimizable: false
,maximizable: false
,draggable: true
,resizable: false
,scrollable: 'vertical'
,bodyStyle: 'margin-right:15px;'
,buttons: [
{
text: locale['button[1]']
,ui: 'decline'
,handler: 'cancel'
}
,'->'
,{
text: locale['button[4]']
,handler: 'save'
}
]
,initComponent: function() {
var config = ipc.sendSync('getConfig');
var defaultServiceOptions = [];
defaultServiceOptions.push({ value: 'ramboxTab', label: 'Rambox Tab' });
defaultServiceOptions.push({ value: 'last', label: 'Last Active Service' });
Ext.getStore('Services').each(function(rec) {
defaultServiceOptions.push({
value: rec.get('id')
,label: rec.get('name')
});
});
this.items = [
{
xtype: 'form'
,bodyPadding: 20
,items: [
{
xtype: 'container'
,layout: 'hbox'
,items: [
{
xtype: 'combo'
,name: 'locale'
,fieldLabel: 'Language'
,labelAlign: 'left'
,flex: 1
,labelWidth: 80
,value: config.locale
,displayField: 'label'
,valueField: 'value'
,editable: false
,store: Ext.create('Ext.data.Store', {
fields: ['value', 'label']
,data: [
{ 'value': 'af', 'auth0': 'af', 'label': 'Afrikaans' }
,{ 'value': 'ar', 'auth0': 'en', 'label': 'Arabic' }
,{ 'value': 'bs2', 'auth0': 'en', 'label': 'Barndutsch, Switzerland' }
,{ 'value': 'bn', 'auth0': 'en', 'label': 'Bengali' }
,{ 'value': 'bg', 'auth0': 'en', 'label': 'Bulgarian' }
,{ 'value': 'ca', 'auth0': 'ca', 'label': 'Catalan' }
,{ 'value': 'ceb', 'auth0': 'en', 'label': 'Cebuano' }
,{ 'value': 'zh-CN', 'auth0': 'zh', 'label': 'Chinese Simplified' }
,{ 'value': 'zh-TW', 'auth0': 'zh-tw', 'label': 'Chinese Traditional' }
,{ 'value': 'hr', 'auth0': 'en', 'label': 'Croatian' }
,{ 'value': 'cs', 'auth0': 'cs', 'label': 'Czech' }
,{ 'value': 'da', 'auth0': 'da', 'label': 'Danish' }
,{ 'value': 'nl', 'auth0': 'nl', 'label': 'Dutch' }
,{ 'value': 'en', 'auth0': 'en', 'label': 'English' }
,{ 'value': 'fi', 'auth0': 'fi', 'label': 'Finnish' }
,{ 'value': 'fil', 'auth0': 'en', 'label': 'Filipino' }
,{ 'value': 'fr', 'auth0': 'fr', 'label': 'French' }
,{ 'value': 'de', 'auth0': 'de', 'label': 'German' }
,{ 'value': 'de-CH', 'auth0': 'de', 'label': 'German, Switzerland' }
,{ 'value': 'el', 'auth0': 'el', 'label': 'Greek' }
,{ 'value': 'he', 'auth0': 'en', 'label': 'Hebrew' }
,{ 'value': 'hi', 'auth0': 'en', 'label': 'Hindi' }
,{ 'value': 'hu', 'auth0': 'hu', 'label': 'Hungarian' }
,{ 'value': 'id', 'auth0': 'en', 'label': 'Indonesian' }
,{ 'value': 'it', 'auth0': 'it', 'label': 'Italian' }
,{ 'value': 'ja', 'auth0': 'ja', 'label': 'Japanese' }
,{ 'value': 'ko', 'auth0': 'ko', 'label': 'Korean' }
,{ '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' }
,{ 'value': 'pt-BR', 'auth0': 'pt-br', 'label': 'Portuguese (Brazilian)' }
,{ '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' }
,{ 'value': 'es-ES', 'auth0': 'es', 'label': 'Spanish' }
,{ 'value': 'sv-SE', 'auth0': 'sv', 'label': 'Swedish' }
,{ 'value': 'tl', 'auth0': 'en', 'label': 'Tagalog' }
,{ 'value': 'th', 'auth0': 'en', 'label': 'Thai' }
,{ 'value': 'tr', 'auth0': 'tr', 'label': 'Turkish' }
,{ 'value': 'uk', 'auth0': 'en', 'label': 'Ukrainian' }
,{ 'value': 'ur-PK', 'auth0': 'en', 'label': 'Urdu (Pakistan)' }
,{ 'value': 'vi', 'auth0': 'en', 'label': 'Vietnamese' }
]
})
}
,{
xtype: 'button'
,text: 'Help us Translate'
,style: 'border-top-left-radius:0;border-bottom-left-radius:0;'
,href: 'https://crowdin.com/project/rambox/invite'
}
]
}
,{
xtype: 'label'
,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;'
,margin: '0 0 10 0'
}
,{
xtype: 'checkbox'
,name: 'auto_launch'
,boxLabel: locale['preferences[5]']
,value: config.auto_launch
}
,{
xtype: 'checkbox'
,name: 'start_minimized'
,boxLabel: locale['preferences[4]']
,value: config.start_minimized
}
,{
xtype: 'checkbox'
,name: 'hide_menu_bar'
,boxLabel: locale['preferences[1]']+' (Alt
key to display)'
,value: config.hide_menu_bar
,hidden: process.platform === 'darwin'
}
,{
xtype: 'combo'
,name: 'tabbar_location'
,fieldLabel: locale['preferences[11]']
,labelAlign: 'left'
,width: 380
,labelWidth: 180
,value: config.tabbar_location
,displayField: 'label'
,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
//,labelWidth: 105
,value: config.default_service
,displayField: 'label'
,valueField: 'value'
,editable: false
,store: Ext.create('Ext.data.Store', {
fields: ['value', 'label']
,data: defaultServiceOptions
})
}
,{
xtype: 'combo'
,name: 'window_display_behavior'
,fieldLabel: locale['preferences[13]']
,labelAlign: 'left'
,width: 380
,labelWidth: 105
,value: config.window_display_behavior
,displayField: 'label'
,valueField: 'value'
,editable: false
,store: Ext.create('Ext.data.Store', {
fields: ['value', 'label']
,data: [
{ 'value': 'show_taskbar', 'label': locale['preferences[14]'] }
,{ 'value': 'show_trayIcon', 'label': locale['preferences[15]'] }
,{ 'value': 'taskbar_tray', 'label': locale['preferences[16]'] }
]
})
,hidden: process.platform === 'darwin'
}
,{
xtype: 'combo'
,name: 'window_close_behavior'
,fieldLabel: locale['preferences[17]']
,labelAlign: 'left'
,width: 380
,labelWidth: 180
,value: config.window_close_behavior
,displayField: 'label'
,valueField: 'value'
,editable: false
,store: Ext.create('Ext.data.Store', {
fields: ['value', 'label']
,data: [
{ 'value': 'keep_in_tray', 'label': locale['preferences[18]'] }
,{ 'value': 'keep_in_tray_and_taskbar', 'label': locale['preferences[19]'] }
,{ 'value': 'quit', 'label': locale['preferences[20]'] }
]
})
,hidden: process.platform === 'darwin'
}
,{
xtype: 'checkbox'
,name: 'always_on_top'
,boxLabel: locale['preferences[21]']
,value: config.always_on_top
}
,{
xtype: 'checkbox'
,name: 'systemtray_indicator'
,boxLabel: locale['preferences[22]']
,value: config.systemtray_indicator
,hidden: process.platform === 'darwin'
}
,{
xtype: 'checkbox'
,name: 'flash_frame'
,boxLabel: process.platform === 'darwin' ? locale['preferences[10]'] : locale['preferences[9]']
,value: config.flash_frame
}
,{
xtype: 'checkbox'
,name: 'disable_gpu'
,boxLabel: locale['preferences[23]']
,value: config.disable_gpu
}
,{
xtype: 'checkbox'
,name: 'enable_hidpi_support'
,boxLabel: locale['preferences[8]']
,value: config.enable_hidpi_support
,hidden: process.platform !== 'win32'
},
{
xtype: 'textfield'
,fieldLabel: 'Override User-Agent for all services (needs to relaunch)'
,labelAlign: 'top'
,name: 'user_agent'
,value: config.user_agent
,width: 360
,emptyText: 'Leave blank for default user agent'
}
,{
xtype: 'fieldset'
,title: locale['preferences[24]']
,collapsed: !config.master_password
,checkboxToggle: true
,checkboxName: 'master_password'
,margin: '10 0 0 0'
,padding: 10
,layout: 'hbox'
,defaults: { labelAlign: 'top' }
,items: [
{
xtype: 'textfield'
,inputType: 'password'
,fieldLabel: locale['preferences[25]']
,name: 'master_password1'
,itemId: 'pass'
,flex: 1
,listeners: {
validitychange: function(field) {
field.next().validate();
},
blur: function(field) {
field.next().validate();
}
}
}
,{
xtype: 'textfield'
,inputType: 'password'
,fieldLabel: locale['preferences[26]']
,name: 'master_password2'
,margin: '0 0 0 10'
,vtype: 'password'
,initialPassField: 'pass'
,flex: 1
}
]
}
,{
xtype: 'fieldset'
,title: 'Proxy (needs to relaunch) - Free Proxy Servers'
,collapsed: !config.proxy
,checkboxToggle: true
,checkboxName: 'proxy'
,margin: '10 0 0 0'
,padding: 10
,layout: 'vbox'
,defaults: { labelAlign: 'left' }
,items: [
{
xtype: 'textfield'
,vtype: 'url'
,fieldLabel: 'Host'
,name: 'proxyHost'
,value: config.proxyHost
//,flex: 1
}
,{
xtype: 'numberfield'
,fieldLabel: 'Port'
,name: 'proxyPort'
,value: config.proxyPort
}
,{
xtype: 'textfield'
,fieldLabel: 'Login'
,name: 'proxyLogin'
,value: config.proxyLogin
,emptyText: 'Optional'
}
,{
xtype: 'textfield'
,fieldLabel: 'Password'
,name: 'proxyPassword'
,value: config.proxyPassword
,emptyText: 'Optional'
,inputType: 'password'
}
]
}
,{
xtype: 'checkbox'
,name: 'sendStatistics'
,boxLabel: locale['preferences[27]']
,value: config.sendStatistics
}
]
}
];
this.callParent();
}
});