aboutsummaryrefslogtreecommitdiff
path: root/src/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/InputLine.cpp15
-rw-r--r--src/widgets/MainWindow.cpp109
2 files changed, 19 insertions, 105 deletions
diff --git a/src/widgets/InputLine.cpp b/src/widgets/InputLine.cpp
index 5edfe17..130732c 100644
--- a/src/widgets/InputLine.cpp
+++ b/src/widgets/InputLine.cpp
@@ -20,14 +20,15 @@ const char *rootStyles = R"(
)";
const char *promptStyles = R"(
- background-color: #aaa;
- color: #555;
+ background-color: #222;
+ color: #fff;
padding: 0 2px;
)";
InputLine::InputLine(QString defaultInput, QWidget *parentNode)
: QWidget(parentNode) {
setContentsMargins(0, 0, 0, 0);
+ move(0, 0);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
setStyleSheet(rootStyles);
@@ -54,8 +55,6 @@ InputLine::InputLine(QString defaultInput, QWidget *parentNode)
setAdapter(new CommandsAdapter());
}
-Adapter *InputLine::adapter() { return adapterInstance; }
-
void InputLine::setAdapter(Adapter *adapter) {
if (this->adapterInstance)
delete this->adapterInstance;
@@ -64,7 +63,7 @@ void InputLine::setAdapter(Adapter *adapter) {
input->setCompleter(adapter->completer());
}
-void InputLine::emitSubmit() { emit submitted(getInputCommand()); }
+void InputLine::emitSubmit() { emit submitted(getInputText()); }
void InputLine::keyPressEvent(QKeyEvent *event) {
auto combo = event->keyCombination();
@@ -79,15 +78,9 @@ void InputLine::keyPressEvent(QKeyEvent *event) {
emitSubmit();
}
-void InputLine::setInputText(QString text) { input->setText(text); }
-
-bool InputLine::isInputFocussed() { return input->hasFocus(); }
-
void InputLine::setInputFocus(bool focussed) {
if (focussed)
input->setFocus(Qt::PopupFocusReason);
else
input->clearFocus();
}
-
-QString InputLine::getInputCommand() { return input->text(); }
diff --git a/src/widgets/MainWindow.cpp b/src/widgets/MainWindow.cpp
index 2d936aa..632869f 100644
--- a/src/widgets/MainWindow.cpp
+++ b/src/widgets/MainWindow.cpp
@@ -4,9 +4,7 @@
#include <QWebEngineView>
#include <QtCore/qnamespace.h>
-#include "CommandParser.hpp"
-#include "completion/CommandsAdapter.hpp"
-#include "completion/UrlAdapter.hpp"
+#include "InputMediator.hpp"
#include "widgets/InputLine.hpp"
#include "widgets/MainWindow.hpp"
#include "widgets/WebViewStack.hpp"
@@ -16,123 +14,46 @@ MainWindow::MainWindow() {
setCentralWidget(new QWidget());
// Root stacked layout
- layout = new QStackedLayout();
+ auto layout = new QStackedLayout();
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
layout->setStackingMode(QStackedLayout::StackAll);
centralWidget()->setLayout(layout);
// Web engine
- webViewStack = new WebViewStack(new QWebEngineProfile("web-browser"));
+ auto webViewStack = new WebViewStack(new QWebEngineProfile("web-browser"));
layout->addWidget(webViewStack);
// Command input
- inputLine = new InputLine;
- inputLine->setHidden(true);
- inputLine->move(0, 0);
- connect(inputLine, &InputLine::submitted, this, &MainWindow::onInputSubmit);
- connect(inputLine, &InputLine::cancelled, this, &MainWindow::hideInputLine);
+ auto inputLine = new InputLine;
layout->addWidget(inputLine);
- // Lua runtime
- luaRuntime = LuaRuntime::instance();
- connect(luaRuntime, &LuaRuntime::urlOpened, this,
- [this](QString url, OpenType openType) {
- webViewStack->openUrl(QUrl(url), openType);
- });
-}
-
-void MainWindow::hideInputLine() {
- inputLine->setInputFocus(false);
- inputLine->setHidden(true);
-}
-
-void MainWindow::showInputLine() {
- inputLine->setHidden(false);
- layout->setCurrentWidget(inputLine);
- inputLine->setInputFocus(true);
-}
-
-void MainWindow::showURLInput(QString url, OpenType openType) {
- setEvaluationType(new UrlEval(openType));
- inputLine->setAdapter(new UrlAdapter);
- inputLine->setInputText(url);
- showInputLine();
-}
-
-void MainWindow::showCommandInput(QString cmd) {
- setEvaluationType(new CommandEval());
- inputLine->setAdapter(new CommandsAdapter);
- inputLine->setInputText(cmd);
- showInputLine();
-}
-void MainWindow::setEvaluationType(EvaluationType *evalType) {
- if (currentEvaluationType)
- delete currentEvaluationType;
- currentEvaluationType = evalType;
-}
-
-void MainWindow::onInputSubmit(QString input) {
- hideInputLine();
-
- if (dynamic_cast<CommandEval *>(currentEvaluationType)) {
- evaluateCommand(input);
- } else if (auto urlEval = dynamic_cast<UrlEval *>(currentEvaluationType)) {
- webViewStack->openUrl(input, urlEval->type());
- }
-}
-
-void MainWindow::evaluateCommand(QString command) {
- CommandParser parser;
- auto cmd = parser.parse(command);
-
- switch (cmd.command) {
- case CommandType::LuaEval:
- luaRuntime->evaluate(cmd.argsString);
- break;
- case CommandType::Open:
- if (cmd.argsString.trimmed().isEmpty())
- showURLInput("", OpenType::OpenUrl);
- else
- webViewStack->openUrl(cmd.argsString, OpenType::OpenUrl);
- break;
- case CommandType::TabOpen:
- if (cmd.argsString.trimmed().isEmpty())
- showURLInput("", OpenType::OpenUrlInTab);
- else
- webViewStack->openUrl(cmd.argsString, OpenType::OpenUrlInTab);
- break;
- case CommandType::TabNext:
- webViewStack->next();
- break;
- case CommandType::TabPrev:
- webViewStack->previous();
- break;
- case CommandType::Noop:
- break;
- }
+ inputMediator =
+ new InputMediator(inputLine, webViewStack, LuaRuntime::instance());
}
void MainWindow::keyPressEvent(QKeyEvent *event) {
auto combo = event->keyCombination();
+
if (combo.key() == Qt::Key_L &&
combo.keyboardModifiers().testFlag(Qt::ControlModifier)) {
- showURLInput(webViewStack->currentUrl().toString(), OpenType::OpenUrl);
+ inputMediator->showURLInput(inputMediator->currentUrl().toString(),
+ OpenType::OpenUrl);
} else if (combo.key() == Qt::Key_Semicolon &&
combo.keyboardModifiers().testFlag(Qt::ControlModifier)) {
- showCommandInput("");
+ inputMediator->showCommandInput("");
} else if (combo.key() == Qt::Key_T &&
combo.keyboardModifiers().testFlag(Qt::ControlModifier)) {
- webViewStack->openUrl(QUrl("https://lite.duckduckgo.com"),
- OpenType::OpenUrlInTab);
+ inputMediator->openUrl(QUrl("https://lite.duckduckgo.com"),
+ OpenType::OpenUrlInTab);
} else if (combo.key() == Qt::Key_J &&
combo.keyboardModifiers().testFlag(Qt::ControlModifier)) {
- webViewStack->next();
+ inputMediator->nextWebView();
} else if (combo.key() == Qt::Key_K &&
combo.keyboardModifiers().testFlag(Qt::ControlModifier)) {
- webViewStack->previous();
+ inputMediator->previousWebView();
} else if (combo.key() == Qt::Key_W &&
combo.keyboardModifiers().testFlag(Qt::ControlModifier)) {
- webViewStack->closeCurrent();
+ inputMediator->closeCurrentWebView();
}
}