This commit is contained in:
寂静的羽夏 2022-09-22 21:47:09 +08:00
parent f98fa3297e
commit 56dc82c707
7 changed files with 141 additions and 114 deletions

View File

@ -6,7 +6,10 @@
#include <QFileInfo>
#include <QMimeDatabase>
FileInfoDialog::FileInfoDialog(QString filename, DMainWindow *parent)
#define TextBroswerWidth 400
FileInfoDialog::FileInfoDialog(QString filename, bool isRegionFile,
DMainWindow *parent)
: DDialog(parent) {
static const QString dfmt("yyyy/MM/dd hh:mm:ss ddd");
@ -40,10 +43,16 @@ FileInfoDialog::FileInfoDialog(QString filename, DMainWindow *parent)
finfo.fileTime(QFile::FileTime::FileModificationTime).toString(dfmt));
b->append(tr("LastRead:") + finfo.lastRead().toString(dfmt));
b->append(tr("LastMod:") + finfo.lastModified().toString(dfmt));
auto w = b->fontMetrics().horizontalAdvance('=');
b->append(QString(TextBroswerWidth / w, '='));
b->append(tr("IsRegionFile:") + (isRegionFile ? tr("True") : tr("False")));
}
l->setPixmap(icon.pixmap(icon.availableSizes().last()));
addContent(l, Qt::AlignHCenter);
addSpacing(10);
b->setFixedSize(400, 300);
b->setFixedSize(TextBroswerWidth, 300);
addContent(b);
}
FileInfoDialog::~FileInfoDialog() {}

View File

@ -10,7 +10,9 @@ DWIDGET_USE_NAMESPACE
class FileInfoDialog : public DDialog {
Q_OBJECT
public:
FileInfoDialog(QString filename, DMainWindow *parent = nullptr);
FileInfoDialog(QString filename, bool isRegionFile,
DMainWindow *parent = nullptr);
~FileInfoDialog();
};
#endif // FILEINFODIALOG_H

View File

