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
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef PROPERTY_MODEL_H
00030 #define PROPERTY_MODEL_H
00031
00032 #include <QAbstractItemModel>
00033
00034 namespace rviz
00035 {
00036
00037 class Property;
00038
00039 class PropertyTreeModel: public QAbstractItemModel
00040 {
00041 Q_OBJECT
00042 public:
00048 PropertyTreeModel( Property* root_property, QObject* parent = 0 );
00049
00052 virtual ~PropertyTreeModel();
00053
00054 void setDragDropClass( const QString& drag_drop_class ) { drag_drop_class_ = drag_drop_class; }
00055
00056
00057 virtual QVariant data( const QModelIndex &index, int role ) const;
00058 virtual QVariant headerData( int section, Qt::Orientation orientation,
00059 int role = Qt::DisplayRole ) const;
00060
00061 virtual QModelIndex index( int row, int column,
00062 const QModelIndex &parent = QModelIndex() ) const;
00063 virtual QModelIndex parent( const QModelIndex &index ) const;
00064
00067 QModelIndex parentIndex( const Property* child ) const;
00068
00070 virtual int rowCount( const QModelIndex &parent = QModelIndex() ) const;
00071
00074 virtual int columnCount( const QModelIndex &parent = QModelIndex() ) const { return 2; }
00075
00076
00077 virtual Qt::ItemFlags flags( const QModelIndex &index ) const;
00078 virtual bool setData( const QModelIndex &index, const QVariant &value,
00079 int role = Qt::EditRole );
00080
00081 virtual Qt::DropActions supportedDropActions() const { return Qt::MoveAction; }
00082
00089 virtual QMimeData* mimeData( const QModelIndexList& indexes ) const;
00090
00098 virtual bool dropMimeData( const QMimeData* data,
00099 Qt::DropAction action,
00100 int destination_row, int destination_column,
00101 const QModelIndex& destination_parent );
00102
00105 virtual QStringList mimeTypes () const;
00106
00107 Property* getRoot() const { return root_property_; }
00108
00109 QModelIndex indexOf( Property* property ) const;
00110
00111 void emitDataChanged( Property* property );
00112
00113 void beginInsert( Property* parent_property, int row_within_parent, int count = 1 );
00114 void endInsert();
00115
00116 void beginRemove( Property* parent_property, int row_within_parent, int count = 1 );
00117 void endRemove();
00118
00121 Property* getProp( const QModelIndex& index ) const;
00122
00124 void emitPropertyHiddenChanged( const Property* property ) { Q_EMIT propertyHiddenChanged( property ); }
00125
00127 void expandProperty( Property* property );
00128
00130 void collapseProperty( Property* property );
00131
00134 void printPersistentIndices();
00135
00136 Q_SIGNALS:
00138 void propertyHiddenChanged( const Property* property );
00139
00141 void configChanged();
00142
00144 void expand( const QModelIndex& index );
00145
00147 void collapse( const QModelIndex& index );
00148
00149 private:
00150 Property* root_property_;
00151 QString drag_drop_class_;
00152 };
00153
00154 }
00155
00156 #endif // PROPERTY_MODEL_H