aboutsummaryrefslogtreecommitdiff
path: root/src/addressbar/completer.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2018-01-26 00:41:09 +0100
committerAqua-sama <aqua@iserlohn-fortress.net>2018-01-26 00:41:09 +0100
commit1bc3c311551d53759ffdfb11904c45f1cc2f91ce (patch)
treeca22cf2d17611dfe3aa0cfbf3ac825ecb014b9f4 /src/addressbar/completer.cpp
parentConfiguration class rework (diff)
downloadsmolbote-1bc3c311551d53759ffdfb11904c45f1cc2f91ce.tar.xz
UrlLineEdit rework
- moved UrlLineEdit to src/addressbar - added UrlLineEdit::connectWebView - removed UrlLineEdit::pageAction - UrlLineEdit restores the text format when losing focus - Split off completer code into Completer class - WebPage now displays a warning message box instead on certificate errors
Diffstat (limited to 'src/addressbar/completer.cpp')
-rw-r--r--src/addressbar/completer.cpp74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/addressbar/completer.cpp b/src/addressbar/completer.cpp
new file mode 100644
index 0000000..4c95bce
--- /dev/null
+++ b/src/addressbar/completer.cpp
@@ -0,0 +1,74 @@
+/*
+ * 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/smolbote.hg
+ *
+ * SPDX-License-Identifier: GPL-3.0
+ */
+
+#include "completer.h"
+#include <QKeyEvent>
+
+Completer::Completer(QWidget *parent)
+ : QListView(parent)
+{
+ setWindowFlags(Qt::ToolTip);
+}
+
+bool Completer::updateItems(const QModelIndexList &list)
+{
+ if(list.isEmpty())
+ return false;
+
+ // list is not empty
+ QStringList l;
+ for(const QModelIndex &idx : list) {
+ l.append(idx.data(Qt::EditRole).toString());
+ }
+
+ auto *model = new QStringListModel(l, 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;
+
+ default:
+ break;
+ }
+
+ return true;
+}