-
-
Notifications
You must be signed in to change notification settings - Fork 3k
/
qgsvaluemapwidgetwrapper.cpp
87 lines (71 loc) · 2.44 KB
/
qgsvaluemapwidgetwrapper.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/***************************************************************************
qgsvaluemapwidgetwrapper.cpp
--------------------------------------
Date : 5.1.2014
Copyright : (C) 2014 Matthias Kuhn
Email : matthias at opengis dot ch
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include "qgsvaluemapwidgetwrapper.h"
#include "qgsvaluemapconfigdlg.h"
#include <QSettings>
QgsValueMapWidgetWrapper::QgsValueMapWidgetWrapper( QgsVectorLayer* vl, int fieldIdx, QWidget* editor, QWidget* parent )
: QgsEditorWidgetWrapper( vl, fieldIdx, editor, parent )
, mComboBox( nullptr )
{
}
QVariant QgsValueMapWidgetWrapper::value() const
{
QVariant v;
if ( mComboBox )
v = mComboBox->itemData( mComboBox->currentIndex() );
if ( v == QString( VALUEMAP_NULL_TEXT ) )
v = QVariant( field().type() );
return v;
}
void QgsValueMapWidgetWrapper::showIndeterminateState()
{
if ( mComboBox )
{
whileBlocking( mComboBox )->setCurrentIndex( -1 );
}
}
QWidget* QgsValueMapWidgetWrapper::createWidget( QWidget* parent )
{
return new QComboBox( parent );
}
void QgsValueMapWidgetWrapper::initWidget( QWidget* editor )
{
mComboBox = qobject_cast<QComboBox*>( editor );
if ( mComboBox )
{
const QgsEditorWidgetConfig cfg = config();
QgsEditorWidgetConfig::ConstIterator it = cfg.constBegin();
while ( it != cfg.constEnd() )
{
mComboBox->addItem( it.key(), it.value() );
++it;
}
connect( mComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( valueChanged() ) );
}
}
bool QgsValueMapWidgetWrapper::valid() const
{
return mComboBox;
}
void QgsValueMapWidgetWrapper::setValue( const QVariant& value )
{
QString v;
if ( value.isNull() )
v = QString( VALUEMAP_NULL_TEXT );
else
v = value.toString();
if ( mComboBox )
mComboBox->setCurrentIndex( mComboBox->findData( v ) );
}