diff options
| -rw-r--r-- | Swift/QtUI/QtHighlightEditor.cpp | 17 | ||||
| -rw-r--r-- | Swift/QtUI/QtHighlightEditor.h | 4 |
2 files changed, 14 insertions, 7 deletions
diff --git a/Swift/QtUI/QtHighlightEditor.cpp b/Swift/QtUI/QtHighlightEditor.cpp index 7aea26b..50d1f78 100644 --- a/Swift/QtUI/QtHighlightEditor.cpp +++ b/Swift/QtUI/QtHighlightEditor.cpp @@ -11,18 +11,19 @@ */ #include <Swift/QtUI/QtHighlightEditor.h> #include <cassert> #include <boost/lexical_cast.hpp> #include <QFileDialog> +#include <QScrollBar> #include <QTreeWidgetItem> #include <Swift/Controllers/HighlightManager.cpp> #include <Swift/QtUI/QtSettingsProvider.h> #include <Swift/QtUI/QtSwiftUtil.h> #include <Swift/QtUI/UserSearch/QtSuggestingJIDInput.h> namespace Swift { @@ -197,32 +198,36 @@ void QtHighlightEditor::onDeleteButtonClicked() } else { if (selectedRow == ui_.listWidget->count()) { selectRow(ui_.listWidget->count() - 1); } else { selectRow(selectedRow); } } } +void QtHighlightEditor::moveRowFromTo(int fromRow, int toRow) { + int verticalScrollAreaPosition = ui_.scrollArea->verticalScrollBar()->value(); + highlightManager_->swapRules(fromRow, toRow); + populateList(); + selectRow(toRow); + ui_.scrollArea->verticalScrollBar()->setValue(verticalScrollAreaPosition); +} + void QtHighlightEditor::onUpButtonClicked() { const size_t moveFrom = ui_.listWidget->currentRow(); const size_t moveTo = moveFrom - 1; - highlightManager_->swapRules(moveFrom, moveTo); - populateList(); - selectRow(moveTo); + moveRowFromTo(moveFrom, moveTo); } void QtHighlightEditor::onDownButtonClicked() { const size_t moveFrom = ui_.listWidget->currentRow(); const size_t moveTo = moveFrom + 1; - highlightManager_->swapRules(moveFrom, moveTo); - populateList(); - selectRow(moveTo); + moveRowFromTo(moveFrom, moveTo); } 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) { diff --git a/Swift/QtUI/QtHighlightEditor.h b/Swift/QtUI/QtHighlightEditor.h index bcceb72..eb6a52b 100644 --- a/Swift/QtUI/QtHighlightEditor.h +++ b/Swift/QtUI/QtHighlightEditor.h @@ -6,21 +6,22 @@ /* * Copyright (c) 2014-2015 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once +#include <Swift/QtUI/ui_QtHighlightEditor.h> + #include <Swift/Controllers/HighlightRule.h> #include <Swift/Controllers/UIInterfaces/HighlightEditorWindow.h> -#include <Swift/QtUI/ui_QtHighlightEditor.h> namespace Swift { class QtSettingsProvider; class QtSuggestingJIDInput; class QtWebKitChatView; class QtHighlightEditor : public QWidget, public HighlightEditorWindow { Q_OBJECT @@ -55,18 +56,19 @@ namespace Swift { private: void handleOnUserSelected(const Contact::ref& contact); void populateList(); void selectRow(int row); int getSelectedRow() const; HighlightRule ruleFromDialog(); void ruleToDialog(const HighlightRule& rule); void updateResetToDefaultRulesVisibility(); + void moveRowFromTo(int fromRow, int toRow); Ui::QtHighlightEditor ui_; QtSettingsProvider* settings_; HighlightManager* highlightManager_; QtSuggestingJIDInput* jid_; int previousRow_; }; } |
Swift