From 17af3b8dc03321bc1f4dd06cddcba65aacc6e2b2 Mon Sep 17 00:00:00 2001 From: Le Tan Date: Sat, 25 Jun 2022 14:45:21 +0800 Subject: [PATCH] SessionConfig: add external media default path --- src/core/buffermgr.cpp | 1 + src/core/sessionconfig.cpp | 16 ++++++++++++++++ src/core/sessionconfig.h | 6 ++++++ src/widgets/attachmentpopup.cpp | 10 +++++++--- src/widgets/dialogs/imageinsertdialog.cpp | 8 ++++++-- .../dialogs/settings/markdowneditorpage.cpp | 2 ++ 6 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/core/buffermgr.cpp b/src/core/buffermgr.cpp index fe594221..9b250df1 100644 --- a/src/core/buffermgr.cpp +++ b/src/core/buffermgr.cpp @@ -243,6 +243,7 @@ bool BufferMgr::openWithExternalProgram(const QString &p_filePath, const QString if (auto pro = ConfigMgr::getInst().getSessionConfig().findExternalProgram(p_name)) { const auto command = pro->fetchCommand(p_filePath); + qDebug() << "external program" << command; if (!command.isEmpty()) { ProcessUtils::startDetached(command); } diff --git a/src/core/sessionconfig.cpp b/src/core/sessionconfig.cpp index a984fce6..47b1dd45 100644 --- a/src/core/sessionconfig.cpp +++ b/src/core/sessionconfig.cpp @@ -131,6 +131,11 @@ void SessionConfig::loadCore(const QJsonObject &p_session) m_flashPage = readString(coreObj, QStringLiteral("flash_page")); m_quickAccessFiles = readStringList(coreObj, QStringLiteral("quick_access")); + + m_externalMediaDefaultPath = readString(coreObj, QStringLiteral("external_media_default_path")); + if (m_externalMediaDefaultPath.isEmpty()) { + m_externalMediaDefaultPath = QDir::homePath(); + } } QJsonObject SessionConfig::saveCore() const @@ -145,6 +150,7 @@ QJsonObject SessionConfig::saveCore() const } coreObj[QStringLiteral("flash_page")] = m_flashPage; writeStringList(coreObj, QStringLiteral("quick_access"), m_quickAccessFiles); + coreObj[QStringLiteral("external_media_default_path")] = m_externalMediaDefaultPath; return coreObj; } @@ -160,6 +166,16 @@ void SessionConfig::setNewNotebookDefaultRootFolderPath(const QString &p_path) this); } +const QString &SessionConfig::getExternalMediaDefaultPath() const +{ + return m_externalMediaDefaultPath; +} + +void SessionConfig::setExternalMediaDefaultPath(const QString &p_path) +{ + updateConfig(m_externalMediaDefaultPath, p_path, this); +} + const QVector &SessionConfig::getNotebooks() const { return m_notebooks; diff --git a/src/core/sessionconfig.h b/src/core/sessionconfig.h index 6e6f8a75..e9db74f5 100644 --- a/src/core/sessionconfig.h +++ b/src/core/sessionconfig.h @@ -85,6 +85,9 @@ namespace vnotex const QString &getNewNotebookDefaultRootFolderPath() const; void setNewNotebookDefaultRootFolderPath(const QString &p_path); + const QString &getExternalMediaDefaultPath() const; + void setExternalMediaDefaultPath(const QString &p_path); + const QString &getCurrentNotebookRootFolderPath() const; void setCurrentNotebookRootFolderPath(const QString &p_path); @@ -206,6 +209,9 @@ namespace vnotex QVector m_externalPrograms; QVector m_history; + + // Default folder path to open for external media like images and files. + QString m_externalMediaDefaultPath;; }; } // ns vnotex diff --git a/src/widgets/attachmentpopup.cpp b/src/widgets/attachmentpopup.cpp index 5bdd6019..4ee7bc6b 100644 --- a/src/widgets/attachmentpopup.cpp +++ b/src/widgets/attachmentpopup.cpp @@ -22,6 +22,8 @@ #include "messageboxhelper.h" #include "fileopenparameters.h" #include +#include +#include using namespace vnotex; @@ -63,13 +65,15 @@ void AttachmentPopup::setupUI() // Get dest folder path before other dialogs. const auto destFolderPath = getDestFolderPath(); - static QString lastDirPath = QDir::homePath(); - auto files = QFileDialog::getOpenFileNames(this, tr("Select Files As Attachments"), lastDirPath); + auto &sessionConfig = ConfigMgr::getInst().getSessionConfig(); + auto files = QFileDialog::getOpenFileNames(this, + tr("Select Files As Attachments"), + sessionConfig.getExternalMediaDefaultPath()); if (files.isEmpty()) { return; } - lastDirPath = QFileInfo(files[0]).path(); + sessionConfig.setExternalMediaDefaultPath(QFileInfo(files[0]).path()); addAttachments(destFolderPath, files); } diff --git a/src/widgets/dialogs/imageinsertdialog.cpp b/src/widgets/dialogs/imageinsertdialog.cpp index 8de41ddd..b3c35b89 100644 --- a/src/widgets/dialogs/imageinsertdialog.cpp +++ b/src/widgets/dialogs/imageinsertdialog.cpp @@ -24,6 +24,8 @@ #include #include #include +#include +#include using namespace vnotex; @@ -224,15 +226,17 @@ void ImageInsertDialog::checkInput() void ImageInsertDialog::browseFile() { - QString bpath(QDir::homePath()); + auto &sessionConfig = ConfigMgr::getInst().getSessionConfig(); QString filePath = QFileDialog::getOpenFileName(this, tr("Select Image To Insert"), - bpath, + sessionConfig.getExternalMediaDefaultPath(), tr("Images (*.png *.xpm *.jpg *.bmp *.gif *.svg *.webp);;All (*.*)")); if (filePath.isEmpty()) { return; } + sessionConfig.setExternalMediaDefaultPath(filePath); + m_source = Source::LocalFile; setImagePath(filePath); diff --git a/src/widgets/dialogs/settings/markdowneditorpage.cpp b/src/widgets/dialogs/settings/markdowneditorpage.cpp index 8744a503..a7dd7e32 100644 --- a/src/widgets/dialogs/settings/markdowneditorpage.cpp +++ b/src/widgets/dialogs/settings/markdowneditorpage.cpp @@ -533,6 +533,7 @@ QGroupBox *MarkdownEditorPage::setupGeneralGroup() { m_plantUmlWebServiceLineEdit = WidgetsFactory::createLineEdit(box); m_plantUmlWebServiceLineEdit->setToolTip(tr("Override the Web service used to render PlantUml graphs")); + m_plantUmlWebServiceLineEdit->setPlaceholderText(tr("Empty to use default one")); const QString label(tr("Override PlantUml Web service:")); layout->addRow(label, m_plantUmlWebServiceLineEdit); @@ -603,6 +604,7 @@ QGroupBox *MarkdownEditorPage::setupGeneralGroup() { m_mathJaxScriptLineEdit = WidgetsFactory::createLineEdit(box); m_mathJaxScriptLineEdit->setToolTip(tr("Override the MathJax script used to render math formulas")); + m_mathJaxScriptLineEdit->setPlaceholderText(tr("Empty to use default one")); const QString label(tr("Override MathJax script:")); layout->addRow(label, m_mathJaxScriptLineEdit);