summaryrefslogtreecommitdiffstats
path: root/filewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filewidget.cpp')
-rw-r--r--filewidget.cpp50
1 files changed, 49 insertions, 1 deletions
diff --git a/filewidget.cpp b/filewidget.cpp
index decedd9..9996ae3 100644
--- a/filewidget.cpp
+++ b/filewidget.cpp
@@ -32,6 +32,9 @@
#include <QContextMenuEvent>
#include <QDirIterator>
#include <QComboBox>
+#include <QTextStream>
+#include <QApplication>
+#include <QClipboard>
#include "filewidget.h"
#include "filesorter.h"
@@ -183,6 +186,8 @@ void FileWidget::createActions(){
connect(mRemoveFromCacheA, &QAction::triggered, this, &FileWidget::removeFromCache);
mClearCacheA = new QAction(QIcon(":/male_chastity_belt.png"), tr("Clear..."), this);
connect(mClearCacheA, &QAction::triggered, this, &FileWidget::clearCache);
+ mGuessSubjectA = new QAction(QIcon(":/bizarre_amputee.png"), tr("Guess subject..."), this);
+ connect(mGuessSubjectA, &QAction::triggered, this, &FileWidget::guessSubject);
QMenu *fileMenu = new QMenu(tr("&File"));
fileMenu->addAction(mSelDirA);
@@ -199,6 +204,8 @@ void FileWidget::createActions(){
editMenu->addAction(mDirUpA);
editMenu->addAction(mDirBackA);
editMenu->addSeparator();
+ editMenu->addAction(mGuessSubjectA);
+ editMenu->addSeparator();
editMenu->addAction(mCopyA);
editMenu->addAction(mCutA);
editMenu->addAction(mPasteA);
@@ -228,10 +235,11 @@ void FileWidget::createActions(){
mToolBar->addAction(mPreviewA);
mToolBar->addAction(createSeparator());
mToolBar->addAction(mAddAsOriginA);
+ mToolBar->addAction(mGuessSubjectA);
mToolBar->addAction(createSeparator());
mToolBar->addAction(Globals::instance()->action(Globals::ConfigAction));
- addActions(QList<QAction*>() << mDirBackA << mDirUpA << createSeparator() << mRefreshA << mSelDirA << createSeparator() << mCopyA << mCutA << mPasteA << mDeleteA << createSeparator() << mAddAsOriginA << createSeparator() << mPreviewA << createSeparator() << mPropertiesA);
+ addActions(QList<QAction*>() << mGuessSubjectA << createSeparator() << mRefreshA << mSelDirA << createSeparator() << mCopyA << mCutA << mPasteA << mDeleteA << createSeparator() << mAddAsOriginA << createSeparator() << mPreviewA << createSeparator() << mPropertiesA);
}
void FileWidget::fileData(const QString &fullPath, const QString &md5){
@@ -343,6 +351,7 @@ void FileWidget::gatherData(){
}
mFileView->setSortingEnabled(true);
readHeaderData();
+ readDescriptION();
qApp->restoreOverrideCursor();
selectFirst();
double totalSizeGB = totalSize / 1024 / 1024 / 1024.0;
@@ -350,6 +359,45 @@ void FileWidget::gatherData(){
emit freeSpaceChanged(mDir->text());
}
+void FileWidget::readDescriptION(){
+ mDescript.clear();
+ QString fileName = QString("%1/descript.ion").arg(mDir->text());
+ QFile descFile(fileName);
+ if(descFile.open(QFile::ReadOnly)){
+ QTextStream in(&descFile);
+ QString line;
+ while(in.readLineInto(&line)){
+ QStringList parts = line.split(',');
+ if(!parts.isEmpty()){
+ mDescript << parts.at(0);
+ }
+ }
+ }
+ std::sort(mDescript.begin(), mDescript.end());
+}
+
+void FileWidget::guessSubject(){
+ QModelIndexList sel = mFileView->selectionModel()->selectedRows(NameColumn);
+ if(!sel.isEmpty()){
+ QString fn = QString(".*\\Q%1\\E.*").arg(sel.first().data().toString());
+ const QRegularExpression fnRe(fn);
+ int index = mDescript.indexOf(fnRe);
+ if(index > -1){
+ QString subject(mDescript.at(index));
+ if(subject.startsWith('"')){
+ int nextQuot = subject.indexOf('"', 1);
+ if(nextQuot > -1){
+ subject = subject.remove(0, nextQuot + 1).trimmed();
+ }
+ }
+ qApp->clipboard()->setText(subject);
+ emit statusMessage(subject);
+ }else{
+ emit statusMessage(tr("No subject found!"));
+ }
+ }
+}
+
int FileWidget::md5Count(const QString &md5) {
mQOrigin.bindValue(":md5", md5);
mQOrigin.exec();