summaryrefslogtreecommitdiffstats
path: root/Swift
diff options
context:
space:
mode:
Diffstat (limited to 'Swift')
-rw-r--r--Swift/QtUI/QtHighlightEditor.cpp17
-rw-r--r--Swift/QtUI/QtHighlightEditor.h4
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_;
};
}