Skip to content

Commit

Permalink
Move all of the language code into LanageManager
Browse files Browse the repository at this point in the history
Simplify some code
Delay stating the file system if possible.
Use a list rather then a hash for the list of possible languages.
  • Loading branch information
icefox committed Sep 27, 2008
1 parent b4d756c commit 119442d
Show file tree
Hide file tree
Showing 5 changed files with 161 additions and 217 deletions.
73 changes: 9 additions & 64 deletions src/browserapplication.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,6 @@ LanguageManager *BrowserApplication::s_languageManager = 0;

BrowserApplication::BrowserApplication(int &argc, char **argv)
: QApplication(argc, argv)
, m_sysTranslator(0)
, m_appTranslator(0)
, m_localServer(0)
, quiting(false)
{
Expand Down Expand Up @@ -164,6 +162,11 @@ BrowserApplication::BrowserApplication(int &argc, char **argv)
m_lastSession = settings.value(QLatin1String("lastSession")).toByteArray();
settings.endGroup();

settings.beginGroup(QLatin1String("LanguageManager"));
if (settings.contains(QLatin1String("language")))
languageManager()->setCurrentLanguage(settings.value(QLatin1String("language")).toString());
settings.endGroup();

#if defined(Q_WS_MAC)
connect(this, SIGNAL(lastWindowClosed()),
this, SLOT(lastWindowClosed()));
Expand All @@ -172,7 +175,6 @@ BrowserApplication::BrowserApplication(int &argc, char **argv)
#ifndef AUTOTESTS
QTimer::singleShot(0, this, SLOT(postLaunch()));
#endif // AUTOTESTS
updateTranslators();
}

BrowserApplication::~BrowserApplication()
Expand Down Expand Up @@ -525,73 +527,18 @@ BookmarksManager *BrowserApplication::bookmarksManager()

LanguageManager* BrowserApplication::languageManager()
{
if (!s_languageManager) {
QSettings settings;
if (!s_languageManager)
s_languageManager = new LanguageManager;
settings.beginGroup(QLatin1String("BrowserMainWindow"));
s_languageManager->setCurrentLanguage( settings.value(QLatin1String("lang")).toString() );
}
return s_languageManager;
}

void BrowserApplication::updateTranslators()
{
QTranslator *newSysTranslator = new QTranslator(this);
QTranslator *newAppTranslator = new QTranslator(this);
LanguageManager * l_manager = languageManager();

QString definedLocale = l_manager->currentLanguage();
if (!definedLocale.isEmpty())
{
bool loaded = true;
QString resourceDir = QLibraryInfo::location(QLibraryInfo::TranslationsPath);
QString translatorFileName;

translatorFileName = dataDirectory() + QDir::separator() + QLatin1String("locale");
loaded = newAppTranslator->load(definedLocale, translatorFileName);

translatorFileName = QLatin1String("qt_");
translatorFileName += definedLocale;
/*loaded |= */newSysTranslator->load(translatorFileName, resourceDir);

if (loaded)
{
bool reTranslationNeeded = false;
if (m_appTranslator!=NULL)
{
reTranslationNeeded = true;
qApp->removeTranslator(m_appTranslator);
delete m_appTranslator;
}

if (m_sysTranslator!=NULL)
{
reTranslationNeeded = true;
qApp->removeTranslator(m_sysTranslator);
delete m_sysTranslator;
}

// now remember that events are sent to the whole application widgets
// about the new lanague, so they *do* need to catch this and re-translate
qApp->installTranslator(newAppTranslator);
qApp->installTranslator(newSysTranslator);
m_appTranslator = newAppTranslator;
m_sysTranslator = newSysTranslator;
}
}

QSettings settings;
settings.beginGroup(QLatin1String("BrowserMainWindow"));
settings.setValue( QLatin1String("lang"), l_manager->currentLanguage() );
}

QString BrowserApplication::dataDirectory()
{
#if defined(Q_WS_X11)
#if defined(Q_WS_X11)
return QLatin1String(PKGDATADIR);
#else
#else
return qApp->applicationDirPath();
#endif
#endif
}

QIcon BrowserApplication::icon(const QUrl &url)
Expand All @@ -610,5 +557,3 @@ QIcon BrowserApplication::icon(const QUrl &url)
return icon;
}

// kate: space-indent on; tab-indent off; tab-width 4; indent-width 4; mixedindent off; indent-mode cstyle;
// kate: syntax: c++; auto-brackets on; auto-insert-doxygen: on; end-of-line: unix; show-tabs: on;
5 changes: 0 additions & 5 deletions src/browserapplication.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ class DownloadManager;
class HistoryManager;
class NetworkAccessManager;
class LanguageManager;
class QTranslator;
class BrowserApplication : public QApplication
{
Q_OBJECT
Expand All @@ -107,8 +106,6 @@ class BrowserApplication : public QApplication
static LanguageManager *languageManager();
static QString dataDirectory();

void updateTranslators();

#if defined(Q_WS_MAC)
bool event(QEvent *event);
#endif
Expand All @@ -135,8 +132,6 @@ private slots:
static BookmarksManager *s_bookmarksManager;
static LanguageManager *s_languageManager;

QTranslator *m_sysTranslator;
QTranslator *m_appTranslator;
QList<QPointer<BrowserMainWindow> > m_mainWindows;
QLocalServer *m_localServer;
QByteArray m_lastSession;
Expand Down
4 changes: 1 addition & 3 deletions src/browsermainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -548,7 +548,7 @@ void BrowserMainWindow::setupMenu()

// Help
QMenu *helpMenu = menuBar()->addMenu(tr("&Help"));
helpMenu->addAction(tr("Switch application language "), BrowserApplication::languageManager(), SLOT(getLanguageFromUser()));
helpMenu->addAction(tr("Switch application language "), BrowserApplication::languageManager(), SLOT(chooseNewLanguage()));
helpMenu->addSeparator();
helpMenu->addAction(tr("About &Qt"), qApp, SLOT(aboutQt()));
helpMenu->addAction(tr("About &Arora"), this, SLOT(slotAboutApplication()));
Expand Down Expand Up @@ -1154,5 +1154,3 @@ void BrowserMainWindow::geometryChangeRequested(const QRect &geometry)
setGeometry(geometry);
}

// kate: space-indent on; tab-indent off; tab-width 4; indent-width 4; mixedindent off; indent-mode cstyle;
// kate: syntax: c++; auto-brackets on; auto-insert-doxygen: on; end-of-line: unix; show-tabs: on;
Loading

0 comments on commit 119442d

Please sign in to comment.