diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-03-11 22:56:07 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-03-11 22:56:21 +0530 |
| commit | 0d5b7cb2a8bea5d91c58dd40f80d60bca384b766 (patch) | |
| tree | 4a0a9296d7dd4542afd21d5c37cdab0cc1aa74b7 /src/widgets/MainWindow.cpp | |
| parent | 12d0ce37db7323e8efd56d6a698a98abcb8d680b (diff) | |
| download | null-browser-0d5b7cb2a8bea5d91c58dd40f80d60bca384b766.tar.gz null-browser-0d5b7cb2a8bea5d91c58dd40f80d60bca384b766.zip | |
Add command+url evaluation
Diffstat (limited to 'src/widgets/MainWindow.cpp')
| -rw-r--r-- | src/widgets/MainWindow.cpp | 43 |
1 files changed, 30 insertions, 13 deletions
diff --git a/src/widgets/MainWindow.cpp b/src/widgets/MainWindow.cpp index 03a4e6e..f2825e8 100644 --- a/src/widgets/MainWindow.cpp +++ b/src/widgets/MainWindow.cpp @@ -30,13 +30,13 @@ MainWindow::MainWindow() { inputLine = new InputLine; inputLine->setHidden(true); inputLine->move(0, 0); - connect(inputLine, &InputLine::submitted, this, &MainWindow::evaluateCommand); + connect(inputLine, &InputLine::submitted, this, &MainWindow::onInputSubmit); connect(inputLine, &InputLine::cancelled, this, &MainWindow::hideInputLine); layout->addWidget(inputLine); // Lua runtime luaRuntime = LuaRuntime::instance(); - connect(luaRuntime, &LuaRuntime::urlOpenned, this, + connect(luaRuntime, &LuaRuntime::urlOpened, this, [this](QString url, OpenType openType) { browserManager->openUrl(QUrl(url), openType); }); @@ -53,21 +53,36 @@ void MainWindow::showInputLine() { inputLine->setInputFocus(true); } -void MainWindow::showURLInput(QString url) { - showInputLine(); +void MainWindow::showURLInput(QString url, OpenType openType) { + setEvaluationType(new UrlEval(openType)); inputLine->setAdapter(new UrlAdapter); inputLine->setInputText(url); + showInputLine(); } void MainWindow::showCommandInput(QString cmd) { - showInputLine(); + setEvaluationType(new CommandEval()); inputLine->setAdapter(new CommandsAdapter); inputLine->setInputText(cmd); + showInputLine(); +} +void MainWindow::setEvaluationType(EvaluationType *evalType) { + if (currentEvaluationType) + delete currentEvaluationType; + currentEvaluationType = evalType; } -void MainWindow::evaluateCommand(QString command) { +void MainWindow::onInputSubmit(QString input) { hideInputLine(); + if (dynamic_cast<CommandEval *>(currentEvaluationType)) { + evaluateCommand(input); + } else if (auto urlEval = dynamic_cast<UrlEval *>(currentEvaluationType)) { + browserManager->openUrl(input, urlEval->type()); + } +} + +void MainWindow::evaluateCommand(QString command) { CommandParser parser; auto cmd = parser.parse(command); @@ -76,14 +91,16 @@ void MainWindow::evaluateCommand(QString command) { luaRuntime->evaluate(cmd.argsString); break; case CommandType::Open: - if (cmd.argsString.trimmed().isEmpty()) { - showURLInput(); - } else { + if (cmd.argsString.trimmed().isEmpty()) + showURLInput("", OpenType::OpenUrl); + else browserManager->openUrl(cmd.argsString, OpenType::OpenUrl); - } break; case CommandType::TabOpen: - browserManager->openUrl(cmd.argsString, OpenType::OpenUrlInTab); + if (cmd.argsString.trimmed().isEmpty()) + showURLInput("", OpenType::OpenUrlInTab); + else + browserManager->openUrl(cmd.argsString, OpenType::OpenUrlInTab); break; case CommandType::TabNext: browserManager->nextWebView(); @@ -100,10 +117,10 @@ void MainWindow::keyPressEvent(QKeyEvent *event) { auto combo = event->keyCombination(); if (combo.key() == Qt::Key_L && combo.keyboardModifiers().testFlag(Qt::ControlModifier)) { - showURLInput(browserManager->currentUrl().toString()); + showURLInput(browserManager->currentUrl().toString(), OpenType::OpenUrl); } else if (combo.key() == Qt::Key_Semicolon && combo.keyboardModifiers().testFlag(Qt::ControlModifier)) { - showCommandInput(); + showCommandInput(""); } else if (combo.key() == Qt::Key_T && combo.keyboardModifiers().testFlag(Qt::ControlModifier)) { browserManager->createNewWebView(QUrl("https://lite.duckduckgo.com"), true); |
