mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-03 15:43:09 +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 <QDir>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QSortFilterProxyModel>
|
#include <QSortFilterProxyModel>
|
||||||
|
#include <QCompleter>
|
||||||
|
|
||||||
#include "qt-models/models.h"
|
#include "qt-models/models.h"
|
||||||
|
|
||||||
|
@ -28,12 +29,14 @@ PreferencesLanguage::PreferencesLanguage() : AbstractPreferencesWidget(tr("Langu
|
||||||
dateFormatShortMap.insert("yyyy-MM-dd", "yy-M-d");
|
dateFormatShortMap.insert("yyyy-MM-dd", "yy-M-d");
|
||||||
foreach (QString format, dateFormatShortMap.keys())
|
foreach (QString format, dateFormatShortMap.keys())
|
||||||
ui->dateFormatEntry->addItem(format);
|
ui->dateFormatEntry->addItem(format);
|
||||||
|
ui->dateFormatEntry->completer()->setCaseSensitivity(Qt::CaseSensitive);
|
||||||
connect(ui->dateFormatEntry, SIGNAL(currentIndexChanged(const QString&)),
|
connect(ui->dateFormatEntry, SIGNAL(currentIndexChanged(const QString&)),
|
||||||
this, SLOT(dateFormatChanged(const QString&)));
|
this, SLOT(dateFormatChanged(const QString&)));
|
||||||
|
|
||||||
ui->timeFormatEntry->addItem("hh:mm");
|
ui->timeFormatEntry->addItem("hh:mm");
|
||||||
ui->timeFormatEntry->addItem("h:mm AP");
|
ui->timeFormatEntry->addItem("h:mm AP");
|
||||||
ui->timeFormatEntry->addItem("hh:mm AP");
|
ui->timeFormatEntry->addItem("hh:mm AP");
|
||||||
|
ui->timeFormatEntry->completer()->setCaseSensitivity(Qt::CaseSensitive);
|
||||||
}
|
}
|
||||||
|
|
||||||
PreferencesLanguage::~PreferencesLanguage()
|
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.
|
// Therefore, refresh the UI fields to give the user a visual feedback of the new formats.
|
||||||
refreshSettings();
|
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");
|
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 tfillegalchars("[^hHmszaApPt\\s:;\\.,]");
|
QRegularExpression timeStandardFormat("^([hHmszaApP\\s:\\.]|'[^']*')*$");
|
||||||
if (tfillegalchars.match(ui->timeFormatEntry->currentText()).hasMatch())
|
if (!timeStandardFormat.match(ui->timeFormatEntry->currentText()).hasMatch())
|
||||||
QMessageBox::warning(this, tr("Literal characters"),
|
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:;\\.,\\-]");
|
QRegularExpression dateStandardFormat("^([dMy\\s/\\.,\\-]|'[^']*')*$");
|
||||||
if (dfillegalchars.match(ui->dateFormatEntry->currentText()).hasMatch() ||
|
if (!dateStandardFormat.match(ui->dateFormatEntry->currentText()).hasMatch() ||
|
||||||
dfillegalchars.match(ui->shortDateFormatEntry->text()).hasMatch())
|
!dateStandardFormat.match(ui->shortDateFormatEntry->text()).hasMatch())
|
||||||
QMessageBox::warning(this, tr("Literal characters"),
|
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">
|
<item row="0" column="1">
|
||||||
<widget class="QComboBox" name="dateFormatEntry">
|
<widget class="QComboBox" name="dateFormatEntry">
|
||||||
<property name="toolTip">
|
<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>
|
||||||
<property name="editable">
|
<property name="editable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
|
@ -148,7 +148,7 @@
|
||||||
</sizepolicy>
|
</sizepolicy>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<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>
|
||||||
<property name="editable">
|
<property name="editable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
|
|
Loading…
Reference in a new issue