summaryrefslogtreecommitdiffstats
path: root/filewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filewidget.cpp')
-rw-r--r--filewidget.cpp45
1 files changed, 41 insertions, 4 deletions
diff --git a/filewidget.cpp b/filewidget.cpp
index 216cce7..4b22b77 100644
--- a/filewidget.cpp
+++ b/filewidget.cpp
@@ -35,6 +35,7 @@
#include "filewidget.h"
#include "filesorter.h"
#include "filedisplay.h"
+#include "origindialog.h"
#include "helper.h"
#include "globals.h"
@@ -91,8 +92,13 @@ void FileWidget::setupGui(){
mQOrigin.prepare("SELECT COUNT(*) FROM files_origin WHERE cmd5sum = :md5");
mQFiles = QSqlQuery(mDb);
mQFiles.prepare("SELECT COUNT(*) FROM files WHERE cmd5sum = :md5");
+ mQSimilar = QSqlQuery(mDb);
+ mQSimilar.prepare("SELECT ifiles_id, tfilename FROM files WHERE tfilename ~ :fn AND files.ifiles_id NOT IN (SELECT ifiles_id FROM files_origin WHERE ifiles_id = files.ifiles_id)");
mFileDisplay = new FileDisplay(this);
+ mOrignDlg = new OriginDialog(this);
+ connect(mOrignDlg, SIGNAL(statusMessage(QString)), this, SIGNAL(statusMessage(QString)));
+ connect(mOrignDlg, SIGNAL(refreshNeeded()), this, SLOT(gatherData()));
mMenuBar = new QMenuBar;
mToolBar = new QToolBar;
mToolBar->setIconSize(QSize(16, 16));
@@ -139,6 +145,8 @@ void FileWidget::createActions(){
mPropertiesA = new QAction(QIcon(":/diaper.png"), tr("Properties..."), this);
mPropertiesA->setShortcut(Qt::CTRL + Qt::Key_Return);
connect(mPropertiesA, SIGNAL(triggered()), this, SLOT(properties()));
+ mAddAsOriginA = new QAction(QIcon(":/butt_plug.png"), tr("Add as Origin..."), this);
+ connect(mAddAsOriginA, SIGNAL(triggered()), this, SLOT(addAsOrigin()));
QMenu *fileMenu = new QMenu(tr("&File"));
fileMenu->addAction(mSelDirA);
@@ -156,6 +164,7 @@ void FileWidget::createActions(){
editMenu->addAction(mDeleteA);
editMenu->addSeparator();
editMenu->addAction(mPropertiesA);
+ editMenu->addAction(mAddAsOriginA);
editMenu->addSeparator();
editMenu->addAction(Globals::instance()->action(Globals::ConfigAction));
@@ -174,10 +183,11 @@ void FileWidget::createActions(){
mToolBar->addAction(mDeleteA);
mToolBar->addAction(createSeparator());
mToolBar->addAction(mPropertiesA);
+ mToolBar->addAction(mAddAsOriginA);
mToolBar->addAction(createSeparator());
mToolBar->addAction(Globals::instance()->action(Globals::ConfigAction));
- addActions(QList<QAction*>() << mDirBackA << mDirUpA << createSeparator() << mRefreshA << mSelDirA << createSeparator() << mCopyA << mCutA << mPasteA << mDeleteA << createSeparator() << mPropertiesA);
+ addActions(QList<QAction*>() << mDirBackA << mDirUpA << createSeparator() << mRefreshA << mSelDirA << createSeparator() << mCopyA << mCutA << mPasteA << mDeleteA << createSeparator() << mAddAsOriginA << mPropertiesA);
}
void FileWidget::fileData(const QString &fullPath, const QString &md5){
@@ -201,6 +211,7 @@ void FileWidget::gatherData(){
mModel->setHorizontalHeaderLabels(QStringList() << QChar(0x26A7) << tr("Name") << tr("MIME") << tr("Duration") << tr("MD5"));
QBrush redBrush(Qt::red);
QBrush greenBrush(Qt::darkGreen);
+ QBrush blueBrush(Qt::darkBlue);
QMimeDatabase db;
qApp->setOverrideCursor(Qt::BusyCursor);
@@ -238,9 +249,17 @@ void FileWidget::gatherData(){
fData[NameColumn]->setForeground(greenBrush);
attr = Present;
}else{
- fData[IconColumn]->setIcon(QIcon(":/chastity_belt.png"));
- fData[NameColumn]->setForeground(redBrush);
- attr = NotPresent;
+ QString complFn = fi.completeBaseName();
+ bool hasOrig = haveOrigin(complFn);
+ if(hasOrig){
+ fData[IconColumn]->setIcon(QIcon(":/butt_plug.png"));
+ fData[NameColumn]->setForeground(blueBrush);
+ attr = Origin;
+ }else{
+ fData[IconColumn]->setIcon(QIcon(":/chastity_belt.png"));
+ fData[NameColumn]->setForeground(redBrush);
+ attr = NotPresent;
+ }
}
QJsonDocument jDoc = Helper::ffpmegData(fi.absoluteFilePath());
QJsonObject jObj = jDoc.object();
@@ -299,6 +318,16 @@ int FileWidget::md5Count(const QString &md5) {
return retval;
}
+bool FileWidget::haveOrigin(const QString filename){
+ bool retval = false;
+ mQSimilar.bindValue(":fn", filename);
+ mQSimilar.exec();
+ while(mQSimilar.next()){
+ retval = true;
+ }
+ return retval;
+}
+
void FileWidget::readHeaderData(){
QSettings s;
QByteArray headers = s.value("video/fileheaders").toByteArray();
@@ -425,6 +454,14 @@ void FileWidget::selectFirst(){
}
}
+void FileWidget::addAsOrigin(){
+ mOrignDlg->clear();
+ QModelIndex idx = mFileView->selectionModel()->selectedRows().first();
+ QString fp = idx.data(FullPathRole).toString();
+ mOrignDlg->setSrctData(fp);
+ mOrignDlg->setDstData(fp);
+ mOrignDlg->show();
+}
void FileWidget::fileSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected){
Q_UNUSED(selected);