summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2011-02-20 10:35:19 +0100
committerArno <am@disconnect.de>2011-02-20 10:35:19 +0100
commitef93566e66f5c9d52de72e654d4a7dff576f3c42 (patch)
tree75b9a7513878b7ad962d4f85246fe0adcf4c4049
parent23289ad65a1b06d3c3e9bbd4706ce75ce40c4b52 (diff)
downloadSheMov-ef93566e66f5c9d52de72e654d4a7dff576f3c42.tar.gz
SheMov-ef93566e66f5c9d52de72e654d4a7dff576f3c42.tar.bz2
SheMov-ef93566e66f5c9d52de72e654d4a7dff576f3c42.zip
Show metadata in ArchiveView
Added a widget to display metadata beside actors and genres when available
-rw-r--r--archivetreeview.cpp4
-rw-r--r--archivetreeview.h2
-rw-r--r--helper.cpp6
-rw-r--r--helper.h1
-rw-r--r--seriesmetadatamodel.cpp55
-rw-r--r--seriesmetadatamodel.h16
6 files changed, 84 insertions, 0 deletions
diff --git a/archivetreeview.cpp b/archivetreeview.cpp
index 3e9e783..b2ba254 100644
--- a/archivetreeview.cpp
+++ b/archivetreeview.cpp
@@ -43,6 +43,7 @@
#include "seriestreemodel.h"
#include "mappingtablewidget.h"
#include "mappingtablemodel.h"
+#include "seriesmetadatamodel.h"
#include "helper.h"
ArchiveTreeView::ArchiveTreeView(QWidget *parent) : QWidget(parent){
@@ -67,8 +68,10 @@ ArchiveTreeView::ArchiveTreeView(QWidget *parent) : QWidget(parent){
QHBoxLayout *genreActorLayout = new QHBoxLayout;
mActorsWidget = new MappingTableWidget("actors");
mGenresWidget = new MappingTableWidget("genres");
+ mMetaData = new MetadataDisplay;
genreActorLayout->addWidget(mActorsWidget);
genreActorLayout->addWidget(mGenresWidget);
+ genreActorLayout->addWidget(mMetaData);
genreActorWidget->setLayout(genreActorLayout);
// fileview, actors and genres
@@ -253,6 +256,7 @@ void ArchiveTreeView::currentChanged(const QItemSelection &selected, const QItem
mFilesWidget->filesTree()->header()->resizeSections(QHeaderView::ResizeToContents);
setMappingItems(selectedPartIds, mActorsModel, mActorsWidget);
setMappingItems(selectedPartIds, mGenresModel, mGenresWidget);
+ mMetaData->setSeriesPartId(selectedPartIds.at(0));
}
void ArchiveTreeView::setMappingItems(QList<int>seriesPartIds, MappingTableModel *model, MappingTableWidget *widget){
diff --git a/archivetreeview.h b/archivetreeview.h
index ad1d3f1..342e3c4 100644
--- a/archivetreeview.h
+++ b/archivetreeview.h
@@ -24,6 +24,7 @@ class SeriesTreeModel;
class MappingTableWidget;
class MappingTableModel;
class NoCoverMovieDialog;
+class MetadataDisplay;
class QItemSelection;
class QSqlQuery;
class QPushButton;
@@ -67,6 +68,7 @@ class ArchiveTreeView : public QWidget
FilesTreeWidget *mFilesWidget;
MappingTableWidget *mActorsWidget;
MappingTableWidget *mGenresWidget;
+ MetadataDisplay *mMetaData;
//models
FilesTreeModel *mFilesModel;
diff --git a/helper.cpp b/helper.cpp
index 8a2e99a..247baca 100644
--- a/helper.cpp
+++ b/helper.cpp
@@ -188,6 +188,12 @@ namespace Helper {
return retval;
}
+ const QString colorToHtml(const QColor &color){
+ char colString[7];
+ ::snprintf(colString, 7, "%0x%0x%0x", color.red(), color.green(), color.blue());
+ return QString::fromAscii(colString);
+ }
+
bool SortFileInfoList::operator ()(const QFileInfo &lhs, const QFileInfo &rhs) const {
return lhs.fileName().toLower() < rhs.fileName().toLower();
}
diff --git a/helper.h b/helper.h
index 0ca967d..e6802eb 100644
--- a/helper.h
+++ b/helper.h
@@ -28,6 +28,7 @@ namespace Helper {
const QString durationFromSecs(qint64 secs);
QVariant bytesFromUnit(QVariant number, const QString unit);
const QStringList toStringList(const QList<QVariant> &list);
+ const QString colorToHtml(const QColor &color);
class SortFileInfoList : public std::binary_function<QFileInfo, QFileInfo, bool> {
public:
bool operator()(const QFileInfo &lhs, const QFileInfo &rhs) const;
diff --git a/seriesmetadatamodel.cpp b/seriesmetadatamodel.cpp
index 169db9b..81845e3 100644
--- a/seriesmetadatamodel.cpp
+++ b/seriesmetadatamodel.cpp
@@ -15,6 +15,11 @@
#include <QFormLayout>
#include <QVBoxLayout>
#include <QLabel>
+#include <QGroupBox>
+#include <QPalette>
+#include <QSettings>
+#include <QColor>
+#include <QScrollArea>
#include "seriesmetadatamodel.h"
#include "smtreeitem.h"
@@ -272,3 +277,53 @@ void MetadataWidget::accept(){
mModel->setData(parent, mComment->toPlainText(), row, SeriesMetadataModel::Comment);
mModel->update();
}
+
+MetadataDisplay::MetadataDisplay(QWidget *parent) : QWidget(parent){
+ //model
+ mModel = static_cast<SeriesMetadataModel*>(SmGlobals::instance()->model("SeriesMetadata"));
+
+ //display
+ QGroupBox *gb = new QGroupBox(tr("Metadata"));
+ QHBoxLayout *gbLayout = new QHBoxLayout;
+ mDisplay = new QLabel(tr("No metadata available"));
+ mDisplay->setAlignment(Qt::AlignTop | Qt::AlignHCenter);
+ mDisplay->setWordWrap(true);
+ QScrollArea *sa = new QScrollArea;
+ sa->setWidgetResizable(true);
+ sa->setWidget(mDisplay);
+ gbLayout->addWidget(sa);
+ gb->setLayout(gbLayout);
+
+ //laoyut
+ QVBoxLayout *mainLayout = new QVBoxLayout;
+ mainLayout->addWidget(gb);
+ setLayout(mainLayout);
+}
+
+void MetadataDisplay::setSeriesPartId(int seriesPartId){
+ //setup label + model
+ if(mModel->hasRecord(seriesPartId)){
+ mModel->populate(seriesPartId);
+ QSettings s;
+ QColor baseColor = s.value("ui/basecolor").value<QColor>();
+ QString baseHtml = Helper::colorToHtml(baseColor);
+ QColor alternateColor = s.value("ui/alternatecolor").value<QColor>();
+ QString alternateHtml = Helper::colorToHtml(alternateColor);
+ QModelIndex mdIdx = mModel->index(0, 0, QModelIndex());
+ QList<QVariant> metaData = mModel->dataList(mdIdx);
+ QString text("<table>");
+ text.append(QString(tr("<tr style=\"background-color: #%1\"><td style=\"padding-right: 20px; padding-left: 5px\"><span style=\"font-style: italic;\">Release Year</span></td><td>%2</td></tr>")).arg(baseHtml).arg(QString::number(metaData.at(SeriesMetadataModel::ReleaseYear).toInt())));
+ text.append(QString(tr("<tr style=\"background-color: #%1\"><td style=\"padding-right: 20px; padding-left: 5px\"><span style=\"font-style: italic;\">Encoding Passes</span></td><td>%2</td></tr>")).arg(alternateHtml).arg(QString::number(metaData.at(SeriesMetadataModel::Passes).toInt())));
+ text.append(QString(tr("<tr style=\"background-color: #%1\"><td style=\"padding-right: 20px; padding-left: 5px\"><span style=\"font-style: italic;\">Release Group</span></td><td>%2</td></tr>")).arg(baseHtml).arg(metaData.at(SeriesMetadataModel::ReleaseGroup).toString()));
+ text.append(QString(tr("<tr style=\"background-color: #%1\"><td style=\"padding-right: 20px; padding-left: 5px\"><span style=\"font-style: italic;\">Source Medium</span></td><td>%2</td></tr>")).arg(alternateHtml).arg(metaData.at(SeriesMetadataModel::SourceMedium).toString()));
+ text.append(QString(tr("<tr style=\"background-color: #%1\"><td style=\"padding-right: 20px; padding-left: 5px\"><span style=\"font-style: italic;\">Usenet Subject</span></td><td>%2</td></tr>")).arg(baseHtml).arg(metaData.at(SeriesMetadataModel::Subject).toString()));
+ text.append(QString(tr("<tr style=\"background-color: #%1\"><td style=\"padding-right: 20px; padding-left: 5px\"><span style=\"font-style: italic;\">Encoder Options</span></td><td>%2</td></tr>")).arg(alternateHtml).arg(metaData.at(SeriesMetadataModel::EncoderOpts).toString()));
+ QDate dateAdded = metaData.at(SeriesMetadataModel::Added).toDate();
+ text.append(QString(tr("<tr style=\"background-color: #%1\"><td style=\"padding-right: 20px; padding-left: 5px\"><span style=\"font-style: italic;\">Added</span></td><td>%2</td></tr>")).arg(baseHtml).arg(dateAdded.toString(Qt::ISODate)));
+ text.append(QString(tr("<tr style=\"background-color: #%1\"><td style=\"padding-right: 20px; padding-left: 5px\"><span style=\"font-style: italic;\">Comment</span></td><td>%2</td></tr>")).arg(alternateHtml).arg(metaData.at(SeriesMetadataModel::Comment).toString()));
+ text.append("</table>");
+ mDisplay->setText(text);
+ }else{
+ mDisplay->setText(tr("No metadata available"));
+ }
+}
diff --git a/seriesmetadatamodel.h b/seriesmetadatamodel.h
index 06f8cc7..a6c74c3 100644
--- a/seriesmetadatamodel.h
+++ b/seriesmetadatamodel.h
@@ -18,6 +18,7 @@ class QComboBox;
class QLineEdit;
class QPlainTextEdit;
class QDateEdit;
+class QLabel;
#include "smtreemodel.h"
@@ -78,4 +79,19 @@ class MetadataWidget : public QWidget {
SeriesMetadataModel *mModel;
};
+class MetadataDisplay : public QWidget {
+ Q_OBJECT
+ public:
+ explicit MetadataDisplay(QWidget *parent = 0);
+ virtual ~MetadataDisplay() {}
+
+ public slots:
+ void setSeriesPartId(int seriesId);
+
+ private:
+ SeriesMetadataModel *mModel;
+ QLabel *mDisplay;
+
+};
+
#endif // SERIESMETADATAMODEL_H