summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoram <am@f440f766-f032-0410-8965-dc7d17de2ca0>2009-08-07 19:53:55 +0000
committeram <am@f440f766-f032-0410-8965-dc7d17de2ca0>2009-08-07 19:53:55 +0000
commit41802000a0bcbb44c3add7f218eceec101f52cc0 (patch)
treeeb6e64d81cf9e3ab4a17a19031d5506ca7be405f
parentcbf3c617d366892cf6af9b5fdbc5286e47ca4b42 (diff)
downloadSheMov-41802000a0bcbb44c3add7f218eceec101f52cc0.tar.gz
SheMov-41802000a0bcbb44c3add7f218eceec101f52cc0.tar.bz2
SheMov-41802000a0bcbb44c3add7f218eceec101f52cc0.zip
-fixed sorting in ArchiveProxy: had to introduce two new fields to MovieModel: partno and seriesno
-made changes to archiveviewiwdget.cpp and dialogs accordingly git-svn-id: file:///var/svn/repos2/shemov/trunk@400 f440f766-f032-0410-8965-dc7d17de2ca0
-rw-r--r--archiveeditdialog.cpp4
-rw-r--r--archivefilewidget.cpp21
-rw-r--r--archivefilewidget.h4
-rw-r--r--archiveproxy.cpp43
-rw-r--r--archiveviewwidget.cpp2
-rw-r--r--editarchiveitemdialog.cpp60
-rw-r--r--editarchiveitemdialog.h2
-rw-r--r--movieitem.cpp6
-rw-r--r--movieitem.h4
-rw-r--r--moviemodel.cpp50
-rw-r--r--moviemodel.h2
11 files changed, 142 insertions, 56 deletions
diff --git a/archiveeditdialog.cpp b/archiveeditdialog.cpp
index eae336d..925afe4 100644
--- a/archiveeditdialog.cpp
+++ b/archiveeditdialog.cpp
@@ -104,6 +104,8 @@ void ArchiveEditDialog::archive(){
QString file = mCoverEditor->movie();
QString title = mFileWidget->movieTitle().toLower();
int quality = mFileWidget->quality();
+ int seriesno = mFileWidget->seriesNo();
+ int partno = mFileWidget->partNo();
QStringList files;
files << front << back << general;
files.removeAll(QString());
@@ -128,7 +130,7 @@ void ArchiveEditDialog::archive(){
}
QList<QVariant> data;
QFileInfo movie(file);
- data << title << movie.fileName() << md5.value(file) << movie.size() << genre << quality << -1;
+ data << title << movie.fileName() << md5.value(file) << movie.size() << genre << quality << -1 << seriesno << partno;
QList<CoverItem> covers;
if(!front.isEmpty()){
covers << coverItem(front, "front", md5.value(front));
diff --git a/archivefilewidget.cpp b/archivefilewidget.cpp
index bc68382..59447e1 100644
--- a/archivefilewidget.cpp
+++ b/archivefilewidget.cpp
@@ -83,6 +83,27 @@ ArchiveFileWidget::ArchiveFileWidget(MovieModel *model, QWidget *parent, Qt::Win
qualityTitleLayout->addWidget(mTitle);
mainLayout->addLayout(qualityTitleLayout);
+ //series number and part number
+ QHBoxLayout *numbersLayout = new QHBoxLayout;
+ QLabel *l6 = new QLabel(tr("Select &series number"));
+ mSeriesNo = new QSpinBox;
+ mSeriesNo->setMinimum(-1);
+ mSeriesNo->setMaximum(1000);
+ mSeriesNo->setValue(-1);
+ l6->setBuddy(mSeriesNo);
+ QLabel *l7 = new QLabel(tr("Select &part number"));
+ mPartNo = new QSpinBox;
+ mPartNo->setMinimum(-1);
+ mPartNo->setMaximum(100);
+ mPartNo->setValue(-1);
+ l7->setBuddy(mPartNo);
+ numbersLayout->addWidget(l6);
+ numbersLayout->addWidget(mSeriesNo);
+ numbersLayout->addWidget(l7);
+ numbersLayout->addWidget(mPartNo);
+ numbersLayout->addStretch();
+ mainLayout->addLayout(numbersLayout);
+
setLayout(mainLayout);
setMinimumWidth(600);
}
diff --git a/archivefilewidget.h b/archivefilewidget.h
index 5dbf339..5d01556 100644
--- a/archivefilewidget.h
+++ b/archivefilewidget.h
@@ -33,6 +33,8 @@ class ArchiveFileWidget : public QWidget {
const QList<int> actorIds() const;
int genreId() const;
int quality() const { return mQuality->value(); };
+ int seriesNo() const { return mSeriesNo->value(); };
+ int partNo() const { return mPartNo->value(); };
const QString movieTitle() const { return mTitle->text(); };
const QHash<QString, QString> md5Sums() const { return mMd5Sums; };
@@ -59,6 +61,8 @@ class ArchiveFileWidget : public QWidget {
QPushButton *mAddActor;
QPushButton *mRemoveActor;
QSpinBox *mQuality;
+ QSpinBox *mSeriesNo;
+ QSpinBox *mPartNo;
QLineEdit *mTitle;
QStringList mFileList;
QHash<QString, QString> mMd5Sums;
diff --git a/archiveproxy.cpp b/archiveproxy.cpp
index 0249459..90374c6 100644
--- a/archiveproxy.cpp
+++ b/archiveproxy.cpp
@@ -9,8 +9,6 @@
#include <QRegExp>
#include <QList>
-#include <QDebug>
-
#include "archiveproxy.h"
#include "moviemodel.h"
@@ -74,35 +72,20 @@ bool ArchiveProxy::lessThan(const QModelIndex &left, const QModelIndex &right) c
if(left.column() > 0){
return QSortFilterProxyModel::lessThan(left, right);
}
- QString l = left.data().toString();
- QString r = right.data().toString();
- QRegExp nos("(\\d+)");
- QList<int> lnos, rnos;
- int pos = 0;
- bool dummy;
- while((pos = nos.indexIn(l, pos)) != -1){
- lnos << nos.cap(1).toInt(&dummy);
- pos += nos.matchedLength();
- }
- pos = 0;
- while((pos = nos.indexIn(r, pos)) != -1){
- rnos << nos.cap(1).toInt(&dummy);
- pos += nos.matchedLength();
- }
- QRegExp baseRe("(.*)\\s+\\d+");
- baseRe.indexIn(l);
- QString lbase = baseRe.cap(1);
- baseRe.indexIn(r);
- QString rbase = baseRe.cap(1);
- if((lnos.size() == 1) && (rnos.size() == 1)){
- if(lbase == rbase){
- return (lnos.at(0) < rnos.at(0));
+ QString lbase = left.data(MovieModel::TitleBaseRole).toString();
+ QString rbase = right.data(MovieModel::TitleBaseRole).toString();
+ if(lbase == rbase){
+ int lseriesno = left.data(MovieModel::SeriesNoRole).toInt();
+ int rseriesno = right.data(MovieModel::SeriesNoRole).toInt();
+ if(lseriesno == rseriesno){
+ int lpartno = left.data(MovieModel::PartNoRole).toInt();
+ int rpartno = right.data(MovieModel::PartNoRole).toInt();
+ return (lpartno < rpartno);
+ }else{
+ return (lseriesno < rseriesno);
}
- }
- if((lnos.size() == 2) && (rnos.size() == 2)){
- if(lbase == rbase){
- return (lnos.at(1) < rnos.at(1));
- }
+ }else{
+ return (lbase < rbase);
}
return QSortFilterProxyModel::lessThan(left, right);
}
diff --git a/archiveviewwidget.cpp b/archiveviewwidget.cpp
index 37eca17..0e6686e 100644
--- a/archiveviewwidget.cpp
+++ b/archiveviewwidget.cpp
@@ -73,6 +73,8 @@ ArchiveViewWidget::ArchiveViewWidget(MovieModel *model, ListModel *genre, ListMo
mFileView->setSelectionBehavior(QAbstractItemView::SelectRows);
mFileView->setSelectionMode(QAbstractItemView::ExtendedSelection);
mFileView->setColumnHidden(MovieItem::Md5Sum, true);
+ mFileView->setColumnHidden(MovieItem::SeriesNo, true);
+ mFileView->setColumnHidden(MovieItem::PartNo, true);
connect(mClearFilter, SIGNAL(clicked()), mProxy, SLOT(clearFilter()));
connect(mMovieModel, SIGNAL(moviesChanged()), mProxy, SLOT(invalidate()));
diff --git a/editarchiveitemdialog.cpp b/editarchiveitemdialog.cpp
index 998ff97..f24ad5f 100644
--- a/editarchiveitemdialog.cpp
+++ b/editarchiveitemdialog.cpp
@@ -71,7 +71,7 @@ EditArchiveItemDialog::EditArchiveItemDialog(ListModel *genre, ListModel *actors
w1Layout->addLayout(genreLayout);
//quality + dvd
- QLabel *l4 = new QLabel(tr("Select quality"));
+ QLabel *l4 = new QLabel(tr("Set quality"));
mQuality = new QSpinBox;
mQuality->setMinimum(0);
mQuality->setMaximum(10);
@@ -79,19 +79,31 @@ EditArchiveItemDialog::EditArchiveItemDialog(ListModel *genre, ListModel *actors
qualityDvdLayout->addWidget(l4);
qualityDvdLayout->addWidget(mQuality);
qualityDvdLayout->addStretch();
- QLabel*l5 = new QLabel(tr("Select DVD No."));
+ QLabel*l5 = new QLabel(tr("Set DVD No."));
mDvd = new QSpinBox;
mDvd->setMinimum(-1);
mDvd->setMaximum(1000);
qualityDvdLayout->addWidget(l5);
qualityDvdLayout->addWidget(mDvd);
w1Layout->addLayout(qualityDvdLayout);
+ QLabel *l6 = new QLabel(tr("Set series No."));
+ mSeriesNo = new QSpinBox;
+ mSeriesNo->setMinimum(-1);
+ mSeriesNo->setMaximum(1000);
+ qualityDvdLayout->addWidget(l6);
+ qualityDvdLayout->addWidget(mSeriesNo);
+ QLabel *l7 = new QLabel(tr("Set part No."));
+ mPartNo = new QSpinBox;
+ mPartNo->setMinimum(-1);
+ mPartNo->setMaximum(100);
+ qualityDvdLayout->addWidget(l7);
+ qualityDvdLayout->addWidget(mPartNo);
//movie title
- QLabel *l6 = new QLabel(tr("Set movie title"));
+ QLabel *l8 = new QLabel(tr("Set movie title"));
mTitle = new QLineEdit;
QHBoxLayout *titleLayout = new QHBoxLayout;
- titleLayout->addWidget(l6);
+ titleLayout->addWidget(l8);
titleLayout->addWidget(mTitle);
w1Layout->addLayout(titleLayout);
w1->setLayout(w1Layout);
@@ -159,31 +171,39 @@ void EditArchiveItemDialog::setMovieInfo(const QModelIndex &movie){
QString html("<html><body style=\"color:#CD0003\"><ul>");
QModelIndex idx = mMovieModel->index(movie.row(), MovieItem::Title, QModelIndex());
html.append(QString(tr("<li>Title: %1</li>")).arg(idx.data().toString()));
- mTitle->setText(idx.data().toString());
- idx = mMovieModel->index(movie.row(), MovieItem::Filename, QModelIndex());
- html.append(QString(tr("<li>Filename: %1</li>")).arg(idx.data().toString()));
- idx = mMovieModel->index(movie.row(), MovieItem::Md5Sum, QModelIndex());
- html.append(QString(tr("<li>Md5-Sum: %1</li>")).arg(idx.data().toString()));
- idx = mMovieModel->index(movie.row(), MovieItem::Size, QModelIndex());
+ mTitle->setText(idx.data(MovieModel::TitleBaseRole).toString());
+ html.append(QString(tr("<li>Filename: %1</li>")).arg(idx.data(MovieModel::FilenameRole).toString()));
+ html.append(QString(tr("<li>Md5-Sum: %1</li>")).arg(idx.data(MovieModel::Md5Role).toString()));
QLocale l;
- html.append(QString(tr("<li>Size: %1</li>")).arg(l.toString(idx.data().toLongLong())));
- idx = mMovieModel->index(movie.row(), MovieItem::Genre, QModelIndex());
- html.append(QString(tr("<li>Genre: %1</li>")).arg(idx.data().toString()));
+ html.append(QString(tr("<li>Size: %1</li>")).arg(l.toString(idx.data(MovieModel::SizeRole).toLongLong())));
+ html.append(QString(tr("<li>Genre: %1</li>")).arg(idx.data(MovieModel::GenreRole).toString()));
int genreIndex = mGenre->findText(idx.data().toString());
if(genreIndex != -1){
mGenre->setCurrentIndex(genreIndex);
}
- idx = mMovieModel->index(movie.row(), MovieItem::Quality, QModelIndex());
- html.append(QString(tr("<li>Quality: %1</li>")).arg(l.toString(idx.data().toInt())));
- mQuality->setValue(idx.data().toInt());
- idx = mMovieModel->index(movie.row(), MovieItem::Dvd, QModelIndex());
- int dvd = idx.data().toInt();
+ html.append(QString(tr("<li>Quality: %1</li>")).arg(l.toString(idx.data(MovieModel::QualityRole).toInt())));
+ mQuality->setValue(idx.data(MovieModel::QualityRole).toInt());
+ int dvd = idx.data(MovieModel::DvdRole).toInt();
if(dvd != -1){
html.append(QString(tr("<li>On DVD %1</li>")).arg(l.toString(dvd)));
}else{
html.append(QString(tr("<li>Not on DVD</li>")));
}
mDvd->setValue(dvd);
+ int seriesno = idx.data(MovieModel::SeriesNoRole).toInt();
+ if(seriesno == -1){
+ html.append(QString(tr("<li>First or signle part</li>")));
+ }else{
+ html.append(QString(tr("<li>Part %1 in series</li>")).arg(QString::number(seriesno)));
+ }
+ mSeriesNo->setValue(seriesno);
+ int partno = idx.data(MovieModel::PartNoRole).toInt();
+ if(partno == -1){
+ html.append(QString(tr("<li>Multipart: no</li>")));
+ }else{
+ html.append(QString(tr("<li>Multipart: part %1")).arg(QString::number(partno)));
+ }
+ mPartNo->setValue(partno);
html.append("</ul></body></html>");
mMovieInfo->setHtml(html);
}
@@ -231,6 +251,10 @@ void EditArchiveItemDialog::updateMovie(){
mMovieModel->setDataAt(dvdIdx, mDvd->value());
QModelIndex qualityIdx = mMovieModel->index(mMovieId, MovieItem::Quality);
mMovieModel->setDataAt(qualityIdx, mQuality->value());
+ QModelIndex seriesnoIdx = mMovieModel->index(mMovieId, MovieItem::SeriesNo);
+ mMovieModel->setDataAt(seriesnoIdx, mSeriesNo->value());
+ QModelIndex partnoIdx = mMovieModel->index(mMovieId, MovieItem::PartNo);
+ mMovieModel->setDataAt(partnoIdx, mPartNo->value());
QString title = mTitle->text().trimmed().toLower();
QModelIndex titleIdx = mMovieModel->index(mMovieId, MovieItem::Title);
if(!title.isEmpty()){
diff --git a/editarchiveitemdialog.h b/editarchiveitemdialog.h
index 4dd1cdc..e4e041c 100644
--- a/editarchiveitemdialog.h
+++ b/editarchiveitemdialog.h
@@ -45,6 +45,8 @@ class EditArchiveItemDialog : public QDialog {
QTextEdit *mMovieInfo;
QTextEdit *mActorsDisplay;
QSpinBox *mQuality;
+ QSpinBox *mSeriesNo;
+ QSpinBox *mPartNo;
QSpinBox *mDvd;
QPushButton *mUpdate;
QPushButton *mClose;
diff --git a/movieitem.cpp b/movieitem.cpp
index 4b05900..46519db 100644
--- a/movieitem.cpp
+++ b/movieitem.cpp
@@ -7,11 +7,13 @@
#include <QSqlQuery>
+#include <QDebug>
+
#include "movieitem.h"
#include "coveritem.h"
#include "helper.h"
-MovieItem::MovieItem(int id, QObject *parent) : QObject(parent), mNumRows(7), mId(id), mGenreId(-1) {
+MovieItem::MovieItem(int id, QObject *parent) : QObject(parent), mNumRows(9), mId(id), mGenreId(-1) {
for(int i = 0; i < mNumRows; ++i){
mRows << QVariant();
}
@@ -61,7 +63,7 @@ const QVariant MovieItem::dataAt(int column) const {
void MovieItem::populate(){
QSqlQuery movieData;
- movieData.prepare("SELECT ttitle, tfilename, cmd5sum, bisize, igenreid, iquality, idvd FROM movies WHERE imovid = :id");
+ movieData.prepare("SELECT ttitle, tfilename, cmd5sum, bisize, igenreid, iquality, idvd, iseriesno, ipartno FROM movies WHERE imovid = :id");
movieData.bindValue(":id", mId);
movieData.exec();
if(movieData.next()){
diff --git a/movieitem.h b/movieitem.h
index 70bfc88..a20cf52 100644
--- a/movieitem.h
+++ b/movieitem.h
@@ -21,8 +21,8 @@ class MovieItem : public QObject {
Q_OBJECT
Q_ENUMS(Columns)
public:
- enum Columns { Title = 0, Filename = 1, Md5Sum = 2, Size = 3, Genre = 4, Quality = 5, Dvd = 6 };
- enum { NumRows = 7 };
+ enum Columns { Title = 0, Filename = 1, Md5Sum = 2, Size = 3, Genre = 4, Quality = 5, Dvd = 6, SeriesNo = 7, PartNo = 8 };
+ enum { NumRows = 9 };
MovieItem(int id = -1, QObject *parent = 0);
~MovieItem() {};
int id() const { return mId; };
diff --git a/moviemodel.cpp b/moviemodel.cpp
index 28399de..191b987 100644
--- a/moviemodel.cpp
+++ b/moviemodel.cpp
@@ -15,7 +15,7 @@
MovieModel::MovieModel(QObject *parent) : QAbstractItemModel(parent) {
mHeaders << tr("Title") << tr("Filename") << tr("MD5Sum") << tr("Size") << tr("Genre") << tr("Quality") << tr("Archived");
mInsertQuery = new QSqlQuery;
- mInsertQuery->prepare("SELECT insert_movie(:title, :filename, :md5, :filesize, :genre, :quality, :dvd)");
+ mInsertQuery->prepare("SELECT insert_movie(:title, :filename, :md5, :filesize, :genre, :quality, :dvd, :seriesno, :partno)");
mDeleteQuery = new QSqlQuery;
mDeleteQuery->prepare("DELETE FROM movies WHERE imovid = :id");
mDeleteActorsForMovie = new QSqlQuery;
@@ -47,6 +47,12 @@ MovieModel::MovieModel(QObject *parent) : QAbstractItemModel(parent) {
QSqlQuery *c7 = new QSqlQuery;
c7->prepare("UPDATE movies SET idvd = :value WHERE imovid = :id");
mColumnQueries << c7;
+ QSqlQuery *c8 = new QSqlQuery;
+ c8->prepare("UPDATE movies SET iseriesno = :value WHERE imovid = :id");
+ mColumnQueries << c8;
+ QSqlQuery *c9 = new QSqlQuery;
+ c9->prepare("UPDATE movies set ipartno = :value WHERE imovid = :id");
+ mColumnQueries << c9;
populate();
}
@@ -100,7 +106,20 @@ QVariant MovieModel::data(const QModelIndex &index, int role) const{
MovieItem *item = static_cast<MovieItem*>(index.internalPointer());
Q_ASSERT(item != 0);
if(role == Qt::DisplayRole){
- return item->dataAt(index.column());
+ if(index.column() == 0){
+ QString retval = item->dataAt(MovieItem::Title).toString();
+ int seriesno = item->dataAt(MovieItem::SeriesNo).toInt();
+ int partno = item->dataAt(MovieItem::PartNo).toInt();
+ if(seriesno != -1){
+ retval.append(QString(" %1").arg(QString::number(seriesno)));
+ }
+ if(partno != -1){
+ retval.append(QString(" (part %1)").arg(QString::number(partno)));
+ }
+ return retval;
+ }else{
+ return item->dataAt(index.column());
+ }
}
if(role == ActorsRole){
return item->actors();
@@ -114,6 +133,33 @@ QVariant MovieModel::data(const QModelIndex &index, int role) const{
if(role == IdRole){
return item->id();
}
+ if(role == TitleBaseRole){
+ return item->dataAt(MovieItem::Title);
+ }
+ if(role == SeriesNoRole){
+ return item->dataAt(MovieItem::SeriesNo);
+ }
+ if(role == PartNoRole){
+ return item->dataAt(MovieItem::PartNo);
+ }
+ if(role == FilenameRole){
+ return item->dataAt(MovieItem::Filename);
+ }
+ if(role == Md5Role){
+ return item->dataAt(MovieItem::Md5Sum);
+ }
+ if(role == SizeRole){
+ return item->dataAt(MovieItem::Size);
+ }
+ if(role == GenreRole){
+ return item->dataAt(MovieItem::Genre);
+ }
+ if(role == QualityRole){
+ return item->dataAt(MovieItem::Quality);
+ }
+ if(role == DvdRole){
+ return item->dataAt(MovieItem::Dvd);
+ }
if((role == Qt::DecorationRole) && (index.column() == 0)){
return QIcon(":/dildo.png");
}
diff --git a/moviemodel.h b/moviemodel.h
index c8e6dd1..648a8f9 100644
--- a/moviemodel.h
+++ b/moviemodel.h
@@ -20,7 +20,7 @@ class MovieModel : public QAbstractItemModel {
Q_OBJECT
Q_ENUMS(CustomRoles)
public:
- enum CustomRoles { Md5Role = Qt::UserRole + 1, ActorsRole = Qt::UserRole + 2, ActorsMap = Qt::UserRole + 3, CoverRole = Qt::UserRole + 4, IdRole = Qt::UserRole + 5 };
+ enum CustomRoles { Md5Role = Qt::UserRole + 1, ActorsRole = Qt::UserRole + 2, ActorsMap = Qt::UserRole + 3, CoverRole = Qt::UserRole + 4, IdRole = Qt::UserRole + 5, TitleBaseRole = Qt::UserRole + 6, SeriesNoRole = Qt::UserRole + 7, PartNoRole = Qt::UserRole + 8, FilenameRole = Qt::UserRole + 9, SizeRole = Qt::UserRole + 10, GenreRole = Qt::UserRole + 11, QualityRole = Qt::UserRole + 12, DvdRole = Qt::UserRole + 13 };
MovieModel(QObject *parent = 0);
~MovieModel();
QModelIndex index(int row, int column, const QModelIndex &parent) const;