diff options
author | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2018-02-06 17:48:51 +0100 |
---|---|---|
committer | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2018-02-08 16:42:14 +0100 |
commit | 38774ce79b4b24628c3a73f387489bf2498363f1 (patch) | |
tree | d305c9445581abe73fbb917dc010c8ffc88ba191 /fpicker/source | |
parent | c83d2ac99dc3da4ef85b193543a93e02e3858844 (diff) |
tdf#86739 Option to set image anchor type in image insert dialog
This adds the selectbox to (hopefully) all filepickers:
- LO native
- GTK/GTK3
- KDE4
- KDE5
- Windows
- macOS
Change-Id: I01bd42b1ca18e0f691b879647a6cb1b62177d3ce
Reviewed-on: https://gerrit.libreoffice.org/49311
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Diffstat (limited to 'fpicker/source')
-rw-r--r-- | fpicker/source/aqua/ControlHelper.hxx | 1 | ||||
-rw-r--r-- | fpicker/source/aqua/ControlHelper.mm | 9 | ||||
-rw-r--r-- | fpicker/source/aqua/SalAquaFilePicker.mm | 3 | ||||
-rw-r--r-- | fpicker/source/aqua/resourceprovider.mm | 1 | ||||
-rw-r--r-- | fpicker/source/office/OfficeControlAccess.cxx | 4 | ||||
-rw-r--r-- | fpicker/source/office/OfficeFilePicker.cxx | 4 | ||||
-rw-r--r-- | fpicker/source/office/fpdialogbase.hxx | 3 | ||||
-rw-r--r-- | fpicker/source/office/iodlg.cxx | 20 | ||||
-rw-r--r-- | fpicker/source/office/iodlgimp.cxx | 2 | ||||
-rw-r--r-- | fpicker/source/office/iodlgimp.hxx | 3 | ||||
-rw-r--r-- | fpicker/source/win32/filepicker/VistaFilePicker.cxx | 9 | ||||
-rw-r--r-- | fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx | 16 | ||||
-rw-r--r-- | fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx | 1 | ||||
-rw-r--r-- | fpicker/source/win32/misc/resourceprovider.cxx | 1 |
14 files changed, 76 insertions, 1 deletions
diff --git a/fpicker/source/aqua/ControlHelper.hxx b/fpicker/source/aqua/ControlHelper.hxx index a657104c4ba3..227e5472f6af 100644 --- a/fpicker/source/aqua/ControlHelper.hxx +++ b/fpicker/source/aqua/ControlHelper.hxx @@ -82,6 +82,7 @@ public: VERSION, TEMPLATE, IMAGE_TEMPLATE, + IMAGE_ANCHOR, LIST_LAST }; diff --git a/fpicker/source/aqua/ControlHelper.mm b/fpicker/source/aqua/ControlHelper.mm index 0c459e23cee8..54af583b3338 100644 --- a/fpicker/source/aqua/ControlHelper.mm +++ b/fpicker/source/aqua/ControlHelper.mm @@ -205,6 +205,11 @@ void ControlHelper::initialize( sal_Int16 nTemplateId ) m_bToggleVisibility[PREVIEW] = true; m_bListVisibility[IMAGE_TEMPLATE] = true; break; + case FILEOPEN_LINK_PREVIEW_IMAGE_ANCHOR: + m_bToggleVisibility[LINK] = true; + m_bToggleVisibility[PREVIEW] = true; + m_bListVisibility[IMAGE_ANCHOR] = true; + break; case FILEOPEN_READONLY_VERSION: m_bToggleVisibility[READONLY] = true; m_bListVisibility[VERSION] = true; @@ -539,6 +544,7 @@ void ControlHelper::createControls() MAP_LIST_(VERSION); MAP_LIST_(TEMPLATE); MAP_LIST_(IMAGE_TEMPLATE); + MAP_LIST_(IMAGE_ANCHOR); } m_aActiveControls.push_back(m_pListControls[i]); @@ -612,6 +618,7 @@ int ControlHelper::getControlElementName(const Class aClazz, const int nControlI LIST_ELEMENT( VERSION ); LIST_ELEMENT( TEMPLATE ); LIST_ELEMENT( IMAGE_TEMPLATE ); + LIST_ELEMENT( IMAGE_ANCHOR ); } } @@ -730,9 +737,11 @@ case ExtendedFilePickerElementIds::LISTBOX_##elem##_LABEL: \ MAP_LIST( VERSION ); MAP_LIST( TEMPLATE ); MAP_LIST( IMAGE_TEMPLATE ); + MAP_LIST( IMAGE_ANCHOR ); MAP_LIST_LABEL( VERSION ); MAP_LIST_LABEL( TEMPLATE ); MAP_LIST_LABEL( IMAGE_TEMPLATE ); + MAP_LIST_LABEL( IMAGE_ANCHOR ); default: SAL_INFO("fpicker.aqua","Handle unknown control " << nControlId); break; diff --git a/fpicker/source/aqua/SalAquaFilePicker.mm b/fpicker/source/aqua/SalAquaFilePicker.mm index 2ab668c0ba32..e76a30b67203 100644 --- a/fpicker/source/aqua/SalAquaFilePicker.mm +++ b/fpicker/source/aqua/SalAquaFilePicker.mm @@ -426,6 +426,9 @@ void SAL_CALL SalAquaFilePicker::initialize( const uno::Sequence<uno::Any>& aArg case FILEOPEN_LINK_PREVIEW_IMAGE_TEMPLATE: m_nDialogType = NAVIGATIONSERVICES_OPEN; break; + case FILEOPEN_LINK_PREVIEW_IMAGE_ANCHOR: + m_nDialogType = NAVIGATIONSERVICES_OPEN; + break; case FILEOPEN_PLAY: m_nDialogType = NAVIGATIONSERVICES_OPEN; break; diff --git a/fpicker/source/aqua/resourceprovider.mm b/fpicker/source/aqua/resourceprovider.mm index cdd039ce389b..49009ca16136 100644 --- a/fpicker/source/aqua/resourceprovider.mm +++ b/fpicker/source/aqua/resourceprovider.mm @@ -62,6 +62,7 @@ Entry const CtrlIdToResIdTable[] = { { LISTBOX_VERSION_LABEL, STR_SVT_FILEPICKER_VERSION }, { LISTBOX_TEMPLATE_LABEL, STR_SVT_FILEPICKER_TEMPLATES }, { LISTBOX_IMAGE_TEMPLATE_LABEL, STR_SVT_FILEPICKER_IMAGE_TEMPLATE }, + { LISTBOX_IMAGE_ANCHOR_LABEL, STR_SVT_FILEPICKER_IMAGE_ANCHOR }, { CHECKBOX_SELECTION, STR_SVT_FILEPICKER_SELECTION }, { FOLDERPICKER_TITLE, STR_SVT_FOLDERPICKER_DEFAULT_TITLE }, { FOLDER_PICKER_DEF_DESCRIPTION, STR_SVT_FOLDERPICKER_DEFAULT_DESCRIPTION }, diff --git a/fpicker/source/office/OfficeControlAccess.cxx b/fpicker/source/office/OfficeControlAccess.cxx index 968e29a825ed..0175c6840008 100644 --- a/fpicker/source/office/OfficeControlAccess.cxx +++ b/fpicker/source/office/OfficeControlAccess.cxx @@ -78,6 +78,8 @@ namespace svt { "FilterOptionsBox", CHECKBOX_FILTEROPTIONS, PROPERTY_FLAGS_COMMON | PROPERTY_FLAGS_CHECKBOX }, { "GpgPassword", CHECKBOX_GPGENCRYPTION, PROPERTY_FLAGS_COMMON | PROPERTY_FLAGS_CHECKBOX }, { "HelpButton", PUSHBUTTON_HELP, PROPERTY_FLAGS_COMMON | PropFlags::Text }, + { "ImageAnchorList", LISTBOX_IMAGE_ANCHOR, PROPERTY_FLAGS_COMMON | PROPERTY_FLAGS_LISTBOX }, + { "ImageAnchorListLabel", LISTBOX_IMAGE_ANCHOR_LABEL, PROPERTY_FLAGS_COMMON | PropFlags::Text }, { "ImageTemplateList", LISTBOX_IMAGE_TEMPLATE, PROPERTY_FLAGS_COMMON | PROPERTY_FLAGS_LISTBOX }, { "ImageTemplateListLabel", LISTBOX_IMAGE_TEMPLATE_LABEL, PROPERTY_FLAGS_COMMON | PropFlags::Text }, { "LevelUpButton", TOOLBOXBUTOON_LEVEL_UP, PROPERTY_FLAGS_COMMON }, @@ -367,6 +369,7 @@ namespace svt case LISTBOX_VERSION: case LISTBOX_TEMPLATE: case LISTBOX_IMAGE_TEMPLATE: + case LISTBOX_IMAGE_ANCHOR: if ( ControlActions::SET_SELECT_ITEM == _nControlAction ) { nPropertyId = PropFlags::SelectedItemIndex; @@ -428,6 +431,7 @@ namespace svt case LISTBOX_VERSION: case LISTBOX_TEMPLATE: case LISTBOX_IMAGE_TEMPLATE: + case LISTBOX_IMAGE_ANCHOR: switch ( _nControlAction ) { case ControlActions::GET_SELECTED_ITEM: diff --git a/fpicker/source/office/OfficeFilePicker.cxx b/fpicker/source/office/OfficeFilePicker.cxx index 27b6b905b006..82f9dca8bf12 100644 --- a/fpicker/source/office/OfficeFilePicker.cxx +++ b/fpicker/source/office/OfficeFilePicker.cxx @@ -289,6 +289,10 @@ PickerFlags SvtFilePicker::getPickerFlags() { nBits = PickerFlags::Open | PickerFlags::InsertAsLink | PickerFlags::ShowPreview; } + else if ( m_nServiceType == TemplateDescription::FILEOPEN_LINK_PREVIEW_IMAGE_ANCHOR ) + { + nBits = PickerFlags::Open | PickerFlags::InsertAsLink | PickerFlags::ShowPreview | PickerFlags::ImageAnchor; + } else if ( m_nServiceType == TemplateDescription::FILEOPEN_PREVIEW ) { nBits = PickerFlags::Open | PickerFlags::ShowPreview; diff --git a/fpicker/source/office/fpdialogbase.hxx b/fpicker/source/office/fpdialogbase.hxx index 5d41a3a2f8be..f845812ff9ce 100644 --- a/fpicker/source/office/fpdialogbase.hxx +++ b/fpicker/source/office/fpdialogbase.hxx @@ -52,9 +52,10 @@ enum class PickerFlags { Password = 0x001000, ReadOnly = 0x002000, MultiSelection = 0x004000, + ImageAnchor = 0x008000, }; namespace o3tl { - template<> struct typed_flags<PickerFlags> : is_typed_flags<PickerFlags, 0x007fff> {}; + template<> struct typed_flags<PickerFlags> : is_typed_flags<PickerFlags, 0x00ffff> {}; } #define FILEDIALOG_FILTER_ALL "*.*" diff --git a/fpicker/source/office/iodlg.cxx b/fpicker/source/office/iodlg.cxx index f497ba451f1c..e5ffecdf0dd0 100644 --- a/fpicker/source/office/iodlg.cxx +++ b/fpicker/source/office/iodlg.cxx @@ -564,6 +564,8 @@ void SvtFileDialog::Init_Impl get(pImpl->_pLbTemplates, "shared"); get(pImpl->_pFtImageTemplates, "shared_label"); get(pImpl->_pLbImageTemplates, "shared"); + get(pImpl->_pFtImageAnchor, "shared_label"); + get(pImpl->_pLbImageAnchor, "shared"); pImpl->_pLbImageTemplates->setMaxWidthChars(40); pImpl->_pLbFilter->setMaxWidthChars(40); @@ -2381,6 +2383,12 @@ Control* SvtFileDialog::getControl( sal_Int16 _nControlId, bool _bLabelControl ) : static_cast< Control* >( pImpl->_pLbImageTemplates ); break; + case LISTBOX_IMAGE_ANCHOR: + pReturn = _bLabelControl + ? static_cast< Control* >( pImpl->_pFtImageAnchor ) + : static_cast< Control* >( pImpl->_pLbImageAnchor ); + break; + case LISTBOX_VERSION_LABEL: pReturn = pImpl->_pFtFileVersion; break; @@ -2393,6 +2401,10 @@ Control* SvtFileDialog::getControl( sal_Int16 _nControlId, bool _bLabelControl ) pReturn = pImpl->_pFtImageTemplates; break; + case LISTBOX_IMAGE_ANCHOR_LABEL: + pReturn = pImpl->_pFtImageAnchor; + break; + case PUSHBUTTON_OK: pReturn = pImpl->_pBtnFileOpen; break; @@ -2532,6 +2544,14 @@ void SvtFileDialog::AddControls_Impl( ) pImpl->_pLbImageTemplates->SetHelpId( HID_FILEOPEN_IMAGE_TEMPLATE ); pImpl->_pLbImageTemplates->Show(); } + else if ( _nPickerFlags & PickerFlags::ImageAnchor ) + { + pImpl->_pFtImageAnchor->SetText( FpsResId( STR_SVT_FILEPICKER_IMAGE_ANCHOR ) ); + pImpl->_pFtImageAnchor->Show(); + + pImpl->_pLbImageAnchor->SetHelpId( HID_FILEOPEN_IMAGE_ANCHOR ); + pImpl->_pLbImageAnchor->Show(); + } pImpl->_pPlaces = VclPtr<PlacesListBox>::Create(_pContainer, this, FpsResId(STR_PLACES_TITLE), WB_BORDER); pImpl->_pPlaces->SetHelpId("SVT_HID_FILESAVE_PLACES_LISTBOX"); diff --git a/fpicker/source/office/iodlgimp.cxx b/fpicker/source/office/iodlgimp.cxx index 5b9593caba87..6328c7a44d19 100644 --- a/fpicker/source/office/iodlgimp.cxx +++ b/fpicker/source/office/iodlgimp.cxx @@ -186,6 +186,8 @@ SvtExpFileDlg_Impl::SvtExpFileDlg_Impl() : _pLbTemplates ( nullptr ), _pFtImageTemplates ( nullptr ), _pLbImageTemplates ( nullptr ), + _pFtImageAnchor ( nullptr ), + _pLbImageAnchor ( nullptr ), _pFtFileType ( nullptr ), _pLbFilter ( nullptr ), _pBtnFileOpen ( nullptr ), diff --git a/fpicker/source/office/iodlgimp.hxx b/fpicker/source/office/iodlgimp.hxx index c0d6a5523c82..2146900e15df 100644 --- a/fpicker/source/office/iodlgimp.hxx +++ b/fpicker/source/office/iodlgimp.hxx @@ -137,6 +137,9 @@ public: VclPtr<FixedText> _pFtImageTemplates; VclPtr<ListBox> _pLbImageTemplates; + VclPtr<FixedText> _pFtImageAnchor; + VclPtr<ListBox> _pLbImageAnchor; + VclPtr<FixedText> _pFtFileType; VclPtr<ListBox> _pLbFilter; VclPtr<PushButton> _pBtnFileOpen; diff --git a/fpicker/source/win32/filepicker/VistaFilePicker.cxx b/fpicker/source/win32/filepicker/VistaFilePicker.cxx index 231072c7fbc0..c0dde13bda80 100644 --- a/fpicker/source/win32/filepicker/VistaFilePicker.cxx +++ b/fpicker/source/win32/filepicker/VistaFilePicker.cxx @@ -425,6 +425,15 @@ void SAL_CALL VistaFilePicker::initialize(const css::uno::Sequence< css::uno::An } break; + case css::ui::dialogs::TemplateDescription::FILEOPEN_LINK_PREVIEW_IMAGE_ANCHOR : + { + bFileOpenDialog = true; + nFeatures |= FEATURE_LINK; + nFeatures |= FEATURE_PREVIEW; + nFeatures |= FEATURE_IMAGEANCHOR; + } + break; + case css::ui::dialogs::TemplateDescription::FILEOPEN_PLAY : { bFileOpenDialog = true; diff --git a/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx b/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx index 759228ffeae3..dfc99a336187 100644 --- a/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx +++ b/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx @@ -87,6 +87,7 @@ static const GUID CLIENTID_FILESAVE_PASSWORD = {0xC12D4F4C, 0x4D41, 0x4D4 static const GUID CLIENTID_FILESAVE_SELECTION = {0x5B2482B3, 0x0358, 0x4E09, 0xAA, 0x64, 0x2B, 0x76, 0xB2, 0xA0, 0xDD, 0xFE}; static const GUID CLIENTID_FILESAVE_TEMPLATE = {0x9996D877, 0x20D5, 0x424B, 0x9C, 0x2E, 0xD3, 0xB6, 0x31, 0xEC, 0xF7, 0xCE}; static const GUID CLIENTID_FILEOPEN_LINK_TEMPLATE = {0x32237796, 0x1509, 0x49D1, 0xBB, 0x7E, 0x63, 0xAD, 0x36, 0xAE, 0x86, 0x8C}; +static const GUID CLIENTID_FILEOPEN_LINK_ANCHOR = {0xBE3188CB, 0x399A, 0x45AE, 0x8F, 0x78, 0x75, 0x17, 0xAF, 0x26, 0x81, 0xEA}; static const GUID CLIENTID_FILEOPEN_PLAY = {0x32CFB147, 0xF5AE, 0x4F90, 0xA1, 0xF1, 0x81, 0x20, 0x72, 0xBB, 0x2F, 0xC5}; static const GUID CLIENTID_FILEOPEN_LINK = {0x39AC4BAE, 0x7D2D, 0x46BC, 0xBE, 0x2E, 0xF8, 0x8C, 0xB5, 0x65, 0x5E, 0x6A}; @@ -492,6 +493,7 @@ static const ::sal_Int32 GROUP_VERSION = 1; static const ::sal_Int32 GROUP_TEMPLATE = 2; static const ::sal_Int32 GROUP_IMAGETEMPLATE = 3; static const ::sal_Int32 GROUP_CHECKBOXES = 4; +static const ::sal_Int32 GROUP_IMAGEANCHOR = 5; static void setLabelToControl(TFileDialogCustomize iCustom, sal_uInt16 nControlId) @@ -535,6 +537,10 @@ void VistaFilePickerImpl::impl_sta_enableFeatures(::sal_Int32 nFeatures, ::sal_I aGUID = CLIENTID_FILEOPEN_LINK_TEMPLATE; break; + case css::ui::dialogs::TemplateDescription::FILEOPEN_LINK_PREVIEW_IMAGE_ANCHOR : + aGUID = CLIENTID_FILEOPEN_LINK_ANCHOR; + break; + case css::ui::dialogs::TemplateDescription::FILEOPEN_PLAY : case css::ui::dialogs::TemplateDescription::FILEOPEN_LINK_PLAY : aGUID = CLIENTID_FILEOPEN_PLAY; @@ -573,6 +579,14 @@ void VistaFilePickerImpl::impl_sta_enableFeatures(::sal_Int32 nFeatures, ::sal_I iCustom->MakeProminent (GROUP_IMAGETEMPLATE); } + if ((nFeatures & FEATURE_IMAGEANCHOR) == FEATURE_IMAGEANCHOR) + { + iCustom->StartVisualGroup (GROUP_IMAGEANCHOR, o3tl::toW(FpsResId(STR_SVT_FILEPICKER_IMAGE_ANCHOR).replaceFirst("~","").getStr())); + iCustom->AddComboBox (css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_IMAGE_ANCHOR); + iCustom->EndVisualGroup (); + iCustom->MakeProminent (GROUP_IMAGEANCHOR); + } + iCustom->StartVisualGroup (GROUP_CHECKBOXES, L""); sal_uInt16 nControlId(0); @@ -1058,6 +1072,7 @@ void VistaFilePickerImpl::impl_sta_SetControlValue(const RequestRef& rRequest) case css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_VERSION : case css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_TEMPLATE : case css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_IMAGE_TEMPLATE : + case css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_IMAGE_ANCHOR : { HRESULT hResult; switch (nAction) @@ -1132,6 +1147,7 @@ void VistaFilePickerImpl::impl_sta_GetControlValue(const RequestRef& rRequest) case css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_VERSION: case css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_TEMPLATE: case css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_IMAGE_TEMPLATE: + case css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_IMAGE_ANCHOR: { DWORD bValue = 0; HRESULT hResult = iCustom->GetSelectedControlItem(nId, &bValue); diff --git a/fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx b/fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx index 4b51f9162165..f8a67d414d6d 100644 --- a/fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx +++ b/fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx @@ -58,6 +58,7 @@ static const ::sal_Int32 FEATURE_PLAY = 256; static const ::sal_Int32 FEATURE_READONLY = 512; static const ::sal_Int32 FEATURE_VERSION = 1024; static const ::sal_Int32 FEATURE_GPGPASSWORD = 2048; +static const ::sal_Int32 FEATURE_IMAGEANCHOR = 4096; static const OUString PROP_PICKER_LISTENER("picker_listener" ); // [XFilePickerListenert] static const OUString PROP_DIALOG_SHOW_RESULT("dialog_show_result" ); // [sal_Bool] true=OK, false=CANCEL diff --git a/fpicker/source/win32/misc/resourceprovider.cxx b/fpicker/source/win32/misc/resourceprovider.cxx index b7b70d4d45de..a0d536f23032 100644 --- a/fpicker/source/win32/misc/resourceprovider.cxx +++ b/fpicker/source/win32/misc/resourceprovider.cxx @@ -59,6 +59,7 @@ Entry const CtrlIdToResIdTable[] = { { LISTBOX_VERSION_LABEL, STR_SVT_FILEPICKER_VERSION }, { LISTBOX_TEMPLATE_LABEL, STR_SVT_FILEPICKER_TEMPLATES }, { LISTBOX_IMAGE_TEMPLATE_LABEL, STR_SVT_FILEPICKER_IMAGE_TEMPLATE }, + { LISTBOX_IMAGE_ANCHOR_LABEL, STR_SVT_FILEPICKER_IMAGE_ANCHOR }, { CHECKBOX_SELECTION, STR_SVT_FILEPICKER_SELECTION }, { FOLDERPICKER_TITLE, STR_SVT_FOLDERPICKER_DEFAULT_TITLE }, { FOLDER_PICKER_DEF_DESCRIPTION, STR_SVT_FOLDERPICKER_DEFAULT_DESCRIPTION }, |