summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-01-27 18:10:04 +0100
committerArno <arno@disconnect.de>2018-01-27 18:10:04 +0100
commit1c318d543c7a49fa57ac2acb3de999b8718a7621 (patch)
tree5b36ea8f4e3898fcde7ba7c3967692ff76cf716d
parente8e06044c3fcc1cd36deb52a42538ebec3a1e602 (diff)
downloadShemovCleaner-1c318d543c7a49fa57ac2acb3de999b8718a7621.tar.gz
ShemovCleaner-1c318d543c7a49fa57ac2acb3de999b8718a7621.tar.bz2
ShemovCleaner-1c318d543c7a49fa57ac2acb3de999b8718a7621.zip
New feature: Guess subject
If a descript.ion file exists in the current directory of fileWidget, read the subjects into a QStringList to determine the usenet subject from within ShemovCleaner. No more tedious task switching to the usenet client, just trigger "Guess subject..." :)
-rw-r--r--filewidget.cpp50
-rw-r--r--filewidget.h4
2 files changed, 53 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();
diff --git a/filewidget.h b/filewidget.h
index eed1692..3c75c6f 100644
--- a/filewidget.h
+++ b/filewidget.h
@@ -58,6 +58,8 @@ class FileWidget : public QWidget {
void cdLast();
void deleteFiles();
void gatherData();
+ void readDescriptION();
+ void guessSubject();
void selectDir();
void properties();
void properties(const QModelIndex &idx);
@@ -123,6 +125,7 @@ class FileWidget : public QWidget {
QAction *mAddAsOriginA;
QAction *mRemoveFromCacheA;
QAction *mClearCacheA;
+ QAction *mGuessSubjectA;
ProgressDialog *mCopyProgress;
FileDisplay *mFileDisplay;
VideoSorter *mProxy;
@@ -132,6 +135,7 @@ class FileWidget : public QWidget {
QComboBox *mFavDirs;
QComboBox *mMimeFilters;
int mFileAction;
+ QStringList mDescript;
};
#endif // FILEWIDGET_H