1 /***************************************************************************
2     qgsuniquevaluewidgetwrapper.h
3      --------------------------------------
4     Date                 : 5.1.2014
5     Copyright            : (C) 2014 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 QGSUNIQUEVALUEWIDGETWRAPPER_H
17 #define QGSUNIQUEVALUEWIDGETWRAPPER_H
18 
19 #include "qgseditorwidgetwrapper.h"
20 
21 #include <QComboBox>
22 #include <QLineEdit>
23 #include "qgis_gui.h"
24 
25 SIP_NO_FILE
26 
27 /**
28  * \ingroup gui
29  * \brief Wraps a unique value widget. Will offer any value previously used for this field.
30  *
31  * Options:
32  * <ul>
33  * <li><b>Editable</b> <i>If TRUE the user can manually insert new (not yet used) values.</i></li>
34  * </ul>
35  * \note not available in Python bindings
36  */
37 
38 class GUI_EXPORT QgsUniqueValuesWidgetWrapper : public QgsEditorWidgetWrapper
39 {
40     Q_OBJECT
41   public:
42 
43     /**
44      * Constructor for QgsUniqueValuesWidgetWrapper.
45      *
46      * The \a layer and \a fieldIdx arguments specify the vector layer field associated with the wrapper.
47      *
48      * The \a editor argument indicates the editor widget to use with the wrapper. This can be NULLPTR if a
49      * new widget should be autogenerated.
50      *
51      * A \a parent widget for this widget wrapper and the created widget can also be specified.
52      */
53     explicit QgsUniqueValuesWidgetWrapper( QgsVectorLayer *layer, int fieldIdx, QWidget *editor = nullptr, QWidget *parent = nullptr );
54 
55     // QgsEditorWidgetWrapper interface
56   public:
57     QVariant value() const override;
58     void showIndeterminateState() override;
59 
60   protected:
61     QWidget *createWidget( QWidget *parent ) override;
62     void initWidget( QWidget *editor ) override;
63     bool valid() const override;
64 
65   private:
66     void updateValues( const QVariant &value, const QVariantList  & = QVariantList() ) override;
67 
68     QComboBox *mComboBox = nullptr;
69     QLineEdit *mLineEdit = nullptr;
70 };
71 
72 #endif // QGSUNIQUEVALUEWIDGETWRAPPER_H
73