/* 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 #include "actorcountmodel.h" ActorCountModel::ActorCountModel(QObject *parent) : QAbstractItemModel(parent) { QSqlQuery query("SELECT iactorid, tactorname FROM actor ORDER BY tactorname ASC"); QSqlQuery countQuery; countQuery.prepare("SELECT COUNT(*) FROM movieactormap WHERE iactorid = :id"); while(query.next()){ QVariant *name = new QVariant(query.value(1)); countQuery.bindValue(":id", query.value(0)); countQuery.exec(); QVariant *count; while(countQuery.next()){ count = new QVariant(countQuery.value(0)); } QList l; l << name << count; mItems.append(l); } mHeaderData << tr("Model name") << tr("Movies"); } ActorCountModel::~ActorCountModel() { foreach(QList l, mItems){ qDeleteAll(l); } } QModelIndex ActorCountModel::index(int row, int column, const QModelIndex &parent) const { if((column > 1) || (row >= mItems.size()) || (row < 0) || (parent != QModelIndex())){ return QModelIndex(); } return createIndex(row, column, 0); } int ActorCountModel::rowCount(const QModelIndex &) const { return mItems.size(); } int ActorCountModel::columnCount(const QModelIndex &) const { return 2; } QVariant ActorCountModel::data(const QModelIndex &idx, int role) const { if(!idx.isValid() || (idx.column() > 1) || (idx.row() > mItems.size())){ return QVariant(); } switch (role) { case Qt::DisplayRole: return *(mItems.at(idx.row()).at(idx.column())); break; case Qt::DecorationRole: if(idx.column() == 0){ return QIcon(":/dildo.png"); } break; } return QVariant(); } QVariant ActorCountModel::headerData(int section, Qt::Orientation o, int role) const { if((role != Qt::DisplayRole) || (o != Qt::Horizontal) || (section > 1)){ return QVariant(); } return mHeaderData.at(section); }