diff options
Diffstat (limited to 'mappingtablemodel.h')
-rw-r--r-- | mappingtablemodel.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/mappingtablemodel.h b/mappingtablemodel.h new file mode 100644 index 0000000..f624bff --- /dev/null +++ b/mappingtablemodel.h @@ -0,0 +1,62 @@ +/* + 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 MAPPINGTABLEMODEL_H +#define MAPPINGTABLEMODEL_H + +#include <QSqlDatabase> +#include <QList> + +#include "smtreemodel.h" + +class QString; +class QSqlQuery; +class QStringList; + +class MappingTableModel : public SmTreeModel{ + Q_OBJECT + public: + enum CustomRoles { ItemNameRole = Qt::UserRole + 1, ItemIdRole = Qt::UserRole + 2 }; + enum Fields { ItemName = 0, ItemId = 1 }; + explicit MappingTableModel(QStringList &headers, const QString &table, QObject *parent = 0); + virtual ~MappingTableModel(); + + //data + flags + virtual Qt::ItemFlags flags(const QModelIndex &index) const; + virtual QVariant data(const QModelIndex &index, int role) const; + virtual bool setData(const QModelIndex &index, const QVariant &value, int role); + + //add and remove items + bool addItem(const QVariant &name); + bool removeItem(const QModelIndex &idx); + + //mappings + bool addMapping(int seriesId, const QList<int> &itemIds); + QList<QVariant> mappings(int seriesId); + + signals: + void needResort(); + + private: + void populate(); + QSqlDatabase mDb; + QString mTable; + QString mMappingTable; + QString mIdColumnName; + QString mNameColumnName; + QString mSequenceName; + QStringList mItemNames; + + //queries + QSqlQuery *mUpdateItemNameQuery; + QSqlQuery *mInsertItemQuery; + QSqlQuery *mDeleteItemQuery; + QSqlQuery *mAddMappingQuery; + QSqlQuery *mMappingQuery; +}; + +#endif // MAPPINGTABLEMODEL_H |