diff options
author | Arno <am@disconnect.de> | 2010-07-31 16:26:10 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2010-07-31 16:26:10 +0200 |
commit | 8eba6e7f033617f3e7ea3bd9913105df0de74ae2 (patch) | |
tree | 8d4b93a4a686e6e57526b77033bb985fa9545036 /moviepropertiesdialog.cpp | |
parent | 6d3b28f9b12964b161b5a7ac0038435cfdd6e27b (diff) | |
download | SheMov-8eba6e7f033617f3e7ea3bd9913105df0de74ae2.tar.gz SheMov-8eba6e7f033617f3e7ea3bd9913105df0de74ae2.tar.bz2 SheMov-8eba6e7f033617f3e7ea3bd9913105df0de74ae2.zip |
Implement FilePropertiesDialog
Implemented a dialog for file properties. When the mime type says it's a
video, fork ffprobe to read the properties of all streams and show them
in a QTreeView powered by a SmTreeModel. If the mime type is image, use
QImage to read some properties and show them in the same dialog.
This commit introduces the new class FilePropertiesDialog. I also had to
implement a copy constructor for SmTreeItem. It obsoletes classes
ActorWidget, ActorModel and MoviePropertiesDialog.
Diffstat (limited to 'moviepropertiesdialog.cpp')
-rw-r--r-- | moviepropertiesdialog.cpp | 214 |
1 files changed, 0 insertions, 214 deletions
diff --git a/moviepropertiesdialog.cpp b/moviepropertiesdialog.cpp deleted file mode 100644 index 843c447..0000000 --- a/moviepropertiesdialog.cpp +++ /dev/null @@ -1,214 +0,0 @@ -/* - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version - 2 of the License, or (at your option) any later version. -*/ - -#include <QHBoxLayout> -#include <QVBoxLayout> -#include <QGraphicsView> -#include <QGraphicsScene> -#include <QPushButton> -#include <QLabel> -#include <QSqlQuery> -#include <QFileInfo> -#include <QFont> -#include <QApplication> -#include <QGridLayout> -#include <QLocale> -#include <QGraphicsTextItem> -#include <QGraphicsPixmapItem> -#include <QPixmap> -#include <QTreeView> - -#include "moviepropertiesdialog.h" -#include "actormodel.h" -#include "helper.h" - -MoviePropertiesDialog::MoviePropertiesDialog(int movid, QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f), mId(movid), mIndex(-1){ - //gather data - covers(); - QSqlQuery q1; - q1.prepare("SELECT ttitle, tfilename, cmd5sum, bisize, genre.tgenrename, iquality, idvd FROM movies, genre WHERE movies.igenreid = genre.igenreid AND movies.imovid = :id"); - q1.bindValue(":id", mId); - q1.exec(); - QString title, filename, md5, genre; - quint64 size(0); - qint32 quality, dvd; - quality = dvd = 0; - q1.exec(); - while(q1.next()){ - title = q1.value(0).toString(); - filename = q1.value(1).toString(); - md5 = q1.value(2).toString(); - genre = q1.value(4).toString(); - size = q1.value(3).toLongLong(); - quality = q1.value(5).toInt(); - dvd = q1.value(6).toInt(); - } - //QStringList actors; - mActorModel = new ActorModel; - QSqlQuery q2; - q2.prepare("SELECT tactorname FROM actor, movieactormap WHERE movieactormap.iactorid = actor.iactorid AND movieactormap.imovid = :id"); - q2.bindValue(":id", mId); - q2.exec(); - while(q2.next()){ - //actors << q2.value(0).toString(); - mActorModel->addItem(q2.value(0)); - } - //layout - QVBoxLayout *mainLayout = new QVBoxLayout; - mView = new QGraphicsView; - mScene = new QGraphicsScene(this); - mView->setScene(mScene); - mainLayout->addWidget(mView); - - //cover buttons - QHBoxLayout *buttonPicLayout = new QHBoxLayout; - mPrev = new QPushButton(tr("Previous")); - connect(mPrev, SIGNAL(clicked()), this, SLOT(previousCover())); - mNext = new QPushButton(tr("Next")); - connect(mNext, SIGNAL(clicked()), this, SLOT(nextCover())); - buttonPicLayout->addWidget(mPrev); - buttonPicLayout->addStretch(); - buttonPicLayout->addWidget(mNext); - mainLayout->addLayout(buttonPicLayout); - - //actors - mActors = new QTreeView; - mActors->setRootIsDecorated(false); - mActors->setHeaderHidden(true); - mActors->setModel(mActorModel); - - //properties - QGridLayout *propertiesGrid = new QGridLayout; - QFont font = qApp->font(); - font.setWeight(QFont::Bold); - QLabel *l1 = new QLabel("Genre"); - l1->setFont(font); - QLabel *l2 = new QLabel(genre); - propertiesGrid->addWidget(l1, 0, 0); - propertiesGrid->addWidget(l2, 0, 1); - QLabel *l3 = new QLabel(tr("Title")); - l3->setFont(font); - QLabel *l4 = new QLabel(title); - propertiesGrid->addWidget(l3, 1, 0); - propertiesGrid->addWidget(l4, 1, 1); - QLabel *l5 = new QLabel(tr("Filename")); - l5->setFont(font); - QLabel *l6 = new QLabel(filename); - propertiesGrid->addWidget(l5, 2, 0); - propertiesGrid->addWidget(l6, 2, 1); - QLabel *l7 = new QLabel(tr("MD5")); - l7->setFont(font); - QLabel *l8 = new QLabel(md5); - propertiesGrid->addWidget(l7, 3, 0); - propertiesGrid->addWidget(l8, 3, 1); - QLabel *l9 = new QLabel(tr("Size")); - l9->setFont(font); - QLocale l; - QLabel *l10 = new QLabel(l.toString(size)); - propertiesGrid->addWidget(l9, 4, 0); - propertiesGrid->addWidget(l10, 4, 1); - QLabel *l11 = new QLabel(tr("Quality")); - l11->setFont(font); - QLabel *l12 = new QLabel(QString::number(quality)); - propertiesGrid->addWidget(l11, 5, 0); - propertiesGrid->addWidget(l12, 5, 1); - QLabel *l13 = new QLabel(tr("Archived")); - l13->setFont(font); - QLabel *l14 = new QLabel; - if(dvd < 0){ - l14->setText(tr("No - local")); - }else{ - QString s = QString(tr("On DVD #%1")).arg(QString::number(dvd)); - l14->setText(s); - } - propertiesGrid->addWidget(l13, 6, 0); - propertiesGrid->addWidget(l14, 6, 1); - QHBoxLayout *actorsPropertiesLayout = new QHBoxLayout; - actorsPropertiesLayout->addWidget(mActors); - actorsPropertiesLayout->addLayout(propertiesGrid); - mainLayout->addLayout(actorsPropertiesLayout); - - //close button - mClose = new QPushButton(tr("Close")); - connect(mClose, SIGNAL(clicked()), this, SLOT(reject())); - QHBoxLayout *closeButtonLayout = new QHBoxLayout; - closeButtonLayout->addStretch(); - closeButtonLayout->addWidget(mClose); - closeButtonLayout->addStretch(); - mainLayout->addLayout(closeButtonLayout); - - setLayout(mainLayout); - QString winTitle = QString("%1 - Properties of %2").arg(qApp->applicationName()).arg(title); - setWindowTitle(winTitle); - - if(!mCovers.isEmpty()){ - mIndex = 0; - } - setCover(mIndex); - -} - -MoviePropertiesDialog::~MoviePropertiesDialog() { - delete mActorModel; -} - -void MoviePropertiesDialog::setCover(int index){ - mScene->clear(); - if((index < 0) || (index >= mCovers.size())){ - QGraphicsTextItem *item = new QGraphicsTextItem(tr("No covers")); - QFont font = QFont("Courier new", 30 , QFont::Bold); - item->setFont(font); - item->setDefaultTextColor(Qt::red); - item->rotate(45); - mScene->addItem(item); - item->setPos(0, 0); - mNext->setEnabled(false); - mPrev->setEnabled(false); - }else{ - QPixmap pm(mCovers.at(index)); - QGraphicsPixmapItem *item = new QGraphicsPixmapItem(pm); - mScene->addItem(item); - item->setPos(0, 0); - } -} - -void MoviePropertiesDialog::nextCover(){ - if(mIndex < 0){ - return; - } - ++mIndex; - if(mIndex >= mCovers.size()){ - mIndex = 0; - } - setCover(mIndex); -} - -void MoviePropertiesDialog::previousCover(){ - if(mIndex < 0){ - return; - } - --mIndex; - if(mIndex < 0){ - mIndex = mCovers.size() - 1; - } - setCover(mIndex); -} - -void MoviePropertiesDialog::covers(){ - QSqlQuery q; - q.prepare("SELECT tfilename, cmd5sum FROM covers WHERE imovid = :id"); - q.bindValue(":id", mId); - q.exec(); - while(q.next()){ - QString path = Helper::createArchivePath(q.value(0).toString(), q.value(1).toString()); - QFileInfo fi(path); - if(fi.exists()){ - mCovers << path; - } - } -} - |