diff options
Diffstat (limited to 'filewidget.cpp')
-rw-r--r-- | filewidget.cpp | 45 |
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); |