QGIS API Documentation  2.9.0-Master
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
qgsclassificationwidgetwrapper.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsclassificationwidgetwrapper.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 
19 #include "qgsvectorlayer.h"
20 
21 QgsClassificationWidgetWrapper::QgsClassificationWidgetWrapper( QgsVectorLayer* vl, int fieldIdx, QWidget* editor, QWidget* parent )
22  : QgsEditorWidgetWrapper( vl, fieldIdx, editor, parent )
23  , mComboBox( NULL )
24 {
25 }
26 
28 {
29  return mComboBox->itemData( mComboBox->currentIndex() );
30 }
31 
33 {
34  return new QComboBox( parent );
35 }
36 
38 {
39  mComboBox = qobject_cast<QComboBox*>( editor );
40 
41  if ( mComboBox )
42  {
43  const QgsCategorizedSymbolRendererV2 *csr = dynamic_cast<const QgsCategorizedSymbolRendererV2 *>( layer()->rendererV2() );
44  if ( csr )
45  {
46  const QgsCategoryList categories = csr->categories();
47  for ( int i = 0; i < categories.size(); i++ )
48  {
49  QString label = categories[i].label();
50  QString value = categories[i].value().toString();
51  if ( label.isEmpty() )
52  label = value;
53 
54  mComboBox->addItem( label, value );
55  }
56  }
57 
58  connect( mComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( valueChanged() ) );
59  }
60 }
61 
62 void QgsClassificationWidgetWrapper::setValue( const QVariant& value )
63 {
64  mComboBox->setCurrentIndex( mComboBox->findData( value ) );
65 }
QgsFeatureRendererV2 * rendererV2()
Return renderer V2.
const QgsCategoryList & categories() const
void valueChanged()
Will call the value() method to determine the emitted value.
QWidget * createWidget(QWidget *parent) override
This method should create a new widget with the provided parent.
Manages an editor widget Widget and wrapper share the same parent.
QgsVectorLayer * layer()
Access the QgsVectorLayer, you are working on.
void initWidget(QWidget *editor) override
This method should initialize the editor widget with runtime data.
QList< QgsRendererCategoryV2 > QgsCategoryList
QgsClassificationWidgetWrapper(QgsVectorLayer *vl, int fieldIdx, QWidget *editor=0, QWidget *parent=0)
QVariant value() override
Will be used to access the widget's value.
void setValue(const QVariant &value) override
Represents a vector layer which manages a vector based data sets.