summaryrefslogtreecommitdiffstats
path: root/filestreewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filestreewidget.cpp')
-rw-r--r--filestreewidget.cpp68
1 files changed, 53 insertions, 15 deletions
diff --git a/filestreewidget.cpp b/filestreewidget.cpp
index c4604fb..0d8ae1f 100644
--- a/filestreewidget.cpp
+++ b/filestreewidget.cpp
@@ -30,6 +30,7 @@
#include <QBrush>
#include <QColor>
#include <QPen>
+#include <QDate>
#include "filestreewidget.h"
#include "smglobals.h"
@@ -40,6 +41,7 @@
#include "filepropertiesdialog.h"
#include "hoverwindow.h"
#include "seriestreemodel.h"
+#include "seriesmetadatamodel.h"
FilesTreeWidget::FilesTreeWidget(QWidget *parent) : QWidget(parent), mSelectedSize(0){
//the view
@@ -422,9 +424,14 @@ void FilesTreeView::doHover(const QModelIndex &idx){
scale = false;
FilesTreeModel *filesModel = qobject_cast<FilesTreeModel*>(SmGlobals::instance()->model("FilesModel"));
if(filesModel->mode() == FilesTreeModel::Local){
- pm = annotateHover(pm, idx);
- scale = false;
+ QString filesData = fileNameText(idx);
+ pm = annotateHover(pm, filesData);
}
+ QString metaData = metaDataText(idx);
+ if(!metaData.isEmpty()){
+ pm = annotateHover(pm, metaData);
+ }
+ scale = false;
}else{
if(!pm.load(idx.data(FilesTreeModel::FullPathRole).toString())){
return;
@@ -436,33 +443,63 @@ void FilesTreeView::doHover(const QModelIndex &idx){
mHoverWin->setVisible(true);
}
-const QPixmap FilesTreeView::annotateHover(const QPixmap &hoverImage, const QModelIndex &idx) const{
+const QString FilesTreeView::fileNameText(const QModelIndex &idx) const{
SeriesTreeModel *seriesModel = qobject_cast<SeriesTreeModel*>(SmGlobals::instance()->model("SeriesModel"));
int seriesId = seriesModel->seriesIdByPartId(idx.data(FilesTreeModel::SeriesPartIdRole).toInt());
if(seriesId == -1){
- return hoverImage;
+ return QString();
}
QModelIndex seriesIdx = seriesModel->findValue(seriesId, QModelIndex(), SeriesTreeModel::SeriesId);
if(!seriesIdx.isValid()){
- return hoverImage;
+ return QString();
}
FilesTreeModel *filesModel = qobject_cast<FilesTreeModel*>(SmGlobals::instance()->model("FilesModel"));
QHash<QString, QString> files = filesModel->filesBySeriesPartId(idx.data(FilesTreeModel::SeriesPartIdRole).toInt());
QModelIndex seriesPartIdx = seriesModel->findValue(idx.data(FilesTreeModel::SeriesPartIdRole), seriesIdx, SeriesTreeModel::SeriesPartId);
- QString data = 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()));
- data.append(QString(tr("<p style=\"margin-bottom: 0px; padding-bottom: 0px\">Files:</p>")));
- data.append(tr("<ul style=\"margin-top: 0px\">"));
+ 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()){
- data.append(QString("<li style=\"margin-left: -10px\">%1</li>").arg(it.key()));
+ retval.append(QString("<li style=\"margin-left: -10px\">%1</li>").arg(it.key()));
++it;
}
- data.append(tr("</ul>"));
+ retval.append(tr("</ul>"));
+ return retval;
+}
+
+const QString FilesTreeView::metaDataText(const QModelIndex &idx) const{
+ if(!idx.isValid()){
+ return QString();
+ }
+ SeriesMetadataModel *metaDataModel = qobject_cast<SeriesMetadataModel*>(SmGlobals::instance()->model("SeriesMetadata"));
+ int seriesPartId = idx.data(FilesTreeModel::SeriesPartIdRole).toInt();
+ if(!metaDataModel->hasRecord(seriesPartId)){
+ return QString();
+ }
+ metaDataModel->populate(seriesPartId);
+ QModelIndex mdIdx = metaDataModel->index(0, 0, QModelIndex());
+ QList<QVariant> metaData = metaDataModel->dataList(mdIdx);
+ QString retval("<p style=\"text-decoration: underline; font-weight: bold; margin-bottom: 10px\">Metadata</p><p style=\"margin-left: 20px\"><table>");
+ retval.append(QString(tr("<tr><td style=\"padding-right: 20px\"><span style=\"font-style: italic;\">Release Year</span></td><td>%1</td></tr>")).arg(QString::number(metaData.at(SeriesMetadataModel::ReleaseYear).toInt())));
+ retval.append(QString(tr("<tr><td style=\"padding-right: 20px\"><span style=\"font-style: italic;\">Encoding Passes</span></td><td>%1</td></tr>")).arg(QString::number(metaData.at(SeriesMetadataModel::Passes).toInt())));
+ retval.append(QString(tr("<tr><td style=\"padding-right: 20px\"><span style=\"font-style: italic;\">Release Group</span></td><td>%1</td></tr>")).arg(metaData.at(SeriesMetadataModel::ReleaseGroup).toString()));
+ retval.append(QString(tr("<tr><td style=\"padding-right: 20px\"><span style=\"font-style: italic;\">Source Medium</span></td><td>%1</td></tr>")).arg(metaData.at(SeriesMetadataModel::SourceMedium).toString()));
+ retval.append(QString(tr("<tr><td style=\"padding-right: 20px\"><span style=\"font-style: italic;\">Usenet Subject</span></td><td>%1</td></tr>")).arg(metaData.at(SeriesMetadataModel::Subject).toString()));
+ retval.append(QString(tr("<tr><td style=\"padding-right: 20px\"><span style=\"font-style: italic;\">Encoder Options</span></td><td>%1</td></tr>")).arg(metaData.at(SeriesMetadataModel::EncoderOpts).toString()));
+ QDate dateAdded = metaData.at(SeriesMetadataModel::Added).toDate();
+ retval.append(QString(tr("<tr><td style=\"padding-right: 20px\"><span style=\"font-style: italic;\">Added</span></td><td>%1</td></tr>")).arg(dateAdded.toString(Qt::ISODate)));
+ retval.append(QString(tr("<tr><td style=\"padding-right: 20px\"><span style=\"font-style: italic;\">Comment</span></td><td>%1</td></tr>")).arg(metaData.at(SeriesMetadataModel::Comment).toString()));
+ retval.append("</table></p>");
+ return retval;
+}
+
+const QPixmap FilesTreeView::annotateHover(const QPixmap &hoverImage, const QString &text) const{
QTextDocument doc;
- doc.setHtml(data);
+ doc.setHtml(text);
doc.setTextWidth(hoverImage.width());
- QSize picSize(hoverImage.width(), hoverImage.height() + doc.size().height());
- QImage retImg(picSize, QImage::Format_ARGB32_Premultiplied);
+ QSize newPicSize(hoverImage.width(), hoverImage.height() + doc.size().height());
+ QImage retImg(newPicSize, QImage::Format_ARGB32_Premultiplied);
retImg.fill(0);
QPainter p(&retImg);
p.drawPixmap(0, 0, hoverImage);
@@ -473,14 +510,15 @@ const QPixmap FilesTreeView::annotateHover(const QPixmap &hoverImage, const QMod
QBrush brush(bgColor);
p.setPen(QPen(Qt::NoPen));
p.setBrush(brush);
- QRect bgRect(0, hoverImage.height(), hoverImage.width(), doc.size().height());
- p.drawRect(bgRect);
+ QRect annotateRect(0, hoverImage.height(), hoverImage.width(), doc.size().height());
+ p.drawRect(annotateRect);
p.setPen(QPen(Qt::black));
p.translate(0, hoverImage.height());
doc.drawContents(&p);
return QPixmap::fromImage(retImg);
}
+
FilesTreeSortModel::FilesTreeSortModel(QObject *parent) : QSortFilterProxyModel(parent) {}
// left + right are from the sourceModel() !!!!