Use default-constructed QLocale for date/time/whatever else formatting

Qt 6 chenged the QDateTime API to use QLocale::c() rather than QLocale::system(), using default-constructed QLocale will make this consistent and overradable application-wide

Other formating use-cases as QLocale::decimalPoint use default-constructed QLocale now, too
This commit is contained in:
Ilya Fedin 2022-10-17 07:51:59 +04:00 committed by John Preston
parent 2c1933bdb8
commit 7b5781b845
22 changed files with 50 additions and 41 deletions

View file

@ -79,12 +79,12 @@ Authorizations::Entry ParseEntry(const MTPDauthorization &data) {
const auto nowDate = now.date(); const auto nowDate = now.date();
const auto lastDate = lastTime.date(); const auto lastDate = lastTime.date();
if (lastDate == nowDate) { if (lastDate == nowDate) {
result.active = lastTime.toString(cTimeFormat()); result.active = QLocale().toString(lastTime, cTimeFormat());
} else if (lastDate.year() == nowDate.year() } else if (lastDate.year() == nowDate.year()
&& lastDate.weekNumber() == nowDate.weekNumber()) { && lastDate.weekNumber() == nowDate.weekNumber()) {
result.active = langDayOfWeek(lastDate); result.active = langDayOfWeek(lastDate);
} else { } else {
result.active = lastDate.toString(cDateFormat()); result.active = QLocale().toString(lastDate, cDateFormat());
} }
} }
result.location = country; result.location = country;

View file

@ -1376,7 +1376,7 @@ QString PrepareRequestedRowStatus(TimeId date) {
const auto now = QDateTime::currentDateTime(); const auto now = QDateTime::currentDateTime();
const auto parsed = base::unixtime::parse(date); const auto parsed = base::unixtime::parse(date);
const auto parsedDate = parsed.date(); const auto parsedDate = parsed.date();
const auto time = parsed.time().toString(cTimeFormat()); const auto time = QLocale().toString(parsed.time(), cTimeFormat());
const auto generic = [&] { const auto generic = [&] {
return tr::lng_group_requests_status_date_time( return tr::lng_group_requests_status_date_time(
tr::now, tr::now,

View file

@ -200,7 +200,7 @@ private:
left / 86400)); left / 86400));
} else { } else {
const auto time = base::unixtime::parse(link.expireDate).time(); const auto time = base::unixtime::parse(link.expireDate).time();
add(QLocale::system().toString(time, QLocale::LongFormat)); add(QLocale().toString(time, QLocale::LongFormat));
} }
} }
return result; return result;

View file

@ -209,7 +209,7 @@ void BoxController::Row::refreshStatus() {
return; return;
} }
auto text = [this] { auto text = [this] {
auto time = ItemDateTime(_items.front()).time().toString(cTimeFormat()); auto time = QLocale().toString(ItemDateTime(_items.front()).time(), cTimeFormat());
auto today = QDateTime::currentDateTime().date(); auto today = QDateTime::currentDateTime().date();
if (_date == today) { if (_date == today) {
return tr::lng_call_box_status_today(tr::now, lt_time, time); return tr::lng_call_box_status_today(tr::now, lt_time, time);

View file

@ -33,7 +33,8 @@ rpl::producer<QString> StartsWhenText(rpl::producer<TimeId> date) {
const auto tillToday = tillTomorrow + kDay; const auto tillToday = tillTomorrow + kDay;
const auto tillAfter = tillToday + kDay; const auto tillAfter = tillToday + kDay;
const auto time = parsedDate.time().toString( const auto time = QLocale().toString(
parsedDate.time(),
Ui::Integration::Instance().timeFormat()); Ui::Integration::Instance().timeFormat());
auto exact = tr::lng_group_call_starts_short_date( auto exact = tr::lng_group_call_starts_short_date(
lt_date, lt_date,

View file

@ -272,8 +272,8 @@ void Application::run() {
DEBUG_LOG(("Application Info: inited...")); DEBUG_LOG(("Application Info: inited..."));
cChangeDateFormat(QLocale::system().dateFormat(QLocale::ShortFormat)); cChangeDateFormat(QLocale().dateFormat(QLocale::ShortFormat));
cChangeTimeFormat(QLocale::system().timeFormat(QLocale::ShortFormat)); cChangeTimeFormat(QLocale().timeFormat(QLocale::ShortFormat));
DEBUG_LOG(("Application Info: starting app...")); DEBUG_LOG(("Application Info: starting app..."));

View file

@ -77,7 +77,7 @@ QString filedialogDefaultName(
QString base; QString base;
if (fileTime) { if (fileTime) {
const auto date = base::unixtime::parse(fileTime); const auto date = base::unixtime::parse(fileTime);
base = prefix + date.toString("_yyyy-MM-dd_HH-mm-ss"); base = prefix + QLocale().toString(date, "_yyyy-MM-dd_HH-mm-ss");
} else { } else {
struct tm tm; struct tm tm;
time_t t = time(NULL); time_t t = time(NULL);

View file

@ -1102,8 +1102,8 @@ std::optional<QString> RestrictionError(
auto restrictedUntil = channel->restrictedUntil(); auto restrictedUntil = channel->restrictedUntil();
if (restrictedUntil > 0 && !ChannelData::IsRestrictedForever(restrictedUntil)) { if (restrictedUntil > 0 && !ChannelData::IsRestrictedForever(restrictedUntil)) {
auto restrictedUntilDateTime = base::unixtime::parse(channel->restrictedUntil()); auto restrictedUntilDateTime = base::unixtime::parse(channel->restrictedUntil());
auto date = restrictedUntilDateTime.toString(cDateFormat()); auto date = QLocale().toString(restrictedUntilDateTime, cDateFormat());
auto time = restrictedUntilDateTime.toString(cTimeFormat()); auto time = QLocale().toString(restrictedUntilDateTime, cTimeFormat());
switch (restriction) { switch (restriction) {
case Flag::SendPolls: case Flag::SendPolls:

View file

@ -399,14 +399,15 @@ QString OnlineText(TimeId online, TimeId now) {
} }
const auto onlineFull = base::unixtime::parse(online); const auto onlineFull = base::unixtime::parse(online);
const auto nowFull = base::unixtime::parse(now); const auto nowFull = base::unixtime::parse(now);
const auto locale = QLocale();
if (onlineFull.date() == nowFull.date()) { if (onlineFull.date() == nowFull.date()) {
const auto onlineTime = onlineFull.time().toString(cTimeFormat()); const auto onlineTime = locale.toString(onlineFull.time(), cTimeFormat());
return tr::lng_status_lastseen_today(tr::now, lt_time, onlineTime); return tr::lng_status_lastseen_today(tr::now, lt_time, onlineTime);
} else if (onlineFull.date().addDays(1) == nowFull.date()) { } else if (onlineFull.date().addDays(1) == nowFull.date()) {
const auto onlineTime = onlineFull.time().toString(cTimeFormat()); const auto onlineTime = locale.toString(onlineFull.time(), cTimeFormat());
return tr::lng_status_lastseen_yesterday(tr::now, lt_time, onlineTime); return tr::lng_status_lastseen_yesterday(tr::now, lt_time, onlineTime);
} }
const auto date = onlineFull.date().toString(cDateFormat()); const auto date = locale.toString(onlineFull.date(), cDateFormat());
return tr::lng_status_lastseen_date(tr::now, lt_date, date); return tr::lng_status_lastseen_date(tr::now, lt_date, date);
} }
@ -425,15 +426,16 @@ QString OnlineTextFull(not_null<UserData*> user, TimeId now) {
} }
const auto onlineFull = base::unixtime::parse(user->onlineTill); const auto onlineFull = base::unixtime::parse(user->onlineTill);
const auto nowFull = base::unixtime::parse(now); const auto nowFull = base::unixtime::parse(now);
const auto locale = QLocale();
if (onlineFull.date() == nowFull.date()) { if (onlineFull.date() == nowFull.date()) {
const auto onlineTime = onlineFull.time().toString(cTimeFormat()); const auto onlineTime = locale.toString(onlineFull.time(), cTimeFormat());
return tr::lng_status_lastseen_today(tr::now, lt_time, onlineTime); return tr::lng_status_lastseen_today(tr::now, lt_time, onlineTime);
} else if (onlineFull.date().addDays(1) == nowFull.date()) { } else if (onlineFull.date().addDays(1) == nowFull.date()) {
const auto onlineTime = onlineFull.time().toString(cTimeFormat()); const auto onlineTime = locale.toString(onlineFull.time(), cTimeFormat());
return tr::lng_status_lastseen_yesterday(tr::now, lt_time, onlineTime); return tr::lng_status_lastseen_yesterday(tr::now, lt_time, onlineTime);
} }
const auto date = onlineFull.date().toString(cDateFormat()); const auto date = locale.toString(onlineFull.date(), cDateFormat());
const auto time = onlineFull.time().toString(cTimeFormat()); const auto time = locale.toString(onlineFull.time(), cTimeFormat());
return tr::lng_status_lastseen_date_time(tr::now, lt_date, date, lt_time, time); return tr::lng_status_lastseen_date_time(tr::now, lt_date, date, lt_time, time);
} }

View file

@ -72,12 +72,12 @@ void PaintRowDate(QPainter &p, QDateTime date, QRect &rectForName, bool active,
const auto wasSameDay = (lastDate == nowDate); const auto wasSameDay = (lastDate == nowDate);
const auto wasRecently = qAbs(lastTime.secsTo(now)) < kRecentlyInSeconds; const auto wasRecently = qAbs(lastTime.secsTo(now)) < kRecentlyInSeconds;
if (wasSameDay || wasRecently) { if (wasSameDay || wasRecently) {
return lastTime.toString(cTimeFormat()); return QLocale().toString(lastTime, cTimeFormat());
} else if (lastDate.year() == nowDate.year() } else if (lastDate.year() == nowDate.year()
&& lastDate.weekNumber() == nowDate.weekNumber()) { && lastDate.weekNumber() == nowDate.weekNumber()) {
return langDayOfWeek(lastDate); return langDayOfWeek(lastDate);
} else { } else {
return lastDate.toString(cDateFormat()); return QLocale().toString(lastDate, cDateFormat());
} }
}(); }();
PaintRowTopRight(p, dt, rectForName, active, selected); PaintRowTopRight(p, dt, rectForName, active, selected);

View file

@ -533,8 +533,6 @@ QString InnerWidget::tooltipText() const {
if (_mouseCursorState == CursorState::Date if (_mouseCursorState == CursorState::Date
&& _mouseAction == MouseAction::None) { && _mouseAction == MouseAction::None) {
if (const auto view = Element::Hovered()) { if (const auto view = Element::Hovered()) {
const auto format = QLocale::system().dateTimeFormat(
QLocale::LongFormat);
auto dateText = HistoryView::DateTooltipText(view); auto dateText = HistoryView::DateTooltipText(view);
const auto sentIt = _itemDates.find(view->data()); const auto sentIt = _itemDates.find(view->data());
@ -542,7 +540,9 @@ QString InnerWidget::tooltipText() const {
dateText += '\n' + tr::lng_sent_date( dateText += '\n' + tr::lng_sent_date(
tr::now, tr::now,
lt_date, lt_date,
base::unixtime::parse(sentIt->second).toString(format)); QLocale().toString(
base::unixtime::parse(sentIt->second),
QLocale::LongFormat));
} }
return dateText; return dateText;
} }

View file

@ -2655,7 +2655,7 @@ TextForMimeData HistoryInner::getSelectedText() const {
TextForMimeData &&unwrapped) { TextForMimeData &&unwrapped) {
const auto i = texts.emplace(item->position(), Part{ const auto i = texts.emplace(item->position(), Part{
.name = item->author()->name(), .name = item->author()->name(),
.time = ItemDateTime(item).toString(timeFormat), .time = QLocale().toString(ItemDateTime(item), timeFormat),
.unwrapped = std::move(unwrapped), .unwrapped = std::move(unwrapped),
}).first; }).first;
fullSize += i->second.name.size() fullSize += i->second.name.size()

View file

@ -1145,7 +1145,7 @@ HistoryService::PreparedText HistoryService::prepareCallScheduledText(
Ui::Text::WithEntities); Ui::Text::WithEntities);
} }
}; };
const auto time = scheduled.time().toString(cTimeFormat()); const auto time = QLocale().toString(scheduled.time(), cTimeFormat());
const auto prepareGeneric = [&] { const auto prepareGeneric = [&] {
prepareWithDate(tr::lng_group_call_starts_date( prepareWithDate(tr::lng_group_call_starts_date(
tr::now, tr::now,

View file

@ -83,7 +83,7 @@ enum class FilterType {
const auto decimalPart = duration % kPrecision; const auto decimalPart = duration % kPrecision;
return QString("%1%2%3") return QString("%1%2%3")
.arg(durationString) .arg(durationString)
.arg(QLocale::system().decimalPoint()) .arg(QLocale().decimalPoint())
.arg(decimalPart); .arg(decimalPart);
} }

View file

@ -437,7 +437,7 @@ void BottomInfo::layoutDateText() {
: QString(); : QString();
const auto author = _data.author; const auto author = _data.author;
const auto prefix = !author.isEmpty() ? qsl(", ") : QString(); const auto prefix = !author.isEmpty() ? qsl(", ") : QString();
const auto date = edited + _data.date.toString(cTimeFormat()); const auto date = edited + QLocale().toString(_data.date, cTimeFormat());
const auto afterAuthor = prefix + date; const auto afterAuthor = prefix + date;
const auto afterAuthorWidth = st::msgDateFont->width(afterAuthor); const auto afterAuthorWidth = st::msgDateFont->width(afterAuthor);
const auto authorWidth = st::msgDateFont->width(author); const auto authorWidth = st::msgDateFont->width(author);

View file

@ -250,19 +250,20 @@ TextSelection ShiftItemSelection(
} }
QString DateTooltipText(not_null<Element*> view) { QString DateTooltipText(not_null<Element*> view) {
const auto format = QLocale::system().dateTimeFormat(QLocale::LongFormat); const auto locale = QLocale();
auto dateText = view->dateTime().toString(format); const auto format = QLocale::LongFormat;
auto dateText = locale.toString(view->dateTime(), format);
if (const auto editedDate = view->displayedEditDate()) { if (const auto editedDate = view->displayedEditDate()) {
dateText += '\n' + tr::lng_edited_date( dateText += '\n' + tr::lng_edited_date(
tr::now, tr::now,
lt_date, lt_date,
base::unixtime::parse(editedDate).toString(format)); locale.toString(base::unixtime::parse(editedDate), format));
} }
if (const auto forwarded = view->data()->Get<HistoryMessageForwarded>()) { if (const auto forwarded = view->data()->Get<HistoryMessageForwarded>()) {
dateText += '\n' + tr::lng_forwarded_date( dateText += '\n' + tr::lng_forwarded_date(
tr::now, tr::now,
lt_date, lt_date,
base::unixtime::parse(forwarded->originalDate).toString(format)); locale.toString(base::unixtime::parse(forwarded->originalDate), format));
if (forwarded->imported) { if (forwarded->imported) {
dateText = tr::lng_forwarded_imported(tr::now) dateText = tr::lng_forwarded_imported(tr::now)
+ "\n\n" + dateText; + "\n\n" + dateText;

View file

@ -1976,7 +1976,7 @@ TextForMimeData ListWidget::getSelectedText() const {
const auto wrapItem = [&]( const auto wrapItem = [&](
not_null<HistoryItem*> item, not_null<HistoryItem*> item,
TextForMimeData &&unwrapped) { TextForMimeData &&unwrapped) {
auto time = ItemDateTime(item).toString(timeFormat); auto time = QLocale().toString(ItemDateTime(item), timeFormat);
auto part = TextForMimeData(); auto part = TextForMimeData();
auto size = item->author()->name().size() auto size = item->author()->name().size()
+ time.size() + time.size()

View file

@ -46,7 +46,7 @@ Call::Call(
, _video(call->video) { , _video(call->video) {
const auto item = parent->data(); const auto item = parent->data();
_text = Data::MediaCall::Text(item, _reason, _video); _text = Data::MediaCall::Text(item, _reason, _video);
_status = parent->dateTime().time().toString(cTimeFormat()); _status = QLocale().toString(parent->dateTime().time(), cTimeFormat());
if (_duration) { if (_duration) {
_status = tr::lng_call_duration_info( _status = tr::lng_call_duration_info(
tr::now, tr::now,

View file

@ -218,7 +218,9 @@ QString langDateTime(const QDateTime &date) {
lt_date, lt_date,
langDayOfMonth(date.date()), langDayOfMonth(date.date()),
lt_time, lt_time,
date.time().toString(Ui::Integration::Instance().timeFormat())); QLocale().toString(
date.time(),
Ui::Integration::Instance().timeFormat()));
} }
QString langDateTimeFull(const QDateTime &date) { QString langDateTimeFull(const QDateTime &date) {
@ -227,5 +229,7 @@ QString langDateTimeFull(const QDateTime &date) {
lt_date, lt_date,
langDayOfMonthFull(date.date()), langDayOfMonthFull(date.date()),
lt_time, lt_time,
date.time().toString(Ui::Integration::Instance().timeFormat())); QLocale().toString(
date.time(),
Ui::Integration::Instance().timeFormat()));
} }

View file

@ -1020,7 +1020,7 @@ void Widget::handleSongChange() {
const auto date = [item] { const auto date = [item] {
const auto parsed = ItemDateTime(item); const auto parsed = ItemDateTime(item);
const auto date = parsed.date(); const auto date = parsed.date();
const auto time = parsed.time().toString(cTimeFormat()); const auto time = QLocale().toString(parsed.time(), cTimeFormat());
const auto today = QDateTime::currentDateTime().date(); const auto today = QDateTime::currentDateTime().date();
if (date == today) { if (date == today) {
return tr::lng_player_message_today( return tr::lng_player_message_today(

View file

@ -289,7 +289,8 @@ void GroupCallBar::paint(Painter &p) {
} }
const auto parsed = base::unixtime::parse(_content.scheduleDate); const auto parsed = base::unixtime::parse(_content.scheduleDate);
const auto date = parsed.date(); const auto date = parsed.date();
const auto time = parsed.time().toString( const auto time = QLocale().toString(
parsed.time(),
Ui::Integration::Instance().timeFormat()); Ui::Integration::Instance().timeFormat());
const auto today = QDate::currentDate(); const auto today = QDate::currentDate();
if (date == today) { if (date == today) {

View file

@ -88,19 +88,19 @@ QString FormatDateTime(
return tr::lng_mediaview_today( return tr::lng_mediaview_today(
tr::now, tr::now,
lt_time, lt_time,
date.time().toString(timeFormat)); QLocale().toString(date.time(), timeFormat));
} else if (date.date().addDays(1) == now.date()) { } else if (date.date().addDays(1) == now.date()) {
return tr::lng_mediaview_yesterday( return tr::lng_mediaview_yesterday(
tr::now, tr::now,
lt_time, lt_time,
date.time().toString(timeFormat)); QLocale().toString(date.time(), timeFormat));
} else { } else {
return tr::lng_mediaview_date_time( return tr::lng_mediaview_date_time(
tr::now, tr::now,
lt_date, lt_date,
date.date().toString(dateFormat), QLocale().toString(date.date(), dateFormat),
lt_time, lt_time,
date.time().toString(timeFormat)); QLocale().toString(date.time(), timeFormat));
} }
} }