Project

General

Profile

0001-Initial-Channel-specific-highlights-feature-implemen.patch

salnx, 06/09/2009 11:13 PM

View differences:

src/qtui/qtuimessageprocessor.cpp
132 132
      if(!rule.isEnabled)
133 133
	continue;
134 134

  
135
      if(rule.chanName.size() > 0 && rule.chanName.compare(".*") != 0) {
136
        if(rule.chanName.startsWith("!")) {
137
          QRegExp rx(rule.chanName.mid(1), Qt::CaseInsensitive);
138
          if(rx.exactMatch(msg.bufferInfo().bufferName()))
139
            continue;
140
        } else {
141
          QRegExp rx(rule.chanName, Qt::CaseInsensitive);
142
          if(!rx.exactMatch(msg.bufferInfo().bufferName()))
143
            continue;
144
        }
145
      }
146

  
135 147
      bool match = false;
136 148
      if(rule.isRegExp) {
137 149
        QRegExp rx(rule.name, rule.caseSensitive? Qt::CaseSensitive : Qt::CaseInsensitive);
......
162 174
    _highlightRules << HighlightRule(rule["Name"].toString(),
163 175
                                     rule["Enable"].toBool(),
164 176
                                     rule["CS"].toBool() ? Qt::CaseSensitive : Qt::CaseInsensitive,
165
                                     rule["RegEx"].toBool());
177
                                     rule["RegEx"].toBool(),
178
                                     rule["Chan"].toString());
166 179
    iter++;
167 180
  }
168 181
}
src/qtui/qtuimessageprocessor.h
67 67
    bool isEnabled;
68 68
    Qt::CaseSensitivity caseSensitive;
69 69
    bool isRegExp;
70
    inline HighlightRule(const QString &name, bool enabled, Qt::CaseSensitivity cs, bool regExp)
71
    : name(name), isEnabled(enabled), caseSensitive(cs), isRegExp(regExp) {}
70
    QString chanName;
71
    inline HighlightRule(const QString &name, bool enabled, Qt::CaseSensitivity cs, bool regExp, const QString &chanName)
72
    : name(name), isEnabled(enabled), caseSensitive(cs), isRegExp(regExp), chanName(chanName) {}
72 73
  };
73 74

  
74 75
  QList<HighlightRule> _highlightRules;
src/qtui/settingspages/highlightsettingspage.cpp
38 38
  ui.highlightTable->horizontalHeaderItem(HighlightSettingsPage::CsColumn)->setToolTip("<b>CS</b>: This option determines if the highlight rule should be interpreted <b>case sensitive</b>.");
39 39
  ui.highlightTable->horizontalHeaderItem(HighlightSettingsPage::CsColumn)->setWhatsThis("<b>CS</b>: This option determines if the highlight rule should be interpreted <b>case sensitive</b>.");
40 40

  
41
  ui.highlightTable->horizontalHeaderItem(HighlightSettingsPage::ChanColumn)->setToolTip("<b>Chan</b>: This regular expression determines for which <b>Channels</b> the highlight rule works. Leave blank to match any channel. Put <b>!</b> in the beginning to negate. Case insensitive.");
42
  ui.highlightTable->horizontalHeaderItem(HighlightSettingsPage::ChanColumn)->setWhatsThis("<b>Chan</b>: This regular expression determines for which <b>Channels</b> the highlight rule works. Leave blank to match any channel. Put <b>!</b> in the beginning to negate. Case insensitive.");
43

  
41 44
  ui.highlightTable->horizontalHeader()->setResizeMode(HighlightSettingsPage::NameColumn, QHeaderView::Stretch);
42 45
  ui.highlightTable->horizontalHeader()->setResizeMode(HighlightSettingsPage::RegExColumn, QHeaderView::ResizeToContents);
43 46
  ui.highlightTable->horizontalHeader()->setResizeMode(HighlightSettingsPage::CsColumn, QHeaderView::ResizeToContents);
44 47
  ui.highlightTable->horizontalHeader()->setResizeMode(HighlightSettingsPage::EnableColumn, QHeaderView::ResizeToContents);
48
  ui.highlightTable->horizontalHeader()->setResizeMode(HighlightSettingsPage::ChanColumn, QHeaderView::ResizeToContents);
45 49

  
46 50
  connect(ui.add, SIGNAL(clicked(bool)), this, SLOT(addNewRow()));
47 51
  connect(ui.remove, SIGNAL(clicked(bool)), this, SLOT(removeSelectedRows()));
......
69 73
  widgetHasChanged();
70 74
}
71 75

  
72
void HighlightSettingsPage::addNewRow(QString name, bool regex, bool cs, bool enable) {
76
void HighlightSettingsPage::addNewRow(QString name, bool regex, bool cs, bool enable, QString chanName) {
73 77
  ui.highlightTable->setRowCount(ui.highlightTable->rowCount()+1);
74 78

  
75 79
  QTableWidgetItem *nameItem = new QTableWidgetItem(name);
......
95 99
    enableItem->setCheckState(Qt::Unchecked);
96 100
  enableItem->setFlags(Qt::ItemIsUserCheckable|Qt::ItemIsEnabled|Qt::ItemIsSelectable);
97 101

  
102
  QTableWidgetItem *chanNameItem = new QTableWidgetItem(chanName);
103

  
98 104
  int lastRow = ui.highlightTable->rowCount()-1;
99 105
  ui.highlightTable->setItem(lastRow, HighlightSettingsPage::NameColumn, nameItem);
100 106
  ui.highlightTable->setItem(lastRow, HighlightSettingsPage::RegExColumn, regexItem);
101 107
  ui.highlightTable->setItem(lastRow, HighlightSettingsPage::CsColumn, csItem);
102 108
  ui.highlightTable->setItem(lastRow, HighlightSettingsPage::EnableColumn, enableItem);
109
  ui.highlightTable->setItem(lastRow, HighlightSettingsPage::ChanColumn, chanNameItem);
103 110

  
104 111
  QVariantMap highlightRule;
105 112
  highlightRule["Name"] = name;
106 113
  highlightRule["RegEx"] = regex;
107 114
  highlightRule["CS"] = cs;
108 115
  highlightRule["Enable"] = enable;
116
  highlightRule["Chan"] = chanName;
109 117

  
110 118
  highlightList.append(highlightRule);
111 119
}
......
168 176
    case HighlightSettingsPage::EnableColumn:
169 177
      highlightRule["Enable"] = (item->checkState() == Qt::Checked);
170 178
      break;
179
    case HighlightSettingsPage::ChanColumn:
180
      if(item->text().size() > 0 && item->text().trimmed().size() == 0)
181
        item->setText("");
182
      highlightRule["Chan"] = item->text();
183
      break;
171 184
  }
172 185
  highlightList[item->row()] = highlightRule;
173 186
  emit widgetHasChanged();
......
184 197
    bool regex = highlightRule["RegEx"].toBool();
185 198
    bool cs = highlightRule["CS"].toBool();
186 199
    bool enable = highlightRule["Enable"].toBool();
200
    QString chanName = highlightRule["Chan"].toString();
187 201

  
188
    addNewRow(name, regex, cs, enable);
202
    addNewRow(name, regex, cs, enable, chanName);
189 203
  }
190 204

  
191 205
  switch(notificationSettings.highlightNick())
src/qtui/settingspages/highlightsettingspage.h
42 42

  
43 43
  private slots:
44 44
    void widgetHasChanged();
45
    void addNewRow(QString name = tr("highlight rule"), bool regex = false, bool cs = true, bool enable = true);
45
    void addNewRow(QString name = tr("highlight rule"), bool regex = false, bool cs = true, bool enable = true, QString chanName = "");
46 46
    void removeSelectedRows();
47 47
    void selectRow(QTableWidgetItem *item);
48 48
    void tableChanged(QTableWidgetItem *item);
......
59 59
      RegExColumn = 1,
60 60
      CsColumn = 2,
61 61
      EnableColumn = 3,
62
      ColumnCount = 4
62
      ChanColumn = 4,
63
      ColumnCount = 5
63 64
    };
64 65

  
65 66
    void emptyTable();
src/qtui/settingspages/highlightsettingspage.ui
47 47
          <string>Enable</string>
48 48
         </property>
49 49
        </column>
50
        <column>
51
         <property name="text" >
52
          <string>Chan</string>
53
         </property>
54
        </column>
50 55
       </widget>
51 56
      </item>
52 57
      <item row="0" column="1" >
53
-