26#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
27#include <com/sun/star/ui/dialogs/ControlActions.hpp>
28#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
29#include <com/sun/star/beans/StringPair.hpp>
30#include <com/sun/star/awt/XWindow.hpp>
31#include <com/sun/star/awt/XSystemDependentWindowPeer.hpp>
32#include <com/sun/star/lang/SystemDependent.hpp>
34#include <fpicker/strings.hrc>
36#include <osl/file.hxx>
37#include <rtl/process.h>
49 GetWindowThreadProcessId(hwnd, &pid);
50 return (pid == GetCurrentProcessId());
55 HWND hwnd_parent = GetForegroundWindow();
57 hwnd_parent = GetDesktopWindow();
63bool createFolderItem(OUString
const& url, sal::systools::COMReference<IShellItem>& folder)
66 if (osl::FileBase::getSystemPathFromFileURL(url, path)
67 != osl::FileBase::E_None)
71 HRESULT res = SHCreateItemFromParsingName(
72 o3tl::toW(path.getStr()),
nullptr,
73 IID_PPV_ARGS(&folder));
74 return SUCCEEDED(res);
91const GUID
CLIENTID_FILEDIALOG_SIMPLE = {0xB8628FD3, 0xA3F5, 0x4845, 0x9B, 0x62, 0xD5, 0x1E, 0xDF, 0x97, 0xC4, 0x83};
92const GUID
CLIENTID_FILEDIALOG_OPTIONS = {0x93ED486F, 0x0D04, 0x4807, 0x8C, 0x44, 0xAC, 0x26, 0xCB, 0x6C, 0x5D, 0x36};
93const GUID
CLIENTID_FILESAVE_PASSWORD = {0xC12D4F4C, 0x4D41, 0x4D4F, 0x97, 0xEF, 0x87, 0xF9, 0x8D, 0xB6, 0x1E, 0xA6};
94const GUID
CLIENTID_FILESAVE_SELECTION = {0x5B2482B3, 0x0358, 0x4E09, 0xAA, 0x64, 0x2B, 0x76, 0xB2, 0xA0, 0xDD, 0xFE};
95const GUID
CLIENTID_FILESAVE_TEMPLATE = {0x9996D877, 0x20D5, 0x424B, 0x9C, 0x2E, 0xD3, 0xB6, 0x31, 0xEC, 0xF7, 0xCE};
96const GUID
CLIENTID_FILEOPEN_LINK_TEMPLATE = {0x32237796, 0x1509, 0x49D1, 0xBB, 0x7E, 0x63, 0xAD, 0x36, 0xAE, 0x86, 0x8C};
97const GUID
CLIENTID_FILEOPEN_LINK_ANCHOR = {0xBE3188CB, 0x399A, 0x45AE, 0x8F, 0x78, 0x75, 0x17, 0xAF, 0x26, 0x81, 0xEA};
98const GUID
CLIENTID_FILEOPEN_PLAY = {0x32CFB147, 0xF5AE, 0x4F90, 0xA1, 0xF1, 0x81, 0x20, 0x72, 0xBB, 0x2F, 0xC5};
99const GUID
CLIENTID_FILEOPEN_LINK = {0x39AC4BAE, 0x7D2D, 0x46BC, 0xBE, 0x2E, 0xF8, 0x8C, 0xB5, 0x65, 0x5E, 0x6A};
113 virtual sal::systools::COMReference<IShellItemArray>
getResult(
bool bInExecute)
115 sal::systools::COMReference<IShellItem> iItem;
123 void* iItems =
nullptr;
125 SHCreateShellItemArrayFromShellItem(iItem.get(), IID_IShellItemArray, &iItems);
126 return static_cast<IShellItemArray*
>(iItems);
135template <
class ComPtrDialog, REFCLSID CLSID>
class TDialogImpl :
public TDialogImplBase
144class TOpenDialogImpl :
public TDialogImpl<TFileOpenDialog, CLSID_FileOpenDialog>
147 sal::systools::COMReference<IShellItemArray> getResult(
bool bInExecute)
override
149 sal::systools::COMReference<IShellItemArray> iItems;
151 bool bGetResult =
false;
154 else if (FAILED(bInExecute ? iDialog->GetSelectedItems(&iItems) : iDialog->GetResults(&iItems)))
172 sal::systools::CoTaskMemAllocated<wchar_t> pStr;
173 HRESULT
hr = pItem->GetDisplayName(SIGDN_FILESYSPATH, &pStr);
179 if (SUCCEEDED(pItem->GetDisplayName(SIGDN_URL, &pStr)))
180 return OUString(o3tl::toU(pStr));
182 hr = pItem->GetDisplayName(SIGDN_PARENTRELATIVEPARSING, &pStr);
185 GUID known_folder_id;
186 wchar_t* pStr2 = pStr;
187 if (pStr2[0] ==
':' && pStr2[1] ==
':' && pStr2[2] ==
'{')
189 hr = IIDFromString(pStr2, &known_folder_id);
191 hr = SHGetKnownFolderPath(known_folder_id, 0,
nullptr, &pStr);
197 hr = SHGetKnownFolderPath(FOLDERID_Documents, 0,
nullptr, &pStr);
201 ::osl::FileBase::getFileURLFromSystemPath(OUString(o3tl::toU(pStr)), sURL);
209 const sal_Int32
idx =
sName.indexOf(
"(.");
215 std::vector<OUString>& rvStrings)
217 ::std::vector< COMDLG_FILTERSPEC > lList ;
223 COMDLG_FILTERSPEC aSpec;
226 aSpec.pszName = o3tl::toW(rvStrings.back().getStr());
227 aSpec.pszSpec = o3tl::toW(aFilter.second.getStr());
229 lList.push_back(aSpec);
239 , m_bInExecute (false)
240 , m_bWasExecuted (false)
241 , m_hParentWindow(nullptr)
358 if ( ! xListener.is())
372 if ( ! xListener.is())
394 const css::uno::Sequence< css::beans::StringPair > aFilterGroup =
400 ::sal_Int32 c = aFilterGroup.getLength();
404 const css::beans::StringPair& rFilter = aFilterGroup[
i];
425 HRESULT hResult = iDialog->GetFileTypeIndex(&
nIndex);
427 ( FAILED(hResult) ) ||
433 ::sal_Int32 nRealIndex =
nIndex-1;
435 (nRealIndex >= 0 ) &&
439 else if ( nRealIndex == -1 )
449 m_pDialog = std::make_shared<TDialogImplClass>();
460 iDialog->GetOptions ( &nFlags );
462 nFlags &= ~FOS_FORCESHOWHIDDEN;
463 nFlags |= FOS_PATHMUSTEXIST;
464 nFlags |= FOS_DONTADDTORECENT;
467 iDialog->SetOptions ( nFlags );
472 css::uno::Reference<css::awt::XSystemDependentWindowPeer> xSysDepWin(xWindow,css::uno::UNO_QUERY);
473 if(xSysDepWin.is()) {
474 css::uno::Sequence<sal_Int8> aProcessIdent(16);
475 rtl_getGlobalProcessId(
reinterpret_cast<sal_uInt8*
>(aProcessIdent.getArray()));
476 css::uno::Any aAny = xSysDepWin->getWindowHandle(aProcessIdent,css::lang::SystemDependent::SYSTEM_WIN32);
500 impl_sta_CreateDialog<TOpenDialogImpl>();
507 impl_sta_CreateDialog<TSaveDialogImpl>();
514 impl_sta_CreateDialog<TFolderPickerDialogImpl>();
539 case css::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE :
540 case css::ui::dialogs::TemplateDescription::FILEOPEN_PREVIEW :
541 case css::ui::dialogs::TemplateDescription::FILESAVE_SIMPLE :
545 case css::ui::dialogs::TemplateDescription::FILEOPEN_READONLY_VERSION :
546 case css::ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION_PASSWORD_FILTEROPTIONS :
550 case css::ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION_PASSWORD :
554 case css::ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION :
555 case css::ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION_SELECTION :
559 case css::ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION_TEMPLATE :
563 case css::ui::dialogs::TemplateDescription::FILEOPEN_LINK_PREVIEW_IMAGE_TEMPLATE :
567 case css::ui::dialogs::TemplateDescription::FILEOPEN_LINK_PREVIEW_IMAGE_ANCHOR :
571 case css::ui::dialogs::TemplateDescription::FILEOPEN_PLAY :
572 case css::ui::dialogs::TemplateDescription::FILEOPEN_LINK_PLAY :
576 case css::ui::dialogs::TemplateDescription::FILEOPEN_LINK_PREVIEW :
582 iDialog->SetClientGuid ( aGUID );
590 iCustom->StartVisualGroup (
GROUP_VERSION, o3tl::toW(
FpsResId(STR_SVT_FILEPICKER_VERSION).replaceFirst(
"~",
"").getStr()));
591 iCustom->AddComboBox (css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_VERSION);
592 iCustom->EndVisualGroup ();
598 iCustom->StartVisualGroup (
GROUP_TEMPLATE, o3tl::toW(
FpsResId(STR_SVT_FILEPICKER_TEMPLATES).replaceFirst(
"~",
"").getStr()));
599 iCustom->AddComboBox (css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_TEMPLATE);
600 iCustom->EndVisualGroup ();
606 iCustom->StartVisualGroup (
GROUP_IMAGETEMPLATE, o3tl::toW(
FpsResId(STR_SVT_FILEPICKER_IMAGE_TEMPLATE).replaceFirst(
"~",
"").getStr()));
607 iCustom->AddComboBox (css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_IMAGE_TEMPLATE);
608 iCustom->EndVisualGroup ();
614 iCustom->StartVisualGroup (
GROUP_IMAGEANCHOR, o3tl::toW(
FpsResId(STR_SVT_FILEPICKER_IMAGE_ANCHOR).replaceFirst(
"~",
"").getStr()));
615 iCustom->AddComboBox (css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_IMAGE_ANCHOR);
616 iCustom->EndVisualGroup ();
625 nControlId = css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION;
626 iCustom->AddCheckButton (
nControlId, o3tl::toW(
FpsResId(STR_SVT_FILEPICKER_AUTO_EXTENSION).replaceFirst(
"~",
"").getStr()),
true);
632 nControlId = css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_PASSWORD;
633 iCustom->AddCheckButton (
nControlId, o3tl::toW(
FpsResId(STR_SVT_FILEPICKER_PASSWORD).replaceFirst(
"~",
"").getStr()),
false);
639 nControlId = css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_GPGENCRYPTION;
640 iCustom->AddCheckButton (
nControlId, L
"GpgPassword",
false);
646 nControlId = css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_READONLY;
647 iCustom->AddCheckButton (
nControlId, o3tl::toW(
FpsResId(STR_SVT_FILEPICKER_READONLY).replaceFirst(
"~",
"").getStr()),
false);
653 nControlId = css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_FILTEROPTIONS;
654 iCustom->AddCheckButton (
nControlId, o3tl::toW(
FpsResId(STR_SVT_FILEPICKER_FILTER_OPTIONS).replaceFirst(
"~",
"").getStr()),
false);
660 nControlId = css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_LINK;
661 iCustom->AddCheckButton (
nControlId, o3tl::toW(
FpsResId(STR_SVT_FILEPICKER_INSERT_AS_LINK).replaceFirst(
"~",
"").getStr()),
false);
667 nControlId = css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_SELECTION;
668 iCustom->AddCheckButton (
nControlId, o3tl::toW(
FpsResId(STR_SVT_FILEPICKER_SELECTION).replaceFirst(
"~",
"").getStr()),
false);
677 iCustom->EndVisualGroup();
680 iCustom->AddPushButton (css::ui::dialogs::ExtendedFilePickerElementIds::PUSHBUTTON_PLAY, o3tl::toW(
FpsResId(STR_SVT_FILEPICKER_PLAY).replaceFirst(
"~",
"").getStr()));
694 iDialog->GetOptions(&nFlags);
697 nFlags |= FOS_ALLOWMULTISELECT;
699 nFlags &= ~FOS_ALLOWMULTISELECT;
701 iDialog->SetOptions ( nFlags );
713 iDialog->SetTitle(o3tl::toW(sTitle.getStr()));
725 iDialog->SetFileName(o3tl::toW(sFileName.getStr()));
747 sal::systools::COMReference<IShellItem> pFolder;
748 if ( !createFolderItem(sDirectory, pFolder) )
751 iDialog->SetFolder(pFolder.get());
759 sal::systools::COMReference<IShellItem> pFolder;
760 HRESULT hResult = iDialog->GetFolder( &pFolder );
761 if ( FAILED(hResult) )
769 if (!sFolder.isEmpty())
787 HRESULT hResult = iCustom->GetCheckButtonState( css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, &bValue);
788 if ( FAILED(hResult) )
792 sal_Int32 nSepPos = sFilename.lastIndexOf(
'.' );
794 sFilename = sFilename.copy(0, nSepPos);
797 iDialog->SetFileName (o3tl::toW(sFilename.getStr()));
804 std::vector<OUString> vStrings;
813 if (!iCustomize.is())
816 if (lFilters.empty())
819 COMDLG_FILTERSPEC *pFilt = lFilters.data();
820 iDialog->SetFileTypes(lFilters.size(), pFilt);
821 iDialog->SetFileTypeIndex(nCurrentFilter + 1);
824 HRESULT hResult = iCustomize->GetCheckButtonState( css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, &bValue);
825 if ( FAILED(hResult) )
830 PCWSTR lpFilterExt = lFilters[0].pszSpec;
832 lpFilterExt = wcsrchr( lpFilterExt,
'.' );
835 iDialog->SetDefaultExtension( lpFilterExt );
853 std::vector< OUString > lFiles;
858 if (sal::systools::COMReference<IShellItem> iItem;
859 SUCCEEDED(iItems->GetItemAt(
i, &iItem)))
862 lFiles.push_back(sURL);
891 sal::systools::COMReference<IShellItem> pFolder;
897 sal_Int32
nIndex = aFileURL.lastIndexOf(
'/');
898 if (
nIndex != aFileURL.getLength()-1)
907 HRESULT hResult = iCustom->GetCheckButtonState( css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION, &bValue);
911 hResult = iDialog->GetFileTypeIndex(&nFileType);
912 if ( SUCCEEDED(hResult) && nFileType > 0 )
915 ::size_t nRealIndex = nFileType-1;
919 const sal_Int32
idx = sFilter.indexOf(
'.');
921 aFileURL += sFilter.subView(
idx);
927 OUString aSystemPath;
928 osl_getSystemPathFromFileURL( aFileURL.pData, &aSystemPath.pData );
930 WIN32_FIND_DATAW aFindFileData;
931 HANDLE hFind = FindFirstFileW( o3tl::toW(aSystemPath.getStr()), &aFindFileData );
932 if (hFind != INVALID_HANDLE_VALUE)
933 iDialog->SetFolder(pFolder.get());
935 hResult = iDialog->AddPlace(pFolder.get(), FDAP_TOP);
940 iDialog->AddPlace(pFolder.get(), FDAP_TOP);
944 HRESULT hResult = E_FAIL;
966 if ( FAILED(hResult) )
988 return {
m_pDialog->getComPtr(), sal::systools::COM_QUERY_THROW };
997 (void)iCustom->SetSelectedControlItem(
nControlId, 1000);
999 HRESULT hResult = S_OK;
1000 while ( SUCCEEDED(hResult) )
1001 hResult = iCustom->RemoveControlItem(
nControlId,
i++);
1015 if ( ! iCustom.is())
1020 case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION :
1021 case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_PASSWORD :
1022 case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_READONLY :
1023 case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_FILTEROPTIONS :
1024 case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_LINK :
1026 case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_SELECTION :
1028 bool bValue =
false;
1030 iCustom->SetCheckButtonState(
nId, bValue);
1034 case css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_VERSION :
1035 case css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_TEMPLATE :
1036 case css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_IMAGE_TEMPLATE :
1037 case css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_IMAGE_ANCHOR :
1042 case css::ui::dialogs::ControlActions::DELETE_ITEMS :
1044 hResult = iCustom->RemoveAllControlItems(
nId);
1045 if ( FAILED(hResult) )
1050 case css::ui::dialogs::ControlActions::ADD_ITEMS :
1053 for (::sal_Int32
i=0;
i<
m_lItems.getLength(); ++
i)
1056 hResult = iCustom->AddControlItem(
nId,
i, o3tl::toW(sItem.getStr()));
1061 case css::ui::dialogs::ControlActions::SET_SELECT_ITEM :
1063 ::sal_Int32 nItem = 0;
1065 hResult = iCustom->SetSelectedControlItem(
nId, nItem);
1072 case css::ui::dialogs::ExtendedFilePickerElementIds::PUSHBUTTON_PLAY :
1088 if ( ! iCustom.is())
1091 css::uno::Any aValue;
1095 case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_PASSWORD :
1096 case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_GPGENCRYPTION :
1097 case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_READONLY :
1098 case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_FILTEROPTIONS :
1099 case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_LINK :
1101 case css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_SELECTION :
1104 HRESULT hResult = iCustom->GetCheckButtonState(
nId, &bValue);
1105 if ( SUCCEEDED(hResult) )
1106 aValue <<= bool(bValue);
1109 case css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_VERSION:
1110 case css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_TEMPLATE:
1111 case css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_IMAGE_TEMPLATE:
1112 case css::ui::dialogs::ExtendedFilePickerElementIds::LISTBOX_IMAGE_ANCHOR:
1115 HRESULT hResult = iCustom->GetSelectedControlItem(
nId, &bValue);
1116 if ( SUCCEEDED(hResult) )
1118 const OUString& sItem =
m_lItems[bValue];
1119 aValue <<= OUString(sItem.getStr());
1125 if (aValue.hasValue())
1139 if ( ! iCustom.is())
1141 iCustom->SetControlLabel (
nId, o3tl::toW(sLabel.getStr()));
1159 if ( ! iCustom.is())
1162 CDCONTROLSTATEF eState = CDCS_VISIBLE;
1164 eState |= CDCS_ENABLED;
1166 eState |= CDCS_INACTIVE;
1168 iCustom->SetControlState(
nId, eState);
1177 if (currentFilter.getLength())
1182 sal_Int32 posOfPoint = FilterExt.indexOf(L
'.');
1183 const sal_Unicode* pFirstExtStart = FilterExt.getStr() + posOfPoint + 1;
1185 sal_Int32 posOfSemiColon = FilterExt.indexOf(L
';') - 1;
1186 if (posOfSemiColon < 0)
1187 posOfSemiColon = FilterExt.getLength() - 1;
1189 FilterExt = OUString(pFirstExtStart, posOfSemiColon - posOfPoint);
1190 iDialog->SetDefaultExtension ( o3tl::toW(FilterExt.getStr()) );
1205 PCWSTR
pExt =
nullptr;
1208 pExt = o3tl::toW(sExt.getStr());
1213 iDialog->SetDefaultExtension(
pExt );
static bool is_current_process_window(HWND hwnd)
static HWND choose_parent_window()
OUString SOfficeToWindowsLabel(const OUString &aSOLabel)
bool getFilterByIndex(sal_Int32 aIndex, OUString &theFilter) const
void setCurrentFilter(const OUString &aName)
std::pair< OUString, OUString > FILTER_ENTRY_T
bool getFilterByName(const OUString &aName, OUString &theFilter) const
OUString getCurrentFilter() const
sal_Int32 getFilterPos(const OUString &aName) const
bool getFilterNameByIndex(sal_Int32 aIndex, OUString &theName) const
bool getNextFilter(FILTER_ENTRY_T &nextFilterEntry)
bool addFilter(const OUString &aName, const OUString &aFilter, bool bAllowDuplicates=false)
void setArgument(const OUString &sName, const TArgumentType &aValue)
css::uno::Any getValue(OUString const &key) const
TArgumentType getArgumentOrDefault(const OUString &sName, const TArgumentType &aDefault)
virtual ~TDialogImplBase()=default
virtual sal::systools::COMReference< IShellItemArray > getResult(bool bInExecute)
TDialogImplBase(IFileDialog *iDialog)
virtual void addFilePickerListener(const css::uno::Reference< css::ui::dialogs::XFilePickerListener > &xListener)
void stopListening()
stop listening for file picker events on the internally cached dialog COM object.
virtual void removeFilePickerListener(const css::uno::Reference< css::ui::dialogs::XFilePickerListener > &xListener)
void startListening(const TFileDialog &pBroadcaster)
start listening for file picker events on the given file open dialog COM object.
void impl_sta_enableFeatures(::sal_Int32 nFeatures, ::sal_Int32 nTemplate)
create all needed (optional!) UI controls addressed by the field nFeatures.
@ E_SET_MULTISELECTION_MODE
@ E_REMOVE_PICKER_LISTENER
css::uno::Sequence< OUString > m_lItems
void impl_sta_SetDefaultName(Request &rRequest)
implementation of request E_SET_DEFAULT_NAME
void impl_sta_CreateOpenDialog(Request &rRequest)
implementation of request E_CREATE_OPEN_DIALOG
void impl_sta_appendFilterGroup(Request &rRequest)
implementation of request E_APPEND_FILTERGROUP
void impl_sta_removeFilePickerListener(Request &rRequest)
implementation of request E_REMOVE_FILEPICKER_LISTENER
virtual void onDirectoryChanged() override
TFileDialog impl_getBaseDialogInterface()
void impl_sta_setCurrentFilter(Request &rRequest)
implementation of request E_SET_CURRENT_FILTER
virtual ~VistaFilePickerImpl()
void impl_sta_SetControlLabel(Request &rRequest)
implementation of request E_SET_CONTROL_LABEL
TFileDialogCustomize impl_getCustomizeInterface()
returns an interface, which can be used to customize the internally used COM dialog.
void impl_sta_SetControlValue(Request &rRequest)
implementation of request E_SET_CONTROL_VALUE
static void impl_sta_GetControlLabel(Request &rRequest)
implementation of request E_GET_CONTROL_LABEL
virtual void onAutoExtensionChanged(bool bChecked) override
virtual bool onFileTypeChanged(UINT nTypeIndex) override
void impl_sta_ShowDialogModal(Request &rRequest)
implementation of request E_SHOW_DIALOG_MODAL
void impl_sta_SetTitle(Request &rRequest)
implementation of request E_SET_TITLE
void impl_sta_appendFilter(Request &rRequest)
implementation of request E_APPEND_FILTER
void impl_sta_GetControlValue(Request &rRequest)
implementation of request E_GET_CONTROL_VALUE
void impl_sta_addFilePickerListener(Request &rRequest)
implementation of request E_ADD_FILEPICKER_LISTENER
void impl_sta_InitDialog(Request &rRequest, DWORD nOrFlags)
void impl_sta_getSelectedFiles(Request &rRequest)
implementation of request E_GET_SELECTED_FILES
void impl_sta_CreateSaveDialog(Request &rRequest)
implementation of request E_CREATE_SAVE_DIALOG
void impl_sta_CreateDialog()
void impl_sta_GetDirectory(Request &rRequest)
implementation of request E_GET_DIRECTORY
void impl_sta_EnableControl(Request &rRequest)
implementation of request E_ENABLE_CONTROL
void impl_SetDefaultExtension(const OUString ¤tFilter)
void impl_sta_getCurrentFilter(Request &rRequest)
implementation of request E_GET_CURRENT_FILTER
void impl_sta_SetDirectory(Request &rRequest)
implementation of request E_SET_DIRECTORY
void impl_sta_setFiltersOnDialog()
fill filter list of internal used dialog.
void doRequest(Request &rRequest)
std::shared_ptr< TDialogImplBase > m_pDialog
object representing a file dialog
void impl_sta_SetMultiSelectionMode(Request &rRequest)
implementation of request E_SET_MULTISELECTION_MODE
CFilterContainer m_lFilters
void impl_sta_CreateFolderPicker(Request &rRequest)
implementation of request E_CREATE_FOLDER_PICKER
void impl_sta_SetFileName(Request &rRequest)
implementation of request E_SET_FILENAME
TFileDialogEvents m_iEventHandler
help us to handle dialog events and provide them to interested office listener.
OUString FpsResId(TranslateId aId)
NSString * getResString(sal_Int32 aId)
css::uno::Sequence< DstElementType > containerToSequence(const SrcType &i_Container)
const GUID CLIENTID_FILEDIALOG_SIMPLE
const OUStringLiteral PROP_PICKER_LISTENER
const ::sal_Int32 FEATURE_READONLY
constexpr OUStringLiteral PROP_FILTER_GROUP(u"filter-group")
constexpr OUStringLiteral PROP_CONTROL_VALUE(u"control_value")
const GUID CLIENTID_FILESAVE_PASSWORD
constexpr OUStringLiteral PROP_FILTER_TITLE(u"filter_title")
sal::systools::COMReference< IFileOpenDialog > TFileOpenDialog
static void setLabelToControl(TFileDialogCustomize iCustom, sal_uInt16 nControlId)
TDialogImpl< TFileOpenDialog, CLSID_FileOpenDialog > TFolderPickerDialogImpl
const ::sal_Int32 FEATURE_VERSION
const GUID CLIENTID_FILESAVE_TEMPLATE
constexpr OUStringLiteral PROP_FILTER_VALUE(u"filter_value")
static void lcl_removeControlItemsWorkaround(const TFileDialogCustomize &iCustom, ::sal_Int16 nControlId)
const ::sal_Int32 FEATURE_SELECTION
sal::systools::COMReference< IFileDialogCustomize > TFileDialogCustomize
const ::sal_Int32 FEATURE_TEMPLATE
constexpr OUStringLiteral PROP_FEATURES(u"features")
constexpr OUStringLiteral PROP_TITLE(u"title")
const ::sal_Int32 FEATURE_FILTEROPTIONS
const GUID CLIENTID_FILEOPEN_LINK
const ::sal_Int32 GROUP_VERSION
constexpr OUStringLiteral PROP_CONTROL_LABEL(u"control_label")
const ::sal_Int32 FEATURE_PLAY
constexpr OUStringLiteral PROP_PARENT_WINDOW(u"ParentWindow")
const ::sal_Int32 GROUP_IMAGEANCHOR
TDialogImpl< TFileSaveDialog, CLSID_FileSaveDialog > TSaveDialogImpl
const ::sal_Int32 FEATURE_LINK
constexpr OUStringLiteral PROP_SELECTED_FILES(u"selected_files")
static OUString lcl_AdjustFilterName(const OUString &sName)
sal::systools::COMReference< IFileDialog > TFileDialog
static ::std::vector< COMDLG_FILTERSPEC > lcl_buildFilterList(CFilterContainer &rContainer, std::vector< OUString > &rvStrings)
const GUID CLIENTID_FILEOPEN_LINK_TEMPLATE
constexpr OUStringLiteral PROP_FILENAME(u"filename")
const ::sal_Int16 INVALID_CONTROL_ACTION
const ::sal_Int32 FEATURE_IMAGETEMPLATE
constexpr OUStringLiteral STRING_SEPARATOR(u"------------------------------------------")
const ::sal_Int32 GROUP_IMAGETEMPLATE
const ::sal_Int32 GROUP_TEMPLATE
const GUID CLIENTID_FILEOPEN_PLAY
const ::sal_Int32 FEATURE_AUTOEXTENSION
constexpr OUStringLiteral PROP_TEMPLATE_DESCR(u"templatedescription")
constexpr OUStringLiteral PROP_DIALOG_SHOW_RESULT(u"dialog_show_result")
static OUString lcl_getURLFromShellItem(IShellItem *pItem)
const GUID CLIENTID_FILEOPEN_LINK_ANCHOR
const ::sal_Int32 FEATURE_PASSWORD
const ::sal_Int32 FEATURE_IMAGEANCHOR
const ::sal_Int16 INVALID_CONTROL_ID
constexpr OUStringLiteral PROP_CONTROL_ACTION(u"control_action")
const GUID CLIENTID_FILEDIALOG_OPTIONS
const OUStringLiteral PROP_CONTROL_ID
const GUID CLIENTID_FILESAVE_SELECTION
constexpr OUStringLiteral PROP_MULTISELECTION_MODE(u"multiselection_mode")
const ::sal_Int32 FEATURE_GPGPASSWORD
constexpr OUStringLiteral PROP_DIRECTORY(u"directory")
const ::sal_Int32 GROUP_CHECKBOXES
constexpr OUStringLiteral PROP_CONTROL_ENABLE(u"control_enable")
std::basic_string_view< charT, traits > trim(std::basic_string_view< charT, traits > str)
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)
const wchar_t *typedef BOOL