summaryrefslogtreecommitdiff
path: root/fpicker
diff options
context:
space:
mode:
authorSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2018-02-06 17:48:51 +0100
committerSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2018-02-08 16:42:14 +0100
commit38774ce79b4b24628c3a73f387489bf2498363f1 (patch)
treed305c9445581abe73fbb917dc010c8ffc88ba191 /fpicker
parentc83d2ac99dc3da4ef85b193543a93e02e3858844 (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')
-rw-r--r--fpicker/source/aqua/ControlHelper.hxx1
-rw-r--r--fpicker/source/aqua/ControlHelper.mm9
-rw-r--r--fpicker/source/aqua/SalAquaFilePicker.mm3
-rw-r--r--fpicker/source/aqua/resourceprovider.mm1
-rw-r--r--fpicker/source/office/OfficeControlAccess.cxx4
-rw-r--r--fpicker/source/office/OfficeFilePicker.cxx4
-rw-r--r--fpicker/source/office/fpdialogbase.hxx3
-rw-r--r--fpicker/source/office/iodlg.cxx20
-rw-r--r--fpicker/source/office/iodlgimp.cxx2
-rw-r--r--fpicker/source/office/iodlgimp.hxx3
-rw-r--r--fpicker/source/win32/filepicker/VistaFilePicker.cxx9
-rw-r--r--fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx16
-rw-r--r--fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx1
-rw-r--r--fpicker/source/win32/misc/resourceprovider.cxx1
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 },