@ -2770,14 +2770,8 @@ ErrFile MainWindow::openRegionFile(QString filename, bool readonly,
p->setDocSaved();
hexeditor->getStatus();
QIcon qicon;
QMimeDatabase db;
auto t = db.mimeTypeForFile(filename);
auto ico = t.iconName();
qicon = QIcon::fromTheme(ico, QIcon(ico));
tabs->addTab(qicon, info.fileName());
tabs->addTab(Utilities::getIconFromFile(style(), filename),
info.fileName());
auto index = hexfiles.count() - 1;
tabs->setCurrentIndex(index);
tabs->setTabToolTip(index, filename);
@ -2879,10 +2873,7 @@ ErrFile MainWindow::openFile(QString filename, bool readonly, int *openedindex,
if (p->documentType() == DocumentType::WorkSpace) {
qicon = ICONRES("pro");
} else {
QMimeDatabase db;
auto t = db.mimeTypeForFile(filename);
auto ico = t.iconName();
qicon = QIcon::fromTheme(ico, QIcon(ico));
qicon = Utilities::getIconFromFile(style(), filename);
}
tabs->addTab(qicon, info.fileName());
@ -2969,11 +2960,8 @@ ErrFile MainWindow::openDriver(QString driver) {
hexfiles.push_back(hf);
p->setDocSaved();
hexeditor->getStatus();
QMimeDatabase db;
auto t = db.mimeTypeForFile(driver);
auto ico = t.iconName();
tabs->addTab(QIcon::fromTheme(ico, QIcon(ico)), info.fileName());
tabs->addTab(Utilities::getIconFromFile(style(), driver),
info.fileName());
auto index = hexfiles.count() - 1;
tabs->setCurrentIndex(index);
tabs->setTabToolTip(index, driver);
@ -3138,7 +3126,8 @@ void MainWindow::on_tabCloseRequested(int index) {
}
void MainWindow::on_tabBarDoubleClicked(int index) {
FileInfoDialog d(hexfiles[index].filename);
auto &h = hexfiles[index];
FileInfoDialog d(h.filename, Utilities::isRegionFile(h.doc));
d.exec();
}
@ -3766,10 +3755,8 @@ ErrFile MainWindow::save(int index, bool ignoreMd5) {
}
} else {
// 如果不是工作区,更新文件关联的图标
QMimeDatabase db;
auto t = db.mimeTypeForFile(f.filename);
auto ico = t.iconName();
tabs->setTabIcon(index, QIcon::fromTheme(ico, QIcon(ico)));
tabs->setTabIcon(index,
Utilities::getIconFromFile(style(), f.filename));
}
return ErrFile::Success;
}
@ -3869,10 +3856,7 @@ ErrFile MainWindow::saveAs(QString filename, int index, bool ignoreMd5) {
f.doc->setDocSaved();
} else {
// 如果不是工作区,更新文件关联的图标
QMimeDatabase db;
auto t = db.mimeTypeForFile(filename);
auto ico = t.iconName();
tabs->setTabIcon(index, QIcon::fromTheme(ico, QIcon(ico)));
tabs->setTabIcon(index, Utilities::getIconFromFile(style(), filename));
}
return ErrFile::Success;
}
@ -4074,7 +4058,8 @@ void MainWindow::on_encoding() {
void MainWindow::on_fileInfo() {
CheckEnabled;
FileInfoDialog d(hexfiles[_currentfile].filename);
auto &h = hexfiles[_currentfile];
FileInfoDialog d(h.filename, Utilities::isRegionFile(h.doc));
d.exec();
}

Binary file not shown.

View File

@ -87,65 +87,80 @@
<context>
<name>FileInfoDialog</name>
<message>
<location filename="../dialog/fileinfodialog.cpp" line="13"/>
<location filename="../dialog/fileinfodialog.cpp" line="14"/>
<source>FileInfo</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/fileinfodialog.cpp" line="22"/>
<location filename="../dialog/fileinfodialog.cpp" line="23"/>
<source>FileNew</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/fileinfodialog.cpp" line="29"/>
<location filename="../dialog/fileinfodialog.cpp" line="30"/>
<source>FileName:</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/fileinfodialog.cpp" line="30"/>
<location filename="../dialog/fileinfodialog.cpp" line="31"/>
<source>FilePath:</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/fileinfodialog.cpp" line="31"/>
<location filename="../dialog/fileinfodialog.cpp" line="32"/>
<source>FileSize:</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/fileinfodialog.cpp" line="32"/>
<location filename="../dialog/fileinfodialog.cpp" line="33"/>
<source>Mime:</source>
<translation>Mime </translation>
</message>
<message>
<location filename="../dialog/fileinfodialog.cpp" line="33"/>
<location filename="../dialog/fileinfodialog.cpp" line="34"/>
<source>Md5:</source>
<translation>MD5</translation>
</message>
<message>
<location filename="../dialog/fileinfodialog.cpp" line="34"/>
<location filename="../dialog/fileinfodialog.cpp" line="35"/>
<source>FileBirthTime:</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/fileinfodialog.cpp" line="36"/>
<location filename="../dialog/fileinfodialog.cpp" line="37"/>
<source>FileAccessTime:</source>
<translation>访</translation>
</message>
<message>
<location filename="../dialog/fileinfodialog.cpp" line="39"/>
<location filename="../dialog/fileinfodialog.cpp" line="40"/>
<source>FileModificationTime:</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/fileinfodialog.cpp" line="41"/>
<location filename="../dialog/fileinfodialog.cpp" line="42"/>
<source>LastRead:</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/fileinfodialog.cpp" line="42"/>
<location filename="../dialog/fileinfodialog.cpp" line="43"/>
<source>LastMod:</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/fileinfodialog.cpp" line="45"/>
<source>IsRegionFile:</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/fileinfodialog.cpp" line="45"/>
<source>True</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/fileinfodialog.cpp" line="45"/>
<source>False</source>
<translation></translation>
</message>
</context>
<context>
<name>FindDialog</name>
@ -430,7 +445,7 @@
<location filename="../dialog/mainwindow.cpp" line="317"/>
<location filename="../dialog/mainwindow.cpp" line="469"/>
<location filename="../dialog/mainwindow.cpp" line="583"/>
<location filename="../dialog/mainwindow.cpp" line="4165"/>
<location filename="../dialog/mainwindow.cpp" line="4167"/>
<source>Fill</source>
<translation></translation>
</message>
@ -471,8 +486,8 @@
<location filename="../dialog/mainwindow.cpp" line="626"/>
<location filename="../dialog/mainwindow.cpp" line="935"/>
<location filename="../dialog/mainwindow.cpp" line="964"/>
<location filename="../dialog/mainwindow.cpp" line="4024"/>
<location filename="../dialog/mainwindow.cpp" line="4032"/>
<location filename="../dialog/mainwindow.cpp" line="4025"/>
<location filename="../dialog/mainwindow.cpp" line="4033"/>
<source>BookMark</source>
<translation></translation>
</message>
@ -805,158 +820,158 @@
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3161"/>
<location filename="../dialog/mainwindow.cpp" line="3172"/>
<location filename="../dialog/mainwindow.cpp" line="3162"/>
<location filename="../dialog/mainwindow.cpp" line="3173"/>
<source>CutToClipBoard</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3164"/>
<location filename="../dialog/mainwindow.cpp" line="3175"/>
<location filename="../dialog/mainwindow.cpp" line="3165"/>
<location filename="../dialog/mainwindow.cpp" line="3176"/>
<source>UnCutToClipBoard</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="883"/>
<location filename="../dialog/mainwindow.cpp" line="3183"/>
<location filename="../dialog/mainwindow.cpp" line="3190"/>
<location filename="../dialog/mainwindow.cpp" line="3184"/>
<location filename="../dialog/mainwindow.cpp" line="3191"/>
<source>CopyToClipBoard</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3225"/>
<location filename="../dialog/mainwindow.cpp" line="3226"/>
<source>ExportSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3229"/>
<location filename="../dialog/mainwindow.cpp" line="3316"/>
<location filename="../dialog/mainwindow.cpp" line="3362"/>
<location filename="../dialog/mainwindow.cpp" line="3230"/>
<location filename="../dialog/mainwindow.cpp" line="3317"/>
<location filename="../dialog/mainwindow.cpp" line="3363"/>
<source>SourceChanged</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3236"/>
<location filename="../dialog/mainwindow.cpp" line="3237"/>
<source>ExportSourceFileError</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3242"/>
<location filename="../dialog/mainwindow.cpp" line="3243"/>
<source>ExportUnSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3312"/>
<location filename="../dialog/mainwindow.cpp" line="3358"/>
<location filename="../dialog/mainwindow.cpp" line="3313"/>
<location filename="../dialog/mainwindow.cpp" line="3359"/>
<source>SaveWSError</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3323"/>
<location filename="../dialog/mainwindow.cpp" line="3369"/>
<location filename="../dialog/mainwindow.cpp" line="3324"/>
<location filename="../dialog/mainwindow.cpp" line="3370"/>
<source>SaveSourceFileError</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3446"/>
<location filename="../dialog/mainwindow.cpp" line="3447"/>
<source>TooMuchFindResult</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3452"/>
<location filename="../dialog/mainwindow.cpp" line="3453"/>
<source>FindFininishError</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3551"/>
<location filename="../dialog/mainwindow.cpp" line="3552"/>
<source>TooManyBytesDecode</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3610"/>
<location filename="../dialog/mainwindow.cpp" line="3611"/>
<source>ReloadFileDocError</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3628"/>
<location filename="../dialog/mainwindow.cpp" line="3629"/>
<source>ReloadSuccess</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3632"/>
<location filename="../dialog/mainwindow.cpp" line="3633"/>
<source>ReloadFileNotExist</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3892"/>
<location filename="../dialog/mainwindow.cpp" line="3934"/>
<location filename="../dialog/mainwindow.cpp" line="3961"/>
<location filename="../dialog/mainwindow.cpp" line="3974"/>
<location filename="../dialog/mainwindow.cpp" line="4015"/>
<location filename="../dialog/mainwindow.cpp" line="4046"/>
<location filename="../dialog/mainwindow.cpp" line="4060"/>
<location filename="../dialog/mainwindow.cpp" line="3893"/>
<location filename="../dialog/mainwindow.cpp" line="3935"/>
<location filename="../dialog/mainwindow.cpp" line="3962"/>
<location filename="../dialog/mainwindow.cpp" line="3975"/>
<location filename="../dialog/mainwindow.cpp" line="4016"/>
<location filename="../dialog/mainwindow.cpp" line="4047"/>
<location filename="../dialog/mainwindow.cpp" line="4061"/>
<source>CheckKeepSize</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3920"/>
<location filename="../dialog/mainwindow.cpp" line="3921"/>
<source>NoMetaData</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="4139"/>
<location filename="../dialog/mainwindow.cpp" line="4141"/>
<source>ExportLogError</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="4142"/>
<location filename="../dialog/mainwindow.cpp" line="4144"/>
<source>ExportLogSuccess</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="4149"/>
<location filename="../dialog/mainwindow.cpp" line="4151"/>
<source>ClearLogSuccess</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="4205"/>
<location filename="../dialog/mainwindow.cpp" line="4207"/>
<source>PluginFile (*.so)</source>
<translation> (*.so)</translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="4228"/>
<location filename="../dialog/mainwindow.cpp" line="4230"/>
<source>EmptyFindResult</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="4250"/>
<location filename="../dialog/mainwindow.cpp" line="4252"/>
<source>SaveFindResult</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="4254"/>
<location filename="../dialog/mainwindow.cpp" line="4256"/>
<source>SaveFindResultError</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="4324"/>
<location filename="../dialog/mainwindow.cpp" line="4326"/>
<source>ProjectFile (*.wingpro)</source>
<translation> (*.wingpro)</translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="4333"/>
<location filename="../dialog/mainwindow.cpp" line="4335"/>
<source>WSOpenedUnSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="4336"/>
<location filename="../dialog/mainwindow.cpp" line="4338"/>
<source>WorkSpaceOpenUnSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3229"/>
<location filename="../dialog/mainwindow.cpp" line="3316"/>
<location filename="../dialog/mainwindow.cpp" line="3362"/>
<location filename="../dialog/mainwindow.cpp" line="3230"/>
<location filename="../dialog/mainwindow.cpp" line="3317"/>
<location filename="../dialog/mainwindow.cpp" line="3363"/>
<source>Warn</source>
<translation></translation>
</message>
@ -1003,18 +1018,18 @@
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="4205"/>
<location filename="../dialog/mainwindow.cpp" line="4208"/>
<location filename="../dialog/mainwindow.cpp" line="4207"/>
<location filename="../dialog/mainwindow.cpp" line="4210"/>
<source>ChoosePlugin</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="4208"/>
<location filename="../dialog/mainwindow.cpp" line="4210"/>
<source>PluginFile (*.wingplg)</source>
<translation> (*.wingplg)</translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3208"/>
<location filename="../dialog/mainwindow.cpp" line="3209"/>
<source>DriverOpenErrorTip</source>
<translation></translation>
</message>
@ -1036,7 +1051,7 @@
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3082"/>
<location filename="../dialog/mainwindow.cpp" line="4324"/>
<location filename="../dialog/mainwindow.cpp" line="4326"/>
<source>ChooseFile</source>
<translation></translation>
</message>
@ -1056,75 +1071,75 @@
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3132"/>
<location filename="../dialog/mainwindow.cpp" line="3278"/>
<location filename="../dialog/mainwindow.cpp" line="3279"/>
<source>Close</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3133"/>
<location filename="../dialog/mainwindow.cpp" line="3279"/>
<location filename="../dialog/mainwindow.cpp" line="3280"/>
<source>ConfirmSave</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3215"/>
<location filename="../dialog/mainwindow.cpp" line="3216"/>
<source>ChooseExportFile</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3307"/>
<location filename="../dialog/mainwindow.cpp" line="3353"/>
<location filename="../dialog/mainwindow.cpp" line="3308"/>
<location filename="../dialog/mainwindow.cpp" line="3354"/>
<source>SaveSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3329"/>
<location filename="../dialog/mainwindow.cpp" line="3375"/>
<location filename="../dialog/mainwindow.cpp" line="3330"/>
<location filename="../dialog/mainwindow.cpp" line="3376"/>
<source>SaveUnSuccessfully</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3343"/>
<location filename="../dialog/mainwindow.cpp" line="3644"/>
<location filename="../dialog/mainwindow.cpp" line="4232"/>
<location filename="../dialog/mainwindow.cpp" line="3344"/>
<location filename="../dialog/mainwindow.cpp" line="3645"/>
<location filename="../dialog/mainwindow.cpp" line="4234"/>
<source>ChooseSaveFile</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3449"/>
<location filename="../dialog/mainwindow.cpp" line="3450"/>
<source>FindFininish</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3655"/>
<location filename="../dialog/mainwindow.cpp" line="3656"/>
<source>SaveSelError</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3668"/>
<location filename="../dialog/mainwindow.cpp" line="3688"/>
<location filename="../dialog/mainwindow.cpp" line="3669"/>
<location filename="../dialog/mainwindow.cpp" line="3689"/>
<source>Addr : 0x%1</source>
<translation>0x%1</translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="3924"/>
<location filename="../dialog/mainwindow.cpp" line="3951"/>
<location filename="../dialog/mainwindow.cpp" line="3925"/>
<location filename="../dialog/mainwindow.cpp" line="3952"/>
<source>NoSelection</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="4024"/>
<location filename="../dialog/mainwindow.cpp" line="4032"/>
<location filename="../dialog/mainwindow.cpp" line="4025"/>
<location filename="../dialog/mainwindow.cpp" line="4033"/>
<source>InputComment</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="4165"/>
<location filename="../dialog/mainwindow.cpp" line="4167"/>
<source>PleaseInputFill</source>
<translation></translation>
</message>
<message>
<location filename="../dialog/mainwindow.cpp" line="4177"/>
<location filename="../dialog/mainwindow.cpp" line="4179"/>
<source>FillInputError</source>
<translation></translation>
</message>

View File

@ -9,6 +9,7 @@
#include <QDBusReply>
#include <QDebug>
#include <QList>
#include <QStyle>
#include <QTextCodec>
#include <unistd.h>
@ -113,6 +114,20 @@ public:
auto l = *reinterpret_cast<char *>(&s);
return l == 0x22;
}
static bool isRegionFile(QHexDocument *doc) {
return doc ? doc->documentType() == DocumentType::RegionFile : false;
}
static QIcon getIconFromFile(QStyle *style, QString &filename) {
QMimeDatabase db;
auto t = db.mimeTypeForFile(filename);
auto ico = t.iconName();
auto qicon = QIcon::fromTheme(ico, QIcon(ico));
return qicon.availableSizes().count()
? qicon
: style->standardIcon(QStyle::SP_FileIcon);
}
};
#endif // UTILITIES_H

View File

@ -2,7 +2,8 @@
1.5.1
1. 修复最近文件列表只会记录通过打开文件按钮的文件名的 Bug
2. 增加文件信息显示功能
2. 增加文件信息显示功能(可双击项目显示)
3. 优化标签栏项目图标显示
1.5.0
1. 增加全局异常捕获并生成 dmp ,方便定位错误进行修复