summaryrefslogtreecommitdiffstats
path: root/seriesmetadatamodel.h
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2011-07-08 10:03:14 +0200
committerArno <am@disconnect.de>2011-07-08 10:03:14 +0200
commit94e7da1400e59256f41f72b4592d4a9df1cca5a0 (patch)
tree0afb0303e878280fa3c9f829326cae9cb73114a3 /seriesmetadatamodel.h
parent35774a402027714ed6f93041aea1ebe5f5391205 (diff)
downloadSheMov-94e7da1400e59256f41f72b4592d4a9df1cca5a0.tar.gz
SheMov-94e7da1400e59256f41f72b4592d4a9df1cca5a0.tar.bz2
SheMov-94e7da1400e59256f41f72b4592d4a9df1cca5a0.zip
Turn metadata display into a QTreeView
This wasn't as easy as it sounds. I had to completely redesign the SeriesMetadataModel. Now it's a hybrid between a ListModel and a TreeModel. The actual data is held in a QList<QVariant>, the tree is only for display.
Diffstat (limited to 'seriesmetadatamodel.h')
-rw-r--r--seriesmetadatamodel.h22
1 files changed, 14 insertions, 8 deletions
diff --git a/seriesmetadatamodel.h b/seriesmetadatamodel.h
index a6c74c3..b96ef90 100644
--- a/seriesmetadatamodel.h
+++ b/seriesmetadatamodel.h
@@ -19,42 +19,48 @@ class QLineEdit;
class QPlainTextEdit;
class QDateEdit;
class QLabel;
+class QTreeView;
#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 };
+ 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);
virtual ~SeriesMetadataModel();
//data
int currentId() const { return mCurrentId; }
- virtual QVariant data(const QModelIndex &index, int role) const;
+ int numFields() const { return mDataFields; }
+ virtual QVariant data(int column) 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);
+ void setAllData(int seriesId, const QList<QVariant> &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<QVariant> &data);
const int mColumns;
- bool mDataChanged;
+ const int mDataFields;
int mCurrentId;
QSqlDatabase mDb;
QSqlQuery *mPopulateQuery;
QSqlQuery *mPresentQuery;
- QSqlQuery *mUpdateQuery;
+ QSqlQuery *mUpdateAllQuery;
QSqlQuery *mInsertQuery;
- QHash<int, QString> mColumnNames;
+ QHash<int, QString> mDbColumnNames;
+ QHash<int, QString> mDisplayColumnNames;
+ QList<QVariant> mData;
};
class MetadataWidget : public QWidget {
@@ -90,7 +96,7 @@ class MetadataDisplay : public QWidget {
private:
SeriesMetadataModel *mModel;
- QLabel *mDisplay;
+ QTreeView *mDisplay;
};