diff options
-rw-r--r-- | filestreemodel.cpp | 30 | ||||
-rw-r--r-- | filestreemodel.h | 4 | ||||
-rw-r--r-- | filestreewidget.cpp | 1 | ||||
-rw-r--r-- | 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<SeriesTreeModel*>(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<QString, QString> files = filesBySeriesPartId(seriesPartId); + QString retval = QString(tr("<p style=\"text-decoration: underline; font-weight: bold\">%1 %2</p>")).arg(seriesPartIdx.data(SeriesTreeModel::NameRole).toString()).arg(QString::number(seriesPartIdx.data(SeriesTreeModel::SeriesPartRole).toInt())); + retval.append(QString(tr("<p style=\"margin-bottom: 0px; padding-bottom: 0px\">Files:</p>"))); + retval.append(tr("<ul style=\"margin-top: 0px\">")); + QHash<QString, QString>::const_iterator it = files.constBegin(); + while(it != files.constEnd()){ + retval.append(QString("<li style=\"margin-left: -10px\">%1</li>").arg(it.key())); + ++it; + } + retval.append(tr("</ul>")); + 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<QString, QString> FilesTreeModel::filesBySeriesPartId(int seriesPartId){ +QHash<QString, QString> FilesTreeModel::filesBySeriesPartId(int seriesPartId) const{ mFilesQuery->bindValue(":id", seriesPartId); QHash<QString, QString> 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<QString, QString> filesBySeriesPartId(int seriesPartId); + QHash<QString, QString> filesBySeriesPartId(int seriesPartId) const; QList<QMap<QString, QString> > streamInfo(const QModelIndex &idx); QMap<QString, QString> pictureInfo(const QModelIndex &idx); QMap<QString, QString> pictureMetaInfo(const QModelIndex &idx); @@ -63,6 +64,7 @@ class FilesTreeModel : public SmTreeModel { QHash<int, QString> mFileTypes; QHash<int, QString> mCoverTypes; QHash<int, QString> 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 <QProcess> #include <QFileDialog> #include <QSettings> +#include <QEvent> #include <QDebug> 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 |