From 971854bfefad4c644ac3d5f5d6003f24d551bf1d Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Mon, 10 Mar 2025 22:04:24 +0530 Subject: Add completer + simplify command parsing + class generator --- src/completion/Completer.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/completion/Completer.cpp (limited to 'src/completion/Completer.cpp') diff --git a/src/completion/Completer.cpp b/src/completion/Completer.cpp new file mode 100644 index 0000000..96a363e --- /dev/null +++ b/src/completion/Completer.cpp @@ -0,0 +1,46 @@ +#include +#include +#include +#include +#include +#include + +#include "completion/Completer.hpp" +#include "completion/CompleterDelegate.hpp" + +const char *completerStyles = R"( + background-color: #111; + color: #fff; + border-radius: 0; +)"; + +Completer::Completer(QObject *parent) : QCompleter(parent) { + setFilterMode(Qt::MatchContains); + setCaseSensitivity(Qt::CaseInsensitive); + setCompletionRole(Qt::DisplayRole); + setCompletionMode(QCompleter::PopupCompletion); + + auto treeView = new QTreeView(); + setPopup(treeView); + treeView->setStyleSheet(completerStyles); + treeView->setItemDelegate(new CompleterDelegate(treeView)); + treeView->setRootIsDecorated(false); + treeView->setUniformRowHeights(true); + treeView->header()->hide(); + treeView->setColumnWidth(1, 160); + + complete(); +} + +// bool Completer::eventFilter(QObject *watched, QEvent *event) { +// auto isFocusIn = event->type() == QEvent::FocusIn; +// auto isKeyRelease = event->type() == QEvent::KeyRelease; +// +// QLineEdit *lineEdit = qobject_cast(watched); +// bool isInputEmpty = lineEdit && lineEdit->text().isEmpty(); +// +// if ((isFocusIn || isKeyRelease) && isInputEmpty) +// complete(); +// +// return QCompleter::eventFilter(watched, event); +// } -- cgit v1.3.1