Make timestamp configurable in the style engine
authorManuel Nickschas <sputnick@quassel-irc.org>
Tue, 28 Jul 2009 15:00:41 +0000 (17:00 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Thu, 6 Aug 2009 18:25:05 +0000 (20:25 +0200)
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
src/qtui/qtuistyle.cpp
src/qtui/qtuistyle.h
src/uisupport/uistyle.cpp
src/uisupport/uistyle.h

index fe536cb..e41d506 100644 (file)
@@ -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
index 208b3c0..c6974a9 100644 (file)
  *   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());
+}
index 8f38d46..c5ea4fd 100644 (file)
@@ -33,6 +33,9 @@ public:
   virtual inline qreal firstColumnSeparator() const { return 6; }
   virtual inline qreal secondColumnSeparator() const { return 6; }
 
+private slots:
+  void updateTimestampFormatString();
+
 };
 
 #endif
index 4e496f2..62c7a0e 100644 (file)
@@ -26,6 +26,7 @@
 #include "util.h"
 
 QHash<QString, UiStyle::FormatType> 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 {
index c86f99d..b09dfa7 100644 (file)
@@ -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<quint64, QTextCharFormat> _formatCache;
   QHash<quint64, QFontMetricsF *> _metricsCache;
   static QHash<QString, FormatType> _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;