aboutsummaryrefslogtreecommitdiff
path: root/src/widgets/MainWindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/MainWindow.cpp')
-rw-r--r--src/widgets/MainWindow.cpp109
1 files changed, 15 insertions, 94 deletions
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();
}
}