aboutsummaryrefslogtreecommitdiff
path: root/src/completion
diff options
context:
space:
mode:
Diffstat (limited to 'src/completion')
-rw-r--r--src/completion/CommandsAdapter.cpp22
-rw-r--r--src/completion/Completer.cpp4
-rw-r--r--src/completion/UrlAdapter.cpp20
-rw-r--r--src/completion/UrlModel.cpp48
4 files changed, 91 insertions, 3 deletions
diff --git a/src/completion/CommandsAdapter.cpp b/src/completion/CommandsAdapter.cpp
new file mode 100644
index 0000000..df71661
--- /dev/null
+++ b/src/completion/CommandsAdapter.cpp
@@ -0,0 +1,22 @@
+#include <QWidget>
+#include <QtCore>
+
+#include "completion/CommandsAdapter.hpp"
+#include "completion/CommandsModel.hpp"
+#include "completion/Completer.hpp"
+
+const QString cmdPrompt = "[exec]";
+
+CommandsAdapter::CommandsAdapter() : Adapter() {
+ completerInstance = new Completer(this);
+ completerInstance->setModel(new CommandsModel(this));
+}
+
+Completer *CommandsAdapter::completer() { return completerInstance; }
+
+QString CommandsAdapter::prompt() { return cmdPrompt; }
+
+CommandsAdapter::~CommandsAdapter() {
+ delete completerInstance->model();
+ delete completerInstance;
+}
diff --git a/src/completion/Completer.cpp b/src/completion/Completer.cpp
index 96a363e..a38d3f2 100644
--- a/src/completion/Completer.cpp
+++ b/src/completion/Completer.cpp
@@ -27,9 +27,7 @@ Completer::Completer(QObject *parent) : QCompleter(parent) {
treeView->setRootIsDecorated(false);
treeView->setUniformRowHeights(true);
treeView->header()->hide();
- treeView->setColumnWidth(1, 160);
-
- complete();
+ treeView->setColumnWidth(1, 300);
}
// bool Completer::eventFilter(QObject *watched, QEvent *event) {
diff --git a/src/completion/UrlAdapter.cpp b/src/completion/UrlAdapter.cpp
new file mode 100644
index 0000000..2f1bb08
--- /dev/null
+++ b/src/completion/UrlAdapter.cpp
@@ -0,0 +1,20 @@
+#include <QWidget>
+#include <QtCore>
+
+#include "completion/Completer.hpp"
+#include "completion/UrlAdapter.hpp"
+#include "completion/UrlModel.hpp"
+
+UrlAdapter::UrlAdapter() : Adapter() {
+ completerInstance = new Completer(this);
+ completerInstance->setModel(new UrlModel(this));
+}
+
+Completer *UrlAdapter::completer() { return completerInstance; }
+
+QString UrlAdapter::prompt() { return "[url]"; }
+
+UrlAdapter::~UrlAdapter() {
+ delete completerInstance->model();
+ delete completerInstance;
+}
diff --git a/src/completion/UrlModel.cpp b/src/completion/UrlModel.cpp
new file mode 100644
index 0000000..7671fc3
--- /dev/null
+++ b/src/completion/UrlModel.cpp
@@ -0,0 +1,48 @@
+#include <QAbstractListModel>
+#include <QWidget>
+#include <QtCore>
+
+#include "completion/UrlModel.hpp"
+
+UrlModel::UrlModel(QObject *parent) : QAbstractListModel(parent) {
+ items = {
+ {.url = "https://google.com", .description = "Google"},
+ {.url = "https://duckduckgo.com", .description = "DuckDuckGo"},
+ {.url = "https://ediblemonad.dev", .description = "EdibleMonad website"},
+ {.url = "https://lite.duckduckgo.com", .description = "DDG lite"},
+ {.url = "https://github.com/trending", .description = "Github trending"},
+ };
+}
+
+QVariant UrlModel::data(const QModelIndex &index, int role) const {
+ if (!index.isValid() || index.row() >= items.size())
+ return QVariant();
+
+ const Url &item = items.at(index.row());
+
+ if (role == Qt::DisplayRole)
+ return item.url;
+ else if (role == Qt::ToolTipRole)
+ return item.description;
+ else if (role == Qt::UserRole)
+ return item.description;
+
+ return QVariant();
+}
+
+QHash<int, QByteArray> UrlModel::roleNames() const {
+ QHash<int, QByteArray> roles;
+ roles[Qt::DisplayRole] = "url";
+ roles[Qt::UserRole] = "description";
+ return roles;
+}
+
+int UrlModel::rowCount(const QModelIndex &parent) const {
+ Q_UNUSED(parent);
+ return items.size();
+}
+
+int UrlModel::columnCount(const QModelIndex &parent) const {
+ Q_UNUSED(parent);
+ return 2; // name + description
+}