diff options
Diffstat (limited to 'src/completion')
| -rw-r--r-- | src/completion/CommandsAdapter.cpp | 22 | ||||
| -rw-r--r-- | src/completion/Completer.cpp | 4 | ||||
| -rw-r--r-- | src/completion/UrlAdapter.cpp | 20 | ||||
| -rw-r--r-- | src/completion/UrlModel.cpp | 48 |
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 +} |
