mirror of
https://gitee.com/vnotex/vnote.git
synced 2025-07-05 13:59:52 +08:00
save/restore window state and geometry
Signed-off-by: Le Tan <tamlokveer@gmail.com>
This commit is contained in:
parent
ed785e12d3
commit
3ae3462597
@ -61,6 +61,10 @@ void VConfigManager::initialize()
|
||||
curRenderBackgroundColor = getConfigFromSettings("global",
|
||||
"current_render_background_color").toString();
|
||||
|
||||
m_toolsDockChecked = getConfigFromSettings("session", "tools_dock_checked").toBool();
|
||||
m_mainWindowGeometry = getConfigFromSettings("session", "main_window_geometry").toByteArray();
|
||||
m_mainWindowState = getConfigFromSettings("session", "main_window_state").toByteArray();
|
||||
|
||||
// Update notebooks
|
||||
readNotebookFromSettings();
|
||||
|
||||
|
@ -83,6 +83,15 @@ public:
|
||||
inline const QString &getCurRenderBackgroundColor() const;
|
||||
inline void setCurRenderBackgroundColor(const QString &colorName);
|
||||
|
||||
inline bool getToolsDockChecked() const;
|
||||
inline void setToolsDockChecked(bool p_checked);
|
||||
|
||||
inline const QByteArray &getMainWindowGeometry() const;
|
||||
inline void setMainWindowGeometry(const QByteArray &p_geometry);
|
||||
|
||||
inline const QByteArray &getMainWindowState() const;
|
||||
inline void setMainWindowState(const QByteArray &p_state);
|
||||
|
||||
private:
|
||||
void updateMarkdownEditStyle();
|
||||
QVariant getConfigFromSettings(const QString §ion, const QString &key);
|
||||
@ -120,6 +129,11 @@ private:
|
||||
QString curBackgroundColor;
|
||||
QString curRenderBackgroundColor;
|
||||
|
||||
bool m_toolsDockChecked;
|
||||
|
||||
QByteArray m_mainWindowGeometry;
|
||||
QByteArray m_mainWindowState;
|
||||
|
||||
// The name of the config file in each directory
|
||||
static const QString dirConfigFileName;
|
||||
// The name of the default configuration file
|
||||
@ -289,4 +303,40 @@ inline void VConfigManager::setCurRenderBackgroundColor(const QString &colorName
|
||||
curRenderBackgroundColor);
|
||||
}
|
||||
|
||||
inline bool VConfigManager::getToolsDockChecked() const
|
||||
{
|
||||
return m_toolsDockChecked;
|
||||
}
|
||||
|
||||
inline void VConfigManager::setToolsDockChecked(bool p_checked)
|
||||
{
|
||||
m_toolsDockChecked = p_checked;
|
||||
setConfigToSettings("session", "tools_dock_checked",
|
||||
m_toolsDockChecked);
|
||||
}
|
||||
|
||||
inline const QByteArray& VConfigManager::getMainWindowGeometry() const
|
||||
{
|
||||
return m_mainWindowGeometry;
|
||||
}
|
||||
|
||||
inline void VConfigManager::setMainWindowGeometry(const QByteArray &p_geometry)
|
||||
{
|
||||
m_mainWindowGeometry = p_geometry;
|
||||
setConfigToSettings("session", "main_window_geometry",
|
||||
m_mainWindowGeometry);
|
||||
}
|
||||
|
||||
inline const QByteArray& VConfigManager::getMainWindowState() const
|
||||
{
|
||||
return m_mainWindowState;
|
||||
}
|
||||
|
||||
inline void VConfigManager::setMainWindowState(const QByteArray &p_state)
|
||||
{
|
||||
m_mainWindowState = p_state;
|
||||
setConfigToSettings("session", "main_window_state",
|
||||
m_mainWindowState);
|
||||
}
|
||||
|
||||
#endif // VCONFIGMANAGER_H
|
||||
|
@ -25,6 +25,7 @@ VMainWindow::VMainWindow(QWidget *parent)
|
||||
initToolBar();
|
||||
initMenuBar();
|
||||
initDockWindows();
|
||||
restoreStateAndGeometry();
|
||||
|
||||
updateNotebookComboBox(vnote->getNotebooks());
|
||||
}
|
||||
@ -273,6 +274,7 @@ void VMainWindow::initActions()
|
||||
void VMainWindow::initToolBar()
|
||||
{
|
||||
QToolBar *fileToolBar = addToolBar(tr("Note"));
|
||||
fileToolBar->setObjectName("note");
|
||||
fileToolBar->addAction(newRootDirAct);
|
||||
fileToolBar->addAction(newNoteAct);
|
||||
fileToolBar->addAction(noteInfoAct);
|
||||
@ -292,6 +294,7 @@ void VMainWindow::initToolBar()
|
||||
saveNoteAct->setVisible(false);
|
||||
|
||||
QToolBar *viewToolBar = addToolBar(tr("View"));
|
||||
viewToolBar->setObjectName("view");
|
||||
viewToolBar->addAction(twoPanelViewAct);
|
||||
viewToolBar->addAction(onePanelViewAct);
|
||||
viewToolBar->addAction(expandViewAct);
|
||||
@ -355,8 +358,9 @@ void VMainWindow::initMenuBar()
|
||||
|
||||
void VMainWindow::initDockWindows()
|
||||
{
|
||||
QDockWidget *dock = new QDockWidget(tr("Tools"), this);
|
||||
dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
toolDock = new QDockWidget(tr("Tools"), this);
|
||||
toolDock->setObjectName("tools_dock");
|
||||
toolDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
toolBox = new QToolBox(this);
|
||||
outline = new VOutline(this);
|
||||
connect(editArea, &VEditArea::outlineChanged,
|
||||
@ -366,9 +370,9 @@ void VMainWindow::initDockWindows()
|
||||
connect(editArea, &VEditArea::curHeaderChanged,
|
||||
outline, &VOutline::updateCurHeader);
|
||||
toolBox->addItem(outline, QIcon(":/resources/icons/outline.svg"), tr("Outline"));
|
||||
dock->setWidget(toolBox);
|
||||
addDockWidget(Qt::RightDockWidgetArea, dock);
|
||||
viewMenu->addAction(dock->toggleViewAction());
|
||||
toolDock->setWidget(toolBox);
|
||||
addDockWidget(Qt::RightDockWidgetArea, toolDock);
|
||||
viewMenu->addAction(toolDock->toggleViewAction());
|
||||
}
|
||||
|
||||
void VMainWindow::updateNotebookComboBox(const QVector<VNotebook> ¬ebooks)
|
||||
@ -789,3 +793,29 @@ void VMainWindow::deleteCurNote()
|
||||
{
|
||||
fileList->deleteFile(curEditNotebook, curEditRelativePath);
|
||||
}
|
||||
|
||||
void VMainWindow::closeEvent(QCloseEvent *event)
|
||||
{
|
||||
saveStateAndGeometry();
|
||||
QMainWindow::closeEvent(event);
|
||||
}
|
||||
|
||||
void VMainWindow::saveStateAndGeometry()
|
||||
{
|
||||
vconfig.setMainWindowGeometry(saveGeometry());
|
||||
vconfig.setMainWindowState(saveState());
|
||||
vconfig.setToolsDockChecked(toolDock->isVisible());
|
||||
}
|
||||
|
||||
void VMainWindow::restoreStateAndGeometry()
|
||||
{
|
||||
const QByteArray &geometry = vconfig.getMainWindowGeometry();
|
||||
if (!geometry.isEmpty()) {
|
||||
restoreGeometry(geometry);
|
||||
}
|
||||
const QByteArray &state = vconfig.getMainWindowState();
|
||||
if (!state.isEmpty()) {
|
||||
restoreState(state);
|
||||
}
|
||||
toolDock->setVisible(vconfig.getToolsDockChecked());
|
||||
}
|
||||
|
@ -56,6 +56,9 @@ private slots:
|
||||
signals:
|
||||
void curNotebookChanged(const QString ¬ebookName);
|
||||
|
||||
protected:
|
||||
void closeEvent(QCloseEvent *event) Q_DECL_OVERRIDE;
|
||||
|
||||
private:
|
||||
void setupUI();
|
||||
void initActions();
|
||||
@ -69,6 +72,8 @@ private:
|
||||
void changeSplitterView(int nrPanel);
|
||||
void updateWindowTitle(const QString &str);
|
||||
void updateToolbarFromTabChage(bool empty, bool editMode, bool modifiable);
|
||||
void saveStateAndGeometry();
|
||||
void restoreStateAndGeometry();
|
||||
|
||||
// If true, comboBox changes will not trigger any signal out
|
||||
bool notebookComboMuted;
|
||||
@ -87,6 +92,7 @@ private:
|
||||
VDirectoryTree *directoryTree;
|
||||
QSplitter *mainSplitter;
|
||||
VEditArea *editArea;
|
||||
QDockWidget *toolDock;
|
||||
QToolBox *toolBox;
|
||||
VOutline *outline;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user