From 94e7da1400e59256f41f72b4592d4a9df1cca5a0 Mon Sep 17 00:00:00 2001 From: Arno Date: Fri, 8 Jul 2011 10:03:14 +0200 Subject: 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, the tree is only for display. --- seriesmetadatamodel.h | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'seriesmetadatamodel.h') 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 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); - virtual bool setData(const QModelIndex &parent, const QVariant &value, int row, int column, int role = Qt::EditRole); + 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; - bool mDataChanged; + const int mDataFields; int mCurrentId; QSqlDatabase mDb; QSqlQuery *mPopulateQuery; QSqlQuery *mPresentQuery; - QSqlQuery *mUpdateQuery; + QSqlQuery *mUpdateAllQuery; QSqlQuery *mInsertQuery; - QHash mColumnNames; + QHash mDbColumnNames; + QHash mDisplayColumnNames; + QList mData; }; class MetadataWidget : public QWidget { @@ -90,7 +96,7 @@ class MetadataDisplay : public QWidget { private: SeriesMetadataModel *mModel; - QLabel *mDisplay; + QTreeView *mDisplay; }; -- cgit v1.2.3-70-g09d2