diff options
Diffstat (limited to 'archivemodel.cpp')
-rw-r--r-- | archivemodel.cpp | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp index 3bae59b..3379d67 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -24,6 +24,36 @@ const QStringList ArchiveModel::availableOrders() const { return retval; } +QVariant ArchiveModel::data(const QModelIndex &index, int role) const{ + SmTreeItem *item = itemAt(index); + if(role == Qt::DisplayRole && index.column() == 0){ + QString retval; + int part = item->data(SeriesPart).toInt(); + int childCount = item->data(Count).toInt(); + int nodeType = item->data(Type).toInt(); + if(nodeType == SeriesNode){ + retval = QString("%1 (%2)").arg(item->data(Name).toString()).arg(QString::number(childCount)); + }else if(nodeType == SeriesPartNode){ + if(part > 0){ + retval = QString("%1 %2").arg(item->data(Name).toString()).arg(QString::number(part)); + }else{ + QString subtitle = item->data(Subtitle).toString(); + if(!subtitle.isEmpty()){ + retval = QString("%1 - %2").arg(item->data(Name).toString()).arg(item->data(Subtitle).toString()); + } + } + } + return retval; + } + if(role == Qt::ForegroundRole){ + bool favorite = item->data(Favorite).toBool(); + if(favorite){ + return QColor(Qt::darkGreen); + } + } + return SmTreeModel::data(index, role); +} + void ArchiveModel::setOrder(int order) { switch (order) { case SeriesName: @@ -42,7 +72,6 @@ void ArchiveModel::setOrder(int order) { void ArchiveModel::populateBySeriesName() { SmTreeItem *rootItem = new SmTreeItem(NumFields); - //fetchChildren(rootItem); fetchSeries(QVariant(), rootItem); fetchParts(rootItem); setRoot(rootItem); |