QGIS API Documentation 3.99.0-Master (e9821da5c6b)
Loading...
Searching...
No Matches
qgsdatetimeeditconfig.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsdatetimeeditconfig.cpp
3 --------------------------------------
4 Date : 03.2014
5 Copyright : (C) 2014 Denis Rouzaud
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
20#include "qgsvectorlayer.h"
21
22#include <QString>
23
24#include "moc_qgsdatetimeeditconfig.cpp"
25
26using namespace Qt::StringLiterals;
27
29 : QgsEditorConfigWidget( vl, fieldIdx, parent )
30{
31 setupUi( this );
32
33 mFieldFormatComboBox->clear();
34 mFieldFormatComboBox->addItem( tr( "Date" ), QgsDateTimeFieldFormatter::DATE_FORMAT );
35 mFieldFormatComboBox->addItem( tr( "Time" ), QgsDateTimeFieldFormatter::TIME_FORMAT );
36 mFieldFormatComboBox->addItem( tr( "Date Time" ), QgsDateTimeFieldFormatter::DATETIME_FORMAT );
37 mFieldFormatComboBox->addItem( tr( "ISO Date Time" ), QgsDateTimeFieldFormatter::QT_ISO_FORMAT );
38 mFieldFormatComboBox->addItem( tr( "Custom" ), QString() );
39
40 mHelpLabel->setTextFormat( Qt::RichText );
41 mHelpLabel->setText(
42 QStringLiteral(
43 "<html><head/><body>"
44 "<table border=\"0\" style=\"margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;\" cellspacing=\"2\" cellpadding=\"0\" bgcolor=\"#f6f6f6\">"
45 "<thead><tr>"
46 "<td style=\"vertical-align:top; padding-left:10; padding-right:15; padding-top:5; padding-bottom:5;\">"
47 "<p align=\"left\"><span style=\"font-family:'Open Sans,sans-serif'; font-size:12px; font-weight:600; color:#363534;\">"
48 )
49 + tr( "Qt ISO Date format" )
50 + QStringLiteral( "</span></p>"
51 "</td>"
52 "</tr></thead>"
53 "<tr>"
54 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
55 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">"
56 "<a href=\"http://www.iso.org/iso/catalogue_detail?csnumber=40874\">" ) //#spellok
57 + tr( "ISO 8601" )
58 + u"</a> "_s
59 + tr( "extended format: either <code>yyyy-MM-dd</code> for dates or <code>yyyy-MM-ddTHH:mm:ss</code> (e.g. 2017-07-24T15:46:29), or with a time-zone suffix (Z for UTC otherwise an offset as [+|-]HH:mm) where appropriate for combined dates and times." )
60 + QStringLiteral(
61 "</span></p>"
62 "</td>"
63 "</tr>"
64 "</table>"
65 "<br>"
66 "<table border=\"0\" style=\"margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;\" cellspacing=\"2\" cellpadding=\"0\" bgcolor=\"#f6f6f6\">"
67 "<thead><tr>"
68 "<td style=\"vertical-align:top; padding-left:10; padding-right:15; padding-top:5; padding-bottom:5;\">"
69 "<p align=\"center\"><span style=\"font-family:'Open Sans,sans-serif'; font-size:12px; font-weight:600; color:#363534;\">"
70 )
71 + tr( "Format" )
72 + QStringLiteral( "</span></p>"
73 "</td>"
74 "<td style=\"vertical-align:top; padding-left:10; padding-right:15; padding-top:5; padding-bottom:5;\">"
75 "<p align=\"center\"><span style=\"font-family:'Open Sans,sans-serif'; font-size:12px; font-weight:600; color:#363534;\">" )
76 + tr( "Examples result" )
77 + QStringLiteral( "</span></p>"
78 "</td>"
79 "</tr></thead>"
80 "<tr>"
81 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
82 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">dd.MM.yyyy</span></p>"
83 "</td>"
84 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
85 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">21.05.2001</span></p>"
86 "</td>"
87 "</tr>"
88 "<tr>"
89 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
90 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">ddd MMMM d yy</span></p>"
91 "</td>"
92 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
93 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">Tue May 21 01</span></p>"
94 "</td>"
95 "</tr>"
96 "<tr>"
97 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
98 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">hh:mm:ss.zzz</span></p>"
99 "</td>"
100 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
101 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">14:13:09.042</span></p>"
102 "</td>"
103 "</tr>"
104 "<tr>"
105 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
106 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">h:m:s ap</span></p>"
107 "</td>"
108 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
109 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">2:13:9 pm</span></p>"
110 "</td>"
111 "</tr>"
112 "</table>"
113 "<p><br/></p>"
114 "<table border=\"0\" style=\"margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;\" cellspacing=\"2\" cellpadding=\"0\" bgcolor=\"#f6f6f6\">"
115 "<thead><tr>"
116 "<td style=\"vertical-align:top; padding-left:10; padding-right:15; padding-top:5; padding-bottom:5;\">"
117 "<p align=\"center\"><span style=\"font-family:'Open Sans,sans-serif'; font-size:12px; font-weight:600; color:#363534;\">" )
118 + tr( "Expression" )
119 + QStringLiteral( "</span></p>"
120 "</td>"
121 "<td style=\"vertical-align:top; padding-left:10; padding-right:15; padding-top:5; padding-bottom:5;\">"
122 "<p align=\"center\"><span style=\"font-family:'Open Sans,sans-serif'; font-size:12px; font-weight:600; color:#363534;\">" )
123 + tr( "Date output" )
124 + QStringLiteral( "</span></p>"
125 "</td>"
126 "</tr></thead>"
127 "<tr>"
128 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
129 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">d</span></p>"
130 "</td>"
131 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
132 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">" )
133 + tr( "the day as number without a leading zero (1 to 31)" )
134 + QStringLiteral( "</span></p>"
135 "</td>"
136 "</tr>"
137 "<tr>"
138 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
139 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">dd</span></p>"
140 "</td>"
141 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
142 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">" )
143 + tr( "the day as number with a leading zero (01 to 31)" )
144 + QStringLiteral( "</span></p>"
145 "</td>"
146 "</tr>"
147 "<tr>"
148 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
149 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">ddd</span></p>"
150 "</td>"
151 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
152 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">" )
153 + tr( "the abbreviated localized day name (e.g. 'Mon' to 'Sun'). Uses the system locale to localize the name, i.e. " )
154 + QStringLiteral( "</span><a href=\"http://qt-project.org/doc/qt-5/qlocale.html#system\"><span style=\"font-family:'Arial,Open Sans,sans-serif'; font-size:12px; font-weight:600; text-decoration: underline; color:#00732f;\">QLocale</span></a><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e;\">().</span></p>"
155 "</td>"
156 "</tr>"
157 "<tr>"
158 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
159 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">dddd</span></p>"
160 "</td>"
161 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
162 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">" )
163 + tr( "the long localized day name (e.g. 'Monday' to '" )
164 + u"</span><a href=\"http://qt-project.org/doc/qt-5/qt.html#DayOfWeek-enum\"><span style=\"font-family:'Arial,Open Sans,sans-serif'; font-size:12px; font-weight:600; text-decoration: underline; color:#00732f;\">Qt::Sunday</span></a><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e;\">')."_s
165 + tr( "Uses the system locale to localize the name, i.e. " )
166 + QStringLiteral( "</span><a href=\"http://qt-project.org/doc/qt-5/qlocale.html#system\"><span style=\"font-family:'Arial,Open Sans,sans-serif'; font-size:12px; font-weight:600; text-decoration: underline; color:#00732f;\">QLocale</span></a><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e;\">().</span></p>"
167 "</td>"
168 "</tr>"
169 "<tr>"
170 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
171 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">M</span></p>"
172 "</td>"
173 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
174 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">" )
175 + tr( "the month as number without a leading zero (1-12)" )
176 + QStringLiteral( "</span></p>"
177 "</td>"
178 "</tr>"
179 "<tr>"
180 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
181 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">MM</span></p>"
182 "</td>"
183 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
184 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">" )
185 + tr( "the month as number with a leading zero (01-12)" )
186 + QStringLiteral( "</span></p>"
187 "</td>"
188 "</tr>"
189 "<tr>"
190 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
191 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">MMM</span></p>"
192 "</td>"
193 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
194 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">" )
195 + tr( "the abbreviated localized month name (e.g. 'Jan' to 'Dec'). Uses the system locale to localize the name, i.e." )
196 + QStringLiteral( "</span><a href=\"http://qt-project.org/doc/qt-5/qlocale.html#system\"><span style=\"font-family:'Arial,Open Sans,sans-serif'; font-size:12px; font-weight:600; text-decoration: underline; color:#00732f;\">QLocale</span></a><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e;\">().</span></p>"
197 "</td>"
198 "</tr>"
199 "<tr>"
200 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
201 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">MMMM</span></p>"
202 "</td>"
203 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
204 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">" )
205 + tr( "the long localized month name (e.g. 'January' to 'December'). Uses the system locale to localize the name, i.e." )
206 + QStringLiteral( "</span><a href=\"http://qt-project.org/doc/qt-5/qlocale.html#system\"><span style=\"font-family:'Arial,Open Sans,sans-serif'; font-size:12px; font-weight:600; text-decoration: underline; color:#00732f;\">QLocale</span></a><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e;\">().</span></p>"
207 "</td>"
208 "</tr>"
209 "<tr>"
210 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
211 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">yy</span></p>"
212 "</td>"
213 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
214 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">" )
215 + tr( "the year as two digit number (00-99)" )
216 + QStringLiteral( "</span></p>"
217 "</td>"
218 "</tr>"
219 "<tr>"
220 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
221 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">yyyy</span></p>"
222 "</td>"
223 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
224 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">" )
225 + tr( "the year as four digit number" )
226 + QStringLiteral( "</span></p>"
227 "</td>"
228 "</tr>"
229 "</table>"
230 "<p><br/></p>"
231 "<table border=\"0\" style=\"margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;\" cellspacing=\"2\" cellpadding=\"0\" bgcolor=\"#f6f6f6\">"
232 "<thead><tr>"
233 "<td style=\"vertical-align:top; padding-left:10; padding-right:15; padding-top:5; padding-bottom:5;\">"
234 "<p align=\"center\"><span style=\"font-family:'Open Sans,sans-serif'; font-size:12px; font-weight:600; color:#363534;\">" )
235 + tr( "Expression" )
236 + QStringLiteral( "</span></p>"
237 "</td>"
238 "<td style=\"vertical-align:top; padding-left:10; padding-right:15; padding-top:5; padding-bottom:5;\">"
239 "<p align=\"center\"><span style=\"font-family:'Open Sans,sans-serif'; font-size:12px; font-weight:600; color:#363534;\">" )
240 + tr( "Time output" )
241 + QStringLiteral( "</span></p>"
242 "</td>"
243 "</tr></thead>"
244 "<tr>"
245 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
246 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">h</span></p>"
247 "</td>"
248 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
249 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">" )
250 + tr( "the hour without a leading zero (0 to 23 or 1 to 12 if AM/PM display)" )
251 + QStringLiteral( "</span></p>"
252 "</td>"
253 "</tr>"
254 "<tr>"
255 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
256 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">hh</span></p>"
257 "</td>"
258 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
259 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">" )
260 + tr( "the hour with a leading zero (00 to 23 or 01 to 12 if AM/PM display)" )
261 + QStringLiteral( "</span></p>"
262 "</td>"
263 "</tr>"
264 "<tr>"
265 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
266 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">H</span></p>"
267 "</td>"
268 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
269 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">" )
270 + tr( "the hour without a leading zero (0 to 23, even with AM/PM display)" )
271 + QStringLiteral( "</span></p>"
272 "</td>"
273 "</tr>"
274 "<tr>"
275 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
276 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">HH</span></p>"
277 "</td>"
278 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
279 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">" )
280 + tr( "the hour with a leading zero (00 to 23, even with AM/PM display)" )
281 + QStringLiteral( "</span></p>"
282 "</td>"
283 "</tr>"
284 "<tr>"
285 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
286 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">m</span></p>"
287 "</td>"
288 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
289 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">" )
290 + tr( "the minute without a leading zero (0 to 59)" )
291 + QStringLiteral( "</span></p>"
292 "</td>"
293 "</tr>"
294 "<tr>"
295 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
296 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">mm</span></p>"
297 "</td>"
298 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
299 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">" )
300 + tr( "the minute with a leading zero (00 to 59)" )
301 + QStringLiteral( "</span></p>"
302 "</td>"
303 "</tr>"
304 "<tr>"
305 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
306 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">s</span></p>"
307 "</td>"
308 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
309 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">" )
310 + tr( "the second without a leading zero (0 to 59)" )
311 + QStringLiteral( "</span></p>"
312 "</td>"
313 "</tr>"
314 "<tr>"
315 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
316 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">ss</span></p>"
317 "</td>"
318 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
319 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">" )
320 + tr( "the second with a leading zero (00 to 59)" )
321 + QStringLiteral( "</span></p>"
322 "</td>"
323 "</tr>"
324 "<tr>"
325 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
326 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">z</span></p>"
327 "</td>"
328 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
329 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">" )
330 + tr( "the milliseconds without trailing zeroes (0 to 999)" )
331 + QStringLiteral( "</span></p>"
332 "</td>"
333 "</tr>"
334 "<tr>"
335 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
336 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">zzz</span></p>"
337 "</td>"
338 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
339 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">" )
340 + tr( "the milliseconds with trailing zeroes (000 to 999)" )
341 + QStringLiteral( "</span></p>"
342 "</td>"
343 "</tr><tr>"
344 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
345 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">AP or A</span></p>"
346 "</td>"
347 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
348 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">" )
349 + tr( "use AM/PM display." )
350 + u"</span><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; font-style:italic; color:#66666e;\">A/AP</span><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e;\"> "_s
351 + tr( "will be replaced by either" )
352 + u"&quot;AM&quot;"_s
353 + tr( "or" )
354 + QStringLiteral( "&quot;PM&quot;.</span></p>"
355 "</td>"
356 "</tr>"
357 "<tr>"
358 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
359 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">ap " )
360 + tr( "or" )
361 + QStringLiteral( " a</span></p>"
362 "</td>"
363 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
364 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">" )
365 + tr( "use am/pm display." )
366 + u"</span><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; font-style:italic; color:#66666e;\">a/ap</span><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e;\"> "_s
367 + tr( "will be replaced by either " )
368 + u"&quot;am&quot;"_s
369 + tr( "or" )
370 + QStringLiteral( "&quot;pm&quot;.</span></p>"
371 "</td>"
372 "</tr>"
373 "<tr>"
374 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
375 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">t</span></p>"
376 "</td>"
377 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
378 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">" )
379 + tr( "the timezone (for example &quot;CEST&quot;)" )
380 + QStringLiteral( "</span></p>"
381 "</td>"
382 "</tr>"
383 "</table>"
384 "<p><br/></p>"
385 "</body></html>" )
386 );
387
388 mDemoDateTimeEdit->setDateTime( QDateTime::currentDateTime() );
389
390 connect( mDisplayFormatEdit, &QLineEdit::textChanged, this, &QgsDateTimeEditConfig::updateDemoWidget );
391 connect( mCalendarPopupCheckBox, &QAbstractButton::toggled, this, &QgsDateTimeEditConfig::updateDemoWidget );
392
393 connect( mFieldFormatComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsDateTimeEditConfig::updateFieldFormat );
394 connect( mFieldFormatEdit, &QLineEdit::textChanged, this, &QgsDateTimeEditConfig::updateDisplayFormat );
395 connect( mDisplayFormatComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsDateTimeEditConfig::displayFormatChanged );
396
397 connect( mFieldHelpToolButton, &QAbstractButton::clicked, this, &QgsDateTimeEditConfig::showHelp );
398 connect( mDisplayHelpToolButton, &QAbstractButton::clicked, this, &QgsDateTimeEditConfig::showHelp );
399
400 connect( mFieldFormatEdit, &QLineEdit::textChanged, this, &QgsEditorConfigWidget::changed );
401 connect( mDisplayFormatEdit, &QLineEdit::textChanged, this, &QgsEditorConfigWidget::changed );
402 connect( mCalendarPopupCheckBox, &QAbstractButton::toggled, this, &QgsEditorConfigWidget::changed );
403 connect( mAllowNullCheckBox, &QAbstractButton::toggled, this, &QgsEditorConfigWidget::changed );
404 connect( mFieldFormatGroupBox, &QGroupBox::toggled, this, [this]( bool checked ) {
405 //reset to default value when unchecking
406 if ( !checked )
407 {
408 const QgsField fieldDef = layer()->fields().at( field() );
409 const QString fieldFormat = QgsDateTimeFieldFormatter::defaultFormat( fieldDef.type() );
410 setFieldFormatCombo( fieldFormat );
411 }
412 } );
413
414 // initialize
415 updateFieldFormat( mFieldFormatComboBox->currentIndex() );
416 displayFormatChanged( mDisplayFormatComboBox->currentIndex() );
417}
418
419
420void QgsDateTimeEditConfig::updateDemoWidget()
421{
422 // Use a UTC datetime if the format string includes a Z
423 if ( mDisplayFormatEdit->text().indexOf( "Z" ) > 0 )
424 {
425 mDemoDateTimeEdit->setTimeSpec( Qt::UTC );
426 mDemoDateTimeEdit->setDateTime( QDateTime::currentDateTimeUtc() );
427 }
428 else
429 {
430 mDemoDateTimeEdit->setTimeSpec( Qt::LocalTime );
431 mDemoDateTimeEdit->setDateTime( QDateTime::currentDateTime() );
432 }
433
434 mDemoDateTimeEdit->setDisplayFormat( mDisplayFormatEdit->text() );
435 mDemoDateTimeEdit->setCalendarPopup( mCalendarPopupCheckBox->isChecked() );
436}
437
438
439void QgsDateTimeEditConfig::updateFieldFormat( int idx )
440{
441 Q_UNUSED( idx )
442 const QString format = mFieldFormatComboBox->currentData().toString();
443 const bool custom = format.isEmpty();
444 if ( !custom )
445 {
446 mFieldFormatEdit->setText( format );
447 }
448 else if ( mFieldFormatEdit->text() == QgsDateTimeFieldFormatter::QT_ISO_FORMAT )
449 {
450 mFieldFormatEdit->setText( QgsDateTimeFieldFormatter::DISPLAY_FOR_ISO_FORMAT );
451 }
452
453 mFieldFormatEdit->setEnabled( custom );
454 mFieldHelpToolButton->setVisible( custom );
455 if ( mFieldHelpToolButton->isHidden() && mDisplayHelpToolButton->isHidden() )
456 {
457 mHelpScrollArea->setVisible( false );
458 }
459}
460
461
462void QgsDateTimeEditConfig::updateDisplayFormat( const QString &fieldFormat )
463{
464 if ( mDisplayFormatComboBox->currentIndex() == 0 )
465 {
466 // i.e. display format is default
467 if ( mFieldFormatComboBox->currentData() == QgsDateTimeFieldFormatter::QT_ISO_FORMAT )
468 {
469 mDisplayFormatEdit->setText( QgsDateTimeFieldFormatter::DISPLAY_FOR_ISO_FORMAT );
470 }
471 else if ( fieldFormat == QgsDateTimeFieldFormatter::DATE_FORMAT )
472 {
473 mDisplayFormatEdit->setText( QgsDateTimeFieldFormatter::DATE_DISPLAY_FORMAT );
474 }
475 else if ( fieldFormat == QgsDateTimeFieldFormatter::DATETIME_FORMAT )
476 {
477 mDisplayFormatEdit->setText( QgsDateTimeFieldFormatter::DATETIME_DISPLAY_FORMAT );
478 }
479 else
480 {
481 mDisplayFormatEdit->setText( fieldFormat );
482 }
483 }
484}
485
486
487void QgsDateTimeEditConfig::displayFormatChanged( int idx )
488{
489 const bool custom = idx == 1;
490 mDisplayFormatEdit->setEnabled( custom );
491 mDisplayHelpToolButton->setVisible( custom );
492 if ( mFieldHelpToolButton->isHidden() && mDisplayHelpToolButton->isHidden() )
493 {
494 mHelpScrollArea->setVisible( false );
495 }
496 if ( !custom )
497 {
498 if ( mFieldFormatComboBox->currentData() == QgsDateTimeFieldFormatter::QT_ISO_FORMAT )
499 {
500 mDisplayFormatEdit->setText( QgsDateTimeFieldFormatter::DISPLAY_FOR_ISO_FORMAT );
501 }
502 else
503 {
504 mDisplayFormatEdit->setText( mFieldFormatEdit->text() );
505 }
506 }
507}
508
509void QgsDateTimeEditConfig::showHelp( bool buttonChecked )
510{
511 mFieldHelpToolButton->setChecked( buttonChecked );
512 mDisplayHelpToolButton->setChecked( buttonChecked );
513 mHelpScrollArea->setVisible( buttonChecked );
514}
515
516
518{
519 QVariantMap myConfig;
520
521 myConfig.insert( u"field_format_overwrite"_s, mFieldFormatGroupBox->isChecked() );
522 myConfig.insert( u"field_iso_format"_s, mFieldFormatEdit->text() == QgsDateTimeFieldFormatter::QT_ISO_FORMAT );
523 myConfig.insert( u"field_format"_s, mFieldFormatEdit->text() );
524 myConfig.insert( u"display_format"_s, mDisplayFormatEdit->text() );
525 myConfig.insert( u"calendar_popup"_s, mCalendarPopupCheckBox->isChecked() );
526 myConfig.insert( u"allow_null"_s, mAllowNullCheckBox->isChecked() );
527
528 return myConfig;
529}
530
531void QgsDateTimeEditConfig::setConfig( const QVariantMap &config )
532{
533 mFieldFormatGroupBox->setChecked( config.value( u"field_format_overwrite"_s, false ).toBool() );
534 const QgsField fieldDef = layer()->fields().at( field() );
535 const QString fieldFormat = config.value( u"field_format"_s, QgsDateTimeFieldFormatter::defaultFormat( fieldDef.type() ) ).toString();
536 setFieldFormatCombo( fieldFormat );
537
538 const QString displayFormat = config.value( u"display_format"_s, QgsDateTimeFieldFormatter::defaultDisplayFormat( fieldDef.type() ) ).toString();
539 mDisplayFormatEdit->setText( displayFormat );
540 if ( displayFormat == mFieldFormatEdit->text() )
541 {
542 mDisplayFormatComboBox->setCurrentIndex( 0 );
543 }
544 else
545 {
546 mDisplayFormatComboBox->setCurrentIndex( 1 );
547 }
548
549 mCalendarPopupCheckBox->setChecked( config.value( u"calendar_popup"_s, true ).toBool() );
550 mAllowNullCheckBox->setChecked( config.value( u"allow_null"_s, true ).toBool() );
551}
552
553void QgsDateTimeEditConfig::setFieldFormatCombo( const QString &fieldFormat )
554{
555 mFieldFormatEdit->setText( fieldFormat );
556
557 const int idx = mFieldFormatComboBox->findData( fieldFormat );
558 if ( idx >= 0 )
559 {
560 mFieldFormatComboBox->setCurrentIndex( idx );
561 }
562 else
563 {
564 mFieldFormatComboBox->setCurrentIndex( 4 );
565 }
566}
QVariantMap config() override
Create a configuration from the current GUI state.
void setConfig(const QVariantMap &config) override
Update the configuration widget to represent the given configuration.
QgsDateTimeEditConfig(QgsVectorLayer *vl, int fieldIdx, QWidget *parent=nullptr)
static const QString QT_ISO_FORMAT
Date time format was localized by applyLocaleChange before QGIS 3.30.
static const QString DISPLAY_FOR_ISO_FORMAT
static QString defaultDisplayFormat(QMetaType::Type type)
Gets the default display format in function of the type.
static QString defaultFormat(QMetaType::Type type)
Gets the default format in function of the type.
static QString DATETIME_DISPLAY_FORMAT
Date display format is localized by applyLocaleChange.
static const QString TIME_FORMAT
Date format was localized by applyLocaleChange before QGIS 3.30.
QgsEditorConfigWidget(QgsVectorLayer *vl, int fieldIdx, QWidget *parent)
Create a new configuration widget.
int field()
Returns the field for which this configuration widget applies.
QgsVectorLayer * layer()
Returns the layer for which this configuration widget applies.
void changed()
Emitted when the configuration of the widget is changed.
Encapsulate a field in an attribute table or data source.
Definition qgsfield.h:56
QMetaType::Type type
Definition qgsfield.h:63
QgsField at(int i) const
Returns the field at particular index (must be in range 0..N-1).
Represents a vector layer which manages a vector based dataset.