diff options
author | am <am@f440f766-f032-0410-8965-dc7d17de2ca0> | 2009-07-04 14:42:16 +0000 |
---|---|---|
committer | am <am@f440f766-f032-0410-8965-dc7d17de2ca0> | 2009-07-04 14:42:16 +0000 |
commit | 2b2b3b79bf8b2d9be52a6058e3af03bf314bd9db (patch) | |
tree | 108261a66ec40e88b1b04fe963379037f75e7b2b /moviemodel.cpp | |
parent | 9a43a9abb164583656e36a87b6ccf3b7f5ba48e2 (diff) | |
download | SheMov-2b2b3b79bf8b2d9be52a6058e3af03bf314bd9db.tar.gz SheMov-2b2b3b79bf8b2d9be52a6058e3af03bf314bd9db.tar.bz2 SheMov-2b2b3b79bf8b2d9be52a6058e3af03bf314bd9db.zip |
-finished model, I think
-started gui
git-svn-id: file:///var/svn/repos2/shemov/trunk@376 f440f766-f032-0410-8965-dc7d17de2ca0
Diffstat (limited to 'moviemodel.cpp')
-rw-r--r-- | moviemodel.cpp | 57 |
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(); |