mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
Desktop: Rework Setting of Custom Date / Time Formats.
Rework the setting of custom date / time format preferences: - fix bug causing case changes if custom format case insensitively matches a drop down entry; - fix invalid format examples in tooltip; - update URL for the format documentation; - add support for quoted literals to the format validity warning. From discussion in https://github.com/subsurface/subsurface/issues/3849#issuecomment-1481239270. Signed-off-by: Michael Keller <github@ike.ch>
This commit is contained in:
parent
6002387d7b
commit
5d7f294407
2 changed files with 13 additions and 10 deletions
|
@ -7,6 +7,7 @@
|
|||
#include <QDir>
|
||||
#include <QMessageBox>
|
||||
#include <QSortFilterProxyModel>
|
||||
#include <QCompleter>
|
||||
|
||||
#include "qt-models/models.h"
|
||||
|
||||
|
@ -28,12 +29,14 @@ PreferencesLanguage::PreferencesLanguage() : AbstractPreferencesWidget(tr("Langu
|
|||
dateFormatShortMap.insert("yyyy-MM-dd", "yy-M-d");
|
||||
foreach (QString format, dateFormatShortMap.keys())
|
||||
ui->dateFormatEntry->addItem(format);
|
||||
ui->dateFormatEntry->completer()->setCaseSensitivity(Qt::CaseSensitive);
|
||||
connect(ui->dateFormatEntry, SIGNAL(currentIndexChanged(const QString&)),
|
||||
this, SLOT(dateFormatChanged(const QString&)));
|
||||
|
||||
ui->timeFormatEntry->addItem("hh:mm");
|
||||
ui->timeFormatEntry->addItem("h:mm AP");
|
||||
ui->timeFormatEntry->addItem("hh:mm AP");
|
||||
ui->timeFormatEntry->completer()->setCaseSensitivity(Qt::CaseSensitive);
|
||||
}
|
||||
|
||||
PreferencesLanguage::~PreferencesLanguage()
|
||||
|
@ -94,15 +97,15 @@ void PreferencesLanguage::syncSettings()
|
|||
// Therefore, refresh the UI fields to give the user a visual feedback of the new formats.
|
||||
refreshSettings();
|
||||
|
||||
QString qDateTimeWeb = tr("These will be used as is. This might not be what you intended.\nSee http://doc.qt.io/qt-5/qdatetime.html#toString");
|
||||
QRegularExpression tfillegalchars("[^hHmszaApPt\\s:;\\.,]");
|
||||
if (tfillegalchars.match(ui->timeFormatEntry->currentText()).hasMatch())
|
||||
QString qDateTimeWeb = tr("These will be used as is. This might not be what you intended. To avoid this warning wrap the literal parts in quotes (').\nSee https://doc.qt.io/archives/qt-4.8/qdatetime.html#fromString");
|
||||
QRegularExpression timeStandardFormat("^([hHmszaApP\\s:\\.]|'[^']*')*$");
|
||||
if (!timeStandardFormat.match(ui->timeFormatEntry->currentText()).hasMatch())
|
||||
QMessageBox::warning(this, tr("Literal characters"),
|
||||
tr("Non-special character(s) in time format.\n") + qDateTimeWeb);
|
||||
tr("Non-standard character(s) in time format.\n") + qDateTimeWeb);
|
||||
|
||||
QRegularExpression dfillegalchars("[^dMy/\\s:;\\.,\\-]");
|
||||
if (dfillegalchars.match(ui->dateFormatEntry->currentText()).hasMatch() ||
|
||||
dfillegalchars.match(ui->shortDateFormatEntry->text()).hasMatch())
|
||||
QRegularExpression dateStandardFormat("^([dMy\\s/\\.,\\-]|'[^']*')*$");
|
||||
if (!dateStandardFormat.match(ui->dateFormatEntry->currentText()).hasMatch() ||
|
||||
!dateStandardFormat.match(ui->shortDateFormatEntry->text()).hasMatch())
|
||||
QMessageBox::warning(this, tr("Literal characters"),
|
||||
tr("Non-special character(s) in date format.\n") + qDateTimeWeb);
|
||||
tr("Non-standard character(s) in date format.\n") + qDateTimeWeb);
|
||||
}
|
||||
|
|
|
@ -110,7 +110,7 @@
|
|||
<item row="0" column="1">
|
||||
<widget class="QComboBox" name="dateFormatEntry">
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Preferred date format. Commonly used fields are</p><p>d (day of month)</p><p>ddd (abbr. day name)</p><p>M (month number)</p><p>MMM (abbr. month name)</p><p>yy/yyyy (2/4 digit year)</p></body></html></string>
|
||||
<string><html><head/><body><p>Preferred date format. Commonly used fields are</p><p>d (day of month)</p><p>ddd (abbreviated day name)</p><p>M (month number)</p><p>MMM (abbreviated month name)</p><p>yy/yyyy (2/4 digit year)</p><p>See https://doc.qt.io/archives/qt-4.8/qdatetime.html#fromString for full list.</p></body></html></string>
|
||||
</property>
|
||||
<property name="editable">
|
||||
<bool>true</bool>
|
||||
|
@ -148,7 +148,7 @@
|
|||
</sizepolicy>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Preferred time format</p><p>Commonly used format specifiers are</p><p>h (hours in 12h format)</p><p>H (hours in 24h format)</p><p>mm (2 digit minutes)</p><p>ss (2 digit seconds)</p><p>t/tt (a/p or am/pm)</p></body></html></string>
|
||||
<string><html><head/><body><p>Preferred time format</p><p>Commonly used format specifiers are</p><p>h (hours)</p><p>hh (2 digit hours)</p><p>mm (2 digit minutes)</p><p>ss (2 digit seconds)</p><p>AP or ap (AM/PM or am/pm)</p><p>See https://doc.qt.io/archives/qt-4.8/qdatetime.html#fromString for full list.</p></body></html></string>
|
||||
</property>
|
||||
<property name="editable">
|
||||
<bool>true</bool>
|
||||
|
|
Loading…
Reference in a new issue