summaryrefslogtreecommitdiff
path: root/src/plugins/help/docsettingspage.cpp
diff options
context:
space:
mode:
authorkh1 <qt-info@nokia.com>2010-03-02 16:48:49 +0100
committerkh1 <qt-info@nokia.com>2010-03-02 18:04:25 +0100
commit39a278d43a5278e4243dae27c98b75233c974482 (patch)
tree87e35bb79ddcbc81bd9264745cfd46e6a0806b7a /src/plugins/help/docsettingspage.cpp
parent4025adf6471fe7dae40e2463bd118b40cdecec0e (diff)
downloadqt-creator-39a278d43a5278e4243dae27c98b75233c974482.tar.gz
Allow multiple docs to be reoved at once, also react on Delete key.
Reviewed-by: ck
Diffstat (limited to 'src/plugins/help/docsettingspage.cpp')
-rw-r--r--src/plugins/help/docsettingspage.cpp54
1 files changed, 40 insertions, 14 deletions
diff --git a/src/plugins/help/docsettingspage.cpp b/src/plugins/help/docsettingspage.cpp
index 7a911e3e5d..084b516c6b 100644
--- a/src/plugins/help/docsettingspage.cpp
+++ b/src/plugins/help/docsettingspage.cpp
@@ -30,9 +30,12 @@
#include "docsettingspage.h"
#include "helpconstants.h"
+#include <QtCore/QCoreApplication>
+
#include <QtGui/QFileDialog>
+#include <QtGui/QKeyEvent>
#include <QtGui/QMessageBox>
-#include <QtCore/QCoreApplication>
+
#include <QtHelp/QHelpEngine>
using namespace Help::Internal;
@@ -73,6 +76,7 @@ QWidget *DocSettingsPage::createPage(QWidget *parent)
connect(m_ui.removeButton, SIGNAL(clicked()),
this, SLOT(removeDocumentation()));
+ m_ui.docsListWidget->installEventFilter(this);
m_ui.docsListWidget->addItems(m_helpEngine->registeredDocumentations());
m_registeredDocs = false;
m_removeDocs.clear();
@@ -108,19 +112,7 @@ void DocSettingsPage::addDocumentation()
void DocSettingsPage::removeDocumentation()
{
- QListWidgetItem *item = m_ui.docsListWidget->currentItem();
- if (!item)
- return;
-
- m_removeDocs.append(item->text());
- int row = m_ui.docsListWidget->currentRow();
- m_ui.docsListWidget->takeItem(row);
- if (row > 0)
- --row;
- if (m_ui.docsListWidget->count())
- m_ui.docsListWidget->setCurrentRow(row);
-
- delete item;
+ removeDocumentation(m_ui.docsListWidget->selectedItems());
}
void DocSettingsPage::apply()
@@ -153,3 +145,37 @@ bool DocSettingsPage::applyChanges()
return success;
}
+
+bool DocSettingsPage::eventFilter(QObject *object, QEvent *event)
+{
+ if (object != m_ui.docsListWidget)
+ return Core::IOptionsPage::eventFilter(object, event);
+
+ if (event->type() == QEvent::KeyPress) {
+ QKeyEvent *ke = static_cast<QKeyEvent*>(event);
+ switch (ke->key()) {
+ case Qt::Key_Delete:
+ removeDocumentation(m_ui.docsListWidget->selectedItems());
+ break;
+ default: break;
+ }
+ }
+
+ return Core::IOptionsPage::eventFilter(object, event);
+}
+
+void DocSettingsPage::removeDocumentation(const QList<QListWidgetItem*> items)
+{
+ if (items.isEmpty())
+ return;
+
+ int row = 0;
+ foreach (QListWidgetItem* item, items) {
+ m_removeDocs.append(item->text());
+ row = m_ui.docsListWidget->row(item);
+ delete m_ui.docsListWidget->takeItem(row);
+ }
+
+ m_ui.docsListWidget->setCurrentRow(qMax(row - 1, 0),
+ QItemSelectionModel::ClearAndSelect);
+}