diff options
Diffstat (limited to 'seriesmetadatamodel.h')
-rw-r--r-- | seriesmetadatamodel.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/seriesmetadatamodel.h b/seriesmetadatamodel.h new file mode 100644 index 0000000..06f8cc7 --- /dev/null +++ b/seriesmetadatamodel.h @@ -0,0 +1,81 @@ +/* + 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 <QSqlDatabase> +#include <QHash> +#include <QWidget> + +class QSqlQuery; +class QSpinBox; +class QComboBox; +class QLineEdit; +class QPlainTextEdit; +class QDateEdit; + +#include "smtreemodel.h" + +class SeriesMetadataModel : public SmTreeModel { + Q_OBJECT + public: + enum CumstomRoles { SeriesPartIdRole = Qt::UserRole + 1, ReleaseYearRole = Qt::UserRole + 2, SourceMediumRole = Qt::UserRole + 3, SubjectRole = Qt::UserRole + 4, ReleaseGroupRole = Qt::UserRole + 5, EncoderOptsRole = Qt::UserRole + 6, CommentRole = Qt::UserRole + 7, PassesRole = Qt::UserRole + 8, AddedRole = Qt::UserRole + 9 }; + enum Fields { SeriesPartId = 0, ReleaseYear = 1, SourceMedium = 2, Subject = 3, ReleaseGroup = 4, EncoderOpts = 5, Comment = 6, Passes = 7, Added = 8 }; + explicit SeriesMetadataModel(const QStringList &headers, QObject *parent = 0); + virtual ~SeriesMetadataModel(); + + //data + int currentId() const { return mCurrentId; } + virtual QVariant data(const QModelIndex &index, int role) const; + const QList<QVariant> dataList(const QModelIndex &index) const; + const QList<QVariant> fieldList(int field, bool distinct = true) const; + virtual bool setData(const QModelIndex &index, const QVariant &value, int role); + virtual bool setData(const QModelIndex &parent, const QVariant &value, int row, int column, int role = Qt::EditRole); + + //misc + bool hasRecord(int seriesPartId) const; + + public slots: + void populate(int seriesPartId); + void update(); + + private: + const int mColumns; + bool mDataChanged; + int mCurrentId; + QSqlDatabase mDb; + QSqlQuery *mPopulateQuery; + QSqlQuery *mPresentQuery; + QSqlQuery *mUpdateQuery; + QSqlQuery *mInsertQuery; + QHash<int, QString> mColumnNames; +}; + +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; +}; + +#endif // SERIESMETADATAMODEL_H |