From c6f05b07c2f7499d781e1e84efe6a10d501d6b43 Mon Sep 17 00:00:00 2001 From: Richard Maudsley Date: Fri, 17 Jan 2014 12:29:43 +0000 Subject: Saving and restoring dialog state. Change-Id: Idd0f12980326f628177db3df40cd5b3082957bc8 diff --git a/Swift/QtUI/QtHighlightEditor.cpp b/Swift/QtUI/QtHighlightEditor.cpp index 457d397..87e16d3 100644 --- a/Swift/QtUI/QtHighlightEditor.cpp +++ b/Swift/QtUI/QtHighlightEditor.cpp @@ -25,7 +25,7 @@ namespace Swift { QtHighlightEditor::QtHighlightEditor(QtSettingsProvider* settings, QWidget* parent) - : QWidget(parent), settings_(settings) + : QWidget(parent), settings_(settings), previousRow_(-1) { ui_.setupUi(this); @@ -79,15 +79,6 @@ QtHighlightEditor::~QtHighlightEditor() { } -void QtHighlightEditor::show() -{ - //if (itemModel_->rowCount(QModelIndex())) { - //selectRow(0); - //} - QWidget::show(); - QWidget::activateWindow(); -} - std::string formatNaturalDescription(const HighlightRule& rule) { //This rule will match messages either in chats or in rooms if the sender @@ -137,18 +128,29 @@ std::string formatNaturalDescription(const HighlightRule& rule) return text; } -void QtHighlightEditor::setHighlightManager(HighlightManager* highlightManager) +void QtHighlightEditor::show() { - highlightManager_ = highlightManager; - ui_.listWidget->clear(); + highlightManager_->loadSettings(); foreach(const HighlightRule &rule, highlightManager_->getRules()) { QListWidgetItem *item = new QListWidgetItem(); item->setText(P2QSTRING(formatNaturalDescription(rule))); ui_.listWidget->addItem(item); } + if (ui_.listWidget->count()) { + selectRow(0); + } + + QWidget::show(); + QWidget::activateWindow(); +} + +void QtHighlightEditor::setHighlightManager(HighlightManager* highlightManager) +{ + highlightManager_ = highlightManager; + //itemModel_->setHighlightManager(highlightManager); //ui_.newButton->setEnabled(highlightManager != NULL); // @@ -185,6 +187,7 @@ void QtHighlightEditor::soundCustomSelect() void QtHighlightEditor::onNewButtonClicked() { int row = getSelectedRow() + 1; + highlightManager_->insertRule(row, HighlightRule()); QListWidgetItem *item = new QListWidgetItem(); item->setText("New rule"); ui_.listWidget->insertItem(row, item); @@ -193,7 +196,9 @@ void QtHighlightEditor::onNewButtonClicked() void QtHighlightEditor::onDeleteButtonClicked() { - delete ui_.listWidget->takeItem(getSelectedRow()); + int selectedRow = getSelectedRow(); + delete ui_.listWidget->takeItem(selectedRow); + highlightManager_->removeRule(selectedRow); } void QtHighlightEditor::onMoveUpButtonClicked() @@ -229,12 +234,25 @@ void QtHighlightEditor::onCurrentRowChanged(int currentRow) ui_.deleteButton->setEnabled(currentRow != -1); ui_.moveUpButton->setEnabled(currentRow != -1 && currentRow != 0); ui_.moveDownButton->setEnabled(currentRow != -1 && currentRow != (ui_.listWidget->count()-1)); + + if (previousRow_ != -1) { + if (ui_.listWidget->count() > previousRow_) { + highlightManager_->setRule(previousRow_, ruleFromDialog()); + } + } + + if (currentRow != -1) { + ruleToDialog(highlightManager_->getRule(currentRow)); + } else { + /* grey/disable entire dialog */ + } + + previousRow_ = currentRow; } void QtHighlightEditor::onApplyButtonClick() { - ui_.textEdit_2->setText(P2QSTRING(formatNaturalDescription(ruleFromDialog()))); -// close(); + highlightManager_->storeSettings(); } void QtHighlightEditor::onCancelButtonClick() @@ -244,15 +262,18 @@ void QtHighlightEditor::onCancelButtonClick() void QtHighlightEditor::onOkButtonClick() { + highlightManager_->storeSettings(); close(); } void QtHighlightEditor::selectRow(int row) { for (int i = 0; i < ui_.listWidget->count(); ++i) { - ui_.listWidget->item(i)->setSelected(i == row); + if (i == row) { + ui_.listWidget->item(i)->setSelected(true); + onCurrentRowChanged(i); + } } - onCurrentRowChanged(row); } /** Return index of selected row or -1 if none is selected */ diff --git a/Swift/QtUI/QtHighlightEditor.h b/Swift/QtUI/QtHighlightEditor.h index ebae432..b195c13 100644 --- a/Swift/QtUI/QtHighlightEditor.h +++ b/Swift/QtUI/QtHighlightEditor.h @@ -56,6 +56,7 @@ namespace Swift { QtSettingsProvider* settings_; HighlightManager* highlightManager_; QtSuggestingJIDInput* jid_; + int previousRow_; }; } -- cgit v0.10.2-6-g49f6