/***************************************************************************
- * Copyright (C) 2005-08 by the Quassel Project *
+ * Copyright (C) 2005-09 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include <QCoreApplication>
#include <QDebug>
+#include <QFile>
#include <QLibraryInfo>
#include <QTextCodec>
#include <QTranslator>
return matrix[n-1][m-1];
}
-QByteArray methodName(const QMetaMethod &method) {
- QByteArray sig(method.signature());
- return sig.left(sig.indexOf("("));
-}
-
QDir quasselDir() {
QString quasselDir;
if(Quassel::isOptionSet("datadir")) {
return qDir;
}
+QStringList dataDirPaths() {
+ QStringList dataDirNames = QString(qgetenv("XDG_DATA_DIRS")).split(':', QString::SkipEmptyParts);
+
+ // Provide a fallback
+# ifdef Q_OS_UNIX
+ if(dataDirNames.isEmpty()) dataDirNames.append("/usr/share");
+ // on UNIX, we always check our install prefix
+ QString appDir = QCoreApplication::applicationDirPath();
+ int binpos = appDir.lastIndexOf("/bin");
+ if(binpos >= 0) {
+ appDir.replace(binpos, 4, "/share");
+ if(!dataDirNames.contains(appDir)) dataDirNames.append(appDir);
+ }
+# endif
+
+ return dataDirNames;
+}
+
+QString findDataFilePath(const QString &fileName) {
+ QStringList dataDirs = dataDirPaths();
+ foreach(QString dataDir, dataDirs) {
+ QString path = dataDir + "/apps/quassel/" + fileName;
+ if(QFile::exists(path))
+ return path;
+ }
+ return QString();
+}
+
void loadTranslation(const QLocale &locale) {
QTranslator *qtTranslator = QCoreApplication::instance()->findChild<QTranslator *>("QtTr");
QTranslator *quasselTranslator = QCoreApplication::instance()->findChild<QTranslator *>("QuasselTr");
if(locale.language() == QLocale::C)
return;
- qtTranslator->load(QString("%2/qt_%1").arg(locale.name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)));
+ bool success = qtTranslator->load(QString(":i18n/qt_%1").arg(locale.name()));
+ if(!success)
+ qtTranslator->load(QString("%2/qt_%1").arg(locale.name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)));
quasselTranslator->load(QString(":i18n/quassel_%1").arg(locale.name()));
}