qt5base-lts/tests/manual/qlocale/window.cpp
Marc Mutz f2f8820073 tests: port assorted trivial uses of Q_FOREACH to ranged for loops
All of these fall into the trivial category: loops over (readily made)
const local containers. As such, they cannot possibly depend on the
safety copy that Q_FOREACH performs, so are safe to port as-is to
ranged for loops.

There may be more where these came from, but these were the ones that
stood out as immediately obvious when scanning the 100s of uses in
qtbase, so I preferred to directly fix them over white-listing their
files with QT_NO_FOREACH (which still may be necessary for some files,
as this patch may not port all uses in that file).

Pick-to: 6.6 6.5
Task-nubmber: QTBUG-115839
Change-Id: I7b7893bec8254f902660dac24167113aca855029
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2023-08-14 23:11:54 +03:00

109 lines
3.7 KiB
C++

// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "window.h"
#include <QComboBox>
#include <QLocale>
#include <QLabel>
#include <QTabWidget>
#include <QHBoxLayout>
#include <QEvent>
Window::Window()
{
localeCombo = new QComboBox;
localeCombo->addItem("System", QLocale::system());
const QList<QLocale> locales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, QLocale::AnyTerritory);
for (const QLocale &locale : locales) {
QString label = QLocale::languageToString(locale.language());
label += QLatin1Char('/');
if (locale.script() != QLocale::AnyScript) {
label += QLocale::scriptToString(locale.script());
label += QLatin1Char('/');
}
label += QLocale::territoryToString(locale.territory());
localeCombo->addItem(label, locale);
}
connect(localeCombo, SIGNAL(currentIndexChanged(int)),
this, SLOT(localeChanged(int)));
tabWidget = new QTabWidget;
info = new InfoWidget;
connect(this, SIGNAL(localeChanged(QLocale)), info, SLOT(localeChanged(QLocale)));
calendar = new CalendarWidget;
connect(this, SIGNAL(localeChanged(QLocale)), calendar, SLOT(localeChanged(QLocale)));
currency = new CurrencyWidget;
connect(this, SIGNAL(localeChanged(QLocale)), currency, SLOT(localeChanged(QLocale)));
languages = new LanguagesWidget;
connect(this, SIGNAL(localeChanged(QLocale)), languages, SLOT(localeChanged(QLocale)));
dateFormats = new DateFormatsWidget;
connect(this, SIGNAL(localeChanged(QLocale)), dateFormats, SLOT(localeChanged(QLocale)));
numberFormats = new NumberFormatsWidget;
connect(this, SIGNAL(localeChanged(QLocale)), numberFormats, SLOT(localeChanged(QLocale)));
miscellaneous = new MiscWidget;
connect(this, SIGNAL(localeChanged(QLocale)), miscellaneous, SLOT(localeChanged(QLocale)));
localeName = new QLabel("Locale: foo_BAR");
QWidget *w = new QWidget;
QHBoxLayout *headerLayout = new QHBoxLayout(w);
headerLayout->addWidget(localeCombo);
headerLayout->addWidget(localeName);
QWidget *central = new QWidget;
QVBoxLayout *l = new QVBoxLayout(central);
l->addWidget(w);
l->addWidget(tabWidget);
tabWidget->addTab(info, "Info");
tabWidget->addTab(calendar, "Calendar");
tabWidget->addTab(currency, "Currency");
tabWidget->addTab(languages, "Languages");
tabWidget->addTab(dateFormats, "Date Formats");
tabWidget->addTab(numberFormats, "Number Formats");
tabWidget->addTab(miscellaneous, "Text");
localeCombo->setCurrentIndex(0);
systemLocaleChanged();
setCentralWidget(central);
}
void Window::systemLocaleChanged()
{
QLocale l = QLocale::system();
QString lang = QLocale::languageToString(l.language());
QString script = QLocale::scriptToString(l.script());
QString territory = QLocale::territoryToString(l.territory());
if (l.script() != QLocale::AnyScript)
localeCombo->setItemText(0, QString("System: %1-%2-%3").arg(lang, script, territory));
else
localeCombo->setItemText(0, QString("System: %1-%2").arg(lang, territory));
emit localeChanged(0);
}
void Window::localeChanged(int idx)
{
QLocale locale = localeCombo->itemData(idx).toLocale();
localeName->setText(QString("Locale: %1 (%2)").arg(locale.bcp47Name(), locale.name()));
emit localeChanged(locale);
}
bool Window::event(QEvent *event)
{
switch (event->type()) {
case QEvent::LocaleChange: {
if (localeCombo->currentIndex() == 0)
systemLocaleChanged();
return true;
}
default:
break;
}
return QMainWindow::event(event);
}