QGIS API Documentation  2.8.2-Wien
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
qgsrelationeditorwidget.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsrelationeditor.h
3  --------------------------------------
4  Date : 17.5.2013
5  Copyright : (C) 2013 Matthias Kuhn
6  Email : matthias dot kuhn at gmx dot ch
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 #ifndef QGSRELATIONEDITOR_H
17 #define QGSRELATIONEDITOR_H
18 
19 #include <QWidget>
20 #include <QToolButton>
21 #include <QButtonGroup>
22 #include <QGridLayout>
23 
25 #include "qgscollapsiblegroupbox.h"
26 #include "qgsdualview.h"
27 #include "qgsrelation.h"
28 
29 class QgsFeature;
31 class QgsVectorLayer;
33 
35 {
36  Q_OBJECT
37  Q_PROPERTY( QString qgisRelation READ qgisRelation WRITE setQgisRelation )
38  Q_PROPERTY( QgsDualView::ViewMode viewMode READ viewMode WRITE setViewMode )
39 
40  public:
44  QgsRelationEditorWidget( QWidget* parent = NULL );
45 
47  void setViewMode( QgsDualView::ViewMode mode );
48  QgsDualView::ViewMode viewMode() {return mViewMode;}
49 
52  void setQgisRelation( QString qgisRelationId ) { mRelationId = qgisRelationId; }
53  QString qgisRelation() { return mRelationId; } //property( "qgisRelation" ).toString()
54 
55  void setRelationFeature( const QgsRelation& relation, const QgsFeature& feature );
56 
57  void setEditorContext( const QgsAttributeEditorContext& context );
58 
59  private slots:
60  void setViewMode( int mode ) {setViewMode( static_cast<QgsDualView::ViewMode>( mode ) );}
61  void referencingLayerEditingToggled();
62 
63  void addFeature();
64  void linkFeature();
65  void deleteFeature();
66  void unlinkFeature();
67  void saveEdits();
68  void toggleEditing( bool state );
69  void onCollapsedStateChanged( bool collapsed );
70 
71  private:
72  QgsDualView* mDualView;
73  QgsDualView::ViewMode mViewMode;
74  QgsGenericFeatureSelectionManager* mFeatureSelectionMgr;
75  QgsAttributeEditorContext mEditorContext;
76  QgsRelation mRelation;
77  QString mRelationId;
78  QgsFeature mFeature;
79 
80  QToolButton* mToggleEditingButton;
81  QToolButton* mSaveEditsButton;
82  QToolButton* mAddFeatureButton;
83  QToolButton* mDeleteFeatureButton;
84  QToolButton* mLinkFeatureButton;
85  QToolButton* mUnlinkFeatureButton;
86  QToolButton* mFormViewButton;
87  QToolButton* mTableViewButton;
88  QGridLayout* mRelationLayout;
89  QButtonGroup* mViewModeButtonGroup;
90 
91  bool mInitialized;
92 };
93 
94 #endif // QGSRELATIONEDITOR_H