Skip to content

Commit

Permalink
Merge bitcoin#1599: [GUI][Bug] Fix language selection invalidly stored
Browse files Browse the repository at this point in the history
150c8f4 [GUI] Re translate welcome wizard on every language selection. (furszy)
b1d423b BugFix welcome wizard not storing & loading the selected language. (furszy)
1ee7398 BugFix invalid language mapping. (furszy)

Pull request description:

  Quick solution to the translations issue bitcoin#1597 .

  fixes bitcoin#1597

ACKs for top commit:
  Fuzzbawls:
    ACK 150c8f4
  random-zebra:
    Great job! 👍 ACK 150c8f4 and merging...

Tree-SHA512: 6f23e29071751bbfe4cdeb61ae29b1785246919a7ff649a978449db8426143ae92998a87d118632f4cedb1338aa8926d26a24a2f61afec42cfa34dfccac29cbd
  • Loading branch information
random-zebra committed May 5, 2020
2 parents 1fc629b + 150c8f4 commit 72595d7
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 11 deletions.
16 changes: 8 additions & 8 deletions src/qt/pivx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ static std::string Translate(const char* psz)
return QCoreApplication::translate("pivx-core", psz).toStdString();
}

static QString GetLangTerritory()
static QString GetLangTerritory(bool forceLangFromSetting = false)
{
QSettings settings;
// Get desired locale (e.g. "de_DE")
Expand All @@ -97,11 +97,11 @@ static QString GetLangTerritory()
lang_territory = lang_territory_qsettings;
// 3) -lang command line argument
lang_territory = QString::fromStdString(GetArg("-lang", lang_territory.toStdString()));
return lang_territory;
return (forceLangFromSetting) ? lang_territory_qsettings : lang_territory;
}

/** Set up translations */
static void initTranslations(QTranslator& qtTranslatorBase, QTranslator& qtTranslator, QTranslator& translatorBase, QTranslator& translator)
static void initTranslations(QTranslator& qtTranslatorBase, QTranslator& qtTranslator, QTranslator& translatorBase, QTranslator& translator, bool forceLangFromSettings = false)
{
// Remove old translators
QApplication::removeTranslator(&qtTranslatorBase);
Expand All @@ -111,7 +111,7 @@ static void initTranslations(QTranslator& qtTranslatorBase, QTranslator& qtTrans

// Get desired locale (e.g. "de_DE")
// 1) System default language
QString lang_territory = GetLangTerritory();
QString lang_territory = GetLangTerritory(forceLangFromSettings);

// Convert to "de" only by truncating "_DE"
QString lang = lang_territory;
Expand Down Expand Up @@ -216,7 +216,7 @@ public Q_SLOTS:
void shutdownResult(int retval);
/// Handle runaway exceptions. Shows a message box with the problem and quits the program.
void handleRunawayException(const QString& message);
void updateTranslation();
void updateTranslation(bool forceLangFromSettings = false);

Q_SIGNALS:
void requestedInitialize();
Expand Down Expand Up @@ -382,7 +382,7 @@ bool BitcoinApplication::createTutorialScreen()
WelcomeContentWidget* widget = new WelcomeContentWidget();

connect(widget, &WelcomeContentWidget::onLanguageSelected, [this](){
updateTranslation();
updateTranslation(true);
});

widget->exec();
Expand All @@ -391,9 +391,9 @@ bool BitcoinApplication::createTutorialScreen()
return ret;
}

void BitcoinApplication::updateTranslation(){
void BitcoinApplication::updateTranslation(bool forceLangFromSettings){
// Re-initialize translations after change them
initTranslations(this->qtTranslatorBase, this->qtTranslator, this->translatorBase, this->translator);
initTranslations(this->qtTranslatorBase, this->qtTranslator, this->translatorBase, this->translator, forceLangFromSettings);
}

void BitcoinApplication::startThread()
Expand Down
2 changes: 1 addition & 1 deletion src/qt/pivx/settings/settingsdisplayoptionswidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ void SettingsDisplayOptionsWidget::onResetClicked()
void SettingsDisplayOptionsWidget::setMapper(QDataWidgetMapper *mapper)
{
mapper->addMapping(ui->comboBoxDigits, OptionsModel::Digits);
mapper->addMapping(ui->comboBoxLanguage, OptionsModel::Language);
mapper->addMapping(ui->comboBoxLanguage, OptionsModel::Language, "currentData");
mapper->addMapping(ui->comboBoxUnit, OptionsModel::DisplayUnit);
mapper->addMapping(ui->pushButtonSwitchBalance, OptionsModel::HideZeroBalances);
#ifdef USE_QTCHARTS
Expand Down
4 changes: 3 additions & 1 deletion src/qt/pivx/welcomecontentwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ WelcomeContentWidget::WelcomeContentWidget(QWidget *parent) :
connect(ui->pushButtonSkip, &QPushButton::clicked, this, &WelcomeContentWidget::close);
connect(nextButton, &QPushButton::clicked, this, &WelcomeContentWidget::onNextClicked);
connect(backButton, &QPushButton::clicked, this, &WelcomeContentWidget::onBackClicked);

connect(ui->comboBoxLanguage, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &WelcomeContentWidget::checkLanguage);
initLanguages();


Expand Down Expand Up @@ -200,7 +200,9 @@ void WelcomeContentWidget::checkLanguage(){
QSettings settings;
if (settings.value("language") != sel){
settings.setValue("language", sel);
settings.sync();
Q_EMIT onLanguageSelected();
ui->retranslateUi(this);
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/qt/pivx/welcomecontentwidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ class WelcomeContentWidget : public QDialog
bool isOk = false;

void setModel(OptionsModel *model);
void checkLanguage();

Q_SIGNALS:
void onLanguageSelected();
Expand All @@ -34,6 +33,7 @@ public Q_SLOTS:
void onNextClicked();
void onBackClicked();
void onSkipClicked();
void checkLanguage();

private:
Ui::WelcomeContentWidget *ui;
Expand Down

0 comments on commit 72595d7

Please sign in to comment.