tdf#165917 Improve Export directory pre-selection
When calling an Export dialog (PDF, epub, ...) the following folder will be preselected: For stored documents: * Current document directory * If another directory was chosen for the export, that directory will be preselected for subsequent exports (stored only during runtime - per document) For unstored documents: * The last used export directory is restored (last used in unsaved doc) Change-Id: I97595d164cf1d3604166c38aa2a5ed31be56f113 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184062 Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de> Tested-by: Jenkins
This commit is contained in:
parent
7fac8458e3
commit
3fa39a4dad
@ -3687,7 +3687,6 @@ SfxApplication::Invalidate(unsigned short)
|
|||||||
SfxApplication::MacroOrganizer(weld::Window*, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, short)
|
SfxApplication::MacroOrganizer(weld::Window*, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, short)
|
||||||
SfxApplication::RegisterInterface(SfxModule const*)
|
SfxApplication::RegisterInterface(SfxModule const*)
|
||||||
SfxApplication::ReleaseIndex(unsigned short)
|
SfxApplication::ReleaseIndex(unsigned short)
|
||||||
SfxApplication::ResetLastDir()
|
|
||||||
SfxApplication::SaveBasicAndDialogContainer() const
|
SfxApplication::SaveBasicAndDialogContainer() const
|
||||||
SfxApplication::SfxApplication()
|
SfxApplication::SfxApplication()
|
||||||
SfxApplication::loadBrandSvg(char const*, BitmapEx&, int)
|
SfxApplication::loadBrandSvg(char const*, BitmapEx&, int)
|
||||||
|
@ -464,9 +464,6 @@ void SvxPathTabPage::ChangeCurrentEntry( const OUString& _rFolder )
|
|||||||
// will be used for the next open dialog.
|
// will be used for the next open dialog.
|
||||||
SvtViewOptions aDlgOpt( EViewType::Dialog, IODLG_CONFIGNAME );
|
SvtViewOptions aDlgOpt( EViewType::Dialog, IODLG_CONFIGNAME );
|
||||||
aDlgOpt.Delete();
|
aDlgOpt.Delete();
|
||||||
// Reset also last used dir in the sfx application instance
|
|
||||||
SfxApplication *pSfxApp = SfxGetpApp();
|
|
||||||
pSfxApp->ResetLastDir();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,7 +167,6 @@ public:
|
|||||||
SAL_DLLPRIVATE virtual void Invalidate(sal_uInt16 nId = 0) override;
|
SAL_DLLPRIVATE virtual void Invalidate(sal_uInt16 nId = 0) override;
|
||||||
void NotifyEvent(const SfxEventHint& rEvent, bool bSynchron = true );
|
void NotifyEvent(const SfxEventHint& rEvent, bool bSynchron = true );
|
||||||
bool IsDowning() const;
|
bool IsDowning() const;
|
||||||
void ResetLastDir();
|
|
||||||
|
|
||||||
SAL_DLLPRIVATE SfxDispatcher* GetAppDispatcher_Impl();
|
SAL_DLLPRIVATE SfxDispatcher* GetAppDispatcher_Impl();
|
||||||
SAL_DLLPRIVATE SfxDispatcher* GetDispatcher_Impl();
|
SAL_DLLPRIVATE SfxDispatcher* GetDispatcher_Impl();
|
||||||
@ -206,8 +205,6 @@ public:
|
|||||||
SAL_DLLPRIVATE static void OfaState_Impl(SfxItemSet &);
|
SAL_DLLPRIVATE static void OfaState_Impl(SfxItemSet &);
|
||||||
|
|
||||||
SAL_DLLPRIVATE void SetProgress_Impl(SfxProgress *);
|
SAL_DLLPRIVATE void SetProgress_Impl(SfxProgress *);
|
||||||
SAL_DLLPRIVATE const OUString& GetLastDir_Impl() const;
|
|
||||||
SAL_DLLPRIVATE void SetLastDir_Impl( const OUString & );
|
|
||||||
|
|
||||||
SAL_DLLPRIVATE static void Registrations_Impl();
|
SAL_DLLPRIVATE static void Registrations_Impl();
|
||||||
SAL_DLLPRIVATE SfxWorkWindow* GetWorkWindow_Impl(const SfxViewFrame *pFrame) const;
|
SAL_DLLPRIVATE SfxWorkWindow* GetWorkWindow_Impl(const SfxViewFrame *pFrame) const;
|
||||||
|
@ -301,6 +301,7 @@ class SvxZoomItem;
|
|||||||
#define SID_GPGSIGN TypedWhichId<SfxBoolItem>(SID_SFX_START + 1748)
|
#define SID_GPGSIGN TypedWhichId<SfxBoolItem>(SID_SFX_START + 1748)
|
||||||
#define FN_INVERT_BACKGROUND (SID_SFX_START + 1749)
|
#define FN_INVERT_BACKGROUND (SID_SFX_START + 1749)
|
||||||
#define SID_MACROMANAGER (SID_SFX_START + 1750)
|
#define SID_MACROMANAGER (SID_SFX_START + 1750)
|
||||||
|
#define SID_EXPORTDIRECTORY TypedWhichId<SfxStringItem>(SID_SFX_START + 1751)
|
||||||
// SID_SFX_free_END (SID_SFX_START + 3999)
|
// SID_SFX_free_END (SID_SFX_START + 3999)
|
||||||
|
|
||||||
#define SID_OPEN_NEW_VIEW TypedWhichId<SfxBoolItem>(SID_SFX_START + 520)
|
#define SID_OPEN_NEW_VIEW TypedWhichId<SfxBoolItem>(SID_SFX_START + 520)
|
||||||
|
@ -102,6 +102,7 @@ class UNOTOOLS_DLLPUBLIC MediaDescriptor : public comphelper::SequenceAsHashMap
|
|||||||
static constexpr OUString PROP_VIEWONLY = u"ViewOnly"_ustr;
|
static constexpr OUString PROP_VIEWONLY = u"ViewOnly"_ustr;
|
||||||
static constexpr OUString PROP_DOCUMENTBASEURL = u"DocumentBaseURL"_ustr;
|
static constexpr OUString PROP_DOCUMENTBASEURL = u"DocumentBaseURL"_ustr;
|
||||||
static constexpr OUString PROP_SUGGESTEDSAVEASNAME = u"SuggestedSaveAsName"_ustr;
|
static constexpr OUString PROP_SUGGESTEDSAVEASNAME = u"SuggestedSaveAsName"_ustr;
|
||||||
|
static constexpr OUString PROP_EXPORTDIRECTORY = u"ExportDirectory"_ustr;
|
||||||
static constexpr OUString PROP_AUTOSAVEEVENT = u"AutoSaveEvent"_ustr;
|
static constexpr OUString PROP_AUTOSAVEEVENT = u"AutoSaveEvent"_ustr;
|
||||||
|
|
||||||
// interface
|
// interface
|
||||||
|
@ -449,6 +449,11 @@ service MediaDescriptor
|
|||||||
*/
|
*/
|
||||||
[optional,property] string SuggestedSaveAsName;
|
[optional,property] string SuggestedSaveAsName;
|
||||||
|
|
||||||
|
/** Directory to be used when exporting (to PDF, epub, ...).
|
||||||
|
Defaults to the current document directory.
|
||||||
|
*/
|
||||||
|
[optional,property] string ExportDirectory;
|
||||||
|
|
||||||
/** name of the template instead of the URL
|
/** name of the template instead of the URL
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
#include <com/sun/star/beans/PropertyValue.hpp>
|
#include <com/sun/star/beans/PropertyValue.hpp>
|
||||||
#include <com/sun/star/container/XNameAccess.hpp>
|
#include <com/sun/star/container/XNameAccess.hpp>
|
||||||
#include <com/sun/star/container/XContainerQuery.hpp>
|
#include <com/sun/star/container/XContainerQuery.hpp>
|
||||||
#include <com/sun/star/frame/XModel.hpp>
|
#include <com/sun/star/frame/XModel2.hpp>
|
||||||
#include <com/sun/star/frame/XModuleManager2.hpp>
|
#include <com/sun/star/frame/XModuleManager2.hpp>
|
||||||
|
|
||||||
#include <comphelper/sequenceashashmap.hxx>
|
#include <comphelper/sequenceashashmap.hxx>
|
||||||
@ -82,7 +82,7 @@ public:
|
|||||||
SfxStoringHelper();
|
SfxStoringHelper();
|
||||||
|
|
||||||
bool GUIStoreModel(
|
bool GUIStoreModel(
|
||||||
const css::uno::Reference< css::frame::XModel >& xModel,
|
const css::uno::Reference< css::frame::XModel2 >& xModel,
|
||||||
std::u16string_view aSlotName,
|
std::u16string_view aSlotName,
|
||||||
css::uno::Sequence< css::beans::PropertyValue >& aArgsSequence,
|
css::uno::Sequence< css::beans::PropertyValue >& aArgsSequence,
|
||||||
bool bPreselectPassword,
|
bool bPreselectPassword,
|
||||||
@ -95,18 +95,18 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
static void SetDocInfoState(
|
static void SetDocInfoState(
|
||||||
const css::uno::Reference< css::frame::XModel >& xModel,
|
const css::uno::Reference< css::frame::XModel2 >& xModel,
|
||||||
const css::uno::Reference< css::document::XDocumentProperties>& i_xOldDocInfo );
|
const css::uno::Reference< css::document::XDocumentProperties>& i_xOldDocInfo );
|
||||||
|
|
||||||
static bool WarnUnacceptableFormat(
|
static bool WarnUnacceptableFormat(
|
||||||
const css::uno::Reference< css::frame::XModel >& xModel,
|
const css::uno::Reference< css::frame::XModel2 >& xModel,
|
||||||
std::u16string_view aOldUIName,
|
std::u16string_view aOldUIName,
|
||||||
std::u16string_view aExtension,
|
std::u16string_view aExtension,
|
||||||
const OUString& aDefExtension,
|
const OUString& aDefExtension,
|
||||||
bool rDefaultIsAlien );
|
bool rDefaultIsAlien );
|
||||||
|
|
||||||
static css::uno::Reference<css::awt::XWindow> GetModelXWindow(const css::uno::Reference<css::frame::XModel>& rModel);
|
static css::uno::Reference<css::awt::XWindow> GetModelXWindow(const css::uno::Reference<css::frame::XModel2>& rModel);
|
||||||
static weld::Window* GetModelWindow( const css::uno::Reference< css::frame::XModel >& xModel );
|
static weld::Window* GetModelWindow( const css::uno::Reference< css::frame::XModel2 >& xModel );
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -183,49 +183,6 @@ SfxApplication::~SfxApplication()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const OUString& SfxApplication::GetLastDir_Impl() const
|
|
||||||
|
|
||||||
/* [Description]
|
|
||||||
|
|
||||||
Internal method by which the last set directory with the method
|
|
||||||
<SfxApplication::SetLastDir_Impl()> in SFX is returned.
|
|
||||||
|
|
||||||
This is usually the most recently addressed by the
|
|
||||||
SfxFileDialog directory.
|
|
||||||
|
|
||||||
[Cross-reference]
|
|
||||||
<SfxApplication::SetLastDir_Impl()>
|
|
||||||
*/
|
|
||||||
|
|
||||||
{
|
|
||||||
return pImpl->aLastDir;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SfxApplication::SetLastDir_Impl
|
|
||||||
(
|
|
||||||
const OUString& rNewDir /* Complete directory path as a string */
|
|
||||||
)
|
|
||||||
|
|
||||||
/* [Description]
|
|
||||||
|
|
||||||
Internal Method, by which a directory path is set that was last addressed
|
|
||||||
(eg by the SfxFileDialog).
|
|
||||||
|
|
||||||
[Cross-reference]
|
|
||||||
<SfxApplication::GetLastDir_Impl()>
|
|
||||||
*/
|
|
||||||
|
|
||||||
{
|
|
||||||
pImpl->aLastDir = rNewDir;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void SfxApplication::ResetLastDir()
|
|
||||||
{
|
|
||||||
pImpl->aLastDir.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
SfxDispatcher* SfxApplication::GetDispatcher_Impl()
|
SfxDispatcher* SfxApplication::GetDispatcher_Impl()
|
||||||
{
|
{
|
||||||
return pImpl->pViewFrame ? pImpl->pViewFrame->GetDispatcher() : &*pImpl->pAppDispat;
|
return pImpl->pViewFrame ? pImpl->pViewFrame->GetDispatcher() : &*pImpl->pAppDispat;
|
||||||
|
@ -144,6 +144,7 @@ constexpr OUString sDenyList = u"DenyList"_ustr;
|
|||||||
constexpr OUString sModifyPasswordInfo = u"ModifyPasswordInfo"_ustr;
|
constexpr OUString sModifyPasswordInfo = u"ModifyPasswordInfo"_ustr;
|
||||||
constexpr OUString sSuggestedSaveAsDir = u"SuggestedSaveAsDir"_ustr;
|
constexpr OUString sSuggestedSaveAsDir = u"SuggestedSaveAsDir"_ustr;
|
||||||
constexpr OUString sSuggestedSaveAsName = u"SuggestedSaveAsName"_ustr;
|
constexpr OUString sSuggestedSaveAsName = u"SuggestedSaveAsName"_ustr;
|
||||||
|
constexpr OUString sExportDirectory = u"ExportDirectory"_ustr;
|
||||||
constexpr OUString sEncryptionData = u"EncryptionData"_ustr;
|
constexpr OUString sEncryptionData = u"EncryptionData"_ustr;
|
||||||
constexpr OUString sFailOnWarning = u"FailOnWarning"_ustr;
|
constexpr OUString sFailOnWarning = u"FailOnWarning"_ustr;
|
||||||
constexpr OUString sDocumentService = u"DocumentService"_ustr;
|
constexpr OUString sDocumentService = u"DocumentService"_ustr;
|
||||||
@ -810,6 +811,14 @@ void TransformParameters( sal_uInt16 nSlotId, const uno::Sequence<beans::Propert
|
|||||||
if (bOK)
|
if (bOK)
|
||||||
rSet.Put( SfxStringItem( SID_SUGGESTEDSAVEASNAME, sVal ) );
|
rSet.Put( SfxStringItem( SID_SUGGESTEDSAVEASNAME, sVal ) );
|
||||||
}
|
}
|
||||||
|
else if ( aName == sExportDirectory )
|
||||||
|
{
|
||||||
|
OUString sVal;
|
||||||
|
bool bOK = ((rProp.Value >>= sVal) && !sVal.isEmpty());
|
||||||
|
DBG_ASSERT( bOK, "invalid type or value for ExportDirectoy" );
|
||||||
|
if (bOK)
|
||||||
|
rSet.Put( SfxStringItem( SID_EXPORTDIRECTORY, sVal ) );
|
||||||
|
}
|
||||||
else if (aName == sDocumentService)
|
else if (aName == sDocumentService)
|
||||||
{
|
{
|
||||||
OUString aVal;
|
OUString aVal;
|
||||||
@ -1086,6 +1095,8 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, uno::Sequence<b
|
|||||||
nAdditional++;
|
nAdditional++;
|
||||||
if ( rSet.GetItemState( SID_SUGGESTEDSAVEASNAME ) == SfxItemState::SET )
|
if ( rSet.GetItemState( SID_SUGGESTEDSAVEASNAME ) == SfxItemState::SET )
|
||||||
nAdditional++;
|
nAdditional++;
|
||||||
|
if ( rSet.GetItemState( SID_EXPORTDIRECTORY ) == SfxItemState::SET )
|
||||||
|
nAdditional++;
|
||||||
if ( rSet.GetItemState( SID_DOC_SERVICE ) == SfxItemState::SET )
|
if ( rSet.GetItemState( SID_DOC_SERVICE ) == SfxItemState::SET )
|
||||||
nAdditional++;
|
nAdditional++;
|
||||||
if (rSet.HasItem(SID_FILTER_PROVIDER))
|
if (rSet.HasItem(SID_FILTER_PROVIDER))
|
||||||
@ -1260,6 +1271,8 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, uno::Sequence<b
|
|||||||
continue;
|
continue;
|
||||||
if ( nId == SID_SUGGESTEDSAVEASNAME )
|
if ( nId == SID_SUGGESTEDSAVEASNAME )
|
||||||
continue;
|
continue;
|
||||||
|
if ( nId == SID_EXPORTDIRECTORY )
|
||||||
|
continue;
|
||||||
if ( nId == SID_LOCK_CONTENT_EXTRACTION )
|
if ( nId == SID_LOCK_CONTENT_EXTRACTION )
|
||||||
continue;
|
continue;
|
||||||
if ( nId == SID_LOCK_EXPORT )
|
if ( nId == SID_LOCK_EXPORT )
|
||||||
@ -1648,6 +1661,11 @@ void TransformItems( sal_uInt16 nSlotId, const SfxItemSet& rSet, uno::Sequence<b
|
|||||||
pValue[nActProp].Name = sSuggestedSaveAsName;
|
pValue[nActProp].Name = sSuggestedSaveAsName;
|
||||||
pValue[nActProp++].Value <<= pItem->GetValue();
|
pValue[nActProp++].Value <<= pItem->GetValue();
|
||||||
}
|
}
|
||||||
|
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_EXPORTDIRECTORY, false) )
|
||||||
|
{
|
||||||
|
pValue[nActProp].Name = sExportDirectory;
|
||||||
|
pValue[nActProp++].Value <<= pItem->GetValue();
|
||||||
|
}
|
||||||
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_DOC_SERVICE, false) )
|
if ( const SfxStringItem *pItem = rSet.GetItemIfSet( SID_DOC_SERVICE, false) )
|
||||||
{
|
{
|
||||||
pValue[nActProp].Name = sDocumentService;
|
pValue[nActProp].Name = sDocumentService;
|
||||||
|
@ -925,7 +925,8 @@ FileDialogHelper_Impl::FileDialogHelper_Impl(
|
|||||||
const OUString& sStandardDir,
|
const OUString& sStandardDir,
|
||||||
const css::uno::Sequence< OUString >& rDenyList
|
const css::uno::Sequence< OUString >& rDenyList
|
||||||
)
|
)
|
||||||
:maPreviewIdle("sfx2 FileDialogHelper_Impl maPreviewIdle")
|
:msStandardDir ( sStandardDir )
|
||||||
|
,maPreviewIdle("sfx2 FileDialogHelper_Impl maPreviewIdle")
|
||||||
,m_nDialogType ( nDialogType )
|
,m_nDialogType ( nDialogType )
|
||||||
,meContext ( FileDialogHelper::UnknownContext )
|
,meContext ( FileDialogHelper::UnknownContext )
|
||||||
{
|
{
|
||||||
@ -2194,16 +2195,11 @@ void FileDialogHelper_Impl::saveConfig()
|
|||||||
aDlgOpt.SetUserItem( USERITEM_NAME, Any( aUserData ) );
|
aDlgOpt.SetUserItem( USERITEM_NAME, Any( aUserData ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Store to config, if explicit context is set. Otherwise store in (global) runtime var.
|
// Store to config, if explicit context is set (and default directory is not given)
|
||||||
if (meContext != FileDialogHelper::UnknownContext)
|
if (meContext != FileDialogHelper::UnknownContext && msStandardDir.isEmpty())
|
||||||
{
|
{
|
||||||
SaveLastDirectory(FileDialogHelper::contextToString(meContext), getPath());
|
SaveLastDirectory(FileDialogHelper::contextToString(meContext), getPath());
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
SfxApplication *pSfxApp = SfxGetpApp();
|
|
||||||
pSfxApp->SetLastDir_Impl( getPath() );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
OUString FileDialogHelper_Impl::getInitPath(std::u16string_view _rFallback,
|
OUString FileDialogHelper_Impl::getInitPath(std::u16string_view _rFallback,
|
||||||
@ -2211,7 +2207,12 @@ OUString FileDialogHelper_Impl::getInitPath(std::u16string_view _rFallback,
|
|||||||
{
|
{
|
||||||
OUString sPath;
|
OUString sPath;
|
||||||
// Load from config, if explicit context is set. Otherwise load from (global) runtime var.
|
// Load from config, if explicit context is set. Otherwise load from (global) runtime var.
|
||||||
if (meContext != FileDialogHelper::UnknownContext)
|
if (meContext == FileDialogHelper::UnknownContext || !msStandardDir.isEmpty())
|
||||||
|
{
|
||||||
|
// For export, the default directory is passed on
|
||||||
|
sPath = msStandardDir;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
OUString sContext = FileDialogHelper::contextToString(meContext);
|
OUString sContext = FileDialogHelper::contextToString(meContext);
|
||||||
Reference<XNameAccess> set(officecfg::Office::Common::Misc::FilePickerLastDirectory::get());
|
Reference<XNameAccess> set(officecfg::Office::Common::Misc::FilePickerLastDirectory::get());
|
||||||
@ -2226,11 +2227,6 @@ OUString FileDialogHelper_Impl::getInitPath(std::u16string_view _rFallback,
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
SfxApplication *pSfxApp = SfxGetpApp();
|
|
||||||
sPath = pSfxApp->GetLastDir_Impl();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( sPath.isEmpty() )
|
if ( sPath.isEmpty() )
|
||||||
sPath = o3tl::getToken(_rFallback, _nFallbackToken, ' ' );
|
sPath = o3tl::getToken(_rFallback, _nFallbackToken, ' ' );
|
||||||
|
@ -61,6 +61,7 @@ namespace sfx2
|
|||||||
OUString maCurFilter;
|
OUString maCurFilter;
|
||||||
OUString maSelectFilter;
|
OUString maSelectFilter;
|
||||||
OUString maButtonLabel;
|
OUString maButtonLabel;
|
||||||
|
OUString msStandardDir;
|
||||||
|
|
||||||
Idle maPreviewIdle;
|
Idle maPreviewIdle;
|
||||||
Graphic maGraphic;
|
Graphic maGraphic;
|
||||||
|
@ -63,6 +63,7 @@
|
|||||||
#include <svl/eitem.hxx>
|
#include <svl/eitem.hxx>
|
||||||
#include <tools/debug.hxx>
|
#include <tools/debug.hxx>
|
||||||
#include <comphelper/diagnose_ex.hxx>
|
#include <comphelper/diagnose_ex.hxx>
|
||||||
|
#include <comphelper/namedvaluecollection.hxx>
|
||||||
#include <tools/urlobj.hxx>
|
#include <tools/urlobj.hxx>
|
||||||
#include <tools/json_writer.hxx>
|
#include <tools/json_writer.hxx>
|
||||||
#include <comphelper/processfactory.hxx>
|
#include <comphelper/processfactory.hxx>
|
||||||
@ -220,7 +221,7 @@ class DocumentSettingsGuard
|
|||||||
|
|
||||||
bool m_bRestoreSettings;
|
bool m_bRestoreSettings;
|
||||||
public:
|
public:
|
||||||
DocumentSettingsGuard( const uno::Reference< frame::XModel >& xModel, bool bReadOnly, bool bRestore )
|
DocumentSettingsGuard( const uno::Reference< frame::XModel2 >& xModel, bool bReadOnly, bool bRestore )
|
||||||
: m_bPreserveReadOnly( false )
|
: m_bPreserveReadOnly( false )
|
||||||
, m_bReadOnlySupported( false )
|
, m_bReadOnlySupported( false )
|
||||||
, m_bRestoreSettings( bRestore )
|
, m_bRestoreSettings( bRestore )
|
||||||
@ -272,7 +273,7 @@ public:
|
|||||||
class ModelData_Impl
|
class ModelData_Impl
|
||||||
{
|
{
|
||||||
SfxStoringHelper* m_pOwner;
|
SfxStoringHelper* m_pOwner;
|
||||||
uno::Reference< frame::XModel > m_xModel;
|
uno::Reference< frame::XModel2 > m_xModel;
|
||||||
uno::Reference< frame::XStorable > m_xStorable;
|
uno::Reference< frame::XStorable > m_xStorable;
|
||||||
uno::Reference< frame::XStorable2 > m_xStorable2;
|
uno::Reference< frame::XStorable2 > m_xStorable2;
|
||||||
|
|
||||||
@ -292,14 +293,14 @@ class ModelData_Impl
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
ModelData_Impl( SfxStoringHelper& aOwner,
|
ModelData_Impl( SfxStoringHelper& aOwner,
|
||||||
uno::Reference< frame::XModel > xModel,
|
uno::Reference< frame::XModel2 > xModel,
|
||||||
const uno::Sequence< beans::PropertyValue >& aMediaDescr );
|
const uno::Sequence< beans::PropertyValue >& aMediaDescr );
|
||||||
|
|
||||||
~ModelData_Impl();
|
~ModelData_Impl();
|
||||||
|
|
||||||
void FreeDocumentProps();
|
void FreeDocumentProps();
|
||||||
|
|
||||||
uno::Reference< frame::XModel > const & GetModel() const;
|
uno::Reference< frame::XModel2 > const & GetModel() const;
|
||||||
uno::Reference< frame::XStorable > const & GetStorable();
|
uno::Reference< frame::XStorable > const & GetStorable();
|
||||||
uno::Reference< frame::XStorable2 > const & GetStorable2();
|
uno::Reference< frame::XStorable2 > const & GetStorable2();
|
||||||
|
|
||||||
@ -338,7 +339,7 @@ public:
|
|||||||
bool bPreselectPassword,
|
bool bPreselectPassword,
|
||||||
OUString& aSuggestedDir,
|
OUString& aSuggestedDir,
|
||||||
sal_Int16 nDialog,
|
sal_Int16 nDialog,
|
||||||
const OUString& rStandardDir,
|
OUString& rStandardDir,
|
||||||
const css::uno::Sequence< OUString >& rDenyList
|
const css::uno::Sequence< OUString >& rDenyList
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -352,7 +353,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
ModelData_Impl::ModelData_Impl( SfxStoringHelper& aOwner,
|
ModelData_Impl::ModelData_Impl( SfxStoringHelper& aOwner,
|
||||||
uno::Reference< frame::XModel > xModel,
|
uno::Reference< frame::XModel2 > xModel,
|
||||||
const uno::Sequence< beans::PropertyValue >& aMediaDescr )
|
const uno::Sequence< beans::PropertyValue >& aMediaDescr )
|
||||||
: m_pOwner( &aOwner )
|
: m_pOwner( &aOwner )
|
||||||
, m_xModel(std::move( xModel ))
|
, m_xModel(std::move( xModel ))
|
||||||
@ -380,7 +381,7 @@ void ModelData_Impl::FreeDocumentProps()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uno::Reference< frame::XModel > const & ModelData_Impl::GetModel() const
|
uno::Reference< frame::XModel2 > const & ModelData_Impl::GetModel() const
|
||||||
{
|
{
|
||||||
if ( !m_xModel.is() )
|
if ( !m_xModel.is() )
|
||||||
throw uno::RuntimeException();
|
throw uno::RuntimeException();
|
||||||
@ -388,7 +389,6 @@ uno::Reference< frame::XModel > const & ModelData_Impl::GetModel() const
|
|||||||
return m_xModel;
|
return m_xModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uno::Reference< frame::XStorable > const & ModelData_Impl::GetStorable()
|
uno::Reference< frame::XStorable > const & ModelData_Impl::GetStorable()
|
||||||
{
|
{
|
||||||
if ( !m_xStorable.is() )
|
if ( !m_xStorable.is() )
|
||||||
@ -894,7 +894,7 @@ bool ModelData_Impl::OutputFileDialog( sal_Int16 nStoreMode,
|
|||||||
bool bPreselectPassword,
|
bool bPreselectPassword,
|
||||||
OUString& aSuggestedDir,
|
OUString& aSuggestedDir,
|
||||||
sal_Int16 nDialog,
|
sal_Int16 nDialog,
|
||||||
const OUString& rStandardDir,
|
OUString& rStandardDir,
|
||||||
const css::uno::Sequence< OUString >& rDenyList)
|
const css::uno::Sequence< OUString >& rDenyList)
|
||||||
{
|
{
|
||||||
if ( nStoreMode == SAVEASREMOTE_REQUESTED )
|
if ( nStoreMode == SAVEASREMOTE_REQUESTED )
|
||||||
@ -955,6 +955,13 @@ bool ModelData_Impl::OutputFileDialog( sal_Int16 nStoreMode,
|
|||||||
weld::Window* pFrameWin = SfxStoringHelper::GetModelWindow(m_xModel);
|
weld::Window* pFrameWin = SfxStoringHelper::GetModelWindow(m_xModel);
|
||||||
if ( ( nStoreMode & EXPORT_REQUESTED ) && !( nStoreMode & WIDEEXPORT_REQUESTED ) )
|
if ( ( nStoreMode & EXPORT_REQUESTED ) && !( nStoreMode & WIDEEXPORT_REQUESTED ) )
|
||||||
{
|
{
|
||||||
|
const OUString aBaseUrl = GetDocProps().getUnpackedValueOrDefault("DocumentBaseURL", OUString());
|
||||||
|
OUString aExportDir = GetDocProps().getUnpackedValueOrDefault("ExportDirectory", aBaseUrl);
|
||||||
|
INetURLObject aObj( aExportDir );
|
||||||
|
aObj.removeSegment();
|
||||||
|
aExportDir = aObj.GetMainURL( INetURLObject::DecodeMechanism::NONE );
|
||||||
|
if (!aExportDir.isEmpty())
|
||||||
|
rStandardDir = aExportDir;
|
||||||
if ( ( nStoreMode & PDFEXPORT_REQUESTED ) && !aPreselectedFilterPropsHM.empty() )
|
if ( ( nStoreMode & PDFEXPORT_REQUESTED ) && !aPreselectedFilterPropsHM.empty() )
|
||||||
{
|
{
|
||||||
// this is a PDF export
|
// this is a PDF export
|
||||||
@ -985,7 +992,6 @@ bool ModelData_Impl::OutputFileDialog( sal_Int16 nStoreMode,
|
|||||||
eCtxt = sfx2::FileDialogHelper::WriterExport;
|
eCtxt = sfx2::FileDialogHelper::WriterExport;
|
||||||
else if ( aDocServiceName == "com.sun.star.sheet.SpreadsheetDocument" )
|
else if ( aDocServiceName == "com.sun.star.sheet.SpreadsheetDocument" )
|
||||||
eCtxt = sfx2::FileDialogHelper::CalcExport;
|
eCtxt = sfx2::FileDialogHelper::CalcExport;
|
||||||
|
|
||||||
if ( eCtxt != sfx2::FileDialogHelper::UnknownContext )
|
if ( eCtxt != sfx2::FileDialogHelper::UnknownContext )
|
||||||
pFileDlg->SetContext( eCtxt );
|
pFileDlg->SetContext( eCtxt );
|
||||||
|
|
||||||
@ -1247,6 +1253,16 @@ bool ModelData_Impl::OutputFileDialog( sal_Int16 nStoreMode,
|
|||||||
GetMediaDescr()[u"URL"_ustr] <<= aURL.GetMainURL( INetURLObject::DecodeMechanism::NONE );
|
GetMediaDescr()[u"URL"_ustr] <<= aURL.GetMainURL( INetURLObject::DecodeMechanism::NONE );
|
||||||
GetMediaDescr()[sFilterNameString] <<= aFilterName;
|
GetMediaDescr()[sFilterNameString] <<= aFilterName;
|
||||||
|
|
||||||
|
// for Export - keep a runtime var for each document where the document was last exported to
|
||||||
|
if (GetStorable()->hasLocation() && (nStoreMode & EXPORT_REQUESTED))
|
||||||
|
{
|
||||||
|
uno::Sequence< beans::PropertyValue > descriptor{
|
||||||
|
beans::PropertyValue(u"ExportDirectory"_ustr,
|
||||||
|
-1, uno::Any(aURL.GetMainURL( INetURLObject::DecodeMechanism::NONE )), beans::PropertyState_DIRECT_VALUE),
|
||||||
|
};
|
||||||
|
GetModel()->setArgs(descriptor);
|
||||||
|
}
|
||||||
|
|
||||||
return bUseFilterOptions;
|
return bUseFilterOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1457,7 +1473,7 @@ uno::Reference< css::frame::XModuleManager2 > const & SfxStoringHelper::GetModul
|
|||||||
return m_xModuleManager;
|
return m_xModuleManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SfxStoringHelper::GUIStoreModel( const uno::Reference< frame::XModel >& xModel,
|
bool SfxStoringHelper::GUIStoreModel( const uno::Reference< frame::XModel2 >& xModel,
|
||||||
std::u16string_view aSlotName,
|
std::u16string_view aSlotName,
|
||||||
uno::Sequence< beans::PropertyValue >& aArgsSequence,
|
uno::Sequence< beans::PropertyValue >& aArgsSequence,
|
||||||
bool bPreselectPassword,
|
bool bPreselectPassword,
|
||||||
@ -2023,7 +2039,7 @@ bool SfxStoringHelper::CheckFilterOptionsAppearance(
|
|||||||
|
|
||||||
// static
|
// static
|
||||||
void SfxStoringHelper::SetDocInfoState(
|
void SfxStoringHelper::SetDocInfoState(
|
||||||
const uno::Reference< frame::XModel >& xModel,
|
const uno::Reference< frame::XModel2 >& xModel,
|
||||||
const uno::Reference< document::XDocumentProperties>& i_xOldDocProps )
|
const uno::Reference< document::XDocumentProperties>& i_xOldDocProps )
|
||||||
{
|
{
|
||||||
uno::Reference<document::XDocumentPropertiesSupplier> const
|
uno::Reference<document::XDocumentPropertiesSupplier> const
|
||||||
@ -2098,7 +2114,7 @@ void SfxStoringHelper::SetDocInfoState(
|
|||||||
|
|
||||||
|
|
||||||
// static
|
// static
|
||||||
bool SfxStoringHelper::WarnUnacceptableFormat( const uno::Reference< frame::XModel >& xModel,
|
bool SfxStoringHelper::WarnUnacceptableFormat( const uno::Reference< frame::XModel2 >& xModel,
|
||||||
std::u16string_view aOldUIName,
|
std::u16string_view aOldUIName,
|
||||||
std::u16string_view aExtension,
|
std::u16string_view aExtension,
|
||||||
const OUString& aDefExtension,
|
const OUString& aDefExtension,
|
||||||
@ -2135,7 +2151,7 @@ bool SfxStoringHelper::WarnUnacceptableFormat( const uno::Reference< frame::XMod
|
|||||||
return nResult == RET_YES;
|
return nResult == RET_YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
uno::Reference<awt::XWindow> SfxStoringHelper::GetModelXWindow(const uno::Reference<frame::XModel>& xModel)
|
uno::Reference<awt::XWindow> SfxStoringHelper::GetModelXWindow(const uno::Reference<frame::XModel2>& xModel)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
if ( xModel.is() )
|
if ( xModel.is() )
|
||||||
@ -2158,7 +2174,7 @@ uno::Reference<awt::XWindow> SfxStoringHelper::GetModelXWindow(const uno::Refere
|
|||||||
return uno::Reference<awt::XWindow>();
|
return uno::Reference<awt::XWindow>();
|
||||||
}
|
}
|
||||||
|
|
||||||
weld::Window* SfxStoringHelper::GetModelWindow( const uno::Reference< frame::XModel >& xModel )
|
weld::Window* SfxStoringHelper::GetModelWindow( const uno::Reference< frame::XModel2 >& xModel )
|
||||||
{
|
{
|
||||||
weld::Window* pWin = nullptr;
|
weld::Window* pWin = nullptr;
|
||||||
|
|
||||||
|
@ -1135,6 +1135,14 @@ void SAL_CALL SfxBaseModel::setArgs(const Sequence<beans::PropertyValue>& aArgs)
|
|||||||
ok = true;
|
ok = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (rArg.Name == "ExportDirectory")
|
||||||
|
{
|
||||||
|
if (rArg.Value >>= sValue)
|
||||||
|
{
|
||||||
|
pMedium->GetItemSet().Put(SfxStringItem(SID_EXPORTDIRECTORY, sValue));
|
||||||
|
ok = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (rArg.Name == "LockContentExtraction")
|
else if (rArg.Name == "LockContentExtraction")
|
||||||
{
|
{
|
||||||
if (rArg.Value >>= bValue)
|
if (rArg.Value >>= bValue)
|
||||||
|
@ -61,7 +61,6 @@ class SfxAppData_Impl
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
IndexBitSet aIndexBitSet; // for counting noname documents
|
IndexBitSet aIndexBitSet; // for counting noname documents
|
||||||
OUString aLastDir; // for IO dialog
|
|
||||||
|
|
||||||
// DDE stuff
|
// DDE stuff
|
||||||
std::unique_ptr<DdeService> pDdeService;
|
std::unique_ptr<DdeService> pDdeService;
|
||||||
|
@ -906,7 +906,7 @@ ErrCodeMsg SfxInPlaceClient::DoVerb(sal_Int32 nVerb)
|
|||||||
{
|
{
|
||||||
svt::EmbeddedObjectRef::TryRunningState( m_xImp->m_xObject );
|
svt::EmbeddedObjectRef::TryRunningState( m_xImp->m_xObject );
|
||||||
// TODO/LATER: this special verb should disappear when outplace activation is completely available
|
// TODO/LATER: this special verb should disappear when outplace activation is completely available
|
||||||
uno::Reference< frame::XModel > xEmbModel( m_xImp->m_xObject->getComponent(), uno::UNO_QUERY );
|
uno::Reference< frame::XModel2 > xEmbModel( m_xImp->m_xObject->getComponent(), uno::UNO_QUERY );
|
||||||
if ( xEmbModel.is() )
|
if ( xEmbModel.is() )
|
||||||
{
|
{
|
||||||
bSaveCopyAs = true;
|
bSaveCopyAs = true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user