diff options
-rw-r--r-- | archivetreeview.cpp | 4 | ||||
-rw-r--r-- | archivetreeview.h | 2 | ||||
-rw-r--r-- | helper.cpp | 6 | ||||
-rw-r--r-- | helper.h | 1 | ||||
-rw-r--r-- | seriesmetadatamodel.cpp | 55 | ||||
-rw-r--r-- | seriesmetadatamodel.h | 16 |
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; @@ -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(); } @@ -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 |