From 5df34cd08ee62a55dfd1b24bb7c62c244b2a543d Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 7 Aug 2010 11:03:33 +0200 Subject: Added tooltip to FilesTreeView Added tooltip to FilesTreeView when showing archived or local movies. The tooltip shows all files associated with the SeriesPart. --- filestreemodel.cpp | 30 +++++++++++++++++++++++++++++- filestreemodel.h | 4 +++- filestreewidget.cpp | 1 + filestreewidget.h | 1 + 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/filestreemodel.cpp b/filestreemodel.cpp index 67c7c82..1020b17 100644 --- a/filestreemodel.cpp +++ b/filestreemodel.cpp @@ -17,6 +17,8 @@ #include "filestreemodel.h" #include "smtreeitem.h" #include "helper.h" +#include "seriestreemodel.h" +#include "smglobals.h" FilesTreeModel::FilesTreeModel(QStringList &headers, QObject *parent) : SmTreeModel(headers, parent), mMode(Normal){ //database setup @@ -46,6 +48,9 @@ FilesTreeModel::FilesTreeModel(QStringList &headers, QObject *parent) : SmTreeMo mModeNames.insert(Normal, "Normal"); mModeNames.insert(Archived, "Archived"); mModeNames.insert(Local, "Local"); + + //misc + mSeriesModel = static_cast(SmGlobals::instance()->model("SeriesModel")); } FilesTreeModel::~FilesTreeModel(){ @@ -127,6 +132,29 @@ QVariant FilesTreeModel::data(const QModelIndex &index, int role) const{ } return item->data(index.column()); } + if(role == Qt::ToolTipRole){ + if(mMode != Normal){ + int seriesPartId = item->data(SeriesPartId).toInt(); + int seriesId = mSeriesModel->seriesIdByPartId(seriesPartId); + if(seriesId != -1){ + QModelIndex seriesIdx = mSeriesModel->findValue(seriesId, QModelIndex(), SeriesTreeModel::SeriesId); + if(seriesIdx.isValid()){ + QModelIndex seriesPartIdx = mSeriesModel->findValue(seriesPartId, seriesIdx, SeriesTreeModel::SeriesPartId); + QHash files = filesBySeriesPartId(seriesPartId); + QString retval = QString(tr("

%1 %2

")).arg(seriesPartIdx.data(SeriesTreeModel::NameRole).toString()).arg(QString::number(seriesPartIdx.data(SeriesTreeModel::SeriesPartRole).toInt())); + retval.append(QString(tr("

Files:

"))); + retval.append(tr("
    ")); + QHash::const_iterator it = files.constBegin(); + while(it != files.constEnd()){ + retval.append(QString("
  • %1
  • ").arg(it.key())); + ++it; + } + retval.append(tr("
")); + return retval; + } + } + } + } if(role == Qt::EditRole){ return item->data(index.column()); } @@ -227,7 +255,7 @@ Qt::ItemFlags FilesTreeModel::flags(const QModelIndex &index) const{ return retval; } -QHash FilesTreeModel::filesBySeriesPartId(int seriesPartId){ +QHash FilesTreeModel::filesBySeriesPartId(int seriesPartId) const{ mFilesQuery->bindValue(":id", seriesPartId); QHash retval; if(mFilesQuery->exec()){ diff --git a/filestreemodel.h b/filestreemodel.h index bea1d5c..405878b 100644 --- a/filestreemodel.h +++ b/filestreemodel.h @@ -16,6 +16,7 @@ #include "smtreemodel.h" class QSqlQuery; +class SeriesTreeModel; class FilesTreeModel : public SmTreeModel { Q_OBJECT @@ -37,7 +38,7 @@ class FilesTreeModel : public SmTreeModel { QVariant data(const QModelIndex &index, int role) const; bool setData(const QModelIndex &index, const QVariant &value, int role); Qt::ItemFlags flags(const QModelIndex &index) const; - QHash filesBySeriesPartId(int seriesPartId); + QHash filesBySeriesPartId(int seriesPartId) const; QList > streamInfo(const QModelIndex &idx); QMap pictureInfo(const QModelIndex &idx); QMap pictureMetaInfo(const QModelIndex &idx); @@ -63,6 +64,7 @@ class FilesTreeModel : public SmTreeModel { QHash mFileTypes; QHash mCoverTypes; QHash mModeNames; + SeriesTreeModel *mSeriesModel; int mMode; }; diff --git a/filestreewidget.cpp b/filestreewidget.cpp index 3161e57..9aa00f0 100644 --- a/filestreewidget.cpp +++ b/filestreewidget.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include diff --git a/filestreewidget.h b/filestreewidget.h index 4afa20a..e159d5a 100644 --- a/filestreewidget.h +++ b/filestreewidget.h @@ -21,6 +21,7 @@ class PictureViewer; class QContextMenuEvent; class QSpinBox; class QPushButton; +class QEvent; class FilesTreeWidget : public QWidget { Q_OBJECT -- cgit v1.2.3-70-g09d2