From 0e4b2336855b063378608ea050818cf9c0ec3937 Mon Sep 17 00:00:00 2001 From: Serhii Moroz Date: Sun, 5 Mar 2017 23:08:35 +0200 Subject: [PATCH] RemoteFilterOptions: Add ability to re-order items in the list widget Change-Id: Iada4b63f13ba1e6875b414eb6ee710209b0b75df Reviewed-by: Eike Ziller --- src/plugins/help/remotehelpfilter.cpp | 33 +++++++++++++++++++++--- src/plugins/help/remotehelpfilter.h | 4 ++- src/plugins/help/remotehelpfilter.ui | 36 ++++++++++++++++++++++++--- 3 files changed, 66 insertions(+), 7 deletions(-) diff --git a/src/plugins/help/remotehelpfilter.cpp b/src/plugins/help/remotehelpfilter.cpp index faa810e67e8..43e32bd8473 100644 --- a/src/plugins/help/remotehelpfilter.cpp +++ b/src/plugins/help/remotehelpfilter.cpp @@ -53,9 +53,13 @@ RemoteFilterOptions::RemoteFilterOptions(RemoteHelpFilter *filter, QWidget *pare this, &RemoteFilterOptions::addNewItem); connect(m_ui.remove, &QPushButton::clicked, this, &RemoteFilterOptions::removeItem); + connect(m_ui.moveUp, &QPushButton::clicked, + this, &RemoteFilterOptions::moveItemUp); + connect(m_ui.moveDown, &QPushButton::clicked, + this, &RemoteFilterOptions::moveItemDown); connect(m_ui.listWidget, &QListWidget::currentItemChanged, - this, &RemoteFilterOptions::updateRemoveButton); - updateRemoveButton(); + this, &RemoteFilterOptions::updateActionButtons); + updateActionButtons(); } void RemoteFilterOptions::addNewItem() @@ -76,9 +80,32 @@ void RemoteFilterOptions::removeItem() } } -void RemoteFilterOptions::updateRemoveButton() +void RemoteFilterOptions::moveItemUp() +{ + const int row = m_ui.listWidget->currentRow(); + if (row > 0) { + QListWidgetItem *item = m_ui.listWidget->takeItem(row); + m_ui.listWidget->insertItem(row - 1, item); + m_ui.listWidget->setCurrentRow(row - 1); + } +} + +void RemoteFilterOptions::moveItemDown() +{ + const int row = m_ui.listWidget->currentRow(); + if (row >= 0 && row < m_ui.listWidget->count() - 1) { + QListWidgetItem *item = m_ui.listWidget->takeItem(row); + m_ui.listWidget->insertItem(row + 1, item); + m_ui.listWidget->setCurrentRow(row + 1); + } +} + +void RemoteFilterOptions::updateActionButtons() { m_ui.remove->setEnabled(m_ui.listWidget->currentItem()); + const int row = m_ui.listWidget->currentRow(); + m_ui.moveUp->setEnabled(row > 0); + m_ui.moveDown->setEnabled(row >= 0 && row < m_ui.listWidget->count() - 1); } // -- RemoteHelpFilter diff --git a/src/plugins/help/remotehelpfilter.h b/src/plugins/help/remotehelpfilter.h index 9c8fa8fc0d7..23749a80a30 100644 --- a/src/plugins/help/remotehelpfilter.h +++ b/src/plugins/help/remotehelpfilter.h @@ -72,7 +72,9 @@ public: private: void addNewItem(); void removeItem(); - void updateRemoveButton(); + void moveItemUp(); + void moveItemDown(); + void updateActionButtons(); RemoteHelpFilter *m_filter; Ui::RemoteFilterOptions m_ui; diff --git a/src/plugins/help/remotehelpfilter.ui b/src/plugins/help/remotehelpfilter.ui index 55f1f4de38e..5c70d032a09 100644 --- a/src/plugins/help/remotehelpfilter.ui +++ b/src/plugins/help/remotehelpfilter.ui @@ -6,8 +6,8 @@ 0 0 - 342 - 182 + 600 + 400 @@ -60,7 +60,11 @@ - + + + QAbstractItemView::InternalMove + + @@ -90,6 +94,32 @@ + + + + + 21 + 21 + + + + Move Up + + + + + + + + 21 + 21 + + + + Move Down + + +