diff options
author | am <am@f440f766-f032-0410-8965-dc7d17de2ca0> | 2009-07-02 19:28:19 +0000 |
---|---|---|
committer | am <am@f440f766-f032-0410-8965-dc7d17de2ca0> | 2009-07-02 19:28:19 +0000 |
commit | 5d0939c3c64f357b5c4fcbcc98ccb4cfa6314182 (patch) | |
tree | f0cab5f10efa13464f3dfb704811d2a93780fe34 /movieitem.cpp | |
parent | 9d2851b66114e15366b0a72024a3b367f671e28f (diff) | |
download | SheMov-5d0939c3c64f357b5c4fcbcc98ccb4cfa6314182.tar.gz SheMov-5d0939c3c64f357b5c4fcbcc98ccb4cfa6314182.tar.bz2 SheMov-5d0939c3c64f357b5c4fcbcc98ccb4cfa6314182.zip |
-Working on making MovieModel editable...
git-svn-id: file:///var/svn/repos2/shemov/trunk@374 f440f766-f032-0410-8965-dc7d17de2ca0
Diffstat (limited to 'movieitem.cpp')
-rw-r--r-- | movieitem.cpp | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/movieitem.cpp b/movieitem.cpp new file mode 100644 index 0000000..defca5c --- /dev/null +++ b/movieitem.cpp @@ -0,0 +1,101 @@ +/* + 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 <QSqlQuery> + +#include "movieitem.h" + +MovieItem::MovieItem(int id, QObject *parent) : QObject(parent), mNumRows(7), mId(id), mGenreId(-1) { + for(int i = 0; i < mNumRows; ++i){ + mRows << QVariant(); + } + if(mId != -1){ + populate(); + setGenreName(); + setActors(); + setSize(); + } +} + +void MovieItem::setId(int id){ + mId = id; + populate(); + setGenreName(); + setActors(); + setSize(); +} + +bool MovieItem::setData(const QList<QVariant> &data){ + if(!data.size() == mNumRows){ + return false; + } + mRows = data; + return true; +} + +void MovieItem::setDataAt(const QVariant &data, Columns column){ + mRows[column] = data; +} + +const QList<QVariant> MovieItem::data() const { + return mRows; +} + +const QVariant MovieItem::dataAt(int column) const { + if(column >= NumRows){ + return QVariant(); + } + return mRows[column]; +} + +void MovieItem::populate(){ + QSqlQuery movieData("SELECT ttitle, tfilename, cmd5sum, bisize, igenreid, iquality, idvd FROM movies WHERE imovid = :id"); + movieData.bindValue(":id", mId); + movieData.exec(); + for(int i = 0; i < mNumRows; ++i){ + if(movieData.next()){ + mRows[i] = movieData.value(i); + } + } +} + +void MovieItem::setGenreName(){ + qint32 genreId = dataAt(Genre).toInt(); + QSqlQuery genreQuery("SELECT tgenrename FROM genre WHERE igenreid = :id"); + genreQuery.bindValue(":id", genreId); + genreQuery.exec(); + while(genreQuery.next()){ + setDataAt(genreQuery.value(0), Genre); + } +} + +void MovieItem::setActors(){ + QSqlQuery actorQuery("SELECT actor.tactorname FROM actors, actormoviemap WHERE actormoviemap.iactorid = actor.iactorid AND actormoviemap.imovid = :id"); + actorQuery.bindValue(":id", mId); + actorQuery.exec(); + while(actorQuery.next()){ + mActors << actorQuery.value(0); + } +} + +void MovieItem::setSize(){ + qint64 size = dataAt(Size).toInt(); + QString sizeString(tr("%1 %2iB")); + if(size > 1024){ + double value = size / 1024.0; + setDataAt(sizeString.arg(QString::number(value, 'f', 2), "K"), Size); + } + if(size > (1024 * 1024)){ + double value = size / (1024.0 * 1024.0); + setDataAt(sizeString.arg(QString::number(value, 'f', 2), "M"), Size); + } + if(size > (1024 * 1024 * 1024)){ + double value = size / (1024.0 * 1024.0 * 1024.0); + setDataAt(sizeString.arg(QString::number(value, 'f', 2), "G"), Size); + } +} + |