QGIS API Documentation 4.1.0-Master (5bf3c20f3c9)
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(
51 "</span></p>"
52 "</td>"
53 "</tr></thead>"
54 "<tr>"
55 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
56 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">"
57 "<a href=\"http://www.iso.org/iso/catalogue_detail?csnumber=40874\">"
58 ) //#spellok
59 + tr( "ISO 8601" )
60 + u"</a> "_s
61 + tr(
62 "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 "
63 "[+|-]HH:mm) where appropriate for combined dates and times."
64 )
65 + QStringLiteral(
66 "</span></p>"
67 "</td>"
68 "</tr>"
69 "</table>"
70 "<br>"
71 "<table border=\"0\" style=\"margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;\" cellspacing=\"2\" cellpadding=\"0\" bgcolor=\"#f6f6f6\">"
72 "<thead><tr>"
73 "<td style=\"vertical-align:top; padding-left:10; padding-right:15; padding-top:5; padding-bottom:5;\">"
74 "<p align=\"center\"><span style=\"font-family:'Open Sans,sans-serif'; font-size:12px; font-weight:600; color:#363534;\">"
75 )
76 + tr( "Format" )
77 + QStringLiteral(
78 "</span></p>"
79 "</td>"
80 "<td style=\"vertical-align:top; padding-left:10; padding-right:15; padding-top:5; padding-bottom:5;\">"
81 "<p align=\"center\"><span style=\"font-family:'Open Sans,sans-serif'; font-size:12px; font-weight:600; color:#363534;\">"
82 )
83 + tr( "Examples result" )
84 + QStringLiteral(
85 "</span></p>"
86 "</td>"
87 "</tr></thead>"
88 "<tr>"
89 "<td bgcolor=\"#f6f6f6\" 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:#f6f6f6;\">dd.MM.yyyy</span></p>"
91 "</td>"
92 "<td bgcolor=\"#f6f6f6\" 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:#f6f6f6;\">21.05.2001</span></p>"
94 "</td>"
95 "</tr>"
96 "<tr>"
97 "<td bgcolor=\"#ffffff\" 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:#ffffff;\">ddd MMMM d yy</span></p>"
99 "</td>"
100 "<td bgcolor=\"#ffffff\" 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:#ffffff;\">Tue May 21 01</span></p>"
102 "</td>"
103 "</tr>"
104 "<tr>"
105 "<td bgcolor=\"#f6f6f6\" 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:#f6f6f6;\">hh:mm:ss.zzz</span></p>"
107 "</td>"
108 "<td bgcolor=\"#f6f6f6\" 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:#f6f6f6;\">14:13:09.042</span></p>"
110 "</td>"
111 "</tr>"
112 "<tr>"
113 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
114 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">h:m:s ap</span></p>"
115 "</td>"
116 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
117 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">2:13:9 pm</span></p>"
118 "</td>"
119 "</tr>"
120 "</table>"
121 "<p><br/></p>"
122 "<table border=\"0\" style=\"margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;\" cellspacing=\"2\" cellpadding=\"0\" bgcolor=\"#f6f6f6\">"
123 "<thead><tr>"
124 "<td style=\"vertical-align:top; padding-left:10; padding-right:15; padding-top:5; padding-bottom:5;\">"
125 "<p align=\"center\"><span style=\"font-family:'Open Sans,sans-serif'; font-size:12px; font-weight:600; color:#363534;\">"
126 )
127 + tr( "Expression" )
128 + QStringLiteral(
129 "</span></p>"
130 "</td>"
131 "<td style=\"vertical-align:top; padding-left:10; padding-right:15; padding-top:5; padding-bottom:5;\">"
132 "<p align=\"center\"><span style=\"font-family:'Open Sans,sans-serif'; font-size:12px; font-weight:600; color:#363534;\">"
133 )
134 + tr( "Date output" )
135 + QStringLiteral(
136 "</span></p>"
137 "</td>"
138 "</tr></thead>"
139 "<tr>"
140 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
141 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">d</span></p>"
142 "</td>"
143 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
144 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">"
145 )
146 + tr( "the day as number without a leading zero (1 to 31)" )
147 + QStringLiteral(
148 "</span></p>"
149 "</td>"
150 "</tr>"
151 "<tr>"
152 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
153 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">dd</span></p>"
154 "</td>"
155 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
156 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">"
157 )
158 + tr( "the day as number with a leading zero (01 to 31)" )
159 + QStringLiteral(
160 "</span></p>"
161 "</td>"
162 "</tr>"
163 "<tr>"
164 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
165 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">ddd</span></p>"
166 "</td>"
167 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
168 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">"
169 )
170 + tr( "the abbreviated localized day name (e.g. 'Mon' to 'Sun'). Uses the system locale to localize the name, i.e. " )
171 + QStringLiteral(
172 "</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; "
173 "color:#00732f;\">QLocale</span></a><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e;\">().</span></p>"
174 "</td>"
175 "</tr>"
176 "<tr>"
177 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
178 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">dddd</span></p>"
179 "</td>"
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;\">"
182 )
183 + tr( "the long localized day name (e.g. 'Monday' to '" )
184 + 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
185 + tr( "Uses the system locale to localize the name, i.e. " )
186 + QStringLiteral(
187 "</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; "
188 "color:#00732f;\">QLocale</span></a><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e;\">().</span></p>"
189 "</td>"
190 "</tr>"
191 "<tr>"
192 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
193 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">M</span></p>"
194 "</td>"
195 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
196 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">"
197 )
198 + tr( "the month as number without a leading zero (1-12)" )
199 + QStringLiteral(
200 "</span></p>"
201 "</td>"
202 "</tr>"
203 "<tr>"
204 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
205 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">MM</span></p>"
206 "</td>"
207 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
208 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">"
209 )
210 + tr( "the month as number with a leading zero (01-12)" )
211 + QStringLiteral(
212 "</span></p>"
213 "</td>"
214 "</tr>"
215 "<tr>"
216 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
217 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">MMM</span></p>"
218 "</td>"
219 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
220 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">"
221 )
222 + tr( "the abbreviated localized month name (e.g. 'Jan' to 'Dec'). Uses the system locale to localize the name, i.e." )
223 + QStringLiteral(
224 "</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; "
225 "color:#00732f;\">QLocale</span></a><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e;\">().</span></p>"
226 "</td>"
227 "</tr>"
228 "<tr>"
229 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
230 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">MMMM</span></p>"
231 "</td>"
232 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
233 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">"
234 )
235 + tr( "the long localized month name (e.g. 'January' to 'December'). Uses the system locale to localize the name, i.e." )
236 + QStringLiteral(
237 "</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; "
238 "color:#00732f;\">QLocale</span></a><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e;\">().</span></p>"
239 "</td>"
240 "</tr>"
241 "<tr>"
242 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
243 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">yy</span></p>"
244 "</td>"
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;\">"
247 )
248 + tr( "the year as two digit number (00-99)" )
249 + QStringLiteral(
250 "</span></p>"
251 "</td>"
252 "</tr>"
253 "<tr>"
254 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
255 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">yyyy</span></p>"
256 "</td>"
257 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
258 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">"
259 )
260 + tr( "the year as four digit number" )
261 + QStringLiteral(
262 "</span></p>"
263 "</td>"
264 "</tr>"
265 "</table>"
266 "<p><br/></p>"
267 "<table border=\"0\" style=\"margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px;\" cellspacing=\"2\" cellpadding=\"0\" bgcolor=\"#f6f6f6\">"
268 "<thead><tr>"
269 "<td style=\"vertical-align:top; padding-left:10; padding-right:15; padding-top:5; padding-bottom:5;\">"
270 "<p align=\"center\"><span style=\"font-family:'Open Sans,sans-serif'; font-size:12px; font-weight:600; color:#363534;\">"
271 )
272 + tr( "Expression" )
273 + QStringLiteral(
274 "</span></p>"
275 "</td>"
276 "<td style=\"vertical-align:top; padding-left:10; padding-right:15; padding-top:5; padding-bottom:5;\">"
277 "<p align=\"center\"><span style=\"font-family:'Open Sans,sans-serif'; font-size:12px; font-weight:600; color:#363534;\">"
278 )
279 + tr( "Time output" )
280 + QStringLiteral(
281 "</span></p>"
282 "</td>"
283 "</tr></thead>"
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;\">h</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 )
291 + tr( "the hour without a leading zero (0 to 23 or 1 to 12 if AM/PM display)" )
292 + QStringLiteral(
293 "</span></p>"
294 "</td>"
295 "</tr>"
296 "<tr>"
297 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
298 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">hh</span></p>"
299 "</td>"
300 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
301 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">"
302 )
303 + tr( "the hour with a leading zero (00 to 23 or 01 to 12 if AM/PM display)" )
304 + QStringLiteral(
305 "</span></p>"
306 "</td>"
307 "</tr>"
308 "<tr>"
309 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
310 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">H</span></p>"
311 "</td>"
312 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
313 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">"
314 )
315 + tr( "the hour without a leading zero (0 to 23, even with AM/PM display)" )
316 + QStringLiteral(
317 "</span></p>"
318 "</td>"
319 "</tr>"
320 "<tr>"
321 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
322 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">HH</span></p>"
323 "</td>"
324 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
325 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">"
326 )
327 + tr( "the hour with a leading zero (00 to 23, even with AM/PM display)" )
328 + QStringLiteral(
329 "</span></p>"
330 "</td>"
331 "</tr>"
332 "<tr>"
333 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
334 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">m</span></p>"
335 "</td>"
336 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
337 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">"
338 )
339 + tr( "the minute without a leading zero (0 to 59)" )
340 + QStringLiteral(
341 "</span></p>"
342 "</td>"
343 "</tr>"
344 "<tr>"
345 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
346 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">mm</span></p>"
347 "</td>"
348 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
349 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">"
350 )
351 + tr( "the minute with a leading zero (00 to 59)" )
352 + QStringLiteral(
353 "</span></p>"
354 "</td>"
355 "</tr>"
356 "<tr>"
357 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
358 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">s</span></p>"
359 "</td>"
360 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
361 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">"
362 )
363 + tr( "the second without a leading zero (0 to 59)" )
364 + QStringLiteral(
365 "</span></p>"
366 "</td>"
367 "</tr>"
368 "<tr>"
369 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
370 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">ss</span></p>"
371 "</td>"
372 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
373 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">"
374 )
375 + tr( "the second with a leading zero (00 to 59)" )
376 + QStringLiteral(
377 "</span></p>"
378 "</td>"
379 "</tr>"
380 "<tr>"
381 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
382 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">z</span></p>"
383 "</td>"
384 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
385 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">"
386 )
387 + tr( "the milliseconds without trailing zeroes (0 to 999)" )
388 + QStringLiteral(
389 "</span></p>"
390 "</td>"
391 "</tr>"
392 "<tr>"
393 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
394 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">zzz</span></p>"
395 "</td>"
396 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
397 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">"
398 )
399 + tr( "the milliseconds with trailing zeroes (000 to 999)" )
400 + QStringLiteral(
401 "</span></p>"
402 "</td>"
403 "</tr><tr>"
404 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
405 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">AP or A</span></p>"
406 "</td>"
407 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
408 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">"
409 )
410 + tr( "use AM/PM display." )
411 + 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
412 + tr( "will be replaced by either" )
413 + u"&quot;AM&quot;"_s
414 + tr( "or" )
415 + QStringLiteral(
416 "&quot;PM&quot;.</span></p>"
417 "</td>"
418 "</tr>"
419 "<tr>"
420 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
421 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">ap "
422 )
423 + tr( "or" )
424 + QStringLiteral(
425 " a</span></p>"
426 "</td>"
427 "<td bgcolor=\"#ffffff\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
428 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#ffffff;\">"
429 )
430 + tr( "use am/pm display." )
431 + 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
432 + tr( "will be replaced by either " )
433 + u"&quot;am&quot;"_s
434 + tr( "or" )
435 + QStringLiteral(
436 "&quot;pm&quot;.</span></p>"
437 "</td>"
438 "</tr>"
439 "<tr>"
440 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
441 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">t</span></p>"
442 "</td>"
443 "<td bgcolor=\"#f6f6f6\" style=\"vertical-align:top; padding-left:10; padding-right:10; padding-top:3; padding-bottom:3;\">"
444 "<p><span style=\"font-family:'Open Sans,sans-serif'; font-size:11px; color:#66666e; background-color:#f6f6f6;\">"
445 )
446 + tr( "the timezone (for example &quot;CEST&quot;)" )
447 + QStringLiteral(
448 "</span></p>"
449 "</td>"
450 "</tr>"
451 "</table>"
452 "<p><br/></p>"
453 "</body></html>"
454 )
455 );
456
457 mDemoDateTimeEdit->setDateTime( QDateTime::currentDateTime() );
458
459 connect( mDisplayFormatEdit, &QLineEdit::textChanged, this, &QgsDateTimeEditConfig::updateDemoWidget );
460 connect( mCalendarPopupCheckBox, &QAbstractButton::toggled, this, &QgsDateTimeEditConfig::updateDemoWidget );
461
462 connect( mFieldFormatComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsDateTimeEditConfig::updateFieldFormat );
463 connect( mFieldFormatEdit, &QLineEdit::textChanged, this, &QgsDateTimeEditConfig::updateDisplayFormat );
464 connect( mDisplayFormatComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsDateTimeEditConfig::displayFormatChanged );
465
466 connect( mFieldHelpToolButton, &QAbstractButton::clicked, this, &QgsDateTimeEditConfig::showHelp );
467 connect( mDisplayHelpToolButton, &QAbstractButton::clicked, this, &QgsDateTimeEditConfig::showHelp );
468
469 connect( mFieldFormatEdit, &QLineEdit::textChanged, this, &QgsEditorConfigWidget::changed );
470 connect( mDisplayFormatEdit, &QLineEdit::textChanged, this, &QgsEditorConfigWidget::changed );
471 connect( mCalendarPopupCheckBox, &QAbstractButton::toggled, this, &QgsEditorConfigWidget::changed );
472 connect( mAllowNullCheckBox, &QAbstractButton::toggled, this, &QgsEditorConfigWidget::changed );
473 connect( mFieldFormatGroupBox, &QGroupBox::toggled, this, [this]( bool checked ) {
474 //reset to default value when unchecking
475 if ( !checked )
476 {
477 const QgsField fieldDef = layer()->fields().at( field() );
478 const QString fieldFormat = QgsDateTimeFieldFormatter::defaultFormat( fieldDef.type() );
479 setFieldFormatCombo( fieldFormat );
480 }
481 } );
482
483 // initialize
484 updateFieldFormat( mFieldFormatComboBox->currentIndex() );
485 displayFormatChanged( mDisplayFormatComboBox->currentIndex() );
486}
487
488
489void QgsDateTimeEditConfig::updateDemoWidget()
490{
491 // Use a UTC datetime if the format string includes a Z
492 if ( mDisplayFormatEdit->text().indexOf( "Z" ) > 0 )
493 {
494 mDemoDateTimeEdit->setTimeSpec( Qt::UTC );
495 mDemoDateTimeEdit->setDateTime( QDateTime::currentDateTimeUtc() );
496 }
497 else
498 {
499 mDemoDateTimeEdit->setTimeSpec( Qt::LocalTime );
500 mDemoDateTimeEdit->setDateTime( QDateTime::currentDateTime() );
501 }
502
503 mDemoDateTimeEdit->setDisplayFormat( mDisplayFormatEdit->text() );
504 mDemoDateTimeEdit->setCalendarPopup( mCalendarPopupCheckBox->isChecked() );
505}
506
507
508void QgsDateTimeEditConfig::updateFieldFormat( int idx )
509{
510 Q_UNUSED( idx )
511 const QString format = mFieldFormatComboBox->currentData().toString();
512 const bool custom = format.isEmpty();
513 if ( !custom )
514 {
515 mFieldFormatEdit->setText( format );
516 }
517 else if ( mFieldFormatEdit->text() == QgsDateTimeFieldFormatter::QT_ISO_FORMAT )
518 {
519 mFieldFormatEdit->setText( QgsDateTimeFieldFormatter::DISPLAY_FOR_ISO_FORMAT );
520 }
521
522 mFieldFormatEdit->setEnabled( custom );
523 mFieldHelpToolButton->setVisible( custom );
524 if ( mFieldHelpToolButton->isHidden() && mDisplayHelpToolButton->isHidden() )
525 {
526 mHelpScrollArea->setVisible( false );
527 }
528}
529
530
531void QgsDateTimeEditConfig::updateDisplayFormat( const QString &fieldFormat )
532{
533 if ( mDisplayFormatComboBox->currentIndex() == 0 )
534 {
535 // i.e. display format is default
536 if ( mFieldFormatComboBox->currentData() == QgsDateTimeFieldFormatter::QT_ISO_FORMAT )
537 {
538 mDisplayFormatEdit->setText( QgsDateTimeFieldFormatter::DISPLAY_FOR_ISO_FORMAT );
539 }
540 else if ( fieldFormat == QgsDateTimeFieldFormatter::DATE_FORMAT )
541 {
542 mDisplayFormatEdit->setText( QgsDateTimeFieldFormatter::DATE_DISPLAY_FORMAT );
543 }
544 else if ( fieldFormat == QgsDateTimeFieldFormatter::DATETIME_FORMAT )
545 {
546 mDisplayFormatEdit->setText( QgsDateTimeFieldFormatter::DATETIME_DISPLAY_FORMAT );
547 }
548 else
549 {
550 mDisplayFormatEdit->setText( fieldFormat );
551 }
552 }
553}
554
555
556void QgsDateTimeEditConfig::displayFormatChanged( int idx )
557{
558 const bool custom = idx == 1;
559 mDisplayFormatEdit->setEnabled( custom );
560 mDisplayHelpToolButton->setVisible( custom );
561 if ( mFieldHelpToolButton->isHidden() && mDisplayHelpToolButton->isHidden() )
562 {
563 mHelpScrollArea->setVisible( false );
564 }
565 if ( !custom )
566 {
567 if ( mFieldFormatComboBox->currentData() == QgsDateTimeFieldFormatter::QT_ISO_FORMAT )
568 {
569 mDisplayFormatEdit->setText( QgsDateTimeFieldFormatter::DISPLAY_FOR_ISO_FORMAT );
570 }
571 else
572 {
573 mDisplayFormatEdit->setText( mFieldFormatEdit->text() );
574 }
575 }
576}
577
578void QgsDateTimeEditConfig::showHelp( bool buttonChecked )
579{
580 mFieldHelpToolButton->setChecked( buttonChecked );
581 mDisplayHelpToolButton->setChecked( buttonChecked );
582 mHelpScrollArea->setVisible( buttonChecked );
583}
584
585
587{
588 QVariantMap myConfig;
589
590 myConfig.insert( u"field_format_overwrite"_s, mFieldFormatGroupBox->isChecked() );
591 myConfig.insert( u"field_iso_format"_s, mFieldFormatEdit->text() == QgsDateTimeFieldFormatter::QT_ISO_FORMAT );
592 myConfig.insert( u"field_format"_s, mFieldFormatEdit->text() );
593 myConfig.insert( u"display_format"_s, mDisplayFormatEdit->text() );
594 myConfig.insert( u"calendar_popup"_s, mCalendarPopupCheckBox->isChecked() );
595 myConfig.insert( u"allow_null"_s, mAllowNullCheckBox->isChecked() );
596
597 return myConfig;
598}
599
600void QgsDateTimeEditConfig::setConfig( const QVariantMap &config )
601{
602 mFieldFormatGroupBox->setChecked( config.value( u"field_format_overwrite"_s, false ).toBool() );
603 const QgsField fieldDef = layer()->fields().at( field() );
604 const QString fieldFormat = config.value( u"field_format"_s, QgsDateTimeFieldFormatter::defaultFormat( fieldDef.type() ) ).toString();
605 setFieldFormatCombo( fieldFormat );
606
607 const QString displayFormat = config.value( u"display_format"_s, QgsDateTimeFieldFormatter::defaultDisplayFormat( fieldDef.type() ) ).toString();
608 mDisplayFormatEdit->setText( displayFormat );
609 if ( displayFormat == mFieldFormatEdit->text() )
610 {
611 mDisplayFormatComboBox->setCurrentIndex( 0 );
612 }
613 else
614 {
615 mDisplayFormatComboBox->setCurrentIndex( 1 );
616 }
617
618 mCalendarPopupCheckBox->setChecked( config.value( u"calendar_popup"_s, true ).toBool() );
619 mAllowNullCheckBox->setChecked( config.value( u"allow_null"_s, true ).toBool() );
620}
621
622void QgsDateTimeEditConfig::setFieldFormatCombo( const QString &fieldFormat )
623{
624 mFieldFormatEdit->setText( fieldFormat );
625
626 const int idx = mFieldFormatComboBox->findData( fieldFormat );
627 if ( idx >= 0 )
628 {
629 mFieldFormatComboBox->setCurrentIndex( idx );
630 }
631 else
632 {
633 mFieldFormatComboBox->setCurrentIndex( 4 );
634 }
635}
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.