X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Futil.cpp;h=f52154cb987947eed7a81719c17cb54fd1cab769;hp=9bd17d9488083a6d3d45f668af0b4eebfe638c62;hb=8dcad46c8d6ad1eb38c36dc1c6333c4c480250ab;hpb=665faa937a52fc6175741292737c4a52875b4f75 diff --git a/src/common/util.cpp b/src/common/util.cpp index 9bd17d94..f52154cb 100644 --- a/src/common/util.cpp +++ b/src/common/util.cpp @@ -25,6 +25,8 @@ #include #include +#include "quassel.h" + class QMetaMethod; QString nickFromMask(QString mask) { @@ -47,6 +49,17 @@ bool isChannelName(QString str) { return QString("#&!+").contains(str[0]); } +QString stripFormatCodes(QString str) { + str.remove(QRegExp("\x03(\\d\\d?(,\\d\\d?)?)?")); + str.remove('\x02'); + str.remove('\x0f'); + str.remove('\x12'); + str.remove('\x16'); + str.remove('\x1d'); + str.remove('\x1f'); + return str; +} + QString decodeString(const QByteArray &input, QTextCodec *codec) { // First, we check if it's utf8. It is very improbable to encounter a string that looks like // valid utf8, but in fact is not. This means that if the input string passes as valid utf8, it @@ -123,7 +136,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 +155,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)) { @@ -172,7 +192,7 @@ void loadTranslation(const QLocale &locale) { if(locale.language() == QLocale::C) return; - + qtTranslator->load(QString(":i18n/qt_%1").arg(locale.name())); quasselTranslator->load(QString(":i18n/quassel_%1").arg(locale.name())); @@ -182,19 +202,19 @@ void loadTranslation(const QLocale &locale) { 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(", "); }