diff options
Diffstat (limited to 'src/widgets')
| -rw-r--r-- | src/widgets/InputLine.cpp | 111 | ||||
| -rw-r--r-- | src/widgets/MainWindow.cpp | 40 |
2 files changed, 13 insertions, 138 deletions
diff --git a/src/widgets/InputLine.cpp b/src/widgets/InputLine.cpp deleted file mode 100644 index 81e2bab..0000000 --- a/src/widgets/InputLine.cpp +++ /dev/null @@ -1,111 +0,0 @@ -#include <QBoxLayout> -#include <QCompleter> -#include <QHBoxLayout> -#include <QKeyEvent> -#include <QLabel> -#include <QLineEdit> -#include <QStringListModel> -#include <QWidget> -#include <QWidgetAction> -#include <QWindow> -#include <QtCore/qnamespace.h> -#include <QtCore> -#include <QtWidgets/qboxlayout.h> -#include <QtWidgets/qlineedit.h> -#include <QtWidgets/qwidget.h> - -#include "completion/CommandsAdapter.hpp" -#include "widgets/InputLine.hpp" - -const char *rootStyles = R"( - background-color: #000; - color: #fff; - border-radius: 0; -)"; - -const char *promptStyles = R"( - background-color: #222; - color: #fff; - padding: 0 4px; -)"; - -const char *inputStyles = R"( - color: #fff; - padding: 0 4px; -)"; - -InputLine::InputLine(QString defaultInput, QWidget *parentNode) - : QWidget(parentNode) { - setContentsMargins(0, 0, 0, 0); - setStyleSheet(rootStyles); - - layout = new QVBoxLayout(this); - layout->setContentsMargins(0, 0, 0, 0); - layout->setSpacing(0); - setLayout(layout); - setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); - - auto cmdLineBox = new QWidget(); - auto cmdLineLayout = new QHBoxLayout(); - cmdLineLayout->setContentsMargins(0, 0, 0, 0); - cmdLineLayout->setSpacing(0); - cmdLineBox->setLayout(cmdLineLayout); - - promptPrefix = new QLabel(); - promptPrefix->setStyleSheet(promptStyles); - promptPrefix->setContentsMargins(0, 0, 0, 0); - input = new QLineEdit(defaultInput); - input->setStyleSheet(inputStyles); - input->setFocusPolicy(Qt::StrongFocus); - input->setContentsMargins(0, 0, 0, 0); - - cmdLineLayout->addWidget(promptPrefix); - cmdLineLayout->addWidget(input, 1); - cmdLineBox->setFixedHeight(input->sizeHint().height()); - - layout->addWidget(cmdLineBox, 0); - - setAdapter(new CommandsAdapter()); -} - -void InputLine::setAdapter(Adapter *adapter) { - if (this->adapterInstance) { - layout->removeWidget(this->adapterInstance->completer()); - delete this->adapterInstance; - } - this->adapterInstance = adapter; - promptPrefix->setText(adapter->prompt()); - - auto completer = adapter->completer(); - layout->insertWidget(1, completer, 0, Qt::AlignmentFlag::AlignTop); - - connect(input, &QLineEdit::textChanged, completer, &Completer::onTextChange); - connect(completer, &Completer::accepted, input, &QLineEdit::setText); -} - -void InputLine::emitSubmit() { emit submitted(getInputText()); } - -void InputLine::keyPressEvent(QKeyEvent *event) { - auto combo = event->keyCombination(); - - // Forward events to completer first - bool shouldStop = adapterInstance->completer()->onKeyPressEvent(event); - if (shouldStop) - return; - - auto ctrlL = combo.key() == Qt::Key_L && - combo.keyboardModifiers().testFlag(Qt::ControlModifier); - auto esc = combo.key() == Qt::Key_Escape; - auto enter = combo.key() == Qt::Key_Return || combo.key() == Qt::Key_Enter; - if (esc || ctrlL) - emit cancelled(); - else if (enter) - emitSubmit(); -} - -void InputLine::setInputFocus(bool focussed) { - if (focussed) - input->setFocus(Qt::PopupFocusReason); - else - input->clearFocus(); -} diff --git a/src/widgets/MainWindow.cpp b/src/widgets/MainWindow.cpp index 7d045bc..327a77c 100644 --- a/src/widgets/MainWindow.cpp +++ b/src/widgets/MainWindow.cpp @@ -6,7 +6,6 @@ #include <QtWidgets/qapplication.h> #include "InputMediator.hpp" -#include "widgets/InputLine.hpp" #include "widgets/MainWindow.hpp" #include "widgets/WebViewStack.hpp" @@ -28,13 +27,16 @@ MainWindow::MainWindow() { new QWebEngineProfile("null-browser")); layout->addWidget(webViewStack); - // Command input - auto inputLine = new InputLine(); - layout->addWidget(inputLine); + // TODO: remoev + webViewStack->openUrl(QUrl("https://duckduckgo.com"), OpenType::OpenUrl); + webViewStack->openUrl(QUrl("https://ediblemonad.dev"), + OpenType::OpenUrlInBgTab); + webViewStack->openUrl(QUrl("https://github.com/trending"), + OpenType::OpenUrlInBgTab); - inputMediator = - new InputMediator(inputLine, webViewStack, LuaRuntime::instance()); + inputMediator = new InputMediator(webViewStack, LuaRuntime::instance()); + // TODO: remove keymapEvaluator.addKeymap("default", "<c-t>a", "Stuff"); keymapEvaluator.addKeymap("default", "<c-t>b", "Other stuff"); } @@ -42,18 +44,8 @@ MainWindow::MainWindow() { void MainWindow::keyPressEvent(QKeyEvent *event) { auto combo = event->keyCombination(); - if (combo.key() == Qt::Key_L && + if (combo.key() == Qt::Key_J && combo.keyboardModifiers().testFlag(Qt::ControlModifier)) { - inputMediator->showURLInput(inputMediator->currentUrl().toString(), - OpenType::OpenUrl); - } else if (combo.key() == Qt::Key_Semicolon && - combo.keyboardModifiers().testFlag(Qt::ControlModifier)) { - inputMediator->showCommandInput(""); - } else if (combo.key() == Qt::Key_T && - combo.keyboardModifiers().testFlag(Qt::ControlModifier)) { - inputMediator->showTabsInput(); - } else if (combo.key() == Qt::Key_J && - combo.keyboardModifiers().testFlag(Qt::ControlModifier)) { inputMediator->nextWebView(); } else if (combo.key() == Qt::Key_K && combo.keyboardModifiers().testFlag(Qt::ControlModifier)) { @@ -65,17 +57,11 @@ void MainWindow::keyPressEvent(QKeyEvent *event) { } bool MainWindow::eventFilter(QObject *object, QEvent *event) { - if (event->type() != QEvent::KeyPress && event->type() != QEvent::KeyRelease) + if (event->type() != QEvent::KeyPress) return false; - if (auto keyEvent = dynamic_cast<QKeyEvent *>(event)) { - if (keyEvent->type() == QEvent::KeyPress) - keymapEvaluator.evaluate(keyEvent->modifiers(), (Qt::Key)keyEvent->key()); - - // qDebug() << "EV SELF: " << (object == this) << " | " << event->type(); - // qDebug() << "Key: " << keyEvent->modifiers() << keyEvent->key(); - return true; - } + auto keyEvent = static_cast<QKeyEvent *>(event); + keymapEvaluator.evaluate(keyEvent->modifiers(), (Qt::Key)keyEvent->key()); - return false; + return true; } |
