forked from len0rd/rockbox
Rockbox Utility: listen to translation change events.
When changing the language don't require a restart anymore. Instead listen to the appropriate changeEvent and retranslate the UI. Designer generated UI files already provide such a function. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30633 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
d25341a032
commit
2e3de70401
21 changed files with 151 additions and 12 deletions
|
|
@ -39,6 +39,7 @@
|
||||||
#include <tchar.h>
|
#include <tchar.h>
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
#include "rbutilqt.h"
|
||||||
|
|
||||||
#define DEFAULT_LANG "English (en)"
|
#define DEFAULT_LANG "English (en)"
|
||||||
#define DEFAULT_LANG_CODE "en"
|
#define DEFAULT_LANG_CODE "en"
|
||||||
|
|
@ -147,13 +148,6 @@ void Config::accept()
|
||||||
else proxyType = "manual";
|
else proxyType = "manual";
|
||||||
RbSettings::setValue(RbSettings::ProxyType, proxyType);
|
RbSettings::setValue(RbSettings::ProxyType, proxyType);
|
||||||
|
|
||||||
// language
|
|
||||||
if(RbSettings::value(RbSettings::Language).toString() != language
|
|
||||||
&& !language.isEmpty()) {
|
|
||||||
QMessageBox::information(this, tr("Language changed"),
|
|
||||||
tr("You need to restart the application for the changed language "
|
|
||||||
"to take effect."));
|
|
||||||
}
|
|
||||||
RbSettings::setValue(RbSettings::Language, language);
|
RbSettings::setValue(RbSettings::Language, language);
|
||||||
|
|
||||||
// mountpoint
|
// mountpoint
|
||||||
|
|
@ -563,10 +557,36 @@ QString Config::languageName(const QString &qmFile)
|
||||||
void Config::updateLanguage()
|
void Config::updateLanguage()
|
||||||
{
|
{
|
||||||
qDebug() << "[Config] update selected language";
|
qDebug() << "[Config] update selected language";
|
||||||
|
|
||||||
|
// remove all old translators
|
||||||
|
for(int i = 0; i < RbUtilQt::translators.size(); ++i) {
|
||||||
|
qApp->removeTranslator(RbUtilQt::translators.at(i));
|
||||||
|
// do not delete old translators, this confuses Qt.
|
||||||
|
}
|
||||||
|
RbUtilQt::translators.clear();
|
||||||
QList<QListWidgetItem*> a = ui.listLanguages->selectedItems();
|
QList<QListWidgetItem*> a = ui.listLanguages->selectedItems();
|
||||||
if(a.size() > 0)
|
if(a.size() > 0)
|
||||||
language = lang.value(a.at(0)->text());
|
language = lang.value(a.at(0)->text());
|
||||||
qDebug() << "[Config] new language:" << language;
|
qDebug() << "[Config] new language:" << language;
|
||||||
|
|
||||||
|
QString applang = QLocale::system().name();
|
||||||
|
QTranslator *translator = new QTranslator(qApp);
|
||||||
|
QTranslator *qttrans = new QTranslator(qApp);
|
||||||
|
QString absolutePath = QCoreApplication::instance()->applicationDirPath();
|
||||||
|
|
||||||
|
if(!translator->load("rbutil_" + language, absolutePath))
|
||||||
|
translator->load("rbutil_" + language, ":/lang");
|
||||||
|
if(!qttrans->load("qt_" + language,
|
||||||
|
QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
|
||||||
|
qttrans->load("qt_" + language, ":/lang");
|
||||||
|
|
||||||
|
qApp->installTranslator(translator);
|
||||||
|
qApp->installTranslator(qttrans);
|
||||||
|
RbUtilQt::translators.append(translator);
|
||||||
|
RbUtilQt::translators.append(qttrans);
|
||||||
|
|
||||||
|
QLocale::setDefault(language);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -878,3 +898,13 @@ void Config::configEnc()
|
||||||
updateEncState();
|
updateEncState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Config::changeEvent(QEvent *e)
|
||||||
|
{
|
||||||
|
if(e->type() == QEvent::LanguageChange) {
|
||||||
|
ui.retranslateUi(this);
|
||||||
|
} else {
|
||||||
|
QWidget::changeEvent(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,7 @@ class Config : public QDialog
|
||||||
QUrl proxy;
|
QUrl proxy;
|
||||||
QString mountpoint;
|
QString mountpoint;
|
||||||
void updateCacheInfo(QString);
|
void updateCacheInfo(QString);
|
||||||
|
void changeEvent(QEvent *event);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void setNoProxy(bool);
|
void setNoProxy(bool);
|
||||||
|
|
|
||||||
|
|
@ -132,3 +132,13 @@ void CreateVoiceWindow::saveSettings(void)
|
||||||
ui.wavtrimthreshold->value());
|
ui.wavtrimthreshold->value());
|
||||||
RbSettings::sync();
|
RbSettings::sync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CreateVoiceWindow::changeEvent(QEvent *e)
|
||||||
|
{
|
||||||
|
if(e->type() == QEvent::LanguageChange) {
|
||||||
|
ui.retranslateUi(this);
|
||||||
|
} else {
|
||||||
|
QWidget::changeEvent(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ class CreateVoiceWindow : public QDialog
|
||||||
void settingsUpdated(void);
|
void settingsUpdated(void);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void changeEvent(QEvent *event);
|
||||||
VoiceFileCreator* voicecreator;
|
VoiceFileCreator* voicecreator;
|
||||||
Ui::CreateVoiceFrm ui;
|
Ui::CreateVoiceFrm ui;
|
||||||
ProgressLoggerGui* logger;
|
ProgressLoggerGui* logger;
|
||||||
|
|
|
||||||
|
|
@ -145,3 +145,13 @@ void InstallTalkWindow::updateSettings(void)
|
||||||
emit settingsUpdated();
|
emit settingsUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void InstallTalkWindow::changeEvent(QEvent *e)
|
||||||
|
{
|
||||||
|
if(e->type() == QEvent::LanguageChange) {
|
||||||
|
ui.retranslateUi(this);
|
||||||
|
} else {
|
||||||
|
QWidget::changeEvent(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ class InstallTalkWindow : public QDialog
|
||||||
void settingsUpdated(void);
|
void settingsUpdated(void);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void changeEvent(QEvent *event);
|
||||||
TalkFileCreator* talkcreator;
|
TalkFileCreator* talkcreator;
|
||||||
Ui::InstallTalkFrm ui;
|
Ui::InstallTalkFrm ui;
|
||||||
ProgressLoggerGui* logger;
|
ProgressLoggerGui* logger;
|
||||||
|
|
|
||||||
|
|
@ -317,4 +317,12 @@ void InstallWindow::setDetailsArchived(bool show)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void InstallWindow::changeEvent(QEvent *e)
|
||||||
|
{
|
||||||
|
if(e->type() == QEvent::LanguageChange) {
|
||||||
|
ui.retranslateUi(this);
|
||||||
|
} else {
|
||||||
|
QWidget::changeEvent(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ class InstallWindow : public QDialog
|
||||||
ZipInstaller* installer;
|
ZipInstaller* installer;
|
||||||
QString m_backupName;
|
QString m_backupName;
|
||||||
void resizeEvent(QResizeEvent*);
|
void resizeEvent(QResizeEvent*);
|
||||||
|
void changeEvent(QEvent *event);
|
||||||
|
|
||||||
void changeBackupPath(QString);
|
void changeBackupPath(QString);
|
||||||
void updateBackupLocation(void);
|
void updateBackupLocation(void);
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,13 @@ int main( int argc, char ** argv ) {
|
||||||
if(QObject::tr("LTR") == "RTL")
|
if(QObject::tr("LTR") == "RTL")
|
||||||
app.setLayoutDirection(Qt::RightToLeft);
|
app.setLayoutDirection(Qt::RightToLeft);
|
||||||
|
|
||||||
|
// keep a list of installed translators. Needed to be able uninstalling them
|
||||||
|
// later again (in case of translation changes)
|
||||||
|
QList<QTranslator*> translators;
|
||||||
|
translators.append(&translator);
|
||||||
|
translators.append(&qttrans);
|
||||||
RbUtilQt window(0);
|
RbUtilQt window(0);
|
||||||
|
RbUtilQt::translators = translators;
|
||||||
window.show();
|
window.show();
|
||||||
|
|
||||||
// app.connect( &app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()) );
|
// app.connect( &app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()) );
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,16 @@ void PreviewDlg::leaveEvent(QEvent * event)
|
||||||
this->close();
|
this->close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PreviewDlg::changeEvent(QEvent *e)
|
||||||
|
{
|
||||||
|
if(e->type() == QEvent::LanguageChange) {
|
||||||
|
ui.retranslateUi(this);
|
||||||
|
} else {
|
||||||
|
QWidget::changeEvent(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PreviewLabel::PreviewLabel(QWidget * parent, Qt::WindowFlags f)
|
PreviewLabel::PreviewLabel(QWidget * parent, Qt::WindowFlags f)
|
||||||
:QLabel(parent,f)
|
:QLabel(parent,f)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ public:
|
||||||
void setText(QString text);
|
void setText(QString text);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
void changeEvent(QEvent *event);
|
||||||
void mouseMoveEvent(QMouseEvent * event);
|
void mouseMoveEvent(QMouseEvent * event);
|
||||||
void leaveEvent(QEvent * event);
|
void leaveEvent(QEvent * event);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,8 @@
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
QList<QTranslator*> RbUtilQt::translators;
|
||||||
|
|
||||||
RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent)
|
RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent)
|
||||||
{
|
{
|
||||||
// startup log
|
// startup log
|
||||||
|
|
@ -1380,3 +1382,13 @@ void RbUtilQt::downloadUpdateDone(bool error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RbUtilQt::changeEvent(QEvent *e)
|
||||||
|
{
|
||||||
|
if(e->type() == QEvent::LanguageChange) {
|
||||||
|
ui.retranslateUi(this);
|
||||||
|
} else {
|
||||||
|
QMainWindow::changeEvent(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,8 @@
|
||||||
|
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
#include <QTemporaryFile>
|
#include <QTemporaryFile>
|
||||||
|
#include <QList>
|
||||||
|
#include <QTranslator>
|
||||||
|
|
||||||
#include "ui_rbutilqtfrm.h"
|
#include "ui_rbutilqtfrm.h"
|
||||||
#include "httpget.h"
|
#include "httpget.h"
|
||||||
|
|
@ -38,10 +40,12 @@ class RbUtilQt : public QMainWindow
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RbUtilQt(QWidget *parent = 0);
|
RbUtilQt(QWidget *parent = 0);
|
||||||
|
static QList<QTranslator*> translators;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::RbUtilQtFrm ui;
|
Ui::RbUtilQtFrm ui;
|
||||||
|
|
||||||
|
void changeEvent(QEvent *e);
|
||||||
void initDeviceNames(void);
|
void initDeviceNames(void);
|
||||||
QString deviceName(QString);
|
QString deviceName(QString);
|
||||||
QString platform;
|
QString platform;
|
||||||
|
|
|
||||||
|
|
@ -81,3 +81,12 @@ QString Sysinfo::getInfo()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Sysinfo::changeEvent(QEvent *e)
|
||||||
|
{
|
||||||
|
if(e->type() == QEvent::LanguageChange) {
|
||||||
|
ui.retranslateUi(this);
|
||||||
|
} else {
|
||||||
|
QWidget::changeEvent(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,10 +34,11 @@ class Sysinfo : public QDialog
|
||||||
|
|
||||||
static QString getInfo();
|
static QString getInfo();
|
||||||
private:
|
private:
|
||||||
|
void changeEvent(QEvent *event);
|
||||||
Ui::SysinfoFrm ui;
|
Ui::SysinfoFrm ui;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void updateSysinfo(void);
|
void updateSysinfo(void);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -121,3 +121,13 @@ void SysTrace::flush(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void SysTrace::changeEvent(QEvent *e)
|
||||||
|
{
|
||||||
|
if(e->type() == QEvent::LanguageChange) {
|
||||||
|
ui.retranslateUi(this);
|
||||||
|
} else {
|
||||||
|
QWidget::changeEvent(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ class SysTrace : public QDialog
|
||||||
static void save(QString filename = "");
|
static void save(QString filename = "");
|
||||||
private:
|
private:
|
||||||
static void flush(void);
|
static void flush(void);
|
||||||
|
void changeEvent(QEvent *event);
|
||||||
Ui::SysTraceFrm ui;
|
Ui::SysTraceFrm ui;
|
||||||
static QString debugbuffer;
|
static QString debugbuffer;
|
||||||
static QString lastmessage;
|
static QString lastmessage;
|
||||||
|
|
|
||||||
|
|
@ -359,3 +359,13 @@ void ThemesInstallWindow::accept()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ThemesInstallWindow::changeEvent(QEvent *e)
|
||||||
|
{
|
||||||
|
if(e->type() == QEvent::LanguageChange) {
|
||||||
|
ui.retranslateUi(this);
|
||||||
|
} else {
|
||||||
|
QWidget::changeEvent(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ class ThemesInstallWindow : public QDialog
|
||||||
HttpGet igetter;
|
HttpGet igetter;
|
||||||
QTemporaryFile themesInfo;
|
QTemporaryFile themesInfo;
|
||||||
void resizeEvent(QResizeEvent*);
|
void resizeEvent(QResizeEvent*);
|
||||||
|
void changeEvent(QEvent *event);
|
||||||
QByteArray imgData;
|
QByteArray imgData;
|
||||||
ProgressLoggerGui *logger;
|
ProgressLoggerGui *logger;
|
||||||
ZipInstaller *installer;
|
ZipInstaller *installer;
|
||||||
|
|
|
||||||
|
|
@ -89,3 +89,13 @@ void UninstallWindow::UninstallMethodChanged(bool complete)
|
||||||
ui.smartGroupBox->setEnabled(true);
|
ui.smartGroupBox->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void UninstallWindow::changeEvent(QEvent *e)
|
||||||
|
{
|
||||||
|
if(e->type() == QEvent::LanguageChange) {
|
||||||
|
ui.retranslateUi(this);
|
||||||
|
} else {
|
||||||
|
QWidget::changeEvent(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,9 @@ class UninstallWindow : public QDialog
|
||||||
private slots:
|
private slots:
|
||||||
void selectionChanged();
|
void selectionChanged();
|
||||||
void UninstallMethodChanged(bool complete);
|
void UninstallMethodChanged(bool complete);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void changeEvent(QEvent *event);
|
||||||
Uninstaller* uninstaller;
|
Uninstaller* uninstaller;
|
||||||
Ui::UninstallFrm ui;
|
Ui::UninstallFrm ui;
|
||||||
ProgressLoggerGui* logger;
|
ProgressLoggerGui* logger;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue