QGIS API Documentation  2.8.2-Wien
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups 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  , mComboBox( NULL )
24 {
25 }
26 
27 
29 {
30  QVariant value;
31 
32  if ( mComboBox )
33  value = mComboBox->itemData( mComboBox->currentIndex() );
34 
35  return value;
36 }
37 
38 QWidget* QgsEnumerationWidgetWrapper::createWidget( QWidget* parent )
39 {
40  return new QComboBox( parent );
41 }
42 
44 {
45  mComboBox = qobject_cast<QComboBox*>( editor );
46 
47  if ( mComboBox )
48  {
49  QStringList enumValues;
50  layer()->dataProvider()->enumValues( fieldIdx(), enumValues );
51 
52  Q_FOREACH ( const QString& s, enumValues )
53  {
54  mComboBox->addItem( s, s );
55  }
56  connect( mComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( valueChanged() ) );
57  }
58 }
59 
60 void QgsEnumerationWidgetWrapper::setValue( const QVariant& value )
61 {
62  if ( mComboBox )
63  {
64  mComboBox->setCurrentIndex( mComboBox->findData( value ) );
65  }
66 }
67