diff options
Diffstat (limited to 'lib/addressbar/completer.cpp')
-rw-r--r-- | lib/addressbar/completer.cpp | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/lib/addressbar/completer.cpp b/lib/addressbar/completer.cpp deleted file mode 100644 index 578f745..0000000 --- a/lib/addressbar/completer.cpp +++ /dev/null @@ -1,81 +0,0 @@ -/* - * This file is part of smolbote. It's copyrighted by the contributors recorded - * in the version control history of the file, available from its original - * location: https://neueland.iserlohn-fortress.net/gitea/aqua/smolbote - * - * SPDX-License-Identifier: GPL-3.0 - */ - -#include "completer.h" -#include <QKeyEvent> - -Completer::Completer(QWidget *parent) - : QListView(parent) -{ - setObjectName("Completer"); - setWindowFlags(Qt::ToolTip); - setEditTriggers(QAbstractItemView::NoEditTriggers); - - connect(this, &Completer::activated, [=](const QModelIndex &index) { - hide(); - emit completionActivated(index.data().toString()); - }); -} - -bool Completer::updateItems(const QStringList &list) -{ - if(list.isEmpty()) - return false; - - auto *model = new QStringListModel(list, this); - setModel(model); - - delete completionModel; - completionModel = model; - - return true; -} - -bool Completer::keyPressed(QKeyEvent *event) -{ - if(isHidden()) - return false; - - Q_CHECK_PTR(completionModel); - - int count = completionModel->rowCount(); - const QModelIndex currentIndex = this->currentIndex(); - - switch(event->key()) { - case Qt::Key_Down: - if(currentIndex.row() + 1 >= count) { - setCurrentIndex(completionModel->index(0, 0)); - } else { - setCurrentIndex(completionModel->index(currentIndex.row() + 1, 0)); - } - break; - - case Qt::Key_Up: - if(currentIndex.row() == 0) { - setCurrentIndex(completionModel->index(count - 1, 0)); - } else { - setCurrentIndex(completionModel->index(currentIndex.row() - 1, 0)); - } - break; - - case Qt::Key_Escape: - hide(); - break; - - case Qt::Key_Enter: - case Qt::Key_Return: - hide(); - emit completionActivated(currentIndex.data().toString()); - break; - - default: - return false; - } - - return true; -} |