diff options
| author | Felix (xq) Queißner <git@mq32.de> | 2021-03-17 11:54:43 +0100 |
|---|---|---|
| committer | Felix (xq) Queißner <git@mq32.de> | 2021-05-08 10:44:03 +0200 |
| commit | 10684b6d82f1843eff3921da40802d335fb3cf5c (patch) | |
| tree | a80d403f0668686de90c2cd48786e7b5e5fc2128 /src/dialogs | |
| parent | a2f36ec4d14ddf1bcee98e52a0f3a924804d06fb (diff) | |
| download | kristall-10684b6d82f1843eff3921da40802d335fb3cf5c.tar.gz | |
Further improves localization (#191). Allows switching and setting the chosen localization properly.
Diffstat (limited to 'src/dialogs')
| -rw-r--r-- | src/dialogs/certificateiodialog.cpp | 7 | ||||
| -rw-r--r-- | src/dialogs/certificatemanagementdialog.cpp | 6 | ||||
| -rw-r--r-- | src/dialogs/certificateselectiondialog.cpp | 7 | ||||
| -rw-r--r-- | src/dialogs/newidentitiydialog.cpp | 6 | ||||
| -rw-r--r-- | src/dialogs/settingsdialog.cpp | 44 | ||||
| -rw-r--r-- | src/dialogs/settingsdialog.hpp | 6 | ||||
| -rw-r--r-- | src/dialogs/settingsdialog.ui | 70 |
7 files changed, 116 insertions, 30 deletions
diff --git a/src/dialogs/certificateiodialog.cpp b/src/dialogs/certificateiodialog.cpp index 75b9775..1f2b975 100644 --- a/src/dialogs/certificateiodialog.cpp +++ b/src/dialogs/certificateiodialog.cpp @@ -1,5 +1,6 @@ #include "certificateiodialog.hpp" #include "ui_certificateiodialog.h" +#include "kristall.hpp" #include <QFileDialog> #include <QPushButton> @@ -11,6 +12,12 @@ CertificateIoDialog::CertificateIoDialog(QWidget *parent) : { ui->setupUi(this); + connect( // connect with "this" as context, so the connection will die when the window is destroyed + kristall::globals().localization.get(), &Localization::translationChanged, + this, [this]() { this->ui->retranslateUi(this); }, + Qt::DirectConnection + ); + this->ui->key_type->clear(); this->ui->key_type->addItem("RSA", QVariant::fromValue<int>(QSsl::Rsa)); this->ui->key_type->addItem("ECDSA", QVariant::fromValue<int>(QSsl::Ec)); diff --git a/src/dialogs/certificatemanagementdialog.cpp b/src/dialogs/certificatemanagementdialog.cpp index 9b43ba7..e2db96b 100644 --- a/src/dialogs/certificatemanagementdialog.cpp +++ b/src/dialogs/certificatemanagementdialog.cpp @@ -17,6 +17,12 @@ CertificateManagementDialog::CertificateManagementDialog(QWidget *parent) : { ui->setupUi(this); + connect( // connect with "this" as context, so the connection will die when the window is destroyed + kristall::globals().localization.get(), &Localization::translationChanged, + this, [this]() { this->ui->retranslateUi(this); }, + Qt::DirectConnection + ); + this->ui->certificates->setModel(&identity_set); this->ui->certificates->expandAll(); diff --git a/src/dialogs/certificateselectiondialog.cpp b/src/dialogs/certificateselectiondialog.cpp index 4d7d5ff..334fd7c 100644 --- a/src/dialogs/certificateselectiondialog.cpp +++ b/src/dialogs/certificateselectiondialog.cpp @@ -14,6 +14,13 @@ CertificateSelectionDialog::CertificateSelectionDialog(QWidget *parent) : ui(new Ui::CertificateSelectionDialog) { ui->setupUi(this); + + connect( // connect with "this" as context, so the connection will die when the window is destroyed + kristall::globals().localization.get(), &Localization::translationChanged, + this, [this]() { this->ui->retranslateUi(this); }, + Qt::DirectConnection + ); + this->ui->server_request->setVisible(false); this->ui->certificates->setModel(&kristall::globals().identities); diff --git a/src/dialogs/newidentitiydialog.cpp b/src/dialogs/newidentitiydialog.cpp index 567fc7d..dc22e5f 100644 --- a/src/dialogs/newidentitiydialog.cpp +++ b/src/dialogs/newidentitiydialog.cpp @@ -13,6 +13,12 @@ NewIdentitiyDialog::NewIdentitiyDialog(QWidget *parent) : { ui->setupUi(this); + connect( // connect with "this" as context, so the connection will die when the window is destroyed + kristall::globals().localization.get(), &Localization::translationChanged, + this, [this]() { this->ui->retranslateUi(this); }, + Qt::DirectConnection + ); + ui->display_name->setText("Unnamed"); ui->common_name->setText("Unnamed"); ui->expiration_date->setDate(QDate::currentDate().addYears(1)); diff --git a/src/dialogs/settingsdialog.cpp b/src/dialogs/settingsdialog.cpp index c97d74c..19b0fd9 100644 --- a/src/dialogs/settingsdialog.cpp +++ b/src/dialogs/settingsdialog.cpp @@ -21,6 +21,12 @@ SettingsDialog::SettingsDialog(QWidget *parent) : { ui->setupUi(this); + connect( // connect with "this" as context, so the connection will die when the window is destroyed + kristall::globals().localization.get(), &Localization::translationChanged, + this, [this]() { this->ui->retranslateUi(this); }, + Qt::DirectConnection + ); + static_assert(DocumentStyle::Fixed == 0); static_assert(DocumentStyle::AutoDarkTheme == 1); static_assert(DocumentStyle::AutoLightTheme == 2); @@ -103,6 +109,11 @@ SettingsDialog::SettingsDialog(QWidget *parent) : this->ui->style_scroll_layout->minimumSize().width() + this->ui->style_scroll_area->verticalScrollBar()->sizeHint().width()); }); + + this->ui->selected_language->clear(); + this->ui->selected_language->addItem(QIcon(), tr("System language"), QString("")); + this->ui->selected_language->addItem(QIcon(":/icons/languages/en.svg"), QLocale("en").nativeLanguageName(), QString("en")); + this->ui->selected_language->addItem(QIcon(":/icons/languages/ru.svg"), QLocale("ru").nativeLanguageName(), QString("ru")); } SettingsDialog::~SettingsDialog() @@ -387,6 +398,32 @@ void SettingsDialog::setOptions(const GenericSettings &options) } } +std::optional<QLocale> SettingsDialog::locale() const +{ + QString locale_str = this->ui->selected_language->currentData().toString(); + if(locale_str.isEmpty()) + return std::nullopt; + else + return QLocale(locale_str); +} + +void SettingsDialog::setLocale(std::optional<QLocale> locale) +{ + if(locale == std::nullopt) + { + this->ui->selected_language->setCurrentIndex(0); + } + else + { + switch(locale->language()) + { + default: this->ui->selected_language->setCurrentIndex(0); break; + case QLocale::English: this->ui->selected_language->setCurrentIndex(1); break; + case QLocale::Russian: this->ui->selected_language->setCurrentIndex(2); break; + } + } +} + GenericSettings SettingsDialog::options() const { return this->current_options; @@ -988,3 +1025,10 @@ void SettingsDialog::on_session_restore_behaviour_currentIndexChanged(int index) { this->current_options.session_restore_behaviour = GenericSettings::SessionRestoreBehaviour(this->ui->session_restore_behaviour->itemData(index).toInt()); } + +void SettingsDialog::on_selected_language_currentIndexChanged(int index) +{ + auto const language_id = this->ui->selected_language->itemData(index, Qt::UserRole).toString(); + + kristall::globals().localization->translate(QLocale(language_id)); +} diff --git a/src/dialogs/settingsdialog.hpp b/src/dialogs/settingsdialog.hpp index 97b1549..9176cea 100644 --- a/src/dialogs/settingsdialog.hpp +++ b/src/dialogs/settingsdialog.hpp @@ -2,6 +2,7 @@ #define SETTINGSDIALOG_HPP #include <QDialog> +#include <optional> #include "renderers/geminirenderer.hpp" #include "protocolsetup.hpp" @@ -39,6 +40,9 @@ public: GenericSettings options() const; void setOptions(GenericSettings const & options); + std::optional<QLocale> locale() const; + void setLocale(std::optional<QLocale> locale); + private slots: void on_std_change_font_clicked(); @@ -178,6 +182,8 @@ private slots: void on_session_restore_behaviour_currentIndexChanged(int index); + void on_selected_language_currentIndexChanged(int index); + private: void reloadStylePreview(); diff --git a/src/dialogs/settingsdialog.ui b/src/dialogs/settingsdialog.ui index cfcd44f..45d9787 100644 --- a/src/dialogs/settingsdialog.ui +++ b/src/dialogs/settingsdialog.ui @@ -32,42 +32,42 @@ <string>Generic</string> </attribute> <layout class="QFormLayout" name="formLayout"> - <item row="0" column="0"> + <item row="1" column="0"> <widget class="QLabel" name="label_14"> <property name="text"> <string>Start Page:</string> </property> </widget> </item> - <item row="0" column="1"> + <item row="1" column="1"> <widget class="QLineEdit" name="start_page"> <property name="placeholderText"> <string>about://blank</string> </property> </widget> </item> - <item row="1" column="0"> + <item row="2" column="0"> <widget class="QLabel" name="label_40"> <property name="text"> <string>Search engine:</string> </property> </widget> </item> - <item row="1" column="1"> + <item row="2" column="1"> <widget class="QComboBox" name="search_engine"> <property name="editable"> <bool>true</bool> </property> </widget> </item> - <item row="2" column="0"> + <item row="3" column="0"> <widget class="QLabel" name="label_29"> <property name="text"> <string>Additional toolbar buttons</string> </property> </widget> </item> - <item row="2" column="1"> + <item row="3" column="1"> <layout class="QHBoxLayout" name="horizontalLayout_99"> <item> <widget class="QCheckBox" name="enable_home_btn"> @@ -99,54 +99,54 @@ </item> </layout> </item> - <item row="3" column="0"> + <item row="4" column="0"> <widget class="QLabel" name="label_19"> <property name="text"> <string>Startup Behaviour</string> </property> </widget> </item> - <item row="3" column="1"> + <item row="4" column="1"> <widget class="QComboBox" name="session_restore_behaviour"/> </item> - <item row="4" column="0"> + <item row="5" column="0"> <widget class="QLabel" name="label_15"> <property name="text"> <string>UI Theme</string> </property> </widget> </item> - <item row="4" column="1"> + <item row="5" column="1"> <widget class="QComboBox" name="ui_theme"/> </item> - <item row="5" column="0"> + <item row="6" column="0"> <widget class="QLabel" name="label_34"> <property name="text"> <string>Icon Theme</string> </property> </widget> </item> - <item row="5" column="1"> + <item row="6" column="1"> <widget class="QComboBox" name="icon_theme"/> </item> - <item row="6" column="0"> + <item row="7" column="0"> <widget class="QLabel" name="label_1"> <property name="text"> <string>UI Density</string> </property> </widget> </item> - <item row="6" column="1"> + <item row="7" column="1"> <widget class="QComboBox" name="ui_density"/> </item> - <item row="7" column="0"> + <item row="8" column="0"> <widget class="QLabel" name="label_16"> <property name="text"> <string>Enabled Protocols</string> </property> </widget> </item> - <item row="7" column="1"> + <item row="8" column="1"> <layout class="QHBoxLayout" name="horizontalLayout"> <item> <widget class="QCheckBox" name="enable_gemini"> @@ -191,14 +191,14 @@ </item> </layout> </item> - <item row="8" column="0"> + <item row="9" column="0"> <widget class="QLabel" name="label_22"> <property name="text"> <string>Unknown Scheme</string> </property> </widget> </item> - <item row="8" column="1"> + <item row="9" column="1"> <layout class="QHBoxLayout" name="horizontalLayout_7"> <item> <widget class="QRadioButton" name="scheme_os_default"> @@ -222,38 +222,38 @@ </item> </layout> </item> - <item row="9" column="0"> + <item row="10" column="0"> <widget class="QLabel" name="label_26"> <property name="text"> <string>Max. Number of Redirections</string> </property> </widget> </item> - <item row="9" column="1"> + <item row="10" column="1"> <widget class="QSpinBox" name="max_redirects"> <property name="value"> <number>5</number> </property> </widget> </item> - <item row="10" column="0"> + <item row="11" column="0"> <widget class="QLabel" name="label_27"> <property name="text"> <string>Redirection Handling</string> </property> </widget> </item> - <item row="10" column="1"> + <item row="11" column="1"> <widget class="QComboBox" name="redirection_mode"/> </item> - <item row="11" column="0"> + <item row="12" column="0"> <widget class="QLabel" name="label_28"> <property name="text"> <string>Network Timeout</string> </property> </widget> </item> - <item row="11" column="1"> + <item row="12" column="1"> <widget class="QSpinBox" name="network_timeout"> <property name="suffix"> <string> ms</string> @@ -266,6 +266,16 @@ </property> </widget> </item> + <item row="0" column="0"> + <widget class="QLabel" name="label_44"> + <property name="text"> + <string>Language</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QComboBox" name="selected_language"/> + </item> </layout> </widget> <widget class="QWidget" name="display_tab"> @@ -1651,14 +1661,14 @@ </connection> </connections> <buttongroups> - <buttongroup name="buttonGroup_7"/> - <buttongroup name="buttonGroup_6"/> - <buttongroup name="buttonGroup_5"/> - <buttongroup name="buttonGroup"/> - <buttongroup name="buttonGroup_9"/> - <buttongroup name="buttonGroup_8"/> <buttongroup name="buttonGroup_3"/> + <buttongroup name="buttonGroup"/> + <buttongroup name="buttonGroup_5"/> <buttongroup name="buttonGroup_4"/> + <buttongroup name="buttonGroup_7"/> + <buttongroup name="buttonGroup_6"/> <buttongroup name="buttonGroup_2"/> + <buttongroup name="buttonGroup_8"/> + <buttongroup name="buttonGroup_9"/> </buttongroups> </ui> |
