Make the style engine fix a little less obscure by copying the string explicitely...
[quassel.git] / src / uisupport / uistyle.cpp
index 1740185..e04a0bd 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-07 by the Quassel IRC Team                         *
+ *   Copyright (C) 2005-08 by the Quassel Project                          *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
@@ -25,7 +25,8 @@ UiStyle::UiStyle(const QString &settingsKey) : _settingsKey(settingsKey) {
   // Default format
   QTextCharFormat def;
   def.setForeground(QBrush("#000000"));
-  def.setFont(QFont("Mono",12));
+  //def.setFont(QFont("Courier", 10));
+  def.font().setStyleHint(QFont::TypeWriter);
   _defaultFormats = QVector<QTextCharFormat>(NumFormatTypes, def);
   _customFormats = QVector<QTextCharFormat>(NumFormatTypes, QTextFormat().toCharFormat());
 
@@ -77,6 +78,9 @@ UiStyle::UiStyle(const QString &settingsKey) : _settingsKey(settingsKey) {
     QTextCharFormat fgf, bgf;
     fgf.setForeground(QBrush(QColor(colors[i]))); setFormat((FormatType)(FgCol00 + i), fgf, Settings::Default);
     bgf.setBackground(QBrush(QColor(colors[i]))); setFormat((FormatType)(BgCol00 + i), bgf, Settings::Default);
+    //FIXME fix the havoc caused by ColorSettingsPage
+    setFormat((FormatType)(FgCol00 + i), fgf, Settings::Custom);
+    setFormat((FormatType)(BgCol00 + i), bgf, Settings::Custom);
   }
 
   // Set a few more standard formats
@@ -125,7 +129,10 @@ QString UiStyle::formatCode(FormatType ftype) const {
   return _formatCodes.key(ftype);
 }
 
-UiStyle::StyledText UiStyle::styleString(QString s) {
+UiStyle::StyledText UiStyle::styleString(const QString &_s) {
+  QString s = _s;  // we can't use call-by-value since this seems to maybe screw up Qt's implicit sharing somehow
+                   // at least invalid formats are created if we do that
+
   StyledText result;
   QList<FormatType> fmtList;
   fmtList.append(None);
@@ -133,7 +140,7 @@ UiStyle::StyledText UiStyle::styleString(QString s) {
   curFmtRng.format = format(None);
   curFmtRng.start = 0;
   result.formats.append(curFmtRng);
-  int pos = 0; int length;
+  int pos = 0; int length = 0;
   int fgCol = -1, bgCol = -1;  // marks current mIRC color
   for(;;) {
     pos = s.indexOf('%', pos);
@@ -156,6 +163,8 @@ UiStyle::StyledText UiStyle::styleString(QString s) {
         length = 4;
       } else {
         int color = 10 * s[pos+4].digitValue() + s[pos+5].digitValue();
+        //TODO: use 99 as transparent color (re mirc color "standard")
+        color &= 0x0f;
         int *colptr; FormatType coltype;
         if(s[pos+3] == 'f') { // foreground
           colptr = &fgCol; coltype = FgCol00;