aboutsummaryrefslogtreecommitdiff
path: root/src/mainwindow/mainwindow.h
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2020-04-13 15:44:09 +0300
committerAqua-sama <aqua@iserlohn-fortress.net>2020-04-13 15:44:09 +0300
commit396bc0c1721af8d3ee970228e7df457f6b2c73d5 (patch)
tree5aee4f0faec3fdfe616e1684dcb1736be9126bc1 /src/mainwindow/mainwindow.h
parentAdd singleapplication.wrap (diff)
downloadsmolbote-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.h16
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: