📄 qo-preferences-override.js
字号:
}
function onSave(){
this.buttons[0].disable();
this.owner.save({
action: 'saveQuickstart'
, callback: function(){
this.buttons[0].enable();
}
, callbackScope: this
, ids: Ext.encode(this.app.launchers.quickstart)
});
}
};
Ext.extend(QoDesk.QoPreferences.QuickStart, Ext.tree.TreePanel);
QoDesk.QoPreferences.Appearance = function(config){
this.owner = config.owner;
this.app = this.owner.app;
var desktop = this.app.getDesktop();
var store = new Ext.data.JsonStore({
baseParams: {
action: 'viewThemes',
moduleId: this.owner.moduleId
},
fields: ['id', 'name', 'pathtothumbnail', 'pathtofile'],
id: 'id',
root: 'images',
url: this.app.connection
});
this.store = store;
store.on('load', function(store, records){
if(records){
defaults.setTitle('Themes Available (' + records.length + ')');
var id = this.app.styles.theme.id;
if(id){
view.select('theme-'+id);
}
}
}, this);
var tpl = new Ext.XTemplate(
'<tpl for=".">',
'<div class="pref-view-thumb-wrap" id="theme-{id}">',
'<div class="pref-view-thumb"><img src="{pathtothumbnail}" title="{name}" /></div>',
'<span>{shortName}</span></div>',
'</tpl>',
'<div class="x-clear"></div>'
);
var view = new Ext.DataView({
autoHeight:true,
cls: 'pref-thumnail-view',
emptyText: 'No themes to display',
itemSelector:'div.pref-view-thumb-wrap',
loadingText: 'loading...',
singleSelect: true,
overClass:'x-view-over',
prepareData: function(data){
data.shortName = Ext.util.Format.ellipsis(data.name, 17);
return data;
},
store: store,
tpl: tpl
});
view.on('selectionchange', onSelectionChange, this);
var defaults = new Ext.Panel({
animCollapse: false,
baseCls:'collapse-group',
border: false,
cls: 'pref-thumbnail-viewer',
collapsible: true,
hideCollapseTool: true,
id: 'pref-theme-view',
items: view,
title: 'Default Themes',
titleCollapse: true
});
var themes = new Ext.Panel({
autoScroll: true,
bodyStyle: 'padding:10px',
border: true,
cls: 'pref-card-subpanel',
id: 'themes',
items: defaults,
margins: '10 15 0 15',
region: 'center'
});
this.slider = createSlider({
handler: new Ext.util.DelayedTask(updateTransparency, this)
, min: 0
, max: 100
, x: 15
, y: 35
, width: 100
});
var formPanel = new Ext.FormPanel({
border: false,
height: 70,
items: [
{x: 15, y: 15, xtype: 'label', text: 'Taskbar Transparency'},
this.slider.slider,
this.slider.display
],
layout: 'absolute',
split: false,
region: 'south'
});
QoDesk.QoPreferences.Appearance.superclass.constructor.call(this, {
border: false,
buttons: [{
disabled: this.app.isAllowedTo('saveAppearance', this.owner.moduleId) ? false : true,
handler: onSave,
scope: this,
text: 'Save'
},{
handler: onClose,
scope: this,
text: 'Close'
}],
cls: 'pref-card',
id: config.id,
items: [
themes,
formPanel
],
layout: 'border',
title: 'Window Color And Appearance'
});
// private functions
function createSlider(config){
var handler = config.handler, min = config.min, max = config.max
, width = config.width || 100, x = config.x, y = config.y;
var slider = new Ext.Slider({
minValue: min
, maxValue: max
, width: width
, x: x
, y: y
});
var display = new Ext.form.NumberField({
cls: 'pref-percent-field'
, enableKeyEvents: true
, maxValue: max
, minValue: min
, width: 45
, x: x + width + 15
, y: y - 1
});
function sliderHandler(slider){
var v = slider.getValue();
display.setValue(v);
handler.delay(100, null, null, [v]); // delayed task prevents IE bog
}
slider.on({
'change': { fn: sliderHandler, scope: this }
, 'drag': { fn: sliderHandler, scope: this }
});
display.on({
'keyup': {
fn: function(field){
var v = field.getValue();
if(v !== '' && !isNaN(v) && v >= field.minValue && v <= field.maxValue){
slider.setValue(v);
}
}
, buffer: 350
, scope: this
}
});
return { slider: slider, display: display }
}
function onClose(){
this.owner.win.close();
}
function onSave(){
var c = this.app.styles;
this.buttons[0].disable();
this.owner.save({
action: 'saveAppearance'
, callback: function(){
this.buttons[0].enable();
}
, callbackScope: this
, backgroundcolor: c.backgroundcolor
, fontcolor: c.fontcolor
, theme: c.theme.id
, transparency: c.transparency
, wallpaper: c.wallpaper.id
, wallpaperposition: c.wallpaperposition
});
}
function onSelectionChange(view, sel){
if(sel.length > 0){
var cId = this.app.styles.theme.id,
r = view.getRecord(sel[0]),
d = r.data;
if(parseInt(cId) !== parseInt(r.id)){
if(r && r.id && d.name && d.pathtofile){
desktop.setTheme({
id: r.id,
name: d.name,
pathtofile: d.pathtofile
});
}
}
}
}
function updateTransparency(v){
desktop.setTransparency(v);
}
};
Ext.extend(QoDesk.QoPreferences.Appearance, Ext.Panel, {
afterRender : function(){
QoDesk.QoPreferences.Appearance.superclass.afterRender.call(this);
this.on('show', this.loadStore, this, {single: true});
},
loadStore : function(){
this.store.load();
this.slider.slider.setValue(this.app.styles.transparency);
}
});
QoDesk.QoPreferences.Background = function(config){
this.owner = config.owner;
this.app = this.owner.app;
var desktop = this.app.getDesktop();
var store = new Ext.data.JsonStore({
baseParams: {
action: 'viewWallpapers',
moduleId: this.owner.moduleId
},
fields: ['id', 'name', 'pathtothumbnail', 'pathtofile'],
id: 'id',
root: 'images',
url: this.app.connection
});
this.store = store;
store.on('load', function(store, records){
if(records){
defaults.setTitle('Default Wallpapers (' + records.length + ')');
var id = this.app.styles.wallpaper.id;
if(id){
view.select('wallpaper-'+id);
}
}
}, this);
var tpl = new Ext.XTemplate(
'<tpl for=".">',
'<div class="pref-view-thumb-wrap" id="wallpaper-{id}">',
'<div class="pref-view-thumb"><img src="{pathtothumbnail}" title="{name}" /></div>',
'<span>{shortName}</span></div>',
'</tpl>',
'<div class="x-clear"></div>'
);
var view = new Ext.DataView({
autoHeight:true,
cls: 'pref-thumnail-view',
emptyText: 'No wallpapers to display',
itemSelector:'div.pref-view-thumb-wrap',
loadingText: 'loading...',
singleSelect: true,
overClass:'x-view-over',
prepareData: function(data){
data.shortName = Ext.util.Format.ellipsis(data.name, 17);
return data;
},
store: store,
tpl: tpl
});
view.on('selectionchange', onSelectionChange, this);
var defaults = new Ext.Panel({
animCollapse: false,
baseCls:'collapse-group',
border: false,
cls: 'pref-thumbnail-viewer',
collapsible: true,
hideCollapseTool: true,
id: 'pref-wallpaper-view',
items: view,
title: 'Default Wallpapers',
titleCollapse: true
});
var wallpapers = new Ext.Panel({
autoScroll: true,
bodyStyle: 'padding:10px',
border: true,
cls: 'pref-card-subpanel',
id: 'wallpapers',
items: defaults,
margins: '10 15 0 15',
region: 'center'
});
var wpp = this.app.styles.wallpaperposition;
var tileRadio = createRadio('tile', wpp == 'tile' ? true : false, 90, 40);
var centerRadio = createRadio('center', wpp == 'center' ? true : false, 200, 40);
var position = new Ext.FormPanel({
border: false,
height: 140,
id: 'position',
items: [{
border: false,
items: {border: false, html:'How should the wallpaper be positioned?'},
x: 15,
y: 15
},{
border: false,
items: {border: false, html: '<img class="bg-pos-tile" src="'+Ext.BLANK_IMAGE_URL+'" width="64" height="44" border="0" alt="" />'},
x: 15,
y: 40
},
tileRadio,
{
border: false,
items: {border: false, html: '<img class="bg-pos-center" src="'+Ext.BLANK_IMAGE_URL+'" width="64" height="44" border="0" alt="" />'},
x: 125,
y: 40
},
centerRadio,
{
border: false,
items: {border: false, html:'Choose a background color'},
x: 245,
y: 15
},{
border: false,
/* items: new Ext.ColorPalette({
listeners: {
'select': {
fn: onColorSelect
, scope: this
}
}
}), */
items: new Ext.Button({
handler: onChangeBgColor,
//menu: new Ext.ux.menu.ColorMenu(),
scope: this,
text: 'Background color'
}),
x: 245,
y: 40
},{
border: false,
items: {border: false, html:'Choose a font color'},
x: 425,
y: 15
},{
border: false,
/* items: new Ext.ColorPalette({
listeners: {
'select': {
fn: onFontColorSelect
, scope: this
}
}
}), */
items: new Ext.Button({
handler: onChangeFontColor,
scope: this,
text: 'Background color'
}),
x: 425,
y: 40
}],
layout: 'absolute',
region: 'south',
split: false
});
QoDesk.QoPreferences.Background.superclass.constructor.call(this, {
border: false,
buttons: [{
disabled: this.app.isAllowedTo('saveBackground', this.owner.moduleId) ? false : true,
handler: onSave,
scope: this,
text: 'Save'
},{
handler: onClose,
scope: this,
text: 'Close'
}],
cls: 'pref-card',
id: config.id,
items: [
wallpapers,
position
],
layout: 'border',
title: 'Desktop Background'
});
function createRadio(value, checked, x, y){
if(value){
radio = new Ext.form.Radio({
name: 'position',
inputValue: value,
checked: checked,
x: x,
y: y
});
radio.on('check', togglePosition, radio);
return radio;
}
}
function onChangeBgColor(){
var dialog = new Ext.ux.ColorDialog({
border: false
, closeAction: 'close'
, listeners: {
'select': { fn: onColorSelect, scope: this, buffer: 350 }
}
, manager: this.app.getDesktop().getManager()
, resizable: false
, title: 'Color Picker'
});
dialog.show(this.app.styles.backgroundcolor);
}
function onColorSelect(p, hex){
desktop.setBackgroundColor(hex);
}
function onChangeFontColor(){
var dialog = new Ext.ux.ColorDialog({
border: false
, closeAction: 'close'
, listeners: {
'select': { fn: onFontColorSelect, scope: this, buffer: 350 }
}
, manager: this.app.getDesktop().getManager()
, resizable: false
, title: 'Color Picker'
});
dialog.show(this.app.styles.fontcolor);
}
function onFontColorSelect(p, hex){
desktop.setFontColor(hex);
}
function onClose(){
this.owner.win.close();
}
function onSave(){
var c = this.app.styles;
this.buttons[0].disable();
this.owner.save({
action: 'saveBackground'
, callback: function(){
this.buttons[0].enable();
}
, callbackScope: this
, backgroundcolor: c.backgroundcolor
, fontcolor: c.fontcolor
, theme: c.theme.id
, transparency: c.transparency
, wallpaper: c.wallpaper.id
, wallpaperposition: c.wallpaperposition
});
}
function onSelectionChange(view, sel){
if(sel.length > 0){
var cId = this.app.styles.wallpaper.id,
r = view.getRecord(sel[0]),
d = r.data;
if(parseInt(cId) !== parseInt(r.id)){
if(r && r.id && d.name && d.pathtofile){
desktop.setWallpaper({
id: r.id,
name: d.name,
pathtofile: d.pathtofile
});
}
}
}
}
function togglePosition(field, checked){
if(checked === true){
desktop.setWallpaperPosition(field.inputValue);
}
}
};
Ext.extend(QoDesk.QoPreferences.Background, Ext.Panel, {
afterRender : function(){
QoDesk.QoPreferences.Background.superclass.afterRender.call(this);
this.on('show', this.loadStore, this, {single: true});
},
loadStore : function(){
this.store.load();
}
});
/*
* Will ensure that the checkchange event is fired on
* node double click
*/
Ext.override(Ext.tree.TreeNodeUI, {
toggleCheck : function(value){
var cb = this.checkbox;
if(cb){
cb.checked = (value === undefined ? !cb.checked : value);
this.fireEvent('checkchange', this.node, cb.checked);
}
}
});
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -