First version of our new optimized style engine. Not functional yet, so don't bother...
[quassel.git] / src / uisupport / old-uistyle.h
diff --git a/src/uisupport/old-uistyle.h b/src/uisupport/old-uistyle.h
new file mode 100644 (file)
index 0000000..ab2d86d
--- /dev/null
@@ -0,0 +1,83 @@
+/***************************************************************************
+ *   Copyright (C) 2005-08 by the Quassel Project                          *
+ *   devel@quassel-irc.org                                                 *
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) version 3.                                           *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#ifndef _OLD_UISTYLE_H_
+#define _OLD_UISTYLE_H_
+
+#include <QTextCharFormat>
+#include <QTextLayout>
+#include <QUrl>
+
+#include "message.h"
+#include "settings.h"
+
+class UiStyle {
+
+  public:
+    UiStyle(const QString &settingsKey);
+    virtual ~UiStyle();
+
+    /** This enumerates the possible formats a text element may have. */
+    enum FormatType {
+      None, Bold, Italic, Underline, Reverse,                                        // Standard formats
+      PlainMsg, NoticeMsg, ServerMsg, ErrorMsg, JoinMsg, PartMsg, QuitMsg, KickMsg,  // Internal message formats
+      RenameMsg, ModeMsg, ActionMsg,                                                 // ...cnt'd
+      Timestamp, Sender, Nick, Hostmask, ChannelName, ModeFlags, Url,                // individual elements
+      FgCol00, FgCol01, FgCol02, FgCol03, FgCol04, FgCol05, FgCol06, FgCol07,        // Color codes
+      FgCol08, FgCol09, FgCol10, FgCol11, FgCol12, FgCol13, FgCol14, FgCol15,
+      BgCol00, BgCol01, BgCol02, BgCol03, BgCol04, BgCol05, BgCol06, BgCol07,
+      BgCol08, BgCol09, BgCol10, BgCol11, BgCol12, BgCol13, BgCol14, BgCol15,
+      NumFormatTypes, Invalid   // Do not add anything after this
+    };
+
+    struct UrlInfo {
+      int start, end;
+      QUrl url;
+    };
+
+    struct StyledText {
+      QString text;
+      QList<QTextLayout::FormatRange> formats;
+      QList<UrlInfo> urls;
+    };
+
+    StyledText styleString(const QString &);
+
+    void setFormat(FormatType, QTextCharFormat, Settings::Mode mode/* = Settings::Custom*/);
+    QTextCharFormat format(FormatType, Settings::Mode mode = Settings::Custom) const;
+
+    FormatType formatType(const QString &code) const;
+    QString formatCode(FormatType) const;
+
+  protected:
+
+
+  private:
+    QTextCharFormat mergedFormat(QList<FormatType>);
+
+    QVector<QTextCharFormat> _defaultFormats;
+    QVector<QTextCharFormat> _customFormats;
+    QHash<QString, FormatType> _formatCodes;
+
+    QString _settingsKey;
+
+};
+
+#endif