From 8bd4f0d095891cc992ec7dd006a7bf2c6601787d Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Tue, 28 Jul 2009 17:00:41 +0200 Subject: [PATCH] Make timestamp configurable in the style engine The style engine now reads the timestamp format string from the ChatView settings. This means all that's missing now is a settingspage that offers an UI for changing the string. --- src/qtui/chatviewsettings.h | 3 +++ src/qtui/qtuistyle.cpp | 10 +++++++++- src/qtui/qtuistyle.h | 3 +++ src/uisupport/uistyle.cpp | 11 ++++++++++- src/uisupport/uistyle.h | 5 +++-- 5 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/qtui/chatviewsettings.h b/src/qtui/chatviewsettings.h index fe536cb3..e41d5060 100644 --- a/src/qtui/chatviewsettings.h +++ b/src/qtui/chatviewsettings.h @@ -43,6 +43,9 @@ public: inline bool showWebPreview() { return localValue("ShowWebPreview", true).toBool(); } inline void enableWebPreview(bool enabled) { setLocalValue("ShowWebPreview", enabled); } + + inline QString timestampFormatString() { return localValue("TimestampFormat", "[hh:mm:ss]").toString(); } + inline void setTimestampFormatString(const QString &format) { setLocalValue("TimestampFormat", format); } }; Q_DECLARE_METATYPE(ChatViewSettings::OperationMode); #endif //CHATVIEWSETTINGS_H diff --git a/src/qtui/qtuistyle.cpp b/src/qtui/qtuistyle.cpp index 208b3c04..c6974a90 100644 --- a/src/qtui/qtuistyle.cpp +++ b/src/qtui/qtuistyle.cpp @@ -18,11 +18,19 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#include "chatviewsettings.h" #include "qtuistyle.h" #include "qtuisettings.h" QtUiStyle::QtUiStyle(QObject *parent) : UiStyle(parent) { - + ChatViewSettings s; + s.notify("TimestampFormat", this, SLOT(updateTimestampFormatString())); + updateTimestampFormatString(); } QtUiStyle::~QtUiStyle() {} + +void QtUiStyle::updateTimestampFormatString() { + ChatViewSettings s; + setTimestampFormatString(s.timestampFormatString()); +} diff --git a/src/qtui/qtuistyle.h b/src/qtui/qtuistyle.h index 8f38d469..c5ea4fd8 100644 --- a/src/qtui/qtuistyle.h +++ b/src/qtui/qtuistyle.h @@ -33,6 +33,9 @@ public: virtual inline qreal firstColumnSeparator() const { return 6; } virtual inline qreal secondColumnSeparator() const { return 6; } +private slots: + void updateTimestampFormatString(); + }; #endif diff --git a/src/uisupport/uistyle.cpp b/src/uisupport/uistyle.cpp index 4e496f28..62c7a0e2 100644 --- a/src/uisupport/uistyle.cpp +++ b/src/uisupport/uistyle.cpp @@ -26,6 +26,7 @@ #include "util.h" QHash UiStyle::_formatCodes; +QString UiStyle::_timestampFormatString; UiStyle::UiStyle(QObject *parent) : QObject(parent) { // register FormatList if that hasn't happened yet @@ -49,6 +50,7 @@ UiStyle::UiStyle(QObject *parent) : QObject(parent) { _formatCodes["%DM"] = ModeFlags; _formatCodes["%DU"] = Url; + setTimestampFormatString("[hh:mm:ss]"); loadStyleSheet(); } @@ -102,6 +104,13 @@ QString UiStyle::loadStyleSheet(const QString &styleSheet, bool shouldExist) { return ss; } +void UiStyle::setTimestampFormatString(const QString &format) { + if(_timestampFormatString != format) { + _timestampFormatString = format; + // FIXME reload + } +} + /******** Caching *******/ QTextCharFormat UiStyle::cachedFormat(quint64 key) const { @@ -452,7 +461,7 @@ const UiStyle::FormatList &UiStyle::StyledMessage::contentsFormatList() const { } QString UiStyle::StyledMessage::decoratedTimestamp() const { - return QString("[%1]").arg(timestamp().toLocalTime().toString("hh:mm:ss")); + return timestamp().toLocalTime().toString(UiStyle::timestampFormatString()); } QString UiStyle::StyledMessage::plainSender() const { diff --git a/src/uisupport/uistyle.h b/src/uisupport/uistyle.h index c86f99df..b09dfa7c 100644 --- a/src/uisupport/uistyle.h +++ b/src/uisupport/uistyle.h @@ -107,6 +107,7 @@ public: static FormatType formatType(Message::Type msgType); static StyledString styleString(const QString &string, quint32 baseFormat = None); static QString mircToInternal(const QString &); + static inline QString timestampFormatString() { return _timestampFormatString; } QTextCharFormat format(quint32 formatType, quint32 messageLabel = 0); QFontMetricsF *fontMetrics(quint32 formatType, quint32 messageLabel = 0); @@ -132,12 +133,14 @@ protected: static FormatType formatType(const QString &code); static QString formatCode(FormatType); + static void setTimestampFormatString(const QString &format); private: QFont _defaultFont; QHash _formatCache; QHash _metricsCache; static QHash _formatCodes; + static QString _timestampFormatString; }; class UiStyle::StyledMessage : public Message { @@ -156,10 +159,8 @@ public: quint8 senderHash() const; protected: - //! Styling is only needed for calls to plainContents() and contentsFormatList() void style() const; - private: mutable StyledString _contents; mutable quint8 _senderHash; -- 2.20.1