From b8e16c3bddb706ecc195e86eaafb89ed90f9bfc3 Mon Sep 17 00:00:00 2001 From: Arno Date: Fri, 24 Feb 2012 20:35:27 +0100 Subject: 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. --- mappingtreewidget.h | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 mappingtreewidget.h (limited to 'mappingtreewidget.h') 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 +#include + +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 -- cgit v1.2.3-70-g09d2