QGIS API Documentation  2.99.0-Master (37c43df)
qgseditorwidgetfactory.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgseditorwidgetfactory.h
3  --------------------------------------
4  Date : 21.4.2013
5  Copyright : (C) 2013 Matthias Kuhn
6  Email : matthias at opengis 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 QGSEDITORWIDGETFACTORY_H
17 #define QGSEDITORWIDGETFACTORY_H
18 
19 #include <QDomNode>
20 #include <QMap>
21 #include <QString>
22 #include <QVariant>
23 #include "qgseditorwidgetconfig.h"
24 
27 class QgsVectorLayer;
28 class QWidget;
30 
40 class GUI_EXPORT QgsEditorWidgetFactory
41 {
42  public:
43 
49  QgsEditorWidgetFactory( const QString& name );
50 
51  virtual ~QgsEditorWidgetFactory();
52 
65  virtual QgsEditorWidgetWrapper* create( QgsVectorLayer* vl, int fieldIdx, QWidget* editor, QWidget* parent ) const = 0;
66 
67  virtual QgsSearchWidgetWrapper* createSearchWidget( QgsVectorLayer* vl, int fieldIdx, QWidget* parent ) const;
68 
74  QString name();
75 
86  virtual QgsEditorConfigWidget* configWidget( QgsVectorLayer* vl, int fieldIdx, QWidget* parent ) const = 0;
87 
97  QgsEditorWidgetConfig readEditorConfig( const QDomElement& configElement, QgsVectorLayer* layer, int fieldIdx );
98 
108  virtual void writeConfig( const QgsEditorWidgetConfig& config, QDomElement& configElement, QDomDocument& doc, const QgsVectorLayer* layer, int fieldIdx );
109 
119  inline bool supportsField( const QgsVectorLayer* vl, int fieldIdx ) { return fieldScore( vl, fieldIdx ) > 0; }
120 
129  virtual QHash<const char*, int> supportedWidgetTypes() { return QHash<const char*, int>(); }
130 
142  virtual QString representValue( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config, const QVariant& cache, const QVariant& value ) const;
143 
157  virtual QVariant sortValue( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config, const QVariant& cache, const QVariant& value ) const;
158 
167  virtual Qt::AlignmentFlag alignmentFlag( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config ) const;
168 
178  virtual QVariant createCache( QgsVectorLayer* vl, int fieldIdx, const QgsEditorWidgetConfig& config );
179 
189  virtual QgsEditorWidgetConfig readConfig( const QDomElement& configElement, QgsVectorLayer* layer, int fieldIdx );
190 
209  virtual unsigned int fieldScore( const QgsVectorLayer* vl, int fieldIdx ) const;
210 
211  protected:
212 
216  static void config2xml( const QgsEditorWidgetConfig& config, QDomElement& configElement, const QString& fieldName );
217 
221  static void xml2config( const QDomElement& configElement, QgsEditorWidgetConfig& config, const QString& fieldName );
222 
223  private:
224  QString mName;
225 };
226 
227 #endif // QGSEDITORWIDGETFACTORY_H
Manages an editor widget Widget and wrapper share the same parent.
This class should be subclassed for every configurable editor widget type.
Manages an editor widget Widget and wrapper share the same parent.
QVariantMap QgsEditorWidgetConfig
Holds a set of configuration parameters for a editor widget wrapper.
Every attribute editor widget needs a factory, which inherits this class.
bool supportsField(const QgsVectorLayer *vl, int fieldIdx)
Check if this editor widget type supports a certain field.
virtual QHash< const char *, int > supportedWidgetTypes()
Returns a list of widget types which this editor widget supports.
Represents a vector layer which manages a vector based data sets.