QGIS API Documentation  2.7.0-Master
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
qgsenumerationwidgetwrapper.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsenumerationwidgetwrapper.cpp
3  --------------------------------------
4  Date : 5.1.2014
5  Copyright : (C) 2014 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 
17 
18 #include "qgsvectorlayer.h"
19 #include "qgsvectordataprovider.h"
20 
21 QgsEnumerationWidgetWrapper::QgsEnumerationWidgetWrapper( QgsVectorLayer* vl, int fieldIdx, QWidget* editor, QWidget* parent )
22  : QgsEditorWidgetWrapper( vl, fieldIdx, editor, parent )
23 {
24 }
25 
26 
28 {
29  QVariant value;
30 
31  if ( mComboBox )
32  value = mComboBox->itemData( mComboBox->currentIndex() );
33 
34  return value;
35 }
36 
37 QWidget* QgsEnumerationWidgetWrapper::createWidget( QWidget* parent )
38 {
39  return new QComboBox( parent );
40 }
41 
43 {
44  mComboBox = qobject_cast<QComboBox*>( editor );
45 
46  if ( mComboBox )
47  {
48  QStringList enumValues;
49  layer()->dataProvider()->enumValues( fieldIdx(), enumValues );
50 
51  Q_FOREACH ( const QString& s, enumValues )
52  {
53  mComboBox->addItem( s, s );
54  }
55  connect( mComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( valueChanged() ) );
56  }
57 }
58 
59 void QgsEnumerationWidgetWrapper::setValue( const QVariant& value )
60 {
61  if ( mComboBox )
62  {
63  mComboBox->setCurrentIndex( mComboBox->findData( value ) );
64  }
65 }
66 
void valueChanged()
Will call the value() method to determine the emitted value.
virtual void enumValues(int index, QStringList &enumList)
Returns the possible enum values of an attribute.
Manages an editor widget Widget and wrapper share the same parent.
QgsVectorLayer * layer()
Access the QgsVectorLayer, you are working on.
QWidget * createWidget(QWidget *parent)
This method should create a new widget with the provided parent.
void initWidget(QWidget *editor)
This method should initialize the editor widget with runtime data.
QgsEnumerationWidgetWrapper(QgsVectorLayer *vl, int fieldIdx, QWidget *editor=0, QWidget *parent=0)
void setValue(const QVariant &value)
QVariant value()
Will be used to access the widget's value.
int fieldIdx()
Access the field index.
QgsVectorDataProvider * dataProvider()
Returns the data provider.
Represents a vector layer which manages a vector based data sets.