X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Futil.cpp;h=c267d0bf82f0d8ec7ec42f39aed5350791471d81;hp=41139dd5e7c35f8f341c99ba6421d65434a5064c;hb=8273224500228157351f21d14f113d9d2904eae8;hpb=8ff5e8deb3662e1b540574e8f7a07d39edcf737e diff --git a/src/common/util.cpp b/src/common/util.cpp index 41139dd5..c267d0bf 100644 --- a/src/common/util.cpp +++ b/src/common/util.cpp @@ -19,13 +19,15 @@ ***************************************************************************/ #include "util.h" -#include "global.h" #include #include +#include #include #include +#include "quassel.h" + class QMetaMethod; QString nickFromMask(QString mask) { @@ -48,6 +50,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 @@ -124,7 +137,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) @@ -144,9 +157,10 @@ QByteArray methodName(const QMetaMethod &method) { QDir quasselDir() { QString quasselDir; - if(Global::parser.isSet("datadir")) { - quasselDir = Global::parser.value("datadir"); + 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 @@ -169,22 +183,27 @@ QDir quasselDir() { 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); + if(!qtTranslator) { + qtTranslator = new QTranslator(qApp); + qtTranslator->setObjectName("QtTr"); + qApp->installTranslator(qtTranslator); + } + if(!quasselTranslator) { + quasselTranslator = new QTranslator(qApp); + quasselTranslator->setObjectName("QuasselTr"); + qApp->installTranslator(quasselTranslator); + } - QCoreApplication::removeTranslator(qtTranslator); - QCoreApplication::removeTranslator(quasselTranslator); + QLocale::setDefault(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())); - QCoreApplication::installTranslator(qtTranslator); - QCoreApplication::installTranslator(quasselTranslator); + 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())); } QString secondsToString(int timeInSeconds) {