/* 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 #include class MappingTreeView; class MappingTreeModel; class QComboBox; class QPushButton; class QLabel; class QSortFilterProxyModel; class QStringListModel; class QAction; class MappingTreeResultModel; struct MappingData; class MappingTreeWidget : public QWidget { Q_OBJECT public: explicit MappingTreeWidget(QWidget *parent = 0); MappingData selectedItem() const; public slots: void addChild(); void addType(); void deleteChild(); void deleteType(); void selectPath(const QString &path); protected: virtual void hideEvent(QHideEvent *event); private slots: void typeChanged(QString type); void editChild(); void selectionChanged(); void moveChild(); signals: void mappingChanged(int); private: const QModelIndex selected() const; MappingTreeView *mTree; MappingTreeModel *mModel; QSortFilterProxyModel *mProxy; QStringListModel *mTypesModel; QComboBox *mTypeBox; QPushButton *mAddType; QPushButton *mDeleteType; QAction *mAddChildA; QAction *mDeleteChildA; QAction *mEditChildA; QAction *mMoveChildA; }; class MappingTreeView : public QTreeView { Q_OBJECT public: MappingTreeView(QWidget *parent = 0); protected: virtual void contextMenuEvent(QContextMenuEvent *e); }; class MappingTreeResultView : public QTreeView { Q_OBJECT public: explicit MappingTreeResultView(QWidget *parent = 0); }; class MappingEditWidget : public QWidget { Q_OBJECT public: explicit MappingEditWidget(QWidget *parent = 0); QList mappingIds() const; public slots: void addMapping(); void removeMapping(); void setMappings(const QList &mappings); private: MappingTreeWidget *mMappingTree; MappingTreeResultView *mMappingResult; MappingTreeResultModel *mResultModel; QPushButton *mAddMapping; QPushButton *mRemoveMapping; }; class MappingEditDialog : public QDialog { Q_OBJECT public: explicit MappingEditDialog(QWidget *parent, Qt::WindowFlags f = 0); MappingEditWidget *editWidget() const { return mEditWidget; } private: MappingEditWidget *mEditWidget; QPushButton *mOk; QPushButton *mCancel; }; #endif // MAPPINGTREEWIDGET_H