31 #include "miscellaneous/textfactory.h"
33 #include "definitions/definitions.h"
36 #include <QStringList>
40 TextFactory::TextFactory() {
44 QString date = date_time.simplified();
45 QStringList date_patterns;
46 QStringList timezone_offset_patterns;
48 QTime time_zone_offset;
49 QLocale locale(QLocale::C);
50 bool positive_time_zone_offset =
false;
52 date_patterns <<
"yyyy-MM-ddTHH:mm:ss" <<
"MMM dd yyyy hh:mm:ss" <<
53 "MMM d yyyy hh:mm:ss" <<
"ddd, dd MMM yyyy HH:mm:ss" <<
54 "dd MMM yyyy" <<
"yyyy-MM-dd HH:mm:ss.z" <<
"yyyy-MM-dd" <<
55 "yyyy" <<
"yyyy-MM" <<
"yyyy-MM-dd" <<
"yyyy-MM-ddThh:mm" <<
56 "yyyy-MM-ddThh:mm:ss";
58 timezone_offset_patterns <<
"+hh:mm" <<
"-hh:mm" <<
"+hhmm" <<
"-hhmm" <<
"+hh" <<
"-hh";
60 if (date.size() >= 5) {
61 foreach (
const QString &pattern, timezone_offset_patterns) {
62 time_zone_offset = QTime::fromString(date.right(pattern.size()), pattern);
64 if (time_zone_offset.isValid()) {
65 positive_time_zone_offset = pattern.at(0) ==
'+';
72 foreach (
const QString &pattern, date_patterns) {
73 dt = locale.toDateTime(date.left(pattern.size()), pattern);
77 dt.setTimeSpec(Qt::UTC);
79 if (time_zone_offset.isValid()) {
81 if (positive_time_zone_offset) {
84 return dt.addSecs(- QTime(0, 0, 0, 0).secsTo(time_zone_offset));
88 return dt.addSecs(QTime(0, 0, 0, 0).secsTo(time_zone_offset));
102 return QDateTime::fromMSecsSinceEpoch(milis_from_epoch);
106 if (input.size() > text_length_limit) {
107 return input.left(text_length_limit - ELLIPSIS_LENGTH) + QString(ELLIPSIS_LENGTH,
'.');
static QString shorten(const QString &input, int text_length_limit)
Shortens input string according to given length limit.
static QDateTime parseDateTime(const QString &date_time)
Tries to parse input textual date/time representation.