/* 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(int column, const QVariant &data){ 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(Genre, genreQuery.value(0)); } } 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(Size, sizeString.arg(QString::number(value, 'f', 2), "K")); } if(size > (1024 * 1024)){ double value = size / (1024.0 * 1024.0); setDataAt(Size, sizeString.arg(QString::number(value, 'f', 2), "M")); } if(size > (1024 * 1024 * 1024)){ double value = size / (1024.0 * 1024.0 * 1024.0); setDataAt(Size, sizeString.arg(QString::number(value, 'f', 2), "G")); } }