Форк Rambox
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

421 lines
14 KiB

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: "darkreader",
boxLabel: locale["preferences[29]"],
value: config.darkreader,
},
{
xtype: "checkbox",
name: "hide_menu_bar",
boxLabel:
locale["preferences[1]"] + " (<code>Alt</code> 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: 'textfield'
,fieldLabel: 'List of Chrome extensions paths comma seperated (needs to relaunch)'
,labelAlign: 'top'
,name: 'extension_paths'
,value: config.extension_paths
,width: 360
,emptyText: '/path/to/extension1, /path/to/extension2'
},
{
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) - <a href="https://github.com/saenzramiro/rambox/wiki/FREE-PROXY-SERVERS" target="_blank">Free Proxy Servers</a>',
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();
},
});