Format date (close to) the old way in qml timeline
2 files changed, 19 insertions, 0 deletions
diff --git a/src/timeline2/TimelineModel.cpp b/src/timeline2/TimelineModel.cpp
index d7eb02d0..6f212833 100644
--- a/src/timeline2/TimelineModel.cpp
+++ b/src/timeline2/TimelineModel.cpp
@@ -1,5 +1,7 @@
#include "TimelineModel.h"
+#include <QRegularExpression>
+
#include "Logging.h"
#include "Utils.h"
@@ -196,3 +198,18 @@ TimelineModel::displayName(QString id) const
{
return Cache::displayName(room_id_, id);
}
+
+QString
+TimelineModel::formatDateSeparator(QDate date) const
+{
+ auto now = QDateTime::currentDateTime();
+
+ QString fmt = QLocale::system().dateFormat(QLocale::LongFormat);
+
+ if (now.date().year() == date.year()) {
+ QRegularExpression rx("[^a-zA-Z]*y+[^a-zA-Z]*");
+ fmt = fmt.remove(rx);
+ }
+
+ return date.toString(fmt);
+}
diff --git a/src/timeline2/TimelineModel.h b/src/timeline2/TimelineModel.h
index 9dfb4401..e2c7b73a 100644
--- a/src/timeline2/TimelineModel.h
+++ b/src/timeline2/TimelineModel.h
@@ -2,6 +2,7 @@
#include <QAbstractListModel>
#include <QColor>
+#include <QDate>
#include <QHash>
#include <mtx/responses.hpp>
@@ -30,6 +31,7 @@ public:
Q_INVOKABLE QColor userColor(QString id, QColor background);
Q_INVOKABLE QString displayName(QString id) const;
+ Q_INVOKABLE QString formatDateSeparator(QDate date) const;
void addEvents(const mtx::responses::Timeline &events);
|