@@ -21,6 +21,13 @@ QgsDateTimeEditConfig::QgsDateTimeEditConfig( QgsVectorLayer* vl, int fieldIdx,
21
21
{
22
22
setupUi ( this );
23
23
24
+ mFieldFormatComboBox ->clear ();
25
+ mFieldFormatComboBox ->addItem ( tr ( " Date" ), QGSDATETIMEEDIT_DATEFORMAT );
26
+ mFieldFormatComboBox ->addItem ( tr ( " Time" ), QGSDATETIMEEDIT_TIMEFORMAT );
27
+ mFieldFormatComboBox ->addItem ( tr ( " Date time" ), QGSDATETIMEEDIT_DATETIMEFORMAT );
28
+ mFieldFormatComboBox ->addItem ( tr ( " ISO date time" ), QGSDATETIMEEDIT_ISODATETIMEFORMAT );
29
+ mFieldFormatComboBox ->addItem ( tr ( " Custom" ), QString () );
30
+
24
31
mDemoDateTimeEdit ->setDateTime ( QDateTime::currentDateTime () );
25
32
26
33
connect ( mDisplayFormatEdit , SIGNAL ( textChanged ( QString ) ), this , SLOT ( updateDemoWidget () ) );
@@ -53,46 +60,50 @@ void QgsDateTimeEditConfig::updateDemoWidget()
53
60
54
61
void QgsDateTimeEditConfig::updateFieldFormat ( int idx )
55
62
{
56
- if ( idx == 0 )
57
- {
58
- mFieldFormatEdit ->setText ( QGSDATETIMEEDIT_DATEFORMAT );
59
- }
60
- else if ( idx == 1 )
61
- {
62
- mFieldFormatEdit ->setText ( QGSDATETIMEEDIT_TIMEFORMAT );
63
- }
64
- else if ( idx == 2 )
63
+ const QString format = mFieldFormatComboBox ->itemData ( idx ).toString ();
64
+ bool custom = format.isEmpty ();
65
+ if ( !custom )
65
66
{
66
- mFieldFormatEdit ->setText ( QGSDATETIMEEDIT_DATETIMEFORMAT );
67
+ mFieldFormatEdit ->setText ( format );
67
68
}
68
69
69
- mFieldFormatEdit ->setVisible ( idx == 3 );
70
- mFieldHelpToolButton ->setVisible ( idx == 3 );
70
+ mFieldFormatEdit ->setEnabled ( custom );
71
+ mFieldHelpToolButton ->setVisible ( custom );
71
72
if ( mFieldHelpToolButton ->isHidden () && mDisplayHelpToolButton ->isHidden () )
72
73
{
73
74
mHelpScrollArea ->setVisible ( false );
74
75
}
75
76
}
76
77
77
78
79
+
78
80
void QgsDateTimeEditConfig::updateDisplayFormat ( const QString& fieldFormat )
79
81
{
80
82
if ( mDisplayFormatComboBox ->currentIndex () == 0 )
81
83
{
82
- mDisplayFormatEdit ->setText ( fieldFormat );
84
+ // i.e. display format is default
85
+ if ( mFieldFormatComboBox ->itemData ( mFieldFormatComboBox ->currentIndex () ) == QGSDATETIMEEDIT_ISODATETIMEFORMAT )
86
+ {
87
+ mDisplayFormatEdit ->setText ( QGSDATETIMEEDIT_ISODISPLAYFORMAT );
88
+ }
89
+ else
90
+ {
91
+ mDisplayFormatEdit ->setText ( fieldFormat );
92
+ }
83
93
}
84
94
}
85
95
86
96
87
97
void QgsDateTimeEditConfig::displayFormatChanged ( int idx )
88
98
{
89
- mDisplayFormatEdit ->setEnabled ( idx == 1 );
90
- mDisplayHelpToolButton ->setVisible ( idx == 1 );
99
+ const bool custom = idx == 1 ;
100
+ mDisplayFormatEdit ->setEnabled ( custom );
101
+ mDisplayHelpToolButton ->setVisible ( custom );
91
102
if ( mFieldHelpToolButton ->isHidden () && mDisplayHelpToolButton ->isHidden () )
92
103
{
93
104
mHelpScrollArea ->setVisible ( false );
94
105
}
95
- if ( idx == 0 )
106
+ if ( !custom )
96
107
{
97
108
mDisplayFormatEdit ->setText ( mFieldFormatEdit ->text () );
98
109
}
@@ -110,6 +121,7 @@ QgsEditorWidgetConfig QgsDateTimeEditConfig::config()
110
121
{
111
122
QgsEditorWidgetConfig myConfig;
112
123
124
+ myConfig.insert ( " field_iso_format" , mFieldFormatEdit ->text () == QGSDATETIMEEDIT_ISODATETIMEFORMAT );
113
125
myConfig.insert ( " field_format" , mFieldFormatEdit ->text () );
114
126
myConfig.insert ( " display_format" , mDisplayFormatEdit ->text () );
115
127
myConfig.insert ( " calendar_popup" , mCalendarPopupCheckBox ->isChecked () );
@@ -126,14 +138,15 @@ void QgsDateTimeEditConfig::setConfig( const QgsEditorWidgetConfig &config )
126
138
const QString fieldFormat = config[ " field_format" ].toString ();
127
139
mFieldFormatEdit ->setText ( fieldFormat );
128
140
129
- if ( fieldFormat == QGSDATETIMEEDIT_DATEFORMAT )
130
- mFieldFormatComboBox ->setCurrentIndex ( 0 );
131
- else if ( fieldFormat == QGSDATETIMEEDIT_TIMEFORMAT )
132
- mFieldFormatComboBox ->setCurrentIndex ( 1 );
133
- else if ( fieldFormat == QGSDATETIMEEDIT_DATETIMEFORMAT )
134
- mFieldFormatComboBox ->setCurrentIndex ( 2 );
141
+ const int idx = mFieldFormatComboBox ->findData ( fieldFormat );
142
+ if ( idx >= 0 )
143
+ {
144
+ mFieldFormatComboBox ->setCurrentIndex ( idx );
145
+ }
135
146
else
136
- mFieldFormatComboBox ->setCurrentIndex ( 3 );
147
+ {
148
+ mFieldFormatComboBox ->setCurrentIndex ( 4 );
149
+ }
137
150
}
138
151
139
152
if ( config.contains ( " display_format" ) )
0 commit comments