X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Futil.cpp;h=1b75f29b435623f3b142668791a071e42d641df5;hp=4c1a22f2ea47f6a78ee96924aa905f6c6806ded6;hb=a3aaabf6254c8c5439af8982cc613c4ced3f50ed;hpb=b5385b3ddf6f0e8df8f0af7275b59dcc1fcd0ed1 diff --git a/src/common/util.cpp b/src/common/util.cpp index 4c1a22f2..1b75f29b 100644 --- a/src/common/util.cpp +++ b/src/common/util.cpp @@ -18,11 +18,14 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#include "util.h" + #include #include #include +#include -#include "util.h" +#include "quassel.h" class QMetaMethod; @@ -104,7 +107,6 @@ bool readDataFromDevice(QIODevice *dev, quint32 &blockSize, QVariant &item) { uint editingDistance(const QString &s1, const QString &s2) { uint n = s1.size()+1; uint m = s2.size()+1; - //uint matrix[n][m]; QVector< QVector< uint > >matrix(n,QVector(m,0)); for(uint i = 0; i < n; i++) @@ -123,7 +125,7 @@ uint editingDistance(const QString &s1, const QString &s2) { min = deleteChar; else min = insertChar; - + if(s1[i-1] == s2[j-1]) { uint inheritChar = matrix[i-1][j-1]; if(inheritChar < min) @@ -142,12 +144,19 @@ QByteArray methodName(const QMetaMethod &method) { } QDir quasselDir() { - // kinda ugly, but I currently see no other way to do that + QString quasselDir; + if(Quassel::isOptionSet("datadir")) { + quasselDir = Quassel::optionValue("datadir"); + } else { + // FIXME use QDesktopServices #ifdef Q_OS_WIN32 - QString quasselDir = qgetenv("APPDATA") + "/quassel/"; + quasselDir = qgetenv("APPDATA") + "/quassel/"; +#elif defined Q_WS_MAC + quasselDir = QDir::homePath() + "/Library/Application Support/Quassel/"; #else - QString quasselDir = QDir::homePath() + "/.quassel/"; + quasselDir = QDir::homePath() + "/.quassel/"; #endif + } QDir qDir(quasselDir); if(!qDir.exists(quasselDir)) { @@ -159,22 +168,42 @@ QDir quasselDir() { return qDir; } +void loadTranslation(const QLocale &locale) { + QTranslator *qtTranslator = QCoreApplication::instance()->findChild("QtTr"); + QTranslator *quasselTranslator = QCoreApplication::instance()->findChild("QuasselTr"); + Q_ASSERT(qtTranslator); + Q_ASSERT(quasselTranslator); + + QLocale::setDefault(locale); + + QCoreApplication::removeTranslator(qtTranslator); + QCoreApplication::removeTranslator(quasselTranslator); + + if(locale.language() == QLocale::C) + return; + + qtTranslator->load(QString(":i18n/qt_%1").arg(locale.name())); + quasselTranslator->load(QString(":i18n/quassel_%1").arg(locale.name())); + + QCoreApplication::installTranslator(qtTranslator); + QCoreApplication::installTranslator(quasselTranslator); +} QString secondsToString(int timeInSeconds) { QList< QPair > timeUnit; - timeUnit.append(qMakePair(365*60*60, QCoreApplication::translate("Quassel::secondsToString()", "year"))); + timeUnit.append(qMakePair(365*24*60*60, QCoreApplication::translate("Quassel::secondsToString()", "year"))); timeUnit.append(qMakePair(24*60*60, QCoreApplication::translate("Quassel::secondsToString()", "day"))); timeUnit.append(qMakePair(60*60, QCoreApplication::translate("Quassel::secondsToString()", "h"))); timeUnit.append(qMakePair(60, QCoreApplication::translate("Quassel::secondsToString()", "min"))); timeUnit.append(qMakePair(1, QCoreApplication::translate("Quassel::secondsToString()", "sec"))); - QString returnString; + QStringList returnString; for(int i=0; i < timeUnit.size(); i++) { int n = timeInSeconds / timeUnit[i].first; if(n > 0) { - returnString += QString("%1 %2 ").arg(QString::number(n), timeUnit[i].second); + returnString += QString("%1 %2").arg(QString::number(n), timeUnit[i].second); } timeInSeconds = timeInSeconds % timeUnit[i].first; } - return returnString; + return returnString.join(", "); }