diff options
author | am <am@f440f766-f032-0410-8965-dc7d17de2ca0> | 2009-07-22 18:44:02 +0000 |
---|---|---|
committer | am <am@f440f766-f032-0410-8965-dc7d17de2ca0> | 2009-07-22 18:44:02 +0000 |
commit | 0e3e202c90e3ccb80310087409936c00189f0cea (patch) | |
tree | a4a38c32e761f024e2dfad6a59097cff15472b9e /archiveviewwidget.cpp | |
parent | 84ed109c159dcbd0c9395717d54599e902060b26 (diff) | |
download | SheMov-0e3e202c90e3ccb80310087409936c00189f0cea.tar.gz SheMov-0e3e202c90e3ccb80310087409936c00189f0cea.tar.bz2 SheMov-0e3e202c90e3ccb80310087409936c00189f0cea.zip |
-Finished CoverArchiveEditor (finally, don't like that piece of code, too complicated)
-It's now possible to manually add a movie w/o a file
-Some usability fixes
git-svn-id: file:///var/svn/repos2/shemov/trunk@394 f440f766-f032-0410-8965-dc7d17de2ca0
Diffstat (limited to 'archiveviewwidget.cpp')
-rw-r--r-- | archiveviewwidget.cpp | 69 |
1 files changed, 67 insertions, 2 deletions
diff --git a/archiveviewwidget.cpp b/archiveviewwidget.cpp index 51a9c91..1353dbb 100644 --- a/archiveviewwidget.cpp +++ b/archiveviewwidget.cpp @@ -12,7 +12,10 @@ #include <QHBoxLayout> #include <QVBoxLayout> #include <QPushButton> +#include <QMessageBox> #include <QApplication> +#include <QSettings> +#include <QProcess> #include "archiveviewwidget.h" #include "archivefileview.h" @@ -22,6 +25,9 @@ #include "editarchiveitemdialog.h" #include "sizedelegate.h" #include "archiveddelegate.h" +#include "coverarchiveeditor.h" +#include "textenterdialog.h" +#include "helper.h" ArchiveViewWidget::ArchiveViewWidget(MovieModel *model, ListModel *genre, ListModel *actors, QWidget *parent) : QWidget(parent), mMovieModel(model), mGenreModel(genre), mActorsModel(actors){ //filter bar @@ -30,13 +36,13 @@ ArchiveViewWidget::ArchiveViewWidget(MovieModel *model, ListModel *genre, ListMo mGenre = new QComboBox; l1->setBuddy(mGenre); mGenre->setModel(mGenreModel); - connect(mGenre, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(setGenreFilter(const QString &))); + connect(mGenre, SIGNAL(activated(const QString &)), this, SLOT(setGenreFilter(const QString &))); filterLayout->addWidget(l1); filterLayout->addWidget(mGenre); QLabel *l2 = new QLabel(tr("Filter by &actor")); mActors = new QComboBox; mActors->setModel(mActorsModel); - connect(mActors, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(setActorFilter(const QString &))); + connect(mActors, SIGNAL(activated(const QString &)), this, SLOT(setActorFilter(const QString &))); l2->setBuddy(mActors); filterLayout->addWidget(l2); filterLayout->addWidget(mActors); @@ -61,6 +67,7 @@ ArchiveViewWidget::ArchiveViewWidget(MovieModel *model, ListModel *genre, ListMo mFileView->setSortingEnabled(true); mFileView->setItemsExpandable(false); mFileView->setRootIsDecorated(false); + mFileView->setColumnHidden(MovieItem::Md5Sum, true); connect(mClearFilter, SIGNAL(clicked()), mProxy, SLOT(clearFilter())); //main layout @@ -69,6 +76,7 @@ ArchiveViewWidget::ArchiveViewWidget(MovieModel *model, ListModel *genre, ListMo mainLayout->addWidget(mFileView); connect(mFileView->selectionModel(), SIGNAL(currentRowChanged(const QModelIndex &, const QModelIndex)), this, SLOT(rowChanged(const QModelIndex &, const QModelIndex &))); + connect(mFileView, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(showMovie(const QModelIndex &))); setLayout(mainLayout); } @@ -85,6 +93,63 @@ void ArchiveViewWidget::editFile(){ } } +void ArchiveViewWidget::editCovers(){ + QModelIndexList selected = mFileView->selectionModel()->selectedRows(); + if(!selected.isEmpty()){ + QModelIndex idx = selected.at(0); + QModelIndex real = mProxy->mapToSource(idx); + mCoverEditDialog->setMovie(real); + mCoverEditDialog->show(); + mCoverEditDialog->raise(); + mCoverEditDialog->activateWindow(); + } +} + +void ArchiveViewWidget::addMovie(){ + TextEnterDialog dlg(tr("Enter movie title"), this); + dlg.exec(); + if(dlg.result() == QDialog::Accepted){ + QString title = dlg.text().toLower().trimmed(); + QModelIndex idx = mMovieModel->index(title); + if(idx != QModelIndex()){ + QString msg = QString(tr("Already have an entry with title %1")).arg(title); + QMessageBox::critical(this, tr("Error"), msg); + return; + } + QList<QVariant> movieData; + movieData << title; + for(int i = 1; i < MovieItem::NumRows; ++i){ + movieData << QVariant(); + } + QString md5(32, '0'); + movieData[MovieItem::Md5Sum] = md5; + movieData[MovieItem::Genre] = mGenreModel->defaultId(); + movieData[MovieItem::Dvd] = -2; + movieData[MovieItem::Filename] = tr("(DVD)"); + movieData[MovieItem::Size] = Q_INT64_C(4707319808); + movieData[MovieItem::Quality] = 0; + mMovieModel->addMovie(movieData, QList<QVariant>(), QList<CoverItem>()); + } +} + +void ArchiveViewWidget::showMovie(const QModelIndex &movie){ + QModelIndex real = mProxy->mapToSource(movie); + QModelIndex dvd = mMovieModel->index(real.row(), MovieItem::Dvd, QModelIndex()); + int dvdno = dvd.data().toInt(); + if(dvdno != -1){ + emit statusbarMessage(tr("Movie is not present on filesystem")); + return; + } + QModelIndex fnIdx = mMovieModel->index(real.row(), MovieItem::Filename, QModelIndex()); + QModelIndex md5Idx = mMovieModel->index(real.row(), MovieItem::Md5Sum, QModelIndex()); + QString path = Helper::createArchivePath(fnIdx.data().toString(), md5Idx.data().toString()); + QSettings s; + QString playerPath = s.value("paths/movieviewer").toString(); + QStringList args = s.value("paths/movieviewerargs").toStringList(); + args << path; + QProcess::startDetached(playerPath, args); +} + void ArchiveViewWidget::setFilter(){ QString filter = mName->text().toLower(); if(filter.isEmpty()){ |