summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-04-04 08:32:51 +0200
committerArno <arno@disconnect.de>2018-04-04 08:32:51 +0200
commitc2f858dd0cee23eb28da69c97cf4774554f476f7 (patch)
tree97de192d61236602fe2ee1a9b197209e35af536b
parent6591250d9f0cddbc3f05b1b154d8e6889577fe94 (diff)
downloadSheMov-c2f858dd0cee23eb28da69c97cf4774554f476f7.tar.gz
SheMov-c2f858dd0cee23eb28da69c97cf4774554f476f7.tar.bz2
SheMov-c2f858dd0cee23eb28da69c97cf4774554f476f7.zip
MovieWidget: indicate if file is available
-rw-r--r--moviewidget.cpp53
-rw-r--r--moviewidget.h2
2 files changed, 50 insertions, 5 deletions
diff --git a/moviewidget.cpp b/moviewidget.cpp
index d30cee2..07cdfe7 100644
--- a/moviewidget.cpp
+++ b/moviewidget.cpp
@@ -11,6 +11,7 @@
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSettings>
+#include <QFileInfo>
#include <QApplication>
#include "moviewidget.h"
@@ -164,6 +165,9 @@ void MovieWidget::populateBySeries(){
item->setForeground(currentBrush);
item->setData(seriesQ.value(1), SeriesPartIdRole);
item->setData(seriesQ.value(5), CountRole);
+ item->setData(seriesQ.value(0), SeriesNameRole);
+ item->setData(seriesQ.value(4), SubtitleRole);
+ item->setData(seriesQ.value(2), SeriesPartRole);
item->setFont(f);
items << item;
}
@@ -210,6 +214,10 @@ void MovieWidget::populateByActors(){
QStandardItem *item = new QStandardItem;
item->setForeground(currentBrush);
item->setData(actorsQ.value(1), SeriesPartIdRole);
+ item->setData(actorsQ.value(7), CountRole);
+ item->setData(actorsQ.value(2), SeriesNameRole);
+ item->setData(actorsQ.value(6), SubtitleRole);
+ item->setData(actorsQ.value(4), SeriesPartRole);
item->setFont(f);
items << item;
}
@@ -256,6 +264,10 @@ void MovieWidget::populateByGenres(){
QStandardItem *item = new QStandardItem;
item->setForeground(currentBrush);
item->setData(genresQ.value(1), SeriesPartIdRole);
+ item->setData(genresQ.value(7), CountRole);
+ item->setData(genresQ.value(2), SeriesNameRole);
+ item->setData(genresQ.value(6), SubtitleRole);
+ item->setData(genresQ.value(4), SeriesPartRole);
item->setFont(f);
items << item;
}
@@ -278,9 +290,12 @@ void MovieWidget::topSelectionChanged(){
mBottomView->setRootIsDecorated(false);
mBottomModel->clear();
QBrush blackBrush(Qt::black);
+ QBrush redBrush(Qt::darkRed);
+ QBrush greenBrush(Qt::darkGreen);
+ QBrush currentBrush = blackBrush;
QSqlDatabase db = QSqlDatabase::database("treedb");
QSqlQuery selectFilesQ(db);
- selectFilesQ.prepare("SELECT tfilename, cmd5sum, bisize, siquality, iduration, sifileno FROM files WHERE iseriespart_id = :arg ORDER BY sifileno");
+ selectFilesQ.prepare("SELECT tfilename, cmd5sum, bisize, siquality, iduration, sifileno, idvd FROM files WHERE iseriespart_id = :arg ORDER BY sifileno");
QModelIndexList selected = mTopView->selectionModel()->selectedRows();
if(selected.isEmpty()){
return;
@@ -288,16 +303,45 @@ void MovieWidget::topSelectionChanged(){
if(selected.first().isValid()){
QFont f("courier new");
QStandardItem *root = mBottomModel->invisibleRootItem();
- mBottomModel->setHorizontalHeaderLabels(QStringList() << tr("Name") << tr("No.") << tr("Q.") << tr("Size") << tr("Dur.") << tr("MD5"));
+ mBottomModel->setHorizontalHeaderLabels(QStringList() << tr("Name") << tr("No.") << tr("Q.") << tr("Size") << tr("Dur.") << tr("MD5") << tr("Where"));
selectFilesQ.bindValue(":arg", selected.first().data(SeriesPartIdRole));
selectFilesQ.exec();
QLocale l;
while(selectFilesQ.next()){
QList<QStandardItem*> items;
- for(int i = 0; i < 6; ++i){
+ QString whereStr;
+ QString fileName = selectFilesQ.value(0).toString();
+ QString md5 = selectFilesQ.value(1).toString();
+ QString fullPath;
+ int dvdno = selectFilesQ.value(6).toInt();
+ if(dvdno == -1){
+ QString fp = Helper::createArchivePath(fileName, md5);
+ QFileInfo fi(fp);
+ if(!fi.exists()){
+ whereStr = QString("Missing: %1").arg(fp);
+ currentBrush = redBrush;
+ }else{
+ currentBrush = greenBrush;
+ fullPath = fp;
+ whereStr = fp;
+ }
+ }
+ if(dvdno > 0){
+ QString fp = Helper::createUSBPath(fileName, selected.first().data(SeriesNameRole).toString(), selected.first().data(SubtitleRole).toString(), dvdno, selected.first().data(SeriesPartRole).toInt());
+ QFileInfo fi(fp);
+ if(fi.exists()){
+ whereStr = fp;
+ currentBrush = greenBrush;
+ fullPath = fp;
+ }else{
+ whereStr = QString("DVD #%1").arg(QString::number(dvdno));
+ }
+ }
+ for(int i = 0; i < 7; ++i){
QStandardItem *item = new QStandardItem;
item->setFont(f);
- item->setForeground(blackBrush);
+ item->setForeground(currentBrush);
+ item->setData(fullPath, FullPathRole);
items << item;
}
items[0]->setText(selectFilesQ.value(0).toString());
@@ -319,6 +363,7 @@ void MovieWidget::topSelectionChanged(){
items[4]->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);
items[4]->setText(Helper::durationFromSecs(selectFilesQ.value(4).toLongLong()));
items[5]->setText(selectFilesQ.value(1).toString());
+ items[6]->setText(whereStr);
root->appendRow(items);
}
}
diff --git a/moviewidget.h b/moviewidget.h
index 2c29bfe..a3ea99e 100644
--- a/moviewidget.h
+++ b/moviewidget.h
@@ -12,7 +12,7 @@ class QStandardItemModel;
class MovieWidget : public QWidget {
Q_OBJECT
public:
- enum CustomRoles { SeriesPartIdRole = Qt::UserRole + 1, CountRole = Qt::UserRole + 2, MD5SumRole = Qt::UserRole + 3 };
+ enum CustomRoles { SeriesPartIdRole = Qt::UserRole + 1, CountRole = Qt::UserRole + 2, MD5SumRole = Qt::UserRole + 3, SeriesNameRole = Qt::UserRole + 4, SubtitleRole = Qt::UserRole + 5, SeriesPartRole = Qt::UserRole + 6, FullPathRole = Qt::UserRole + 7 };
explicit MovieWidget(QWidget *parent = nullptr);
~MovieWidget();