Kross
model.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef KROSS_MODEL_H
00021 #define KROSS_MODEL_H
00022
00023 #include <kross/core/krossconfig.h>
00024
00025 #include <QtCore/QModelIndex>
00026 #include <QtGui/QSortFilterProxyModel>
00027
00028 namespace Kross {
00029
00030
00031 class Action;
00032 class ActionCollection;
00033 class ActionCollectionModelItem;
00034
00046 class KROSSUI_EXPORT ActionCollectionModel : public QAbstractItemModel
00047 {
00048 Q_OBJECT
00049 public:
00050 enum Mode {
00051 None = 0,
00052 Icons = 1,
00053 ToolTips = 2,
00054 UserCheckable = 4
00055
00056 };
00057
00058 explicit ActionCollectionModel(QObject* parent, ActionCollection* collection = 0, Mode mode = Mode(Icons|ToolTips));
00059 virtual ~ActionCollectionModel();
00060
00061 virtual int columnCount(const QModelIndex& parent = QModelIndex()) const;
00062 virtual int rowCount(const QModelIndex& parent = QModelIndex()) const;
00063 virtual QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const;
00064 virtual QModelIndex parent(const QModelIndex& index) const;
00065 virtual Qt::ItemFlags flags(const QModelIndex &index) const;
00066 virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
00067 virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
00068
00069 virtual bool insertRows(int row, int count, const QModelIndex& parent = QModelIndex());
00070 virtual bool removeRows(int row, int count, const QModelIndex& parent = QModelIndex());
00071 virtual bool insertColumns(int column, int count, const QModelIndex& parent = QModelIndex());
00072 virtual bool removeColumns(int column, int count, const QModelIndex& parent = QModelIndex());
00073
00074
00075 virtual QStringList mimeTypes() const;
00076 virtual QMimeData* mimeData(const QModelIndexList& indexes) const;
00077 virtual bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent);
00078
00079 virtual Qt::DropActions supportedDropActions() const;
00080
00081 QModelIndex indexForCollection( ActionCollection *collection ) const;
00082 QModelIndex indexForAction( Action *action ) const;
00084 ActionCollection *rootCollection() const;
00085
00090 static Action* action(const QModelIndex& index);
00091
00096 static ActionCollection* collection(const QModelIndex& index);
00097
00098 protected:
00100 int rowNumber( ActionCollection *collection ) const;
00101
00102 private Q_SLOTS:
00103 void slotUpdated();
00104
00105 void slotDataChanged( ActionCollection* );
00106 void slotDataChanged( Action* );
00107
00108 void slotCollectionToBeInserted( ActionCollection* child, ActionCollection* parent );
00109 void slotCollectionInserted( ActionCollection* child, ActionCollection* parent );
00110 void slotCollectionToBeRemoved( ActionCollection* child, ActionCollection* parent );
00111 void slotCollectionRemoved( ActionCollection* child, ActionCollection* parent );
00112
00113 void slotActionToBeInserted( Action* child, ActionCollection* parent );
00114 void slotActionInserted( Action* child, ActionCollection* parent );
00115 void slotActionToBeRemoved( Action* child, ActionCollection* parent );
00116 void slotActionRemoved( Action* child, ActionCollection* parent );
00117 private:
00119 class Private;
00121 Private* const d;
00122 };
00123
00128 class KROSSUI_EXPORT ActionCollectionProxyModel : public QSortFilterProxyModel
00129 {
00130 public:
00131 explicit ActionCollectionProxyModel(QObject* parent, ActionCollectionModel* model = 0);
00132 virtual ~ActionCollectionProxyModel();
00133
00134 private:
00136 virtual void setSourceModel(QAbstractItemModel* sourceModel);
00138 virtual bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const;
00139 };
00140
00141 }
00142
00143 #endif
00144