X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcommon%2Futil.cpp;h=9bd17d9488083a6d3d45f668af0b4eebfe638c62;hb=021349871bba78f30e07e34f75cbfdda414343bd;hp=25ff475b00ded9d329ac919440098e8c3d047c40;hpb=e008cd12ef319c4b5f9fe5a8cc1524829551771d;p=quassel.git diff --git a/src/common/util.cpp b/src/common/util.cpp index 25ff475b..9bd17d94 100644 --- a/src/common/util.cpp +++ b/src/common/util.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-07 by the Quassel IRC Team * + * Copyright (C) 2005-08 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -19,8 +19,11 @@ ***************************************************************************/ #include "util.h" + +#include #include #include +#include class QMetaMethod; @@ -102,7 +105,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++) @@ -138,3 +140,61 @@ QByteArray methodName(const QMetaMethod &method) { QByteArray sig(method.signature()); return sig.left(sig.indexOf("(")); } + +QDir quasselDir() { + // kinda ugly, but I currently see no other way to do that +#ifdef Q_OS_WIN32 + QString quasselDir = qgetenv("APPDATA") + "/quassel/"; +#else + QString quasselDir = QDir::homePath() + "/.quassel/"; +#endif + + QDir qDir(quasselDir); + if(!qDir.exists(quasselDir)) { + if(!qDir.mkpath(quasselDir)) { + qCritical() << "Unable to create Quassel data directory:" << qPrintable(qDir.absolutePath()); + } + } + + 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(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; + 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); + } + timeInSeconds = timeInSeconds % timeUnit[i].first; + } + return returnString; +}