diff options
Diffstat (limited to 'Swift')
-rw-r--r-- | Swift/Controllers/HighlightEditorController.cpp | 4 | ||||
-rw-r--r-- | Swift/QtUI/QtHighlightEditor.cpp | 150 | ||||
-rw-r--r-- | Swift/QtUI/QtHighlightEditor.h | 41 | ||||
-rw-r--r-- | Swift/QtUI/QtHighlightEditor.ui | 361 | ||||
-rw-r--r-- | Swift/QtUI/QtUIFactory.h | 2 | ||||
-rw-r--r-- | Swift/QtUI/SConscript | 6 |
6 files changed, 557 insertions, 7 deletions
diff --git a/Swift/Controllers/HighlightEditorController.cpp b/Swift/Controllers/HighlightEditorController.cpp index 2b57dbf..66a9f25 100644 --- a/Swift/Controllers/HighlightEditorController.cpp +++ b/Swift/Controllers/HighlightEditorController.cpp @@ -34,7 +34,7 @@ void HighlightEditorController::handleUIEvent(boost::shared_ptr<UIEvent> rawEven if (!highlightEditorWindow_) { highlightEditorWindow_ = highlightEditorWindowFactory_->createHighlightEditorWindow(); highlightEditorWindow_->setHighlightManager(highlightManager_); - highlightEditorWindow_->onContactSuggestionsRequested.connect(boost::bind(&HighlightEditorController::handleContactSuggestionsRequested, this, _1)); + //highlightEditorWindow_->onContactSuggestionsRequested.connect(boost::bind(&HighlightEditorController::handleContactSuggestionsRequested, this, _1)); } highlightEditorWindow_->show(); } @@ -42,7 +42,7 @@ void HighlightEditorController::handleUIEvent(boost::shared_ptr<UIEvent> rawEven void HighlightEditorController::handleContactSuggestionsRequested(const std::string& text) { - highlightEditorWindow_->setContactSuggestions(contactSuggester_->getSuggestions(text)); + //highlightEditorWindow_->setContactSuggestions(contactSuggester_->getSuggestions(text)); } } diff --git a/Swift/QtUI/QtHighlightEditor.cpp b/Swift/QtUI/QtHighlightEditor.cpp new file mode 100644 index 0000000..191b239 --- /dev/null +++ b/Swift/QtUI/QtHighlightEditor.cpp @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2012 Maciej Niedzielski + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#include <cassert> + +#include <Swift/QtUI/QtHighlightEditorWidget.h> +#include <Swift/QtUI/QtHighlightRulesItemModel.h> + +namespace Swift { + +QtHighlightEditor::QtHighlightEditor(QtSettingsProvider* settings, QWidget* parent) + : QWidget(parent), settings_(settings) +{ + ui_.setupUi(this); + + //itemModel_ = new QtHighlightRulesItemModel(this); + //ui_.treeView->setModel(itemModel_); + //ui_.ruleWidget->setModel(itemModel_); +// + //for (int i = 0; i < QtHighlightRulesItemModel::NumberOfColumns; ++i) { + //switch (i) { + //case QtHighlightRulesItemModel::ApplyTo: + //case QtHighlightRulesItemModel::Sender: + //case QtHighlightRulesItemModel::Keyword: + //case QtHighlightRulesItemModel::Action: + //ui_.treeView->showColumn(i); + //break; + //default: + //ui_.treeView->hideColumn(i); + //break; + //} + //} +// + //setHighlightManager(NULL); // setup buttons for empty rules list +// + //connect(ui_.treeView->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)), SLOT(onCurrentRowChanged(QModelIndex))); +// + //connect(ui_.newButton, SIGNAL(clicked()), SLOT(onNewButtonClicked())); + //connect(ui_.deleteButton, SIGNAL(clicked()), SLOT(onDeleteButtonClicked())); +// + //connect(ui_.moveUpButton, SIGNAL(clicked()), SLOT(onMoveUpButtonClicked())); + //connect(ui_.moveDownButton, SIGNAL(clicked()), SLOT(onMoveDownButtonClicked())); +// + //connect(ui_.closeButton, SIGNAL(clicked()), SLOT(close())); + + setWindowTitle(tr("Highlight Rules")); +} + +QtHighlightEditor::~QtHighlightEditor() +{ +} + +void QtHighlightEditor::show() +{ + //if (itemModel_->rowCount(QModelIndex())) { + //selectRow(0); + //} + QWidget::show(); + QWidget::activateWindow(); +} + +void QtHighlightEditor::setHighlightManager(HighlightManager* highlightManager) +{ + //itemModel_->setHighlightManager(highlightManager); + //ui_.newButton->setEnabled(highlightManager != NULL); +// + //ui_.ruleWidget->setEnabled(false); + //ui_.deleteButton->setEnabled(false); + //ui_.moveUpButton->setEnabled(false); + //ui_.moveDownButton->setEnabled(false); +} + +void QtHighlightEditor::closeEvent(QCloseEvent* event) { + //ui_.ruleWidget->save(); + //event->accept(); +} + +void QtHighlightEditor::onNewButtonClicked() +{ + //int row = getSelectedRow() + 1; + //itemModel_->insertRow(row, QModelIndex()); + //selectRow(row); +} + +void QtHighlightEditor::onDeleteButtonClicked() +{ + //int row = getSelectedRow(); + //assert(row >= 0); +// + //itemModel_->removeRow(row, QModelIndex()); + //if (row == itemModel_->rowCount(QModelIndex())) { + //--row; + //} + //selectRow(row); +} + +void QtHighlightEditor::onMoveUpButtonClicked() +{ + //int row = getSelectedRow(); + //assert(row > 0); +// + //ui_.ruleWidget->save(); + //ui_.ruleWidget->setActiveIndex(QModelIndex()); + //itemModel_->swapRows(row, row - 1); + //selectRow(row - 1); +} + +void QtHighlightEditor::onMoveDownButtonClicked() +{ + //int row = getSelectedRow(); + //assert(row < itemModel_->rowCount(QModelIndex()) - 1); +// + //ui_.ruleWidget->save(); + //ui_.ruleWidget->setActiveIndex(QModelIndex()); + //if (itemModel_->swapRows(row, row + 1)) { + //selectRow(row + 1); + //} +} + +void QtHighlightEditor::onCurrentRowChanged(const QModelIndex& index) +{ + //ui_.ruleWidget->save(); + //ui_.ruleWidget->setActiveIndex(index); +// + //ui_.ruleWidget->setEnabled(index.isValid()); +// + //ui_.deleteButton->setEnabled(index.isValid()); +// + //ui_.moveUpButton->setEnabled(index.isValid() && index.row() != 0); + //ui_.moveDownButton->setEnabled(index.isValid() && index.row() != itemModel_->rowCount(QModelIndex()) - 1); +} + +void QtHighlightEditor::selectRow(int row) +{ + //QModelIndex index = itemModel_->index(row, 0, QModelIndex()); + //ui_.treeView->selectionModel()->setCurrentIndex(index, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows); +} + +/** Return index of selected row or -1 if none is selected */ +int QtHighlightEditor::getSelectedRow() const +{ + //QModelIndexList rows = ui_.treeView->selectionModel()->selectedRows(); + //return rows.isEmpty() ? -1 : rows[0].row(); + return 0; +} + +} diff --git a/Swift/QtUI/QtHighlightEditor.h b/Swift/QtUI/QtHighlightEditor.h new file mode 100644 index 0000000..b063ff0 --- /dev/null +++ b/Swift/QtUI/QtHighlightEditor.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2012 Maciej Niedzielski + * Licensed under the simplified BSD license. + * See Documentation/Licenses/BSD-simplified.txt for more information. + */ + +#pragma once + +#include <Swift/Controllers/UIInterfaces/HighlightEditorWindow.h> +#include <Swift/QtUI/ui_QtHighlightEditor.h> + +namespace Swift { + + class QtHighlightEditor : public QWidget, public HighlightEditorWindow { + Q_OBJECT + + public: + QtHighlightEditor(QtSettingsProvider* settings, QWidget* parent = NULL); + virtual ~QtHighlightEditor(); + + virtual void show(); + virtual void setHighlightManager(HighlightManager* highlightManager); + + private slots: + void onNewButtonClicked(); + void onDeleteButtonClicked(); + void onMoveUpButtonClicked(); + void onMoveDownButtonClicked(); + void onCurrentRowChanged(const QModelIndex&); + + private: + virtual void closeEvent(QCloseEvent* event); + + void selectRow(int row); + int getSelectedRow() const; + + Ui::QtHighlightEditor ui_; + QtSettingsProvider *settings_; + }; + +} diff --git a/Swift/QtUI/QtHighlightEditor.ui b/Swift/QtUI/QtHighlightEditor.ui new file mode 100644 index 0000000..933c61f --- /dev/null +++ b/Swift/QtUI/QtHighlightEditor.ui @@ -0,0 +1,361 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>QtHighlightRuleWidget</class> + <widget class="QWidget" name="QtHighlightRuleWidget"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>403</width> + <height>779</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <widget class="QGroupBox" name="groupBox"> + <property name="geometry"> + <rect> + <x>20</x> + <y>200</y> + <width>376</width> + <height>364</height> + </rect> + </property> + <property name="title"> + <string>Rule conditions</string> + </property> + <layout class="QFormLayout" name="formLayout"> + <property name="fieldGrowthPolicy"> + <enum>QFormLayout::ExpandingFieldsGrow</enum> + </property> + <item row="0" column="0" colspan="2"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Choose when this rule should be applied. +If you want to provide more than one sender or keyword, input them in separate lines.</string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="0" colspan="2"> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>&Apply to:</string> + </property> + <property name="buddy"> + <cstring>applyTo</cstring> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QComboBox" name="applyTo"/> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Sender:</string> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>&Keywords:</string> + </property> + <property name="buddy"> + <cstring>keywords</cstring> + </property> + </widget> + </item> + <item row="4" column="1"> + <widget class="QPlainTextEdit" name="keywords"/> + </item> + <item row="5" column="1"> + <widget class="QCheckBox" name="nickIsKeyword"> + <property name="text"> + <string>Treat &nick as a keyword (in MUC)</string> + </property> + </widget> + </item> + <item row="6" column="1"> + <widget class="QCheckBox" name="matchWholeWords"> + <property name="text"> + <string>Match whole &words</string> + </property> + </widget> + </item> + <item row="7" column="1"> + <widget class="QCheckBox" name="matchCase"> + <property name="text"> + <string>Match &case</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="QLineEdit" name="lineEdit"/> + </item> + </layout> + </widget> + <widget class="QGroupBox" name="groupBox_2"> + <property name="geometry"> + <rect> + <x>20</x> + <y>570</y> + <width>376</width> + <height>142</height> + </rect> + </property> + <property name="title"> + <string>Actions</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QCheckBox" name="highlightText"> + <property name="text"> + <string>&Highlight text</string> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>28</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QCheckBox" name="customColors"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Custom c&olors:</string> + </property> + </widget> + </item> + <item> + <widget class="Swift::QtColorToolButton" name="foreground"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>&Foreground</string> + </property> + <property name="toolButtonStyle"> + <enum>Qt::ToolButtonTextBesideIcon</enum> + </property> + </widget> + </item> + <item> + <widget class="Swift::QtColorToolButton" name="background"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>&Background</string> + </property> + <property name="toolButtonStyle"> + <enum>Qt::ToolButtonTextBesideIcon</enum> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QCheckBox" name="playSound"> + <property name="text"> + <string>&Play sound</string> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>28</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QCheckBox" name="customSound"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Custom soun&d:</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="soundFile"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="soundFileButton"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>...</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="geometry"> + <rect> + <x>120</x> + <y>740</y> + <width>271</width> + <height>27</height> + </rect> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + <widget class="Line" name="line_2"> + <property name="geometry"> + <rect> + <x>10</x> + <y>710</y> + <width>381</width> + <height>31</height> + </rect> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + <widget class="QWidget" name=""> + <property name="geometry"> + <rect> + <x>10</x> + <y>10</y> + <width>381</width> + <height>181</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <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="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QTreeView" name="treeView"> + <property name="rootIsDecorated"> + <bool>false</bool> + </property> + <property name="itemsExpandable"> + <bool>false</bool> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QPushButton" name="newButton"> + <property name="text"> + <string>New</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="deleteButton"> + <property name="text"> + <string>Delete</string> + </property> + </widget> + </item> + <item> + <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> + <item> + <spacer name="verticalSpacer_3"> + <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> + </item> + </layout> + </widget> + </widget> + <customwidgets> + <customwidget> + <class>Swift::QtColorToolButton</class> + <extends>QToolButton</extends> + <header>QtColorToolButton.h</header> + </customwidget> + </customwidgets> + <resources/> + <connections/> +</ui> diff --git a/Swift/QtUI/QtUIFactory.h b/Swift/QtUI/QtUIFactory.h index 662c78e..3830774 100644 --- a/Swift/QtUI/QtUIFactory.h +++ b/Swift/QtUI/QtUIFactory.h @@ -48,7 +48,7 @@ namespace Swift { virtual ContactEditWindow* createContactEditWindow(); virtual FileTransferListWidget* createFileTransferListWidget(); virtual WhiteboardWindow* createWhiteboardWindow(boost::shared_ptr<WhiteboardSession> whiteboardSession); - virtual HighlightEditorWidget* createHighlightEditorWidget(); + virtual HighlightEditorWindow* createHighlightEditorWindow(); virtual BlockListEditorWidget* createBlockListEditorWidget(); virtual void createAdHocCommandWindow(boost::shared_ptr<OutgoingAdHocCommandSession> command); diff --git a/Swift/QtUI/SConscript b/Swift/QtUI/SConscript index 24fb371..20dc6e6 100644 --- a/Swift/QtUI/SConscript +++ b/Swift/QtUI/SConscript @@ -126,9 +126,7 @@ sources = [ "QtContactEditWindow.cpp", "QtContactEditWidget.cpp", "QtSingleWindow.cpp", - "QtHighlightEditorWidget.cpp", - "QtHighlightRulesItemModel.cpp", - "QtHighlightRuleWidget.cpp", + "QtHighlightEditor.cpp", "QtColorToolButton.cpp", "ChatSnippet.cpp", "MessageSnippet.cpp", @@ -283,7 +281,7 @@ myenv.Uic4("QtAffiliationEditor.ui") myenv.Uic4("QtJoinMUCWindow.ui") myenv.Uic4("QtHistoryWindow.ui") myenv.Uic4("QtConnectionSettings.ui") -myenv.Uic4("QtHighlightRuleWidget.ui") +myenv.Uic4("QtHighlightEditor.ui") myenv.Uic4("QtHighlightEditorWidget.ui") myenv.Uic4("QtBlockListEditorWindow.ui") myenv.Uic4("QtSpellCheckerWindow.ui") |