X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Futil.h;h=63d724c996008712a0e53931d15a4175ad7d721b;hp=25f6cc5b406cddd7f17324398901df87713b19af;hb=39328183a6a87c6eb10a9dbbffcd5d65bf154a1f;hpb=695758015a80eb8c158a9ac4c0f1c0b547e70df3 diff --git a/src/common/util.h b/src/common/util.h index 25f6cc5b..63d724c9 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2015 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 * @@ -18,27 +18,26 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef UTIL_H -#define UTIL_H +#pragma once -#include -#include +#include "common-export.h" + +#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); +COMMON_EXPORT QString nickFromMask(const QString &mask); +COMMON_EXPORT QString userFromMask(const QString &mask); +COMMON_EXPORT QString hostFromMask(const QString &mask); +COMMON_EXPORT bool isChannelName(const QString &str); //! Strip mIRC format codes -QString stripFormatCodes(QString); +COMMON_EXPORT QString stripFormatCodes(QString); //! Remove accelerator markers (&) from the string -QString stripAcceleratorMarkers(const QString &); +COMMON_EXPORT QString stripAcceleratorMarkers(const QString &); -QString secondsToString(int timeInSeconds); +COMMON_EXPORT QString secondsToString(int timeInSeconds); //! Take a string and decode it using the specified text codec, recognizing utf8. /** This function takes a string and first checks if it is encoded in utf8, in which case it is @@ -47,9 +46,9 @@ QString secondsToString(int timeInSeconds); * \param codec The text codec we use if the input is not utf8 * \return The decoded string. */ -QString decodeString(const QByteArray &input, QTextCodec *codec = 0); +COMMON_EXPORT QString decodeString(const QByteArray &input, QTextCodec *codec = nullptr); -uint editingDistance(const QString &s1, const QString &s2); +COMMON_EXPORT uint editingDistance(const QString &s1, const QString &s2); template QVariantList toVariantList(const QList &list) @@ -73,6 +72,36 @@ QList fromVariantList(const QVariantList &variants) } -QByteArray prettyDigest(const QByteArray &digest); +COMMON_EXPORT 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 + */ +COMMON_EXPORT QString formatCurrentDateTimeInString(const QString &formatStr); -#endif +/** + * 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 + */ +COMMON_EXPORT 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 + */ +COMMON_EXPORT QString formatDateTimeToOffsetISO(const QDateTime &dateTime);