OSDN Git Service

Generic highlighter: Apply format only if it's a configured one; Remove hard-coded...
authorLeandro Melo <leandro.melo@nokia.com>
Tue, 12 Oct 2010 11:09:29 +0000 (13:09 +0200)
committerLeandro Melo <leandro.melo@nokia.com>
Tue, 12 Oct 2010 11:13:08 +0000 (13:13 +0200)
Reviewed-by: con
src/plugins/texteditor/generichighlighter/highlighter.cpp
src/plugins/texteditor/plaintexteditor.cpp

index 3775a63..76471dc 100644 (file)
@@ -382,29 +382,32 @@ void Highlighter::applyFormat(int offset,
 
     TextFormatId formatId = m_kateFormats.m_ids.value(itemData->style());
     if (formatId != Normal) {
-        QTextCharFormat format = m_creatorFormats.value(formatId);
-
-        if (itemData->isCustomized()) {
-            // Please notice that the following are applied every time for item datas which have
-            // customizations. The configureFormats method could be used to provide a "one time"
-            // configuration, but it would probably require to traverse all item datas from all
-            // definitions available/loaded (either to set the values or for some "notifying"
-            // strategy). This is because the highlighter does not really know on which
-            // definition(s) it is working. Since not many item datas specify customizations I
-            // think this approach would fit better. If there are other ideas...
-            if (itemData->color().isValid())
-                format.setForeground(itemData->color());
-            if (itemData->isItalicSpecified())
-                format.setFontItalic(itemData->isItalic());
-            if (itemData->isBoldSpecified())
-                format.setFontWeight(toFontWeight(itemData->isBold()));
-            if (itemData->isUnderlinedSpecified())
-                format.setFontUnderline(itemData->isUnderlined());
-            if (itemData->isStrikedOutSpecified())
-                format.setFontStrikeOut(itemData->isStrikedOut());
-        }
+        QHash<TextFormatId, QTextCharFormat>::const_iterator cit =
+            m_creatorFormats.constFind(formatId);
+        if (cit != m_creatorFormats.constEnd()) {
+            QTextCharFormat format = cit.value();
+            if (itemData->isCustomized()) {
+                // Please notice that the following are applied every time for item datas which have
+                // customizations. The configureFormats method could be used to provide a "one time"
+                // configuration, but it would probably require to traverse all item datas from all
+                // definitions available/loaded (either to set the values or for some "notifying"
+                // strategy). This is because the highlighter does not really know on which
+                // definition(s) it is working. Since not many item datas specify customizations I
+                // think this approach would fit better. If there are other ideas...
+                if (itemData->color().isValid())
+                    format.setForeground(itemData->color());
+                if (itemData->isItalicSpecified())
+                    format.setFontItalic(itemData->isItalic());
+                if (itemData->isBoldSpecified())
+                    format.setFontWeight(toFontWeight(itemData->isBold()));
+                if (itemData->isUnderlinedSpecified())
+                    format.setFontUnderline(itemData->isUnderlined());
+                if (itemData->isStrikedOutSpecified())
+                    format.setFontStrikeOut(itemData->isStrikedOut());
+            }
 
-        setFormat(offset, count, format);
+            setFormat(offset, count, format);
+        }
     }
 }
 
index 5d169aa..74060a2 100644 (file)
@@ -134,20 +134,6 @@ void PlainTextEditor::setFontSettings(const FontSettings &fs)
         highlighter->configureFormat(Highlighter::String, fs.toTextCharFormat(
             QLatin1String(Constants::C_STRING)));
 
-        // Creator does not have corresponding formats for the following ones. Implement them?
-        // For now I will leave hardcoded values.
-        QTextCharFormat format;
-        format.setForeground(Qt::blue);
-        highlighter->configureFormat(Highlighter::Others, format);
-        format.setForeground(Qt::red);
-        highlighter->configureFormat(Highlighter::Alert, format);
-        format.setForeground(Qt::darkBlue);
-        highlighter->configureFormat(Highlighter::Function, format);
-        format.setForeground(Qt::darkGray);
-        highlighter->configureFormat(Highlighter::RegionMarker, format);
-        format.setForeground(Qt::darkRed);
-        highlighter->configureFormat(Highlighter::Error, format);
-
         highlighter->rehighlight();
     }
 }