diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2020-04-13 15:44:09 +0300 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2020-04-13 15:44:09 +0300 |
commit | 396bc0c1721af8d3ee970228e7df457f6b2c73d5 (patch) | |
tree | 5aee4f0faec3fdfe616e1684dcb1736be9126bc1 /src/mainwindow/mainwindow.h | |
parent | Add singleapplication.wrap (diff) | |
download | smolbote-396bc0c1721af8d3ee970228e7df457f6b2c73d5.tar.xz |
Rewrite Session backend
Add session.hpp, containing structs that describe session data
MainWindow, SubWindow and WebView can be created from
Session::structs
Opening new window will automatically open a default subwindow and tab
if none were specified
Add lib/session_formats
Add JsonSession, to serialize/deserialize Session structs into JSON
- add some tests
clang-tidy:
- fix various warnings
- disable modernize-use-trailing-return-type check
Diffstat (limited to 'src/mainwindow/mainwindow.h')
-rw-r--r-- | src/mainwindow/mainwindow.h | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/mainwindow/mainwindow.h b/src/mainwindow/mainwindow.h index 98bd6ee..2b9f82b 100644 --- a/src/mainwindow/mainwindow.h +++ b/src/mainwindow/mainwindow.h @@ -9,7 +9,10 @@ #ifndef SMOLBOTE_MAINWINDOW_H #define SMOLBOTE_MAINWINDOW_H +#include "session.hpp" #include "subwindow/subwindow.h" +#include <QJsonArray> +#include <QJsonObject> #include <QMainWindow> #include <QUrl> @@ -31,9 +34,17 @@ public: ToolsMenu }; - explicit MainWindow(QWidget *parent = nullptr); + explicit MainWindow(const Session::MainWindow &data, QWidget *parent = nullptr); MainWindow(const MainWindow &) = delete; ~MainWindow() = default; + [[nodiscard]] Session::MainWindow serialize() const + { + QVector<Session::SubWindow> subwindows(m_subwindows.size()); + for(int i = 0; i < m_subwindows.size(); ++i) { + subwindows[i] = m_subwindows.at(i)->serialize(); + } + return { subwindows }; + } void addDockWidget(Qt::DockWidgetArea area, QWidget *widget); void removeDockWidget(QWidget *widget); @@ -53,7 +64,8 @@ public: public slots: void createTab(const QUrl &url); - SubWindow *createSubWindow(WebProfile *profile = nullptr, bool openProfileNewtab = false); + void createTab(const Session::WebView &data); + SubWindow *createSubWindow(const Session::SubWindow &data); void setCurrentSubWindow(SubWindow *subwindow); private slots: |