summaryrefslogtreecommitdiffstats
path: root/filedisplay.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2016-09-03 11:06:48 +0200
committerArno <arno@disconnect.de>2016-09-03 11:06:48 +0200
commitbbf802b7d415bb3dd44020e9ff0c657f44da28ea (patch)
tree8f5d4f28b3284252b64c7dceed10a8f8604d0434 /filedisplay.cpp
parent9ccd31690b5d982588bcb9be1988c682233aabb8 (diff)
downloadShemovCleaner-bbf802b7d415bb3dd44020e9ff0c657f44da28ea.tar.gz
ShemovCleaner-bbf802b7d415bb3dd44020e9ff0c657f44da28ea.tar.bz2
ShemovCleaner-bbf802b7d415bb3dd44020e9ff0c657f44da28ea.zip
Add FileDisplay
When doubleclicking on a file already present in DB show a dialog with the series name, actors and genres.
Diffstat (limited to 'filedisplay.cpp')
-rw-r--r--filedisplay.cpp155
1 files changed, 155 insertions, 0 deletions
diff --git a/filedisplay.cpp b/filedisplay.cpp
new file mode 100644
index 0000000..bce77d9
--- /dev/null
+++ b/filedisplay.cpp
@@ -0,0 +1,155 @@
+#include <QTabWidget>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
+#include <QGridLayout>
+#include <QLineEdit>
+#include <QLabel>
+#include <QTextEdit>
+#include <QPushButton>
+#include <QSqlDatabase>
+#include <QSqlQuery>
+#include <QPushButton>
+#include <QGroupBox>
+#include <QDir>
+
+#include "filedisplay.h"
+
+FileDisplay::FileDisplay(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f) {
+ mTab = new QTabWidget;
+ mDBData = new DBData;
+ mTab->addTab(mDBData, tr("Database"));
+
+ //button layout
+ QHBoxLayout *buttonL = new QHBoxLayout;
+ QPushButton *closeBtn = new QPushButton(tr("Close"));
+ connect(closeBtn, SIGNAL(clicked()), this, SLOT(hide()));
+ buttonL->addStretch();
+ buttonL->addWidget(closeBtn);
+ buttonL->addStretch();
+
+ //dialog layout
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+ mainLayout->addWidget(mTab);
+ mainLayout->addLayout(buttonL);
+ setLayout(mainLayout);
+ setWindowTitle(tr("File Info"));
+}
+
+void FileDisplay::setFileData(const QString &fullPath, const QString &md5Sum) {
+ mFullPath = fullPath;
+ mMd5 = md5Sum;
+ mDBData->setFileData(fullPath, md5Sum);
+}
+
+DBData::DBData(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f) {
+ QLabel *seriesNameL = new QLabel(tr("Series"));
+ mSeriesName = new QLineEdit;
+ mSeriesName->setReadOnly(true);
+ QLabel *fullPathL = new QLabel(tr("File"));
+ mFullPath = new QLineEdit;
+ mFullPath->setReadOnly(true);
+ QLabel *md5L = new QLabel(tr("MD5"));
+ mMd5 = new QLineEdit;
+ mMd5->setReadOnly(true);
+
+ QGridLayout *topL = new QGridLayout;
+ topL->addWidget(seriesNameL, 0, 0);
+ topL->addWidget(mSeriesName, 0, 1);
+ topL->addWidget(fullPathL, 1, 0);
+ topL->addWidget(mFullPath, 1, 1);
+ topL->addWidget(md5L, 2, 0);
+ topL->addWidget(mMd5, 2, 1);
+ QGroupBox *topGB = new QGroupBox(tr("General"));
+ topGB->setLayout(topL);
+
+ mActors = new QTextEdit;
+ mActors->setReadOnly(true);
+ QGroupBox *actorsGB = new QGroupBox(tr("Actors"));
+ QHBoxLayout *actorsGBL = new QHBoxLayout;
+ actorsGBL->addWidget(mActors);
+ actorsGB->setLayout(actorsGBL);
+
+ mGenres = new QTextEdit;
+ mGenres->setReadOnly(true);
+ QGroupBox *genresGB = new QGroupBox(tr("Genres"));
+ QHBoxLayout *genresGBL = new QHBoxLayout;
+ genresGBL->addWidget(mGenres);
+ genresGB->setLayout(genresGBL);
+
+ QHBoxLayout *textL = new QHBoxLayout;
+ textL->addWidget(genresGB);
+ textL->addWidget(actorsGB);
+
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+ mainLayout->addWidget(topGB);
+ mainLayout->addLayout(textL);
+ setLayout(mainLayout);
+}
+
+void DBData::setFileData(const QString &fullPath, const QString &md5Sum){
+ mFullPath->setText(QDir::toNativeSeparators(fullPath));
+ mFullPath->home(false);
+ mMd5->setText(md5Sum);
+ gatherData();
+}
+
+void DBData::gatherData(){
+ const QString &md5 = mMd5->text();
+ const QString &fp = mFullPath->text();
+ QSqlDatabase db = QSqlDatabase::database("shemovdb");
+ if(!db.isOpen()){
+ db.open();
+ }
+
+ //series name
+ QVariantList seriesRes;
+ QSqlQuery seriesQ1(db);
+ seriesQ1.prepare("SELECT series.tseries_name, seriesparts.tsubtitle, seriesparts.iseriespart, seriesparts.iseriesparts_id FROM files, seriesparts, series WHERE files.iseriespart_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id AND files.cmd5sum = :md5");
+ seriesQ1.bindValue(":md5", md5);
+ seriesQ1.exec();
+ while(seriesQ1.next()){
+ seriesRes << seriesQ1.value(0) << seriesQ1.value(1) << seriesQ1.value(2) << seriesQ1.value(3);
+ }
+ if(seriesRes.isEmpty()){
+ QSqlQuery seriesQ2(db);
+ seriesQ2.prepare("SELECT series.tseries_name, seriesparts.tsubtitle, seriesparts.iseriespart, seriesparts.iseriesparts_id FROM files_origin, files, seriesparts, series WHERE files.iseriespart_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id AND files_origin.cmd5sum = :md5 AND files_origin.ifiles_id = files.ifiles_id");
+ seriesQ2.bindValue(":md5", md5);
+ seriesQ2.exec();
+ while(seriesQ2.next()){
+ seriesRes << seriesQ2.value(0) << seriesQ2.value(1) << seriesQ2.value(2) << seriesQ2.value(3);
+ }
+ }
+ QString seriesName(seriesRes.at(0).toString());
+ if(seriesRes.at(1).isValid()){
+ seriesName.append(QString(" - %1").arg(seriesRes.at(1).toString()));
+ }
+ if(seriesRes.at(2).toInt()){
+ seriesName.append(QString(" - %1").arg(seriesRes.at(2).toString()));
+ }
+ mSeriesName->setText(seriesName);
+
+ //actors
+ int seriesPartId = seriesRes.at(3).toInt();
+ QSqlQuery actorsQ(db);
+ actorsQ.prepare("SELECT actors.tactorname FROM actors, seriesparts, seriesparts_actormap WHERE actors.iactors_id = seriesparts_actormap.iactors_id AND seriesparts_actormap.iseriesparts_id = seriesparts.iseriesparts_id AND seriesparts.iseriesparts_id = :id ORDER BY actors.tactorname");
+ QStringList actors;
+ actorsQ.bindValue(":id", seriesPartId);
+ actorsQ.exec();
+ while(actorsQ.next()){
+ actors << actorsQ.value(0).toString();
+ }
+ QString actorsText = actors.join("\n");
+ mActors->setText(actorsText);
+
+ //genres
+ QSqlQuery genresQ(db);
+ genresQ.prepare("SELECT genres.tgenrename FROM genres, seriesparts, seriesparts_genremap WHERE genres.igenres_id = seriesparts_genremap.igenres_id AND seriesparts_genremap.iseriesparts_id = seriesparts.iseriesparts_id AND seriesparts.iseriesparts_id = :id ORDER BY genres.tgenrename");
+ QStringList genres;
+ genresQ.bindValue(":id", seriesPartId);
+ genresQ.exec();
+ while(genresQ.next()){
+ genres << genresQ.value(0).toString();
+ }
+ QString genresText = genres.join("\n");
+ mGenres->setText(genresText);
+}