From 5d0939c3c64f357b5c4fcbcc98ccb4cfa6314182 Mon Sep 17 00:00:00 2001 From: am Date: Thu, 2 Jul 2009 19:28:19 +0000 Subject: -Working on making MovieModel editable... git-svn-id: file:///var/svn/repos2/shemov/trunk@374 f440f766-f032-0410-8965-dc7d17de2ca0 --- movieitem.cpp | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 movieitem.cpp (limited to 'movieitem.cpp') 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 + +#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 &data){ + if(!data.size() == mNumRows){ + return false; + } + mRows = data; + return true; +} + +void MovieItem::setDataAt(const QVariant &data, Columns column){ + mRows[column] = data; +} + +const QList 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); + } +} + -- cgit v1.2.3-70-g09d2