diff options
author | Arno <am@disconnect.de> | 2012-02-24 20:35:27 +0100 |
---|---|---|
committer | Arno <am@disconnect.de> | 2012-02-24 20:35:27 +0100 |
commit | b8e16c3bddb706ecc195e86eaafb89ed90f9bfc3 (patch) | |
tree | b14578ba8f801f701777b73d3dbb22730570585a /mappingtreewidget.h | |
parent | e82af6117dfcf4ccbebb712caaf1b8f9c68599ba (diff) | |
download | SheMov-b8e16c3bddb706ecc195e86eaafb89ed90f9bfc3.tar.gz SheMov-b8e16c3bddb706ecc195e86eaafb89ed90f9bfc3.tar.bz2 SheMov-b8e16c3bddb706ecc195e86eaafb89ed90f9bfc3.zip |
Implement MappingTreeWidget
This is a rather large commit. It implements MappingTreeWidget using
MappingTreeModel unsurprisingly this uncovered some exciting bugs.
Fixes the following bugs in MappingTreeModel:
* use insertRows() and removeRows() when addings children, because
dataChanged() won't do it.
* don't use a prepared QSqlQuery when fetching children recursively.
This won't work because the query is still active when we invoke
ourselves again. Put the query on the stack instead
* Keep the model sorted.
Also add an entry for a MappingTreeEditor to the File-Menu.
Diffstat (limited to 'mappingtreewidget.h')
-rw-r--r-- | mappingtreewidget.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/mappingtreewidget.h b/mappingtreewidget.h new file mode 100644 index 0000000..bd34576 --- /dev/null +++ b/mappingtreewidget.h @@ -0,0 +1,65 @@ +/* + 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 MAPPINGTREEWIDGET_H +#define MAPPINGTREEWIDGET_H + +#include <QWidget> +#include <QTreeView> + +class MappingTreeView; +class MappingTreeModel; +class QComboBox; +class QPushButton; +class QSortFilterProxyModel; +class QStringListModel; +class QAction; + +class MappingTreeWidget : public QWidget { + Q_OBJECT + public: + explicit MappingTreeWidget(QWidget *parent = 0); + + public slots: + void addChild(); + void addType(); + void deleteChild(); + void deleteType(); + + protected: + virtual void hideEvent(QHideEvent *event); + + private slots: + void typeChanged(QString type); + void editChild(); + + private: + const QModelIndex selected() const; + MappingTreeView *mTree; + MappingTreeModel *mModel; + QSortFilterProxyModel *mProxy; + QStringListModel *mTypesModel; + QComboBox *mTypeBox; + QPushButton *mAddChild; + QPushButton *mDeleteChild; + QPushButton *mAddType; + QPushButton *mDeleteType; + QLineEdit *mEdit; + QAction *mDeleteChildA; + QAction *mEditChildA; +}; + +class MappingTreeView : public QTreeView { + Q_OBJECT + public: + MappingTreeView(QWidget *parent = 0); + + protected: + virtual void contextMenuEvent(QContextMenuEvent *e); +}; + +#endif // MAPPINGTREEWIDGET_H |