[desktop] filter recent files by app type

This commit is contained in:
maxkadushkin
2023-04-25 23:16:20 +03:00
parent e59d92d00a
commit ae176d3c9d

View File

@ -442,26 +442,30 @@ define([
const _is_win = /Win/.test(navigator.platform);
const _re_name = !_is_win ? /([^/]+\.[a-zA-Z0-9]{1,})$/ : /([^\\/]+\.[a-zA-Z0-9]{1,})$/;
for ( let _f_ of rawarray ) {
let fn = _f_.path;
if ( _re_name.test(fn) ) {
let name = _re_name.exec(_f_.path)[1],
path = _f_.path.slice(0, fn.length - name.length - 1);
if ( utils.matchFileFormat( _f_.type ) ) {
if (_re_name.test(_f_.path)) {
const name = _re_name.exec(_f_.path)[1],
dir = _f_.path.slice(0, _f_.path.length - name.length - 1);
_files_arr.push({
fileid: _f_.id,
type: _f_.type,
format: utils.parseFileFormat(_f_.type),
name: name,
descr: path,
date: _f_.modifyed,
path: fn,
});
_files_arr.push({
fileid: _f_.id,
type: _f_.type,
format: utils.parseFileFormat(_f_.type),
title: name,
url: _f_.path,
folder: dir,
});
}
}
}
return _files_arr;
}
const _onOpenRecent = function (menu, url, record) {
console.log('open recent');
}
return {
init: function (opts) {
_.extend(config, opts);
@ -502,6 +506,7 @@ define([
}
},
'settings:apply': _onApplySettings.bind(this),
'recent:open': _onOpenRecent.bind(this),
},
}, {id: 'desktop'});
@ -586,4 +591,125 @@ define([
!Common.Controllers && (Common.Controllers = {});
Common.Controllers.Desktop = new Desktop();
const FILE_DOCUMENT = 0x0040,
FILE_PRESENTATION = 0x0080,
FILE_SPREADSHEET = 0x0100,
FILE_CROSSPLATFORM = 0x0200;
const utils = {};
utils.defines = {}
utils.defines.FileFormat = {
FILE_UNKNOWN: 0x0000,
FILE_DOCUMENT: FILE_DOCUMENT,
FILE_DOCUMENT_DOCX: FILE_DOCUMENT + 0x0001,
FILE_DOCUMENT_DOC: FILE_DOCUMENT + 0x0002,
FILE_DOCUMENT_ODT: FILE_DOCUMENT + 0x0003,
FILE_DOCUMENT_RTF: FILE_DOCUMENT + 0x0004,
FILE_DOCUMENT_TXT: FILE_DOCUMENT + 0x0005,
FILE_DOCUMENT_HTML: FILE_DOCUMENT + 0x0006,
FILE_DOCUMENT_MHT: FILE_DOCUMENT + 0x0007,
FILE_DOCUMENT_EPUB: FILE_DOCUMENT + 0x0008,
FILE_DOCUMENT_FB2: FILE_DOCUMENT + 0x0009,
FILE_DOCUMENT_MOBI: FILE_DOCUMENT + 0x000a,
FILE_DOCUMENT_DOCM: FILE_DOCUMENT + 0x000b,
FILE_DOCUMENT_DOTX: FILE_DOCUMENT + 0x000c,
FILE_DOCUMENT_DOTM: FILE_DOCUMENT + 0x000d,
FILE_DOCUMENT_ODT_FLAT: FILE_DOCUMENT + 0x000e,
FILE_DOCUMENT_OTT: FILE_DOCUMENT + 0x000f,
FILE_DOCUMENT_DOC_FLAT: FILE_DOCUMENT + 0x0010,
FILE_DOCUMENT_OFORM: FILE_DOCUMENT + 0x0015,
FILE_DOCUMENT_DOCXF: FILE_DOCUMENT + 0x0016,
FILE_PRESENTATION: FILE_PRESENTATION,
FILE_PRESENTATION_PPTX: FILE_PRESENTATION + 0x0001,
FILE_PRESENTATION_PPT: FILE_PRESENTATION + 0x0002,
FILE_PRESENTATION_ODP: FILE_PRESENTATION + 0x0003,
FILE_PRESENTATION_PPSX: FILE_PRESENTATION + 0x0004,
FILE_PRESENTATION_PPTM: FILE_PRESENTATION + 0x0005,
FILE_PRESENTATION_PPSM: FILE_PRESENTATION + 0x0006,
FILE_PRESENTATION_POTX: FILE_PRESENTATION + 0x0007,
FILE_PRESENTATION_POTM: FILE_PRESENTATION + 0x0008,
FILE_PRESENTATION_ODP_FLAT: FILE_PRESENTATION + 0x0009,
FILE_PRESENTATION_OTP: FILE_PRESENTATION + 0x000a,
FILE_SPREADSHEET: FILE_SPREADSHEET,
FILE_SPREADSHEET_XLSX: FILE_SPREADSHEET + 0x0001,
FILE_SPREADSHEET_XLS: FILE_SPREADSHEET + 0x0002,
FILE_SPREADSHEET_ODS: FILE_SPREADSHEET + 0x0003,
FILE_SPREADSHEET_CSV: FILE_SPREADSHEET + 0x0004,
FILE_SPREADSHEET_XLSM: FILE_SPREADSHEET + 0x0005,
FILE_SPREADSHEET_XLTX: FILE_SPREADSHEET + 0x0006,
FILE_SPREADSHEET_XLTM: FILE_SPREADSHEET + 0x0007,
FILE_SPREADSHEET_ODS_FLAT: FILE_SPREADSHEET + 0x0008,
FILE_SPREADSHEET_OTS: FILE_SPREADSHEET + 0x0009,
FILE_CROSSPLATFORM: FILE_CROSSPLATFORM,
FILE_CROSSPLATFORM_PDF: FILE_CROSSPLATFORM + 0x0001,
FILE_CROSSPLATFORM_SWF: FILE_CROSSPLATFORM + 0x0002,
FILE_CROSSPLATFORM_DJVU: FILE_CROSSPLATFORM + 0x0003,
FILE_CROSSPLATFORM_XPS: FILE_CROSSPLATFORM + 0x0004,
FILE_CROSSPLATFORM_PDFA: FILE_CROSSPLATFORM + 0x0009
};
utils.parseFileFormat = function(format) {
switch (format) {
case utils.defines.FileFormat.FILE_DOCUMENT_DOC: return 'doc';
case utils.defines.FileFormat.FILE_DOCUMENT_DOCX: return 'docx';
case utils.defines.FileFormat.FILE_DOCUMENT_ODT: return 'odt';
case utils.defines.FileFormat.FILE_DOCUMENT_RTF: return 'rtf';
case utils.defines.FileFormat.FILE_DOCUMENT_TXT: return 'txt';
case utils.defines.FileFormat.FILE_DOCUMENT_HTML: return 'htm';
case utils.defines.FileFormat.FILE_DOCUMENT_MHT: return 'mht';
case utils.defines.FileFormat.FILE_DOCUMENT_EPUB: return 'epub';
case utils.defines.FileFormat.FILE_DOCUMENT_FB2: return 'fb2';
case utils.defines.FileFormat.FILE_DOCUMENT_DOTX: return 'dotx';
case utils.defines.FileFormat.FILE_DOCUMENT_OTT: return 'ott';
case utils.defines.FileFormat.FILE_DOCUMENT_OFORM: return 'oform';
case utils.defines.FileFormat.FILE_DOCUMENT_DOCXF: return 'docxf';
case utils.defines.FileFormat.FILE_SPREADSHEET_XLS: return 'xls';
case utils.defines.FileFormat.FILE_SPREADSHEET_XLTX: return 'xltx';
case utils.defines.FileFormat.FILE_SPREADSHEET_XLSX: return 'xlsx';
case utils.defines.FileFormat.FILE_SPREADSHEET_ODS: return 'ods';
case utils.defines.FileFormat.FILE_SPREADSHEET_CSV: return 'csv';
case utils.defines.FileFormat.FILE_SPREADSHEET_OTS: return 'ots';
case utils.defines.FileFormat.FILE_PRESENTATION_PPT: return 'ppt';
case utils.defines.FileFormat.FILE_PRESENTATION_POTX: return 'potx';
case utils.defines.FileFormat.FILE_PRESENTATION_PPTX: return 'pptx';
case utils.defines.FileFormat.FILE_PRESENTATION_ODP: return 'odp';
case utils.defines.FileFormat.FILE_PRESENTATION_PPSX: return 'ppsx';
case utils.defines.FileFormat.FILE_PRESENTATION_OTP: return 'otp';
case utils.defines.FileFormat.FILE_CROSSPLATFORM_PDFA:
case utils.defines.FileFormat.FILE_CROSSPLATFORM_PDF: return 'pdf';
case utils.defines.FileFormat.FILE_CROSSPLATFORM_DJVU: return 'djvu';
case utils.defines.FileFormat.FILE_CROSSPLATFORM_XPS: return 'xps';
}
return '';
};
utils.matchFileFormat = function (t) {
if ( window.PE ) {
return t > utils.defines.FileFormat.FILE_PRESENTATION &&
!(t > utils.defines.FileFormat.FILE_SPREADSHEET );
} else
if ( window.DE ) {
return (t > utils.defines.FileFormat.FILE_DOCUMENT &&
!(t > utils.defines.FileFormat.FILE_PRESENTATION)) ||
t == utils.defines.FileFormat.FILE_CROSSPLATFORM_PDF ||
t == utils.defines.FileFormat.FILE_CROSSPLATFORM_PDFA ||
t == utils.defines.FileFormat.FILE_CROSSPLATFORM_DJVU;
} else
if ( window.SSE ) {
return (t > utils.defines.FileFormat.FILE_SPREADSHEET &&
!(t > utils.defines.FileFormat.FILE_CROSSPLATFORM)) ||
t == utils.defines.FileFormat.FILE_CROSSPLATFORM_XPS;
}
return false;
}
});