From 05ae8976a8e1ab5411058de244c4e2fcc87ec369 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Wed, 12 Mar 2025 20:47:57 +0530 Subject: Refactor MainWindow into InputMediator --- include/InputMediator.hpp | 60 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 include/InputMediator.hpp (limited to 'include/InputMediator.hpp') diff --git a/include/InputMediator.hpp b/include/InputMediator.hpp new file mode 100644 index 0000000..660d39f --- /dev/null +++ b/include/InputMediator.hpp @@ -0,0 +1,60 @@ +#pragma once + +#include +#include + +#include "LuaRuntime.hpp" +#include "utils.hpp" +#include "widgets/InputLine.hpp" +#include "widgets/WebViewStack.hpp" + +class EvaluationType { +public: + EvaluationType() {} + virtual ~EvaluationType() = default; +}; +class NoopEval : public EvaluationType {}; + +class InputMediator : public QObject { + Q_OBJECT + +public: + InputMediator(InputLine *inputLine, WebViewStack *webViewStack, + LuaRuntime *luaRuntime); + + void showURLInput(QString url = "", OpenType openType = OpenType::OpenUrl); + void showCommandInput(QString command = ""); + void hideInputLine(); + + DELEGATE(webViewStack, openUrl, openUrl) + DELEGATE(webViewStack, currentUrl, currentUrl) + DELEGATE(webViewStack, next, nextWebView) + DELEGATE(webViewStack, previous, previousWebView) + DELEGATE(webViewStack, closeCurrent, closeCurrentWebView) + DELEGATE(inputLine, getInputText, getInputText) + +private: + void showInputLine(); + void evaluateCommand(QString command); + void setEvaluationType(EvaluationType *); + +private slots: + void onInputSubmit(QString input); + +private: + InputLine *inputLine; + WebViewStack *webViewStack; + LuaRuntime *luaRuntime; + EvaluationType *currentEvaluationType = new NoopEval(); +}; + +class UrlEval : public EvaluationType { +public: + UrlEval(OpenType type) : EvaluationType(), openType(type) {} + OpenType type() { return openType; } + +private: + OpenType openType; +}; + +class CommandEval : public EvaluationType {}; -- cgit v1.3.1