+
+QDir quasselDir() {
+ QString quasselDir;
+ if(Quassel::isOptionSet("datadir")) {
+ quasselDir = Quassel::optionValue("datadir");
+ } else {
+ // FIXME use QDesktopServices
+#ifdef Q_OS_WIN32
+ quasselDir = qgetenv("APPDATA") + "/quassel/";
+#elif defined Q_WS_MAC
+ quasselDir = QDir::homePath() + "/Library/Application Support/Quassel/";
+#else
+ 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<QTranslator *>("QtTr");
+ QTranslator *quasselTranslator = QCoreApplication::instance()->findChild<QTranslator *>("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<int, QString> > timeUnit;
+ 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")));
+
+ 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);
+ }
+ timeInSeconds = timeInSeconds % timeUnit[i].first;
+ }
+ return returnString.join(", ");
+}