/* 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 "smtreeview.h" class MappingTreeView; class MappingTreeModel; class QComboBox; class QCheckBox; class QStringListModel; class MappingTreeResultModel; class QLineEdit; class MappingTreeProxy; // defined in mappingtreemodel.h struct MappingData; class MappingTreeWidget : public QWidget { Q_OBJECT public: explicit MappingTreeWidget(QWidget *parent = 0); MappingData selectedItem() const; QList selectedTree() const; QList selectedTreeRecursive(const QModelIndex &start) const; MappingTreeView *mappingTreeView() const { return mTree; } public slots: void addChild(); void addActor(); void addType(); void deleteChild(); void deleteType(); protected: virtual void hideEvent(QHideEvent *event); private slots: void typeChanged(QString type); void editChild(); void selectionChanged(); void filter(); void clearFilter(); signals: void mappingChanged(int); private: const QModelIndex selected() const; MappingTreeView *mTree; MappingTreeModel *mModel; MappingTreeProxy *mProxy; QStringListModel *mTypesModel; QComboBox *mTypeBox; QLineEdit *mFilter; QPushButton *mDoFilter; QPushButton *mClearFilter; QPushButton *mAddType; QPushButton *mDeleteType; QPushButton *mRefresh; QAction *mAddChildA; QAction *mAddActorA; QAction *mDeleteChildA; QAction *mEditChildA; }; class MappingTreeView : public SmTreeView { Q_OBJECT public: MappingTreeView(QWidget *parent = 0); signals: void addMapping(); void removeMapping(); void clearMappings(); void shiftFocus(); void acceptPics(); protected: virtual void contextMenuEvent(QContextMenuEvent *e); virtual void keyPressEvent(QKeyEvent *e); }; class MappingTreeResultView : public SmTreeView { Q_OBJECT public: explicit MappingTreeResultView(QWidget *parent = 0); signals: void shiftFocus(); void removeMapping(); protected: virtual void keyPressEvent(QKeyEvent *e); }; class MappingEditWidget : public QWidget { Q_OBJECT public: explicit MappingEditWidget(QWidget *parent = 0); MappingTreeResultModel *model() const { return mResultModel; } MappingTreeWidget *treeWidget() const { return mMappingTree; } public slots: void addMapping(); void addTree(); void removeMapping(); void clearMapping(); void setMappings(const QList &mappings); void expandAllResults(); void shiftFocusResult(); void shiftFocusMappings(); void saveMappings(QString where); void loadMappings(QString from); private: MappingTreeWidget *mMappingTree; MappingTreeResultView *mMappingResult; MappingTreeResultModel *mResultModel; QPushButton *mAddMapping; QPushButton *mRemoveMapping; QPushButton *mClearMapping; QPushButton *mAddTree; }; class MappingInputDialog : public QDialog { Q_OBJECT public: explicit MappingInputDialog(QWidget *parent, Qt::WindowFlags f = 0); QString mappingName() const; bool createRoot() const; private: QPushButton *mOk; QPushButton *mCancel; QLineEdit *mEditor; QCheckBox *mIsRoot; }; 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; }; class MappingTreeProxy : public QSortFilterProxyModel { Q_OBJECT public: explicit MappingTreeProxy(QObject *parent = 0); public slots: void setFilter(const QString &filter); protected: virtual bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const; private: QRegExp mFilter; }; #endif // MAPPINGTREEWIDGET_H