QtNovelUI/WordsIDE/viewsession.h

47 lines
1.5 KiB
C
Raw Normal View History

2023-08-29 01:37:58 +00:00
#ifndef VIEWSESSION_H
#define VIEWSESSION_H
#include "projectpresent.h"
#include <QList>
#include <QMainWindow>
#include <QStandardItemModel>
#include <libConfig.h>
#include <presentcontainer.h>
#include <splitpanel.h>
namespace Core {
2023-08-29 01:37:58 +00:00
class ViewSession : public QObject {
Q_OBJECT
public:
2023-08-29 01:37:58 +00:00
ViewSession(Config::Configration *port, SplitFrame::ViewPresent *host);
void initPresentView(Components::PresentContainer *center_frame, Components::ProjectPresent *project_present, QStandardItemModel *model);
void viewStatesSave(QMainWindow *win, SplitFrame::ViewPresent *root);
void viewStatesRestore(QMainWindow *win, SplitFrame::ViewPresent *root);
private:
SplitFrame::ViewPresent *host;
SplitFrame::RectCom *edit_panel = nullptr;
Config::Configration *const recover_port;
QHash<QString, SplitFrame::RectCom *> view_store;
typedef float split_pos;
typedef float split_width;
std::map<SplitFrame::SplitRect *, std::tuple<SplitFrame::SplitType, split_pos, split_width>> split_infos;
SplitFrame::RectCom *views_state_restore(const QHash<QString, SplitFrame::RectCom *> &cache, const QList<QString> &target_path,
Config::Configration *port, SplitFrame::ViewPresent *host);
void relayout_cascade(SplitFrame::RectCom *root);
// QObject interface
public:
virtual bool eventFilter(QObject *watched, QEvent *event) override;
};
} // namespace Core
2023-08-29 01:37:58 +00:00
#endif // VIEWSESSION_H