diff options
Diffstat (limited to 'Swift/QtUI/QtHighlightEditor.cpp')
-rw-r--r-- | Swift/QtUI/QtHighlightEditor.cpp | 94 |
1 files changed, 66 insertions, 28 deletions
diff --git a/Swift/QtUI/QtHighlightEditor.cpp b/Swift/QtUI/QtHighlightEditor.cpp index 5ac2857..e18ca94 100644 --- a/Swift/QtUI/QtHighlightEditor.cpp +++ b/Swift/QtUI/QtHighlightEditor.cpp @@ -12,7 +12,13 @@ #include <cassert> +#include <boost/lexical_cast.hpp> + +#include <Swift/Controllers/HighlightManager.cpp> #include <Swift/QtUI/QtHighlightEditor.h> +#include <Swift/QtUI/QtSwiftUtil.h> + +#include <QTreeWidgetItem> namespace Swift { @@ -41,15 +47,16 @@ QtHighlightEditor::QtHighlightEditor(QtSettingsProvider* settings, QWidget* pare // //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())); + connect(ui_.listWidget, SIGNAL(currentRowChanged(int)), SLOT(onCurrentRowChanged(int))); + + 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_.buttonBox->button(QDialogButtonBox::Apply), SIGNAL(clicked()), SLOT(onApplyButtonClick())); + connect(ui_.buttonBox->button(QDialogButtonBox::Cancel), SIGNAL(clicked()), SLOT(onCancelButtonClick())); + connect(ui_.buttonBox->button(QDialogButtonBox::Ok), SIGNAL(clicked()), SLOT(onOkButtonClick())); setWindowTitle(tr("Highlight Rules")); } @@ -67,8 +74,23 @@ void QtHighlightEditor::show() QWidget::activateWindow(); } +std::string formatNaturalDescription(const HighlightRule& rule) +{ + return "(null)"; +} + void QtHighlightEditor::setHighlightManager(HighlightManager* highlightManager) { + highlightManager_ = highlightManager; + + ui_.listWidget->clear(); + + foreach(const HighlightRule &rule, highlightManager_->getRules()) { + QListWidgetItem *item = new QListWidgetItem(); + item->setText(P2QSTRING(formatNaturalDescription(rule))); + ui_.listWidget->addItem(item); + } + //itemModel_->setHighlightManager(highlightManager); //ui_.newButton->setEnabled(highlightManager != NULL); // @@ -78,16 +100,13 @@ void QtHighlightEditor::setHighlightManager(HighlightManager* highlightManager) //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); + int row = getSelectedRow() + 1; + QListWidgetItem *item = new QListWidgetItem(); + item->setText("New rule"); + ui_.listWidget->insertItem(row, item); + selectRow(row); } void QtHighlightEditor::onDeleteButtonClicked() @@ -125,31 +144,50 @@ void QtHighlightEditor::onMoveDownButtonClicked() //} } -void QtHighlightEditor::onCurrentRowChanged(const QModelIndex& index) +void QtHighlightEditor::onCurrentRowChanged(int currentRow) { //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); + + ui_.deleteButton->setEnabled(currentRow != -1); + + ui_.moveUpButton->setEnabled(currentRow != -1 && currentRow != 0); + ui_.moveDownButton->setEnabled(currentRow != -1 && currentRow != (ui_.listWidget->count()-1)); +} + +void QtHighlightEditor::onApplyButtonClick() +{ + close(); +} + +void QtHighlightEditor::onCancelButtonClick() +{ + close(); +} + +void QtHighlightEditor::onOkButtonClick() +{ + close(); } void QtHighlightEditor::selectRow(int row) { - //QModelIndex index = itemModel_->index(row, 0, QModelIndex()); - //ui_.treeView->selectionModel()->setCurrentIndex(index, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows); + for (int i = 0; i < ui_.listWidget->count(); ++i) { + ui_.listWidget->item(i)->setSelected(i == row); + } } /** 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; + for (int i = 0; i < ui_.listWidget->count(); ++i) { + if (ui_.listWidget->item(i)->isSelected()) { + return i; + } + } + return -1; } } |