📄 afiletypes.cpp
字号:
#include "afiletypes.h"//#include <qtopia/applnk.h>//#include <qtopia/mimetype.h>//#include <qtopia/resource.h>#include <qfile.h>#include <qfileinfo.h>#include <qpixmap.h>#include <qstringlist.h>#include <qtextstream.h>#include <stdlib.h>#include "docicons.cpp"AFileTypes::AFileTypes() : QDict<AFileType>(17, FALSE) , icons(8, FALSE) { //if(!load(QString(getenv("HOME"))+ "/filetypes")) // first look in home load(QString(getenv("QPEDIR"))+ "/filetypes"); // and fall back to ADIR if necessary icons.insert("audio", new QPixmap(audio_xpm)); icons.insert("documents_closed", new QPixmap(documents_closed_xpm)); icons.insert("documents_open", new QPixmap(documents_open_xpm)); icons.insert("drive", new QPixmap(drive_xpm)); icons.insert("folder_closed", new QPixmap(folder_closed_xpm)); icons.insert("folder_open", new QPixmap(folder_open_xpm)); icons.insert("hypertext", new QPixmap(hypertext_xpm)); icons.insert("image", new QPixmap(image_xpm)); icons.insert("music_closed", new QPixmap(music_closed_xpm)); icons.insert("music_open", new QPixmap(music_open_xpm)); icons.insert("photo_closed", new QPixmap(photo_closed_xpm)); icons.insert("photo_open", new QPixmap(photo_open_xpm)); icons.insert("playlist", new QPixmap(playlist_xpm)); icons.insert("text", new QPixmap(text_xpm)); icons.insert("unknown", new QPixmap(unknown_xpm)); icons.insert("usb", new QPixmap(usb_xpm)); icons.insert("video_closed", new QPixmap(video_closed_xpm)); icons.insert("video_open", new QPixmap(video_open_xpm)); icons.insert("video", new QPixmap(video_xpm));}AFileType* AFileTypes::find(const QString &p_name) { QString name= p_name; QString suffix= name.right(name.length() - name.findRev('.') - 1); if(suffix == "desktop") { name= name.left(name.findRev('.')); suffix= name.right(name.length() - name.findRev('.') - 1); } AFileType *res= QDict<AFileType>::find(suffix); if(res == NULL) { if(QFileInfo(p_name).isDir()) { if(p_name.startsWith("/dev/shm/storage/") && p_name.length() == 18) { res= QDict<AFileType>::find("drive"); } else { res= QDict<AFileType>::find("folder"); } } else {/* MimeType m(name); const AppLnk *app= m.application(); if(app) { res= new AFileType; res->editor= app->exec(); res->iconname= app->icon(); insert(suffix, res); } else {*/ res= QDict<AFileType>::find("unknown");// } } } return res;}QString AFileTypes::findApp(const QString &name) { QString res; AFileType *ftype= find(name); if(ftype != NULL) res= ftype->editor; /* if(res.isEmpty()) { MimeType m(name); const AppLnk *applnk= m.application(); if(applnk != NULL) res= applnk->exec(); }*/ return res;}QPixmap* AFileTypes::findIcon(const QString &name) { QPixmap *res= NULL; AFileType *ftype= find(name); if(ftype!= NULL && ftype->iconname != "unknown") res= getIcon(ftype->iconname); if(res != NULL) return res; res= getIcon(name); if(res != NULL) return res; /* MimeType m(name); QPixmap tmp(m.pixmap()); if(!tmp.isNull()) { res= new QPixmap(tmp); icons.insert(ftype != NULL ? ftype->iconname: name, res); return res; } */ res= getIcon("unknown"); return res;}QPixmap* AFileTypes::getIcon(const QString &name) { QPixmap *res= icons.find(name); /* if(res == NULL) { QPixmap tmp(Resource::loadPixmap(QString("docicons/") + name)); if(!tmp.isNull()) { res= new QPixmap(tmp); icons.insert(name, res); } }*/ return res;}// we actually should be more forgiving about the formatbool AFileTypes::load(const char *path) { QFile in(path); if(in.open(IO_ReadOnly| IO_Translate)) { QTextStream tin(&in); QString line; while(!(line= tin.readLine()).isNull()) { if(line.startsWith("#")) continue; QStringList cols= QStringList::split('\t', line); if(cols.count() > 1) { AFileType *ftype= new AFileType; ftype->iconname= cols[1]; if(cols.count()> 2) ftype->editor= cols[2]; QString suffix= cols[0]; insert(suffix, ftype); } } in.close(); return TRUE; } return FALSE;}QString AFileTypes::createFilterFor(const QString &app) { QString suffixes; for(QDictIterator<AFileType> it(*this); it.current(); ++it) { if((*it).editor== app) { suffixes+= "*."+ it.currentKey()+ ";"; suffixes+= "*."+ it.currentKey().upper()+ ";"; } } suffixes= suffixes.left(suffixes.length()- 1); return suffixes; }AFileTypes *AFileTypes::instance= NULL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -