summaryrefslogtreecommitdiffstats
path: root/moviemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'moviemodel.cpp')
-rw-r--r--moviemodel.cpp57
1 files changed, 56 insertions, 1 deletions
diff --git a/moviemodel.cpp b/moviemodel.cpp
index 53849cc..9e6e493 100644
--- a/moviemodel.cpp
+++ b/moviemodel.cpp
@@ -13,15 +13,30 @@
MovieModel::MovieModel(QObject *parent) : QAbstractItemModel(parent) {
mHeaders << tr("Title") << tr("Filename") << tr("MD5Sum") << tr("Size") << tr("Genre") << tr("Quality") << tr("Archived");
mInsertQuery = new QSqlQuery("SELECT insert_movie(:title, :filename, :md5, :filesize, :genre, :quality, :dvd");
+ mDeleteQuery = new QSqlQuery("DELETE FROM movies WHERE imovid = :id");
mDeleteActorsForMovie = new QSqlQuery("DELETE FROM movieactormap WHERE imovid = :id");
mInsertActorsForMovie = new QSqlQuery("INSERT INTO movieactormap VALUES(:movid, :actorid");
mDeleteCovers = new QSqlQuery("DELETE FROM covers WHERE imovid = :id");
mInsertCovers = new QSqlQuery("INSERT INTO covers VALUES(:filename, :movid, :covertype, :md5sum");
+ mColumnQueries << new QSqlQuery("UPDATE movies SET ttitle = :value WHERE imovid = :id");
+ mColumnQueries << new QSqlQuery("UPDATE movies SET tfilename = :value WHERE imovid = :id");
+ mColumnQueries << new QSqlQuery("UPDATE movies SET cmd5sum = :value WHERE imovid = :id");
+ mColumnQueries << new QSqlQuery("UPDATE movies SET bisize = :value WHERE imovid = :id");
+ mColumnQueries << new QSqlQuery("UPDATE movies SET igenreid = :value WHERE imovid = :id");
+ mColumnQueries << new QSqlQuery("UPDATE movies SET iquality = :value WHERE imovid = :id");
+ mColumnQueries << new QSqlQuery("UPDATE movies SET idvd = :value WHERE imovid = :id");
populate();
}
MovieModel::~MovieModel(){
qDeleteAll(mItems);
+ qDeleteAll(mColumnQueries);
+ delete mInsertQuery;
+ delete mDeleteQuery;
+ delete mDeleteActorsForMovie;
+ delete mInsertActorsForMovie;
+ delete mDeleteCovers;
+ delete mInsertCovers;
}
QModelIndex MovieModel::index(int row, int column, const QModelIndex &parent) const{
@@ -91,7 +106,7 @@ bool MovieModel::removeRows(int row, int count, const QModelIndex &){
return true;
}
-bool MovieModel::setDataAt(const QModelIndex &idx, const QList<QVariant> &data, const QList<QVariant> &actors, const QList<CoverItem> &covers){
+bool MovieModel::setRow(const QModelIndex &idx, const QList<QVariant> &data, const QList<QVariant> &actors, const QList<CoverItem> &covers){
if(!idx.isValid() || (data.size() > MovieItem::NumRows)){
return false;
}
@@ -125,6 +140,25 @@ bool MovieModel::setDataAt(const QModelIndex &idx, const QList<QVariant> &data,
return true;
}
+bool MovieModel::setDataAt(const QModelIndex &idx, const QVariant &data){
+ if(!idx.isValid()){
+ return false;
+ }
+ MovieItem *item = static_cast<MovieItem *>(idx.internalPointer());
+ Q_ASSERT(item != 0);
+ int id = item->id();
+ int column = idx.column();
+ QSqlQuery *query = mColumnQueries.at(column);
+ query->bindValue(":value", data);
+ query->bindValue(":id", id);
+ if(!query->exec()){
+ return false;
+ }
+ item->setDataAt(column, data);
+ emit dataChanged(idx, idx);
+ return true;
+}
+
void MovieModel::setActors(int id, const QList<QVariant> &actors){
mDeleteActorsForMovie->bindValue(":id", id);
mDeleteActorsForMovie->exec();
@@ -147,6 +181,27 @@ void MovieModel::setCovers(int id, const QList<CoverItem> &covers){
}
}
+void MovieModel::addMovie(const QList<QVariant> &data, const QList<QVariant> &actors, const QList<CoverItem> &covers){
+ int row = rowCount(QModelIndex());
+ insertRows(row, 1, QModelIndex());
+ QModelIndex i = index(row, 0, QModelIndex());
+ setRow(i, data, actors, covers);
+}
+
+void MovieModel::removeMovie(const QModelIndex &idx){
+ if(!idx.isValid()){
+ return;
+ }
+ MovieItem *item = static_cast<MovieItem*>(idx.internalPointer());
+ Q_ASSERT(item != 0);
+ int id = item->id();
+ mDeleteQuery->bindValue(":id", id);
+ if(!mDeleteQuery->exec()){
+ return;
+ }
+ removeRows(idx.row(), 1, QModelIndex());
+}
+
void MovieModel::populate(){
QSqlQuery movieQuery("SELECT imovid FROM movies");
movieQuery.exec();