37#include "ui_acceptlanguage.h"
38#include "ui_addacceptlanguage.h"
45 QString longCode = QLocale::system().name().replace(QLatin1Char(
'_'), QLatin1Char(
'-'));
47 if (longCode.size() == 5) {
49 ret << longCode << longCode.left(2);
53 return QStringList(longCode);
58 if (langs.isEmpty()) {
63 header.append(langs.at(0).toLatin1());
66 for (
int i = 1;
i < langs.count();
i++) {
67 QString s =
QSL(
",") + langs.at(
i) +
QSL(
";q=0.");
68 s.append(QString::number(counter));
73 header.append(s.toLatin1());
83 setAttribute(Qt::WA_DeleteOnClose);
86 ui->listWidget->setLayoutDirection(Qt::LeftToRight);
93 for (
const QString &code : langs) {
95 QLocale loc = QLocale(code_.replace(QLatin1Char(
'-'), QLatin1Char(
'_')));
98 if (loc.language() == QLocale::C) {
99 label = tr(
"Personal [%1]").arg(code);
102 label =
QSL(
"%1/%2 [%3]").arg(loc.languageToString(loc.language()), loc.countryToString(loc.country()), code);
105 ui->listWidget->addItem(label);
108 connect(ui->add, &QAbstractButton::clicked,
this, &AcceptLanguage::addLanguage);
109 connect(ui->remove, &QAbstractButton::clicked,
this, &AcceptLanguage::removeLanguage);
110 connect(ui->up, &QAbstractButton::clicked,
this, &AcceptLanguage::upLanguage);
111 connect(ui->down, &QAbstractButton::clicked,
this, &AcceptLanguage::downLanguage);
114QStringList AcceptLanguage::expand(
const QLocale::Language &language)
116 QStringList allLanguages;
117 QList<QLocale::Country> countries = QLocale::countriesForLanguage(language);
118 for (
int j = 0; j < countries.size(); ++j) {
119 QString languageString;
120 if (countries.count() == 1) {
121 languageString = QString(QLatin1String(
"%1 [%2]")).arg(
122 QLocale::languageToString(language),
123 QLocale(language).name().split(QLatin1Char(
'_')).at(0)
127 languageString = QString(QLatin1String(
"%1/%2 [%3]")).arg (
128 QLocale::languageToString(language),
129 QLocale::countryToString(countries.at(j)),
130 QLocale(language, countries.at(j)).name().split(QLatin1Char(
'_')).join(QLatin1Char(
'-')).toLower()
134 if (!allLanguages.contains(languageString)) {
135 allLanguages.append(languageString);
141void AcceptLanguage::addLanguage()
143 Ui_AddAcceptLanguage acceptLangUi;
144 QDialog dialog(
this);
145 acceptLangUi.setupUi(&dialog);
146 acceptLangUi.listWidget->setLayoutDirection(Qt::LeftToRight);
148 QStringList allLanguages;
149 for (
int i = 1 + (
int)QLocale::C;
i <= (int)QLocale::LastLanguage; ++
i) {
150 allLanguages += expand(QLocale::Language(
i));
153 acceptLangUi.listWidget->addItems(allLanguages);
155 connect(acceptLangUi.listWidget, &QListWidget::itemDoubleClicked, &dialog, &QDialog::accept);
157 if (dialog.exec() == QDialog::Rejected) {
161 if (!acceptLangUi.ownDefinition->text().isEmpty()) {
162 QString title = tr(
"Personal [%1]").arg(acceptLangUi.ownDefinition->text());
163 ui->listWidget->addItem(title);
166 QListWidgetItem* c = acceptLangUi.listWidget->currentItem();
171 ui->listWidget->addItem(c->text());
175void AcceptLanguage::removeLanguage()
177 delete ui->listWidget->currentItem();
180void AcceptLanguage::upLanguage()
182 int index = ui->listWidget->currentRow();
183 QListWidgetItem* currentItem = ui->listWidget->currentItem();
185 if (!currentItem || index == 0) {
189 ui->listWidget->takeItem(index);
190 ui->listWidget->insertItem(index - 1, currentItem);
191 ui->listWidget->setCurrentItem(currentItem);
194void AcceptLanguage::downLanguage()
196 int index = ui->listWidget->currentRow();
197 QListWidgetItem* currentItem = ui->listWidget->currentItem();
199 if (!currentItem || index == ui->listWidget->count() - 1) {
203 ui->listWidget->takeItem(index);
204 ui->listWidget->insertItem(index + 1, currentItem);
205 ui->listWidget->setCurrentItem(currentItem);
211 for (
int i = 0;
i < ui->listWidget->count();
i++) {
212 QString
t = ui->listWidget->item(
i)->text();
213 QString code =
t.mid(
t.indexOf(QLatin1Char(
'[')) + 1);
214 code.remove(QLatin1Char(
']'));
222 mApp->networkManager()->loadSettings();
static QByteArray generateHeader(const QStringList &langs)
static QStringList defaultLanguage()
AcceptLanguage(QWidget *parent=nullptr)
~AcceptLanguage() override
void beginGroup(const QString &prefix)
QVariant value(const QString &key, const QVariant &defaultValue=QVariant())
void setValue(const QString &key, const QVariant &defaultValue=QVariant())