diff options
author | Arno <am@disconnect.de> | 2011-07-08 10:03:14 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2011-07-08 10:03:14 +0200 |
commit | 94e7da1400e59256f41f72b4592d4a9df1cca5a0 (patch) | |
tree | 0afb0303e878280fa3c9f829326cae9cb73114a3 /seriesmetadatamodel.h | |
parent | 35774a402027714ed6f93041aea1ebe5f5391205 (diff) | |
download | SheMov-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.h | 22 |
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; }; |