From 9bca3cc18655d02f3c111d692b26339a6e3669d4 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Thu, 18 Jan 2018 18:04:45 +0100 Subject: EPUB export UI: show title from the doc model It was a bit confusing that the doc model had a title set, it was written to the EPUB file but the UI did not show it. Change-Id: Ife408e0dabd3fe48e8acc1f09be0c86f78ed4b80 Reviewed-on: https://gerrit.libreoffice.org/48150 Tested-by: Jenkins Reviewed-by: Miklos Vajna --- writerperfect/source/writer/EPUBExportDialog.cxx | 14 ++++++++++++-- writerperfect/source/writer/EPUBExportDialog.hxx | 3 ++- writerperfect/source/writer/EPUBExportUIComponent.cxx | 7 ++++++- writerperfect/source/writer/EPUBExportUIComponent.hxx | 8 +++++++- writerperfect/source/writer/exp/xmlimp.cxx | 2 +- 5 files changed, 28 insertions(+), 6 deletions(-) (limited to 'writerperfect') diff --git a/writerperfect/source/writer/EPUBExportDialog.cxx b/writerperfect/source/writer/EPUBExportDialog.cxx index 2add78c6389f..09ab58499a26 100644 --- a/writerperfect/source/writer/EPUBExportDialog.cxx +++ b/writerperfect/source/writer/EPUBExportDialog.cxx @@ -13,6 +13,7 @@ #include #include +#include #include #include @@ -68,10 +69,11 @@ sal_Int32 PositionToVersion(sal_Int32 nPosition) namespace writerperfect { -EPUBExportDialog::EPUBExportDialog(vcl::Window *pParent, comphelper::SequenceAsHashMap &rFilterData, uno::Reference xContext) +EPUBExportDialog::EPUBExportDialog(vcl::Window *pParent, comphelper::SequenceAsHashMap &rFilterData, uno::Reference xContext, const css::uno::Reference &xDocument) : ModalDialog(pParent, "EpubDialog", "writerperfect/ui/exportepub.ui"), mxContext(std::move(xContext)), - mrFilterData(rFilterData) + mrFilterData(rFilterData), + mxSourceDocument(xDocument) { get(m_pVersion, "versionlb"); assert(PositionToVersion(m_pVersion->GetSelectedEntryPos()) == EPUBExportFilter::GetDefaultVersion()); @@ -124,7 +126,15 @@ EPUBExportDialog::EPUBExportDialog(vcl::Window *pParent, comphelper::SequenceAsH m_pMediaButton->SetClickHdl(LINK(this, EPUBExportDialog, MediaClickHdl)); get(m_pIdentifier, "identifier"); + get(m_pTitle, "title"); + uno::Reference xDPS(mxSourceDocument, uno::UNO_QUERY); + uno::Reference xDP; + if (xDPS.is()) + xDP = xDPS->getDocumentProperties(); + if (xDP.is()) + m_pTitle->SetText(xDP->getTitle()); + get(m_pInitialCreator, "author"); get(m_pLanguage, "language"); get(m_pDate, "date"); diff --git a/writerperfect/source/writer/EPUBExportDialog.hxx b/writerperfect/source/writer/EPUBExportDialog.hxx index 8180e4a24366..7d7f016b1a18 100644 --- a/writerperfect/source/writer/EPUBExportDialog.hxx +++ b/writerperfect/source/writer/EPUBExportDialog.hxx @@ -27,7 +27,7 @@ namespace writerperfect class EPUBExportDialog : public ModalDialog { public: - EPUBExportDialog(vcl::Window *pParent, comphelper::SequenceAsHashMap &rFilterData, css::uno::Reference xContext); + EPUBExportDialog(vcl::Window *pParent, comphelper::SequenceAsHashMap &rFilterData, css::uno::Reference xContext, const css::uno::Reference &xDocument); ~EPUBExportDialog() override; void dispose() override; @@ -41,6 +41,7 @@ private: css::uno::Reference mxContext; comphelper::SequenceAsHashMap &mrFilterData; + css::uno::Reference mxSourceDocument; VclPtr m_pVersion; VclPtr m_pSplit; VclPtr m_pLayout; diff --git a/writerperfect/source/writer/EPUBExportUIComponent.cxx b/writerperfect/source/writer/EPUBExportUIComponent.cxx index 66d8506fa771..4df8ea4a1946 100644 --- a/writerperfect/source/writer/EPUBExportUIComponent.cxx +++ b/writerperfect/source/writer/EPUBExportUIComponent.cxx @@ -76,12 +76,17 @@ sal_Int16 EPUBExportUIComponent::execute() { SolarMutexGuard aGuard; - ScopedVclPtrInstance pDialog(Application::GetDefDialogParent(), maFilterData, mxContext); + ScopedVclPtrInstance pDialog(Application::GetDefDialogParent(), maFilterData, mxContext, mxSourceDocument); if (pDialog->Execute() == RET_OK) return ui::dialogs::ExecutableDialogResults::OK; return ui::dialogs::ExecutableDialogResults::CANCEL; } +void SAL_CALL EPUBExportUIComponent::setSourceDocument(const css::uno::Reference &xDocument) +{ + mxSourceDocument = xDocument; +} + extern "C" SAL_DLLPUBLIC_EXPORT uno::XInterface *com_sun_star_comp_Writer_EPUBExportUIComponent_get_implementation(uno::XComponentContext *pCtx, uno::Sequence const &/*rSeq*/) { return cppu::acquire(new EPUBExportUIComponent(pCtx)); diff --git a/writerperfect/source/writer/EPUBExportUIComponent.hxx b/writerperfect/source/writer/EPUBExportUIComponent.hxx index 3ef6d7cc1b2f..865571dde97b 100644 --- a/writerperfect/source/writer/EPUBExportUIComponent.hxx +++ b/writerperfect/source/writer/EPUBExportUIComponent.hxx @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -26,7 +27,8 @@ class EPUBExportUIComponent : public cppu::WeakImplHelper < css::beans::XPropertyAccess, css::lang::XServiceInfo, - css::ui::dialogs::XExecutableDialog + css::ui::dialogs::XExecutableDialog, + css::document::XExporter > { public: @@ -45,6 +47,9 @@ public: void SAL_CALL setTitle(const OUString &rTitle) override; sal_Int16 SAL_CALL execute() override; + // XExporter + void SAL_CALL setSourceDocument(const css::uno::Reference &xDocument) override; + private: /// The full set of property values. comphelper::SequenceAsHashMap maMediaDescriptor; @@ -52,6 +57,7 @@ private: comphelper::SequenceAsHashMap maFilterData; /// UNO context. css::uno::Reference mxContext; + css::uno::Reference mxSourceDocument; }; } // namespace writerperfect diff --git a/writerperfect/source/writer/exp/xmlimp.cxx b/writerperfect/source/writer/exp/xmlimp.cxx index f001bd667e5a..ef681119d4cf 100644 --- a/writerperfect/source/writer/exp/xmlimp.cxx +++ b/writerperfect/source/writer/exp/xmlimp.cxx @@ -370,7 +370,7 @@ const librevenge::RVNGPropertyList &XMLImport::GetMetaData() namespace { /// Finds out if a file URL exists. -bool FileURLExists(const OUString& rURL) +bool FileURLExists(const OUString &rURL) { SvFileStream aStream(rURL, StreamMode::READ); return aStream.IsOpen(); -- cgit