diff options
author | kh1 <qt-info@nokia.com> | 2010-03-02 16:48:49 +0100 |
---|---|---|
committer | kh1 <qt-info@nokia.com> | 2010-03-02 18:04:25 +0100 |
commit | 39a278d43a5278e4243dae27c98b75233c974482 (patch) | |
tree | 87e35bb79ddcbc81bd9264745cfd46e6a0806b7a /src/plugins/help/docsettingspage.cpp | |
parent | 4025adf6471fe7dae40e2463bd118b40cdecec0e (diff) | |
download | qt-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.cpp | 54 |
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); +} |