126 lines
2.8 KiB
JavaScript
126 lines
2.8 KiB
JavaScript
/**
|
|
* @class elFinder command "view"
|
|
* Change current directory view (icons/list)
|
|
*
|
|
* @author Dmitry (dio) Levashov
|
|
**/
|
|
elFinder.prototype.commands.view = function() {
|
|
"use strict";
|
|
var self = this,
|
|
fm = this.fm,
|
|
subMenuRaw;
|
|
this.value = fm.viewType;
|
|
this.alwaysEnabled = true;
|
|
this.updateOnSelect = false;
|
|
|
|
this.options = { ui : 'viewbutton'};
|
|
|
|
this.getstate = function() {
|
|
return 0;
|
|
};
|
|
|
|
this.extra = {
|
|
icon: 'menu',
|
|
node: jQuery('<span></span>')
|
|
.attr({title: fm.i18n('viewtype')})
|
|
.on('click touchstart', function(e){
|
|
if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
|
|
return;
|
|
}
|
|
var node = jQuery(this);
|
|
e.stopPropagation();
|
|
e.preventDefault();
|
|
fm.trigger('contextmenu', {
|
|
raw: getSubMenuRaw(),
|
|
x: node.offset().left,
|
|
y: node.offset().top
|
|
});
|
|
})
|
|
};
|
|
|
|
this.exec = function() {
|
|
var self = this,
|
|
value = this.value == 'list' ? 'icons' : 'list';
|
|
|
|
fm.storage('view', value);
|
|
return fm.lazy(function() {
|
|
fm.viewchange();
|
|
self.update(void(0), value);
|
|
this.resolve();
|
|
});
|
|
};
|
|
|
|
fm.bind('init', function() {
|
|
subMenuRaw = (function() {
|
|
var cwd = fm.getUI('cwd'),
|
|
raws = [],
|
|
sizeNames = fm.options.uiOptions.cwd.iconsView.sizeNames,
|
|
max = fm.options.uiOptions.cwd.iconsView.sizeMax,
|
|
i, size;
|
|
for (i = 0; i <= max; i++) {
|
|
raws.push(
|
|
{
|
|
label : fm.i18n(sizeNames[i] || ('Size-' + i + ' icons')),
|
|
icon : 'view',
|
|
callback : (function(s) {
|
|
return function() {
|
|
cwd.trigger('iconpref', {size: s});
|
|
fm.storage('iconsize', s);
|
|
if (self.value === 'list') {
|
|
self.exec();
|
|
}
|
|
};
|
|
})(i)
|
|
}
|
|
);
|
|
}
|
|
raws.push('|');
|
|
raws.push(
|
|
{
|
|
label : fm.i18n('viewlist'),
|
|
icon : 'view-list',
|
|
callback : function() {
|
|
if (self.value !== 'list') {
|
|
self.exec();
|
|
}
|
|
}
|
|
}
|
|
);
|
|
return raws;
|
|
})();
|
|
}).bind('contextmenucreate', function() {
|
|
self.extra = {
|
|
icon: 'menu',
|
|
node: jQuery('<span></span>')
|
|
.attr({title: fm.i18n('cmdview')})
|
|
.on('click touchstart', function(e){
|
|
if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) {
|
|
return;
|
|
}
|
|
var node = jQuery(this),
|
|
raw = subMenuRaw.concat(),
|
|
idx, i;
|
|
if (self.value === 'list') {
|
|
idx = subMenuRaw.length - 1;
|
|
} else {
|
|
idx = parseInt(fm.storage('iconsize') || 0);
|
|
}
|
|
for (i = 0; i < subMenuRaw.length; i++) {
|
|
if (subMenuRaw[i] !== '|') {
|
|
subMenuRaw[i].options = (i === idx? {'className': 'ui-state-active'} : void(0))
|
|
;
|
|
}
|
|
}
|
|
e.stopPropagation();
|
|
e.preventDefault();
|
|
fm.trigger('contextmenu', {
|
|
raw: subMenuRaw,
|
|
x: node.offset().left,
|
|
y: node.offset().top
|
|
});
|
|
})
|
|
};
|
|
});
|
|
|
|
};
|