X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcommon%2Futil.h;h=0db903e4679105471a94e64599b521b140b719ce;hb=ab7ef4d24f62b5848b628482b7762ebfc0b53e1a;hp=28639ba97be6b1e3efe726ae2dddf06f7a89665f;hpb=6f99a6e2f39aaacabe8bb51a7bb1ff53c1b2082f;p=quassel.git diff --git a/src/common/util.h b/src/common/util.h index 28639ba9..0db903e4 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005/06 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,28 +15,26 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef UTIL_H -#define UTIL_H +#pragma once -#include -#include -#include +#include #include -#include - +#include -// TODO Use versions from Network instead -QString nickFromMask(QString mask); -QString userFromMask(QString mask); -QString hostFromMask(QString mask); -bool isChannelName(QString str); +QString nickFromMask(const QString &mask); +QString userFromMask(const QString &mask); +QString hostFromMask(const QString &mask); +bool isChannelName(const QString &str); //! Strip mIRC format codes QString stripFormatCodes(QString); +//! Remove accelerator markers (&) from the string +QString stripAcceleratorMarkers(const QString &); + QString secondsToString(int timeInSeconds); //! Take a string and decode it using the specified text codec, recognizing utf8. @@ -50,41 +48,58 @@ QString decodeString(const QByteArray &input, QTextCodec *codec = 0); uint editingDistance(const QString &s1, const QString &s2); -QDir quasselDir(); - -//! Returns a list of data directory paths -/** There are several locations for applications to install their data files in. On Unix, - * a common location is /usr/share; others include $PREFIX/share and additional directories - * specified in the env variable XDG_DATA_DIRS. - * \return A list of directory paths to look for data files in - */ -QStringList dataDirPaths(); - -//! Searches for a data file in the possible data directories -/** Data files can reside in $DATA_DIR/apps/quassel, where $DATA_DIR is one of the directories - * returned by \sa dataDirPaths(). - * \return The full path to the data file if found; a null QString else - */ -QString findDataFilePath(const QString &fileName); - -void loadTranslation(const QLocale &locale); - template -QVariantList toVariantList(const QList &list) { - QVariantList variants; - for(int i = 0; i < list.count(); i++) { - variants << QVariant::fromValue(list[i]); - } - return variants; +QVariantList toVariantList(const QList &list) +{ + QVariantList variants; + for (int i = 0; i < list.count(); i++) { + variants << QVariant::fromValue(list[i]); + } + return variants; } + template -QList fromVariantList(const QVariantList &variants) { - QList list; - for(int i = 0; i < variants.count(); i++) { - list << variants[i].value(); - } - return list; +QList fromVariantList(const QVariantList &variants) +{ + QList list; + for (int i = 0; i < variants.count(); i++) { + list << variants[i].value(); + } + return list; } -#endif + +QByteArray prettyDigest(const QByteArray &digest); + +/** + * Format a string with %%%% to current date/timestamp via QDateTime. + * + * @param[in] formatStr String with format codes + * @return String with current date/time substituted in via formatting codes + */ +QString formatCurrentDateTimeInString(const QString &formatStr); + +/** + * Try to localize a given date/time in seconds from Unix epoch, pass through string if invalid + * + * Allows compatibility with date/time fields that may or may not be in Unix epoch format, + * localizing if possible, leaving alone if not. + * + * @param possibleEpochDate Date/time that might be in seconds since Unix epoch format + * @param dateFormat Desired format of the date/time string + * @param useUTC If true, use UTC timezone, otherwise use local time + * @return Localized date/time if parse succeeded, otherwise the source string + */ +QString tryFormatUnixEpoch(const QString &possibleEpochDate, + Qt::DateFormat dateFormat = Qt::DateFormat::TextDate, + bool useUTC = false); + + +/** + * Format the given date/time in ISO 8601 format with timezone offset + * + * @param dateTime Date/time of interest + * @return Date/time in ISO 8601 format with timezone offset + */ +QString formatDateTimeToOffsetISO(const QDateTime &dateTime);