messagingapp/msgui/unifiedviewer/src/unihighlighter.cpp
changeset 23 238255e8b033
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgui/unifiedviewer/src/unihighlighter.cpp	Fri Apr 16 14:56:15 2010 +0300
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: Enables parsing and change font parameters for email/url
+ *
+ */
+#include "unihighlighter.h"
+
+#include <QtGui>
+
+//---------------------------------------------------------------
+//UniHighlighter :: UniHighlighter
+// @see header file
+//---------------------------------------------------------------
+UniHighlighter::UniHighlighter(QTextDocument *parent) :
+    QSyntaxHighlighter(parent)
+{
+    HighlightingRule rule;
+
+    emailFormat.setFontWeight(QFont::Bold);
+    rule.pattern = QRegExp(
+        "\\b[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}\\b");
+    rule.format = emailFormat;
+    highlightingRules.append(rule);
+
+    urlFormat.setAnchor(true);
+    urlFormat.setFontUnderline(true);
+    rule.pattern
+            = QRegExp(
+                "\\b((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\\w\\d:#@%/;$()~_?\\+-=\\\\.&]*)\\b");
+    rule.format = urlFormat;
+    highlightingRules.append(rule);
+}
+
+//---------------------------------------------------------------
+//UniHighlighter :: highlightBlock
+// @see header file
+//---------------------------------------------------------------
+void UniHighlighter::highlightBlock(const QString &text)
+{
+    foreach (const HighlightingRule &rule, highlightingRules) 
+        {
+            QRegExp expression(rule.pattern);
+            int index = text.indexOf(expression);
+            while (index >= 0)
+            {
+                int length = expression.matchedLength();
+                setFormat(index, length, rule.format);
+                index = text.indexOf(expression, index + length);
+            }
+        }
+}
+
+// EOF