#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)
public:
UiStyle(const QString &settingsKey);
virtual ~UiStyle();
+ 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
* by multiple active formats.
};
struct StyledString {
- QString text;
- QList<QPair<int, quint32> > formats; // starting pos, ftypes
+ QString plainText;
+ FormatList formatList; // starting pos, ftypes
+ };
+
+ struct StyledMessage {
+ StyledString timestamp;
+ StyledString sender;
+ StyledString contents;
};
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:
+
+ 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;
};
-#endif // SPUTDEV
+QDataStream &operator<<(QDataStream &out, const UiStyle::FormatList &formatList);
+QDataStream &operator>>(QDataStream &in, UiStyle::FormatList &formatList);
+
+Q_DECLARE_METATYPE(UiStyle::FormatList)
+
#endif