#ifndef SESSIONCONFIG_H #define SESSIONCONFIG_H #include "iconfig.h" #include #include #include #include namespace vnotex { class SessionConfig : public IConfig { public: struct NotebookItem { NotebookItem() = default; bool operator==(const NotebookItem &p_other) const; void fromJson(const QJsonObject &p_jobj); QJsonObject toJson() const; QString m_type; QString m_rootFolderPath; QString m_backend; }; struct MainWindowStateGeometry { bool operator==(const MainWindowStateGeometry &p_other) const { return m_mainState == p_other.m_mainState && m_mainGeometry == p_other.m_mainGeometry; } QByteArray m_mainState; QByteArray m_mainGeometry; }; enum OpenGL { None, Desktop, Angle, Software }; explicit SessionConfig(ConfigMgr *p_mgr); ~SessionConfig(); void init() Q_DECL_OVERRIDE; const QString &getNewNotebookDefaultRootFolderPath() const; void setNewNotebookDefaultRootFolderPath(const QString &p_path); const QString &getCurrentNotebookRootFolderPath() const; void setCurrentNotebookRootFolderPath(const QString &p_path); const QVector &getNotebooks(); void setNotebooks(const QVector &p_notebooks); void writeToSettings() const Q_DECL_OVERRIDE; QJsonObject toJson() const Q_DECL_OVERRIDE; SessionConfig::MainWindowStateGeometry getMainWindowStateGeometry() const; void setMainWindowStateGeometry(const SessionConfig::MainWindowStateGeometry &p_state); OpenGL getOpenGL() const; void setOpenGL(OpenGL p_option); bool getSystemTitleBarEnabled() const; void setSystemTitleBarEnabled(bool p_enabled); static OpenGL getOpenGLAtBootstrap(); static QString openGLToString(OpenGL p_option); static OpenGL stringToOpenGL(const QString &p_str); int getMinimizeToSystemTray() const; void setMinimizeToSystemTray(bool p_enabled); const ExportOption &getExportOption() const; void setExportOption(const ExportOption &p_option); const SearchOption &getSearchOption() const; void setSearchOption(const SearchOption &p_option); QByteArray getViewAreaSessionAndClear(); void setViewAreaSession(const QByteArray &p_bytes); QByteArray getNotebookExplorerSessionAndClear(); void setNotebookExplorerSession(const QByteArray &p_bytes); const QString &getFlashPage() const; void setFlashPage(const QString &p_file); const QStringList &getQuickAccessFiles() const; void setQuickAccessFiles(const QStringList &p_files); private: void loadCore(const QJsonObject &p_session); QJsonObject saveCore() const; void loadNotebooks(const QJsonObject &p_session); QJsonArray saveNotebooks() const; void loadStateAndGeometry(const QJsonObject &p_session); QJsonObject saveStateAndGeometry() const; void doVersionSpecificOverride(); QString m_newNotebookDefaultRootFolderPath; // Use root folder to identify a notebook uniquely. QString m_currentNotebookRootFolderPath; QVector m_notebooks; MainWindowStateGeometry m_mainWindowStateGeometry; OpenGL m_openGL = OpenGL::None; // Whether use system's title bar or not. bool m_systemTitleBarEnabled = false; // Whether to minimize to tray. // -1 for prompting for user; // 0 for disabling minimizing to system tray; // 1 for enabling minimizing to system tray. int m_minimizeToSystemTray = -1; ExportOption m_exportOption; SearchOption m_searchOption; QByteArray m_viewAreaSession; QByteArray m_notebookExplorerSession; QString m_flashPage; QStringList m_quickAccessFiles; }; } // ns vnotex #endif // SESSIONCONFIG_H