Go to the documentation of this file.00001 #ifndef TREEVIEW_H
00002 #define TREEVIEW_H
00003
00004 #include <QWidget>
00005
00006 class TreeItem;
00007 class QSqlQueryModel;
00008 class QPushButton;
00009 class QComboBox;
00010
00014 class TreeItemSelectionBox : public QWidget
00015 {
00016 Q_OBJECT
00017 public:
00018 TreeItemSelectionBox(TreeItem *treeItem, QWidget * parent = 0);
00019
00020 private slots:
00021 void slot_commitButton_clicked();
00022 void setupModel(QSqlQueryModel *model);
00023
00024 signals:
00025 void signal_commitSelection(int newItemId, QString columnName);
00026 void signal_commitSelection(QString newPath);
00027
00028 private:
00029 QComboBox *selectionBox;
00030 QPushButton *commitSelection;
00031 TreeItem *treeItem;
00032 QString path;
00033 };
00034
00035 #include <QWidgetAction>
00036
00042 class TreeItemSetupAction : public QWidgetAction
00043 {
00044 Q_OBJECT
00045 public:
00046 TreeItemSetupAction(TreeItem *treeItem, QObject *parent = 0);
00047 TreeItemSelectionBox *defaultWidget();
00048
00049 private slots:
00050 void slot_executeAction(QString newPath);
00051
00052 private:
00053 TreeItem *m_treeItem;
00054 };
00055
00056 #include <QMenu>
00057
00058 class ProjectTreeModel;
00059 class QModelIndex;
00060
00064 class TreeViewMenu : public QMenu
00065 {
00066 Q_OBJECT
00067 public:
00068 TreeViewMenu(const QModelIndex &index, QWidget *parent = 0);
00069
00070 private:
00071 void AddSubMenu();
00072
00073 private slots:
00074 void slot_actionTriggered(QAction *action);
00075 void removeSelected();
00076
00077 private:
00078 ProjectTreeModel *m_model;
00079 TreeItem *m_treeItem;
00080 TreeItemSetupAction *m_action;
00081 const QModelIndex *index;
00082 };
00083
00084 #include <QStyledItemDelegate>
00085
00092 class TreeViewDelegate : public QStyledItemDelegate
00093 {
00094 Q_OBJECT
00095 public:
00096 TreeViewDelegate(QObject *parent = 0);
00097 QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
00098 const QModelIndex &index) const;
00099 void setEditorData(QWidget *editor, const QModelIndex &index) const;
00100 void setModelData(QWidget *editor, QAbstractItemModel *model,
00101 const QModelIndex &index) const;
00102 void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option,
00103 const QModelIndex &index) const;
00104 };
00105
00106 #include <QList>
00107
00108 #include "treeitem.h"
00109
00117 typedef QList<TreePath> TreePathList;
00118
00119 Q_DECLARE_METATYPE(TreePathList);
00120
00121 #include <QTreeView>
00122
00126 class ProjectTreeView : public QTreeView
00127 {
00128 Q_OBJECT
00129 public:
00130 ProjectTreeView(QWidget *parent = 0);
00131 ~ProjectTreeView();
00132
00133 virtual void setModel(QAbstractItemModel *model);
00134 ProjectTreeModel *model();
00135
00136 protected:
00137 void contextMenuEvent(QContextMenuEvent *e);
00138
00139 protected slots:
00140 virtual void onCollapse(const QModelIndex &index);
00141 virtual void onExpand(const QModelIndex &index);
00142
00143 private slots:
00144 void restoreExpandedItems();
00145 void saveExpandedItems();
00146
00147 private:
00148 TreePathList expandedTreePaths;
00149 };
00150
00151 #endif // TREEVIEW_H