/***************************************************************************
- * Copyright (C) 2005-08 by the Quassel Project *
+ * Copyright (C) 2005-09 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#ifndef _UISTYLE_H_
#define _UISTYLE_H_
-#ifndef SPUTDEV
-# include "old-uistyle.h"
-#else
-
#include <QDataStream>
+#include <QFontMetricsF>
#include <QTextCharFormat>
#include <QTextLayout>
#include <QUrl>
#include "settings.h"
class UiStyle {
- Q_DECLARE_TR_FUNCTIONS (UiStyle);
+ Q_DECLARE_TR_FUNCTIONS(UiStyle)
public:
UiStyle(const QString &settingsKey);
virtual ~UiStyle();
- typedef QList<QPair<int, quint32> > FormatList;
+ typedef QList<QPair<quint16, quint32> > FormatList;
//! This enumerates the possible formats a text element may have. */
/** These formats are ordered on increasing importance, in cases where a given property is specified
};
struct StyledString {
- QString text;
- FormatList formats; // starting pos, ftypes
+ QString plainText;
+ FormatList formatList; // starting pos, ftypes
};
- struct StyledMessage {
- StyledString timestamp;
- StyledString sender;
- StyledString text;
- };
+ class StyledMessage;
StyledString styleString(const QString &);
StyledMessage styleMessage(const Message &);
+ QString mircToInternal(const QString &) const;
void setFormat(FormatType, QTextCharFormat, Settings::Mode mode/* = Settings::Custom*/);
QTextCharFormat format(FormatType, Settings::Mode mode = Settings::Custom) const;
QTextCharFormat mergedFormat(quint32 formatType);
+ QFontMetricsF *fontMetrics(quint32 formatType);
FormatType formatType(const QString &code) const;
QString formatCode(FormatType) const;
+ inline QFont defaultFont() const { return _defaultFont; }
+
+ QList<QTextLayout::FormatRange> toTextLayoutList(const FormatList &, int textLength);
+
protected:
private:
- QString mircToInternal(const QString &);
+ QFont _defaultFont;
QTextCharFormat _defaultPlainFormat;
QHash<FormatType, QTextCharFormat> _defaultFormats;
QHash<FormatType, QTextCharFormat> _customFormats;
QHash<quint32, QTextCharFormat> _cachedFormats;
+ QHash<quint32, QFontMetricsF *> _cachedFontMetrics;
QHash<QString, FormatType> _formatCodes;
QString _settingsKey;
};
+class UiStyle::StyledMessage {
+public:
+ explicit StyledMessage(const Message &, UiStyle *style);
+
+ QDateTime timestamp() const;
+ QString decoratedTimestamp() const;
+ QString sender() const; //!< Nickname (no decorations) for Plain and Notice, empty else
+ QString decoratedSender() const;
+ QString contents() const;
+
+ FormatType timestampFormat() const;
+ FormatType senderFormat() const;
+ FormatList contentsFormatList() const;
+
+ inline Message::Type type() const { return _msgType; }
+
+private:
+ StyledString _contents;
+ QDateTime _timestamp;
+ QString _sender;
+ Message::Type _msgType;
+};
+
QDataStream &operator<<(QDataStream &out, const UiStyle::FormatList &formatList);
QDataStream &operator>>(QDataStream &in, UiStyle::FormatList &formatList);
-Q_DECLARE_METATYPE(UiStyle::FormatList);
+Q_DECLARE_METATYPE(UiStyle::FormatList)
-#endif // SPUTDEV
#endif