summaryrefslogtreecommitdiffstats
path: root/seriesmetadatamodel.h
diff options
context:
space:
mode:
Diffstat (limited to 'seriesmetadatamodel.h')
-rw-r--r--seriesmetadatamodel.h81
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