aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-03-11 11:31:14 +0530
committerAkshay Nair <phenax5@gmail.com>2025-03-11 11:44:31 +0530
commit12d0ce37db7323e8efd56d6a698a98abcb8d680b (patch)
treeec2102d40326a332b2ecb976869585f81cba8574 /include
parent971854bfefad4c644ac3d5f5d6003f24d551bf1d (diff)
downloadnull-browser-12d0ce37db7323e8efd56d6a698a98abcb8d680b.tar.gz
null-browser-12d0ce37db7323e8efd56d6a698a98abcb8d680b.zip
Add command+url adapter and switching
Diffstat (limited to '')
-rw-r--r--include/completion/Adapter.hpp12
-rw-r--r--include/completion/CommandsAdapter.hpp19
-rw-r--r--include/completion/UrlAdapter.hpp19
-rw-r--r--include/completion/UrlModel.hpp25
-rw-r--r--include/widgets/CommandInput.hpp29
-rw-r--r--include/widgets/InputLine.hpp35
-rw-r--r--include/widgets/MainWindow.hpp11
7 files changed, 116 insertions, 34 deletions
diff --git a/include/completion/Adapter.hpp b/include/completion/Adapter.hpp
new file mode 100644
index 0000000..882d457
--- /dev/null
+++ b/include/completion/Adapter.hpp
@@ -0,0 +1,12 @@
+#pragma once
+
+#include <QWidget>
+#include <QtCore>
+
+#include "completion/Completer.hpp"
+
+class Adapter : public QObject {
+public:
+ virtual Completer *completer() = 0;
+ virtual QString prompt() = 0;
+};
diff --git a/include/completion/CommandsAdapter.hpp b/include/completion/CommandsAdapter.hpp
new file mode 100644
index 0000000..0a0b61b
--- /dev/null
+++ b/include/completion/CommandsAdapter.hpp
@@ -0,0 +1,19 @@
+#pragma once
+
+#include <QWidget>
+#include <QtCore>
+
+#include "completion/Adapter.hpp"
+
+class CommandsAdapter : public Adapter {
+ Q_OBJECT
+
+public:
+ CommandsAdapter();
+ ~CommandsAdapter();
+ Completer *completer() override;
+ QString prompt() override;
+
+private:
+ Completer *completerInstance;
+};
diff --git a/include/completion/UrlAdapter.hpp b/include/completion/UrlAdapter.hpp
new file mode 100644
index 0000000..e89167a
--- /dev/null
+++ b/include/completion/UrlAdapter.hpp
@@ -0,0 +1,19 @@
+#pragma once
+
+#include <QWidget>
+#include <QtCore>
+
+#include "completion/Adapter.hpp"
+
+class UrlAdapter : public Adapter {
+ Q_OBJECT
+
+public:
+ UrlAdapter();
+ ~UrlAdapter();
+ Completer *completer() override;
+ QString prompt() override;
+
+private:
+ Completer *completerInstance;
+};
diff --git a/include/completion/UrlModel.hpp b/include/completion/UrlModel.hpp
new file mode 100644
index 0000000..e65a86a
--- /dev/null
+++ b/include/completion/UrlModel.hpp
@@ -0,0 +1,25 @@
+#pragma once
+
+#include <QAbstractListModel>
+#include <QWidget>
+#include <QtCore>
+
+struct Url {
+ QString url;
+ QString description;
+};
+
+class UrlModel : public QAbstractListModel {
+ Q_OBJECT
+
+public:
+ UrlModel(QObject *parent = nullptr);
+ int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+ int columnCount(const QModelIndex &parent = QModelIndex()) const override;
+ QHash<int, QByteArray> roleNames() const override;
+ QVariant data(const QModelIndex &index,
+ int role = Qt::DisplayRole) const override;
+
+private:
+ QList<Url> items;
+};
diff --git a/include/widgets/CommandInput.hpp b/include/widgets/CommandInput.hpp
deleted file mode 100644
index 3ce9500..0000000
--- a/include/widgets/CommandInput.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-#pragma once
-
-#include <QBoxLayout>
-#include <QLineEdit>
-#include <QWidget>
-#include <QtCore>
-
-class CommandInput : public QWidget {
- Q_OBJECT
-
-public:
- CommandInput(QString defaultInput = "", QWidget *parentNode = nullptr);
- void setInputFocus(bool focussed);
- bool isInputFocussed();
- QString getInputCommand();
- void setInputText(QString text);
-
-signals:
- void submitted(QString command);
- void cancelled();
-
-protected:
- void keyPressEvent(QKeyEvent *event) override;
- void emitSubmit();
-
-private:
- QBoxLayout *layout;
- QLineEdit *input;
-};
diff --git a/include/widgets/InputLine.hpp b/include/widgets/InputLine.hpp
new file mode 100644
index 0000000..2324f18
--- /dev/null
+++ b/include/widgets/InputLine.hpp
@@ -0,0 +1,35 @@
+#pragma once
+
+#include <QBoxLayout>
+#include <QLabel>
+#include <QLineEdit>
+#include <QWidget>
+#include <QtCore>
+
+#include "completion/Adapter.hpp"
+
+class InputLine : public QWidget {
+ Q_OBJECT
+
+public:
+ InputLine(QString defaultInput = "", QWidget *parentNode = nullptr);
+ void setInputFocus(bool focussed);
+ bool isInputFocussed();
+ QString getInputCommand();
+ void setInputText(QString text);
+ void setAdapter(Adapter *adapter);
+
+signals:
+ void submitted(QString command);
+ void cancelled();
+
+protected:
+ void keyPressEvent(QKeyEvent *event) override;
+ void emitSubmit();
+
+private:
+ QBoxLayout *layout;
+ QLineEdit *input;
+ QLabel *promptPrefix;
+ Adapter *adapter = nullptr;
+};
diff --git a/include/widgets/MainWindow.hpp b/include/widgets/MainWindow.hpp
index 7f54ce2..b64bf8c 100644
--- a/include/widgets/MainWindow.hpp
+++ b/include/widgets/MainWindow.hpp
@@ -7,7 +7,7 @@
#include "LuaRuntime.hpp"
#include "widgets/BrowserManager.hpp"
-#include "widgets/CommandInput.hpp"
+#include "widgets/InputLine.hpp"
class MainWindow : public QMainWindow {
public:
@@ -15,14 +15,15 @@ public:
protected:
void keyPressEvent(QKeyEvent *event) override;
- void toggleURLInput();
void evaluateCommand(QString command);
- void hideURLInput();
- void showURLInput();
+ void hideInputLine();
+ void showInputLine();
+ void showURLInput(QString url = "");
+ void showCommandInput(QString command = "");
private:
BrowserManager *browserManager;
- CommandInput *commandInput;
+ InputLine *inputLine;
LuaRuntime *luaRuntime;
QStackedLayout *layout;
};