aboutsummaryrefslogtreecommitdiff
path: root/src/dialogs
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2021-03-17 11:54:43 +0100
committerFelix (xq) Queißner <git@mq32.de>2021-05-08 10:44:03 +0200
commit10684b6d82f1843eff3921da40802d335fb3cf5c (patch)
treea80d403f0668686de90c2cd48786e7b5e5fc2128 /src/dialogs
parenta2f36ec4d14ddf1bcee98e52a0f3a924804d06fb (diff)
downloadkristall-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.cpp7
-rw-r--r--src/dialogs/certificatemanagementdialog.cpp6
-rw-r--r--src/dialogs/certificateselectiondialog.cpp7
-rw-r--r--src/dialogs/newidentitiydialog.cpp6
-rw-r--r--src/dialogs/settingsdialog.cpp44
-rw-r--r--src/dialogs/settingsdialog.hpp6
-rw-r--r--src/dialogs/settingsdialog.ui70
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>