/* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. */ #ifndef SERIESMETADATAMODEL_H #define SERIESMETADATAMODEL_H #include #include #include class QSqlQuery; class QSpinBox; class QComboBox; class QLineEdit; class QPlainTextEdit; class QDateEdit; class QLabel; class SmTreeView; #include "smtreemodel.h" class SeriesMetadataModel : public SmTreeModel { Q_OBJECT public: enum Fields { ReleaseYear = 0, SourceMedium = 1, Subject = 2, ReleaseGroup = 3, EncoderOpts = 4, Comment = 5, Passes = 6, Added = 7 }; explicit SeriesMetadataModel(const QStringList &headers, QObject *parent = 0); //data int currentId() const { return mCurrentId; } int numFields() const { return mDataFields; } virtual QVariant data(int column) const; const QList dataList(const QModelIndex &index) const; const QList fieldList(int field, bool distinct = true) const; virtual bool setData(const QModelIndex &index, const QVariant &value, int role); void setAllData(int seriesId, const QList &data); const QString columnName(int column) const { return mDisplayColumnNames.value(column); } //misc bool hasRecord(int seriesPartId) const; Qt::ItemFlags flags(const QModelIndex &index) const; public slots: void populate(int seriesPartId); void update(); private: void createTree(const QList &data); const int mColumns; const int mDataFields; int mCurrentId; QSqlDatabase mDb; QSqlQuery *mPopulateQuery; QSqlQuery *mPresentQuery; QSqlQuery *mUpdateAllQuery; QSqlQuery *mInsertQuery; QHash mDbColumnNames; QHash mDisplayColumnNames; QList mData; }; class MetadataWidget : public QWidget { Q_OBJECT public: explicit MetadataWidget(QWidget *parent = 0, Qt::WindowFlags f = 0); virtual ~MetadataWidget() {} public slots: void setSeriesPartId(int id); void accept(); private: QSpinBox *mReleaseYear; QComboBox *mSourceMedium; QComboBox *mReleaseGroup; QLineEdit *mSubject; QLineEdit *mEncoderOpts; QSpinBox *mPasses; QPlainTextEdit *mComment; QDateEdit *mAdded; 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; SmTreeView *mDisplay; }; #endif // SERIESMETADATAMODEL_H