summaryrefslogtreecommitdiffstats
path: root/movieitem.cpp
diff options
context:
space:
mode:
authoram <am@f440f766-f032-0410-8965-dc7d17de2ca0>2009-07-02 19:28:19 +0000
committeram <am@f440f766-f032-0410-8965-dc7d17de2ca0>2009-07-02 19:28:19 +0000
commit5d0939c3c64f357b5c4fcbcc98ccb4cfa6314182 (patch)
treef0cab5f10efa13464f3dfb704811d2a93780fe34 /movieitem.cpp
parent9d2851b66114e15366b0a72024a3b367f671e28f (diff)
downloadSheMov-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.cpp101
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);
+ }
+}
+