diff options
author | Rüdiger Timm <rt@openoffice.org> | 2008-09-04 06:07:31 +0000 |
---|---|---|
committer | Rüdiger Timm <rt@openoffice.org> | 2008-09-04 06:07:31 +0000 |
commit | d0cc7ca3ed5e835e977edee9288a4c53dc44f4ac (patch) | |
tree | 1819f472eeeeb4eabf3c122c12baa2136675f283 /fpicker/source | |
parent | f1bbc22b1219a2598cae33651ad4b0065ed8593c (diff) |
INTEGRATION: CWS hotmac_DEV300 (1.4.16.1.6); FILE MERGED
2008/08/29 11:43:18 as 1.4.16.1.6.1: #i92438# handle AutoExtension toggle right
Diffstat (limited to 'fpicker/source')
-rw-r--r-- | fpicker/source/win32/filepicker/VistaFilePickerEventHandler.cxx | 32 | ||||
-rw-r--r-- | fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx | 31 |
2 files changed, 58 insertions, 5 deletions
diff --git a/fpicker/source/win32/filepicker/VistaFilePickerEventHandler.cxx b/fpicker/source/win32/filepicker/VistaFilePickerEventHandler.cxx index f21a764d7f0c..dd1e2c5b8def 100644 --- a/fpicker/source/win32/filepicker/VistaFilePickerEventHandler.cxx +++ b/fpicker/source/win32/filepicker/VistaFilePickerEventHandler.cxx @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: VistaFilePickerEventHandler.cxx,v $ - * $Revision: 1.5 $ + * $Revision: 1.6 $ * * This file is part of OpenOffice.org. * @@ -66,11 +66,12 @@ namespace vista{ //------------------------------------------------------------------------ //----------------------------------------------------------------------------------------- -VistaFilePickerEventHandler::VistaFilePickerEventHandler() +VistaFilePickerEventHandler::VistaFilePickerEventHandler(IVistaFilePickerInternalNotify* pInternalNotify) : m_nRefCount (0 ) , m_nListenerHandle (0 ) , m_pDialog ( ) , m_lListener (m_aMutex) + , m_pInternalNotify (pInternalNotify) { } @@ -120,7 +121,7 @@ ULONG STDMETHODCALLTYPE VistaFilePickerEventHandler::Release() } //----------------------------------------------------------------------------------------- -STDMETHODIMP VistaFilePickerEventHandler::OnFileOk(IFileDialog* pDialog) +STDMETHODIMP VistaFilePickerEventHandler::OnFileOk(IFileDialog* /*pDialog*/) { return E_NOTIMPL; } @@ -326,6 +327,31 @@ STDMETHODIMP VistaFilePickerEventHandler::OnCheckButtonToggled(IFileDialogCustom DWORD nIDCtl , BOOL bChecked ) { + /* + if (nIDCtl == css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION) + { + LPCWSTR lpFilterExt = 0; + if ( bChecked ) + { + UINT nIndex; + if (m_pDialog) + { + m_pDialog->GetFileTypeIndex( &nIndex ); + lpFilterExt = lFilters[nIndex].pszSpec; + lpFilterExt = wcschr( lpFilterExt, '.' ); + if ( lpFilterExt ) + lpFilterExt++; + } + } + + if (m_pDialog) + m_pDialog->SetDefaultExtension( lpFilterExt ); + } + */ + + if (nIDCtl == css::ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_AUTOEXTENSION) + m_pInternalNotify->onAutoExtensionChanged(bChecked); + impl_sendEvent(E_CONTROL_STATE_CHANGED, nIDCtl); return S_OK; } diff --git a/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx b/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx index f392942db781..c7a468ad5943 100644 --- a/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx +++ b/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: VistaFilePickerImpl.cxx,v $ - * $Revision: 1.5 $ + * $Revision: 1.6 $ * * This file is part of OpenOffice.org. * @@ -118,7 +118,7 @@ VistaFilePickerImpl::VistaFilePickerImpl() , m_hLastResult () , m_lFilters () , m_lLastFiles () - , m_iEventHandler(new VistaFilePickerEventHandler()) + , m_iEventHandler(new VistaFilePickerEventHandler(this)) , m_bInExecute (sal_False) { } @@ -892,6 +892,33 @@ void VistaFilePickerImpl::impl_sta_EnableControl(const RequestRef& rRequest) iCustom->SetControlState(nId, eState); } +//------------------------------------------------------------------------------- +void VistaFilePickerImpl::onAutoExtensionChanged (bool bChecked) +{ + // SYNCHRONIZED-> + ::osl::ResettableMutexGuard aLock(m_aMutex); + + const ::rtl::OUString sFilter = m_lFilters.getCurrentFilter (); + ::rtl::OUString sExt ; + if ( !m_lFilters.getFilter (sFilter, sExt)) + return; + + TFileDialog iDialog = impl_getBaseDialogInterface(); + + aLock.clear(); + // <- SYNCHRONIZED + + LPCWSTR pExt = 0; + if ( bChecked ) + { + pExt = reinterpret_cast<LPCTSTR>(sExt.getStr()); + pExt = wcschr( pExt, '.' ); + if ( pExt ) + pExt++; + } + iDialog->SetDefaultExtension( pExt ); +} + } // namespace vista } // namespace win32 } // namespace fpicker |