diff options
-rw-r--r-- | Swift/QtUI/QtHighlightEditor.cpp | 170 | ||||
-rw-r--r-- | Swift/QtUI/QtHighlightEditor.h | 3 | ||||
-rw-r--r-- | Swift/QtUI/QtHighlightEditor.ui | 277 |
3 files changed, 223 insertions, 227 deletions
diff --git a/Swift/QtUI/QtHighlightEditor.cpp b/Swift/QtUI/QtHighlightEditor.cpp index e59c747..0fdec97 100644 --- a/Swift/QtUI/QtHighlightEditor.cpp +++ b/Swift/QtUI/QtHighlightEditor.cpp @@ -57,8 +57,7 @@ QtHighlightEditor::QtHighlightEditor(QtSettingsProvider* settings, QWidget* pare /* we need to be notified if any of the state changes so that we can update our textual rule description */ connect(ui_.chatRadio, SIGNAL(clicked()), SLOT(widgetClick())); connect(ui_.roomRadio, SIGNAL(clicked()), SLOT(widgetClick())); - connect(ui_.chatAndRoomRadio, SIGNAL(clicked()), SLOT(widgetClick())); - connect(ui_.senderCheck, SIGNAL(clicked()), SLOT(widgetClick())); + connect(ui_.senderRadio, SIGNAL(clicked()), SLOT(widgetClick())); connect(jid_, SIGNAL(textChanged(const QString&)), SLOT(widgetClick())); connect(ui_.keywordRadio, SIGNAL(clicked()), SLOT(widgetClick())); connect(ui_.keyword, SIGNAL(textChanged(const QString&)), SLOT(widgetClick())); @@ -153,6 +152,9 @@ void QtHighlightEditor::show() selectRow(0); } + /* prepare default states */ + widgetClick(); + QWidget::show(); QWidget::activateWindow(); } @@ -212,7 +214,7 @@ void QtHighlightEditor::onNewButtonClicked() void QtHighlightEditor::onDeleteButtonClicked() { int selectedRow = getSelectedRow(); - assert(selectedRow > 0); + assert(selectedRow>=0 && selectedRow<ui_.listWidget->count()); delete ui_.listWidget->takeItem(selectedRow); highlightManager_->removeRule(selectedRow); } @@ -236,7 +238,9 @@ void QtHighlightEditor::onCurrentRowChanged(int currentRow) } /* grey the dialog if we have nothing selected */ - enableDialog(currentRow != -1); + if (currentRow == -1) { + disableDialog(); + } previousRow_ = currentRow; } @@ -258,15 +262,9 @@ void QtHighlightEditor::onOkButtonClick() close(); } -void QtHighlightEditor::widgetClick() +void QtHighlightEditor::setChildWidgetStates() { - HighlightRule rule = ruleFromDialog(); - const std::string description = formatNaturalDescription(rule); - ui_.ruleDescription->setText(P2QSTRING(description)); - - if (ui_.listWidget->currentItem()) { - ui_.listWidget->currentItem()->setText(P2QSTRING(description)); - } + /* disable appropriate radio button child widgets */ if (ui_.chatRadio->isChecked()) { if (ui_.nickIsKeyword->isChecked()) { @@ -279,47 +277,60 @@ void QtHighlightEditor::widgetClick() } else { /* chats and rooms */ ui_.nickIsKeyword->setEnabled(true); } + + if (ui_.senderRadio->isChecked()) { + jid_->setEnabled(true); + } else { + jid_->setEnabled(false); + } + + if (ui_.keywordRadio->isChecked()) { + ui_.keyword->setEnabled(true); + ui_.matchWholeWords->setEnabled(true); + ui_.matchCase->setEnabled(true); + } else { + ui_.keyword->setEnabled(false); + ui_.matchWholeWords->setEnabled(false); + ui_.matchCase->setEnabled(false); + } } -void QtHighlightEditor::enableDialog(bool state) +void QtHighlightEditor::widgetClick() { - if (!state) { /* also clear the value, if applicable */ - ui_.chatRadio->setChecked(true); - ui_.senderCheck->setChecked(false); - jid_->setText(""); - ui_.keywordRadio->setChecked(false); - ui_.keyword->setText(""); - ui_.nickIsKeyword->setChecked(false); - ui_.matchWholeWords->setChecked(false); - ui_.matchCase->setChecked(false); - ui_.noColorRadio->setChecked(true); - ui_.foregroundColor->setEnabled(state); - ui_.backgroundColor->setEnabled(state); - ui_.noSoundRadio->setChecked(true); - ui_.foregroundColor->setColor(QColor()); - ui_.backgroundColor->setColor(QColor()); - ui_.soundFile->setText(""); - ui_.foregroundColor->setEnabled(false); - ui_.backgroundColor->setEnabled(false); - ui_.soundFile->setEnabled(false); - ui_.soundFileButton->setEnabled(false); + HighlightRule rule = ruleFromDialog(); + const std::string description = formatNaturalDescription(rule); + ui_.ruleDescription->setText(P2QSTRING(description)); + + if (ui_.listWidget->currentItem()) { + ui_.listWidget->currentItem()->setText(P2QSTRING(description)); } - //ui_.chatCheck->setEnabled(state); - //ui_.roomCheck->setEnabled(state); - ui_.senderCheck->setEnabled(state); - jid_->setEnabled(state); - ui_.nickIsKeyword->setEnabled(state); - ui_.keyword->setEnabled(state); - ui_.nickIsKeyword->setEnabled(state); - ui_.matchWholeWords->setEnabled(state); - ui_.matchCase->setEnabled(state); - ui_.noColorRadio->setEnabled(state); - ui_.defaultColorRadio->setEnabled(state); - ui_.customColorRadio->setEnabled(state); - ui_.noSoundRadio->setEnabled(state); - ui_.defaultSoundRadio->setEnabled(state); - ui_.customSoundRadio->setEnabled(state); + setChildWidgetStates(); +} + +void QtHighlightEditor::disableDialog() +{ + /* TODO: check all of these */ + + ui_.chatRadio->setChecked(true); + ui_.senderRadio->setChecked(false); + jid_->setText(""); + ui_.keywordRadio->setChecked(false); + ui_.keyword->setText(""); + ui_.nickIsKeyword->setChecked(false); + ui_.matchWholeWords->setChecked(false); + ui_.matchCase->setChecked(false); + ui_.noColorRadio->setChecked(true); + ui_.foregroundColor->setEnabled(false); + ui_.backgroundColor->setEnabled(false); + ui_.noSoundRadio->setChecked(true); + ui_.foregroundColor->setColor(QColor()); + ui_.backgroundColor->setColor(QColor()); + ui_.soundFile->setText(""); + ui_.foregroundColor->setEnabled(false); + ui_.backgroundColor->setEnabled(false); + ui_.soundFile->setEnabled(false); + ui_.soundFileButton->setEnabled(false); } void QtHighlightEditor::handleContactSuggestionRequested(const QString& text) @@ -355,19 +366,14 @@ HighlightRule QtHighlightEditor::ruleFromDialog() HighlightRule rule; if (ui_.chatRadio->isChecked()) { - if (ui_.roomRadio->isChecked()) { - rule.setMatchChat(true); - rule.setMatchMUC(true); - } else { - rule.setMatchChat(true); - rule.setMatchMUC(false); - } + rule.setMatchChat(true); + rule.setMatchMUC(false); } else { rule.setMatchChat(false); rule.setMatchMUC(true); } - if (ui_.senderCheck->isChecked()) { + if (ui_.senderRadio->isChecked()) { QString senderName = jid_->text(); if (!senderName.isEmpty()) { std::vector<std::string> senders; @@ -420,35 +426,44 @@ HighlightRule QtHighlightEditor::ruleFromDialog() void QtHighlightEditor::ruleToDialog(const HighlightRule& rule) { - //ui_.chatCheck->setChecked(rule.getMatchChat()); - //ui_.roomCheck->setChecked(rule.getMatchMUC()); + ui_.chatRadio->setEnabled(true); + ui_.roomRadio->setEnabled(true); - std::vector<std::string> senders = rule.getSenders(); - if (senders.empty()) { - ui_.senderCheck->setChecked(false); - jid_->setEnabled(false); - jid_->setText(""); + if (rule.getMatchChat()) { + ui_.chatRadio->setChecked(true); + ui_.roomRadio->setChecked(false); } else { - ui_.senderCheck->setChecked(true); - jid_->setEnabled(true); + ui_.chatRadio->setChecked(false); + ui_.roomRadio->setChecked(true); + } + + ui_.allMsgRadio->setEnabled(true); + ui_.allMsgRadio->setChecked(true); /* this is the default radio button */ + jid_->setText(""); + ui_.matchWholeWords->setChecked(false); + ui_.matchCase->setChecked(false); + + ui_.nickIsKeyword->setEnabled(true); + if (rule.getNickIsKeyword()) { + ui_.nickIsKeyword->setChecked(true); + } + + ui_.senderRadio->setEnabled(true); + std::vector<std::string> senders = rule.getSenders(); + if (!senders.empty()) { + ui_.senderRadio->setChecked(true); jid_->setText(P2QSTRING(senders[0])); } + ui_.keywordRadio->setEnabled(true); std::vector<std::string> keywords = rule.getKeywords(); - if (keywords.empty()) { - ui_.nickIsKeyword->setChecked(false); - ui_.keyword->setEnabled(false); - ui_.keyword->setText(""); - } else { - ui_.nickIsKeyword->setChecked(true); - ui_.keyword->setEnabled(true); + if (!keywords.empty()) { + ui_.keywordRadio->setChecked(true); ui_.keyword->setText(P2QSTRING(keywords[0])); + ui_.matchWholeWords->setChecked(rule.getMatchWholeWords()); + ui_.matchCase->setChecked(rule.getMatchCase()); } - ui_.nickIsKeyword->setChecked(rule.getNickIsKeyword()); - ui_.matchWholeWords->setChecked(rule.getMatchWholeWords()); - ui_.matchCase->setChecked(rule.getMatchCase()); - const HighlightAction& action = rule.getAction(); if (action.highlightText()) { @@ -480,6 +495,9 @@ void QtHighlightEditor::ruleToDialog(const HighlightRule& rule) } else { ui_.noSoundRadio->setChecked(true); } + + /* set radio button child option states */ + setChildWidgetStates(); } } diff --git a/Swift/QtUI/QtHighlightEditor.h b/Swift/QtUI/QtHighlightEditor.h index b0f7bdd..634f637 100644 --- a/Swift/QtUI/QtHighlightEditor.h +++ b/Swift/QtUI/QtHighlightEditor.h @@ -43,8 +43,9 @@ namespace Swift { void onApplyButtonClick(); void onCancelButtonClick(); void onOkButtonClick(); + void setChildWidgetStates(); void widgetClick(); - void enableDialog(bool state); + void disableDialog(); void handleContactSuggestionRequested(const QString& text); private: diff --git a/Swift/QtUI/QtHighlightEditor.ui b/Swift/QtUI/QtHighlightEditor.ui index e9fb78f..5976331 100644 --- a/Swift/QtUI/QtHighlightEditor.ui +++ b/Swift/QtUI/QtHighlightEditor.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>845</width> - <height>801</height> + <width>800</width> + <height>715</height> </rect> </property> <property name="minimumSize"> @@ -19,86 +19,62 @@ <property name="windowTitle"> <string>Form</string> </property> - <layout class="QVBoxLayout" name="verticalLayout_11"> + <layout class="QVBoxLayout" name="verticalLayout_8"> + <item> + <widget class="QLabel" name="label_5"> + <property name="text"> + <string>Incoming messages are checked against the following rules. First rule that matches will be executed.</string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> <item> - <layout class="QVBoxLayout" name="verticalLayout_2"> + <widget class="QListWidget" name="listWidget"/> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_3"> <item> - <widget class="QLabel" name="label_5"> + <spacer name="horizontalSpacer_8"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="newButton"> <property name="text"> - <string>Incoming messages are checked against the following rules. First rule that matches will be executed.</string> + <string>New Rule</string> </property> - <property name="wordWrap"> - <bool>true</bool> + </widget> + </item> + <item> + <widget class="QPushButton" name="deleteButton"> + <property name="text"> + <string>Remove Rule</string> </property> </widget> </item> <item> - <layout class="QHBoxLayout" name="horizontalLayout_3"> - <item> - <widget class="QListWidget" name="listWidget"/> - </item> - <item> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <widget class="QPushButton" name="newButton"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset theme="list-add"> - <normaloff>../../../../../home/rm/.designer/backup</normaloff>../../../../../home/rm/.designer/backup</iconset> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="deleteButton"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset theme="list-remove"> - <normaloff>../../../../../home/rm/.designer/backup</normaloff>../../../../../home/rm/.designer/backup</iconset> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="moveUpButton"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset theme="up"> - <normaloff>../../../../../home/rm/.designer/backup</normaloff>../../../../../home/rm/.designer/backup</iconset> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="moveDownButton"> - <property name="text"> - <string/> - </property> - <property name="icon"> - <iconset theme="down"> - <normaloff>../../../../../home/rm/.designer/backup</normaloff>../../../../../home/rm/.designer/backup</iconset> - </property> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - </layout> + <widget class="QPushButton" name="moveUpButton"> + <property name="text"> + <string>Move Up</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="moveDownButton"> + <property name="text"> + <string>Move Down</string> + </property> + </widget> </item> </layout> </item> @@ -148,7 +124,7 @@ p, li { white-space: pre-wrap; } </layout> </item> <item> - <layout class="QVBoxLayout" name="verticalLayout_10"> + <layout class="QVBoxLayout" name="verticalLayout_7"> <item> <widget class="QGroupBox" name="groupBox"> <property name="title"> @@ -160,6 +136,9 @@ p, li { white-space: pre-wrap; } <property name="text"> <string>Chats</string> </property> + <property name="checked"> + <bool>true</bool> + </property> </widget> </item> <item> @@ -170,20 +149,13 @@ p, li { white-space: pre-wrap; } </widget> </item> <item> - <widget class="QRadioButton" name="chatAndRoomRadio"> - <property name="text"> - <string>Chats and Rooms</string> - </property> - </widget> - </item> - <item> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> - <width>100</width> + <width>246</width> <height>20</height> </size> </property> @@ -199,88 +171,104 @@ p, li { white-space: pre-wrap; } </property> <layout class="QVBoxLayout" name="verticalLayout_4"> <item> - <layout class="QHBoxLayout" name="senderName"> - <item> - <widget class="QCheckBox" name="senderCheck"> - <property name="text"> - <string>Sender name:</string> - </property> - </widget> - </item> - <item> - <widget class="QLineEdit" name="dummySenderName"/> - </item> - </layout> - </item> - <item> <widget class="QRadioButton" name="allMsgRadio"> <property name="text"> - <string>All messages</string> + <string>Apply to all messages</string> + </property> + <property name="checked"> + <bool>true</bool> </property> </widget> </item> <item> <widget class="QRadioButton" name="nickIsKeyword"> <property name="text"> - <string>Messages mentioning me</string> + <string>Only messages mentioning me</string> </property> </widget> </item> <item> - <widget class="QRadioButton" name="keywordRadio"> - <property name="text"> - <string>Messages mentioning a keyword</string> - </property> - </widget> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QRadioButton" name="senderRadio"> + <property name="text"> + <string>Messages from this sender:</string> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="senderName"> + <item> + <spacer name="horizontalSpacer_7"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Preferred</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>18</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLineEdit" name="dummySenderName"/> + </item> + </layout> + </item> + </layout> </item> <item> - <layout class="QHBoxLayout" name="horizontalLayout_2"> + <layout class="QVBoxLayout" name="verticalLayout_3"> <item> - <spacer name="horizontalSpacer_7"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeType"> - <enum>QSizePolicy::Preferred</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>15</width> - <height>20</height> - </size> + <widget class="QRadioButton" name="keywordRadio"> + <property name="text"> + <string>Messages containing this keyword:</string> </property> - </spacer> + </widget> </item> <item> - <layout class="QVBoxLayout" name="verticalLayout"> + <layout class="QHBoxLayout" name="horizontalLayout_4"> <item> - <layout class="QHBoxLayout" name="horizontalLayout_4"> + <spacer name="horizontalSpacer_9"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Preferred</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>18</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QLineEdit" name="keyword"/> + </item> <item> - <widget class="QLabel" name="label"> + <widget class="QCheckBox" name="matchWholeWords"> <property name="text"> - <string>Keyword:</string> + <string>Match keyword within longer words</string> </property> </widget> </item> <item> - <widget class="QLineEdit" name="keyword"/> + <widget class="QCheckBox" name="matchCase"> + <property name="text"> + <string>Keyword is case sensitive</string> + </property> + </widget> </item> </layout> </item> - <item> - <widget class="QCheckBox" name="matchWholeWords"> - <property name="text"> - <string>Match keyword within longer words</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="matchCase"> - <property name="text"> - <string>Keyword is case sensitive</string> - </property> - </widget> - </item> </layout> </item> </layout> @@ -468,19 +456,6 @@ p, li { white-space: pre-wrap; } </layout> </widget> </item> - <item> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> </layout> </item> </layout> @@ -522,6 +497,8 @@ p, li { white-space: pre-wrap; } <zorder>groupBox_6</zorder> <zorder>verticalSpacer_2</zorder> <zorder>horizontalSpacer_7</zorder> + <zorder>horizontalSpacer_8</zorder> + <zorder></zorder> </widget> <customwidgets> <customwidget> |