X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcommon%2Futil.h;h=514c564f4381a93f14f9ff3fc3e06f94efe0168e;hb=74226102118400b228618f7373137a4a01e7d85f;hp=85d79108218b35feee7a3a62a7dcb8d30f792c96;hpb=8f1b4ca33d65b7d9b0e5be399dbff13c9591fbce;p=quassel.git diff --git a/src/common/util.h b/src/common/util.h index 85d79108..514c564f 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -82,14 +82,46 @@ QString formatCurrentDateTimeInString(const QString &formatStr); /** Check if a scope rule matches a string * + * When isRegEx is false: * Checks that the string does NOT match ANY inverted rules (prefixed by '!'), then checks that * it matches AT LEAST one normal (non-inverted) rule. * * If only inverted rules are specified, it'll match so long as the string does not match any * inverted rules (implicit wildcard). * - * @param scopeRule A ';'-separated list of wildcard expressions, prefix of '!' inverts subrule - * @param string String to test, e.g. network/channel name + * When isRegEx is true: + * Checks that the string matches the entire scopeRule as a regular expression. If scopeRule starts + * with a '!', check that the string does NOT match the regular expression. + * + * @param string String to test, e.g. network/channel name + * @param scopeRule ';'-separated list of wildcard expressions, prefix of '!' inverts subrule + * @param isRegEx If true, treat entire scope rule as regular expression, not wildcards + * @param isCaseSensitive If true, treat as case-sensitive, else case-insensitive * @return True if matches, otherwise false */ -bool scopeMatch(const QString &scopeRule, const QString &string); +bool scopeMatch(const QString &string, const QString &scopeRule, + const bool &isRegEx = false, const bool &isCaseSensitive = false); + +/** + * 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);