diff options
author | Szymon Kłos <eszkadev@gmail.com> | 2015-07-13 14:29:09 +0200 |
---|---|---|
committer | Szymon Kłos <eszkadev@gmail.com> | 2015-07-16 09:53:52 +0200 |
commit | 2239b486bffaeffafc24ed1b135aa70f3cdd8b1a (patch) | |
tree | 916b021e45487e9f55e2051b3f5a4d23ef76b60c /svtools | |
parent | 1abade4f92a6d1c70ab3e333770e1cb242f29063 (diff) |
RemoteFilesDialog moved to fpicker
Change-Id: I8e978d40ee022d15f482aec4567c3171b75b9720
Diffstat (limited to 'svtools')
-rw-r--r-- | svtools/Library_svt.mk | 1 | ||||
-rw-r--r-- | svtools/source/dialogs/RemoteFilesDialog.cxx | 951 |
2 files changed, 0 insertions, 952 deletions
diff --git a/svtools/Library_svt.mk b/svtools/Library_svt.mk index 20a4c2ff2bb8..f6c834da9765 100644 --- a/svtools/Library_svt.mk +++ b/svtools/Library_svt.mk @@ -139,7 +139,6 @@ $(eval $(call gb_Library_add_exception_objects,svt,\ svtools/source/dialogs/mcvmath \ svtools/source/dialogs/PlaceEditDialog \ svtools/source/dialogs/prnsetup \ - svtools/source/dialogs/RemoteFilesDialog \ svtools/source/dialogs/restartdialog \ svtools/source/dialogs/roadmapwizard \ svtools/source/dialogs/ServerDetailsControls \ diff --git a/svtools/source/dialogs/RemoteFilesDialog.cxx b/svtools/source/dialogs/RemoteFilesDialog.cxx deleted file mode 100644 index 2eea4599ff2c..000000000000 --- a/svtools/source/dialogs/RemoteFilesDialog.cxx +++ /dev/null @@ -1,951 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -#include <svtools/RemoteFilesDialog.hxx> - -class FileViewContainer : public vcl::Window -{ - private: - VclPtr< SvtFileView > m_pFileView; - VclPtr< FolderTree > m_pTreeView; - VclPtr< Splitter > m_pSplitter; - - int m_nCurrentFocus; - vcl::Window* m_pFocusWidgets[4]; - - public: - FileViewContainer( vcl::Window *pParent ) - : Window( pParent, WB_TABSTOP ) - , m_pFileView( NULL ) - , m_pTreeView( NULL ) - , m_pSplitter( NULL ) - { - } - - virtual ~FileViewContainer() - { - disposeOnce(); - } - - virtual void dispose() SAL_OVERRIDE - { - m_pFileView.clear(); - m_pSplitter.clear(); - vcl::Window::dispose(); - } - - void init( SvtFileView* pFileView, - Splitter* pSplitter, - FolderTree* pTreeView, - vcl::Window* pPrevSibling, - vcl::Window* pNextSibling ) - { - m_pFileView = pFileView; - m_pTreeView = pTreeView; - m_pSplitter = pSplitter; - m_pFocusWidgets[0] = pPrevSibling; - m_pFocusWidgets[1] = pTreeView; - m_pFocusWidgets[2] = pFileView; - m_pFocusWidgets[3] = pNextSibling; - } - - virtual void Resize() SAL_OVERRIDE - { - Window::Resize(); - - if( !m_pFileView || !m_pTreeView ) - return; - - Size aSize = GetSizePixel(); - Point aPos( m_pFileView->GetPosPixel() ); - Size aNewSize( aSize.Width() - aPos.X(), aSize.Height() ); - - m_pFileView->SetSizePixel( aNewSize ); - - // Resize the Splitter to fit the height - Size splitterNewSize = m_pSplitter->GetSizePixel(); - splitterNewSize.Height() = aSize.Height(); - m_pSplitter->SetSizePixel( splitterNewSize ); - sal_Int32 nMinX = m_pTreeView->GetPosPixel().X(); - sal_Int32 nMaxX = m_pFileView->GetPosPixel().X() + m_pFileView->GetSizePixel().Width() - nMinX; - m_pSplitter->SetDragRectPixel( Rectangle( Point( nMinX, 0 ), Size( nMaxX, aSize.Width() ) ) ); - - // Resize the tree list box to fit the height of the FileView - Size placesNewSize( m_pTreeView->GetSizePixel() ); - placesNewSize.Height() = aSize.Height(); - m_pTreeView->SetSizePixel( placesNewSize ); - } - - void changeFocus( bool bReverse ) - { - if( !m_pFileView || !m_pTreeView ) - return; - - if( !bReverse && m_nCurrentFocus < 4 ) - { - m_pFocusWidgets[++m_nCurrentFocus]->SetFakeFocus( true ); - m_pFocusWidgets[m_nCurrentFocus]->GrabFocus(); - } - else if( m_nCurrentFocus > 0 ) - { - m_pFocusWidgets[--m_nCurrentFocus]->SetFakeFocus( true ); - m_pFocusWidgets[m_nCurrentFocus]->GrabFocus(); - } - } - - virtual void GetFocus() SAL_OVERRIDE - { - if( !m_pFileView || !m_pTreeView ) - return; - - m_nCurrentFocus = 1; - m_pFocusWidgets[m_nCurrentFocus]->SetFakeFocus( true ); - m_pFocusWidgets[m_nCurrentFocus]->GrabFocus(); - } - - virtual bool Notify( NotifyEvent& rNEvt ) - { - if( rNEvt.GetType() == MouseNotifyEvent::KEYINPUT ) - { - const KeyEvent* pKeyEvent = rNEvt.GetKeyEvent(); - const vcl::KeyCode& rCode = pKeyEvent->GetKeyCode(); - bool bShift = rCode.IsShift(); - if( rCode.GetCode() == KEY_TAB ) - { - changeFocus( bShift ); - return true; - } - } - return Window::Notify( rNEvt ); - } -}; - -RemoteFilesDialog::RemoteFilesDialog( vcl::Window* pParent, WinBits nBits ) - : SvtFileDialog_Base( pParent, "RemoteFilesDialog", "svt/ui/remotefilesdialog.ui" ) - , m_context( comphelper::getProcessComponentContext() ) - , m_pSplitter( NULL ) - , m_pFileView( NULL ) - , m_pContainer( NULL ) -{ - get( m_pCancel_btn, "cancel" ); - get( m_pAddService_btn, "add_service_btn" ); - get( m_pServices_lb, "services_lb" ); - get( m_pFilter_lb, "filter_lb" ); - get( m_pName_ed, "name_ed" ); - - m_eMode = ( nBits & WB_SAVEAS ) ? REMOTEDLG_MODE_SAVE : REMOTEDLG_MODE_OPEN; - m_eType = ( nBits & WB_PATH ) ? REMOTEDLG_TYPE_PATHDLG : REMOTEDLG_TYPE_FILEDLG; - m_bMultiselection = ( nBits & SFXWB_MULTISELECTION ) ? true : false; - m_bIsUpdated = false; - m_bIsConnected = false; - m_nCurrentFilter = LISTBOX_ENTRY_NOTFOUND; - - m_pFilter_lb->Enable( false ); - m_pName_ed->Enable( false ); - - if( m_eMode == REMOTEDLG_MODE_OPEN ) - get( m_pOk_btn, "open" ); - else - get( m_pOk_btn, "save" ); - - m_pOk_btn->Show(); - m_pOk_btn->Enable( false ); - - m_pOk_btn->SetClickHdl( LINK( this, RemoteFilesDialog, OkHdl ) ); - - m_pPath = VclPtr<Breadcrumb>::Create( get< vcl::Window >( "breadcrumb_container" ) ); - m_pPath->set_hexpand( true ); - m_pPath->SetClickHdl( LINK( this, RemoteFilesDialog, SelectBreadcrumbHdl ) ); - m_pPath->SetMode( SvtBreadcrumbMode::ALL_VISITED ); - m_pPath->Show(); - - m_pContainer = VclPtr< FileViewContainer >::Create( get< vcl::Window >("container") ); - - m_pContainer->set_hexpand( true ); - m_pContainer->set_vexpand( true ); - - m_pFileView = VclPtr< SvtFileView >::Create( m_pContainer, WB_BORDER | WB_TABSTOP, - REMOTEDLG_TYPE_PATHDLG == m_eType, - m_bMultiselection ); - - m_pFileView->Show(); - m_pFileView->EnableAutoResize(); - m_pFileView->SetDoubleClickHdl( LINK( this, RemoteFilesDialog, DoubleClickHdl ) ); - m_pFileView->SetSelectHdl( LINK( this, RemoteFilesDialog, SelectHdl ) ); - - m_pSplitter = VclPtr< Splitter >::Create( m_pContainer, WB_HSCROLL ); - m_pSplitter->SetBackground( Wallpaper( Application::GetSettings().GetStyleSettings().GetFaceColor() ) ); - m_pSplitter->SetSplitHdl( LINK( this, RemoteFilesDialog, SplitHdl ) ); - m_pSplitter->Show(); - - m_pTreeView = VclPtr< FolderTree >::Create( m_pContainer, WB_BORDER ); - Size aSize( 100, 200 ); - m_pTreeView->set_height_request( aSize.Height() ); - m_pTreeView->set_width_request( aSize.Width() ); - m_pTreeView->SetSizePixel( aSize ); - m_pTreeView->Show(); - - m_pTreeView->SetSelectHdl( LINK( this, RemoteFilesDialog, TreeSelectHdl ) ); - - sal_Int32 nPosX = m_pTreeView->GetSizePixel().Width(); - m_pSplitter->SetPosPixel( Point( nPosX, 0 ) ); - nPosX += m_pSplitter->GetSizePixel().Width(); - m_pFileView->SetPosPixel( Point( nPosX, 0 ) ); - - m_pContainer->init( m_pFileView, m_pSplitter, m_pTreeView, m_pAddService_btn, m_pFilter_lb ); - m_pContainer->Show(); - m_pContainer->Enable( false ); - - m_pName_ed->SetGetFocusHdl( LINK( this, RemoteFilesDialog, FileNameGetFocusHdl ) ); - m_pName_ed->SetModifyHdl( LINK( this, RemoteFilesDialog, FileNameModifyHdl ) ); - - m_pAddService_btn->SetMenuMode( MENUBUTTON_MENUMODE_TIMED ); - m_pAddService_btn->SetClickHdl( LINK( this, RemoteFilesDialog, AddServiceHdl ) ); - m_pAddService_btn->SetSelectHdl( LINK( this, RemoteFilesDialog, EditServiceMenuHdl ) ); - - FillServicesListbox(); - - m_pServices_lb->SetSelectHdl( LINK( this, RemoteFilesDialog, SelectServiceHdl ) ); - - m_pFilter_lb->SetSelectHdl( LINK( this, RemoteFilesDialog, SelectFilterHdl ) ); -} - -RemoteFilesDialog::~RemoteFilesDialog() -{ - disposeOnce(); -} - -void RemoteFilesDialog::dispose() -{ - m_pFileView->SetSelectHdl( Link<>() ); - - if( m_bIsUpdated ) - { - Sequence< OUString > placesUrlsList( m_aServices.size() ); - Sequence< OUString > placesNamesList( m_aServices.size() ); - - int i = 0; - for( std::vector< ServicePtr >::const_iterator it = m_aServices.begin(); it != m_aServices.end(); ++it ) - { - placesUrlsList[i] = ( *it )->GetUrl(); - placesNamesList[i] = ( *it )->GetName(); - ++i; - } - - std::shared_ptr< comphelper::ConfigurationChanges > batch( comphelper::ConfigurationChanges::create( m_context ) ); - officecfg::Office::Common::Misc::FilePickerPlacesUrls::set( placesUrlsList, batch ); - officecfg::Office::Common::Misc::FilePickerPlacesNames::set( placesNamesList, batch ); - batch->commit(); - } - - m_pContainer.disposeAndClear(); // container must be first! - m_pTreeView.disposeAndClear(); - m_pFileView.disposeAndClear(); - m_pSplitter.disposeAndClear(); - m_pPath.disposeAndClear(); - - m_pOk_btn.clear(); - m_pCancel_btn.clear(); - m_pAddService_btn.clear(); - m_pServices_lb.clear(); - m_pFilter_lb.clear(); - m_pName_ed.clear(); - - ModalDialog::dispose(); -} - -void RemoteFilesDialog::Resize() -{ - ModalDialog::Resize(); - - if( m_pFileView && m_pContainer ) - { - Size aSize = m_pContainer->GetSizePixel(); - m_pFileView->SetSizePixel( aSize ); - } -} - -OUString lcl_GetServiceType( ServicePtr pService ) -{ - INetProtocol aProtocol = pService->GetUrlObject().GetProtocol(); - switch( aProtocol ) - { - case INetProtocol::Ftp: - return OUString( "FTP" ); - case INetProtocol::Cmis: - { - OUString sHost = pService->GetUrlObject().GetHost( INetURLObject::DECODE_WITH_CHARSET ); - - if( sHost.startsWith( GDRIVE_BASE_URL ) ) - return OUString( "Google Drive" ); - else if( sHost.startsWith( ALFRESCO_CLOUD_BASE_URL ) ) - return OUString( "Alfresco Cloud" ); - else if( sHost.startsWith( ONEDRIVE_BASE_URL ) ) - return OUString( "OneDrive" ); - - return OUString( "CMIS" ); - } - case INetProtocol::Smb: - return OUString( "Windows Share" ); - case INetProtocol::File: - return OUString( "SSH" ); - case INetProtocol::Http: - return OUString( "WebDAV" ); - case INetProtocol::Https: - return OUString( "WebDAV" ); - case INetProtocol::Generic: - return OUString( "SSH" ); - default: - return OUString( "" ); - } -} - -void RemoteFilesDialog::FillServicesListbox() -{ - m_pServices_lb->Clear(); - m_aServices.clear(); - - // Load from user settings - Sequence< OUString > placesUrlsList( officecfg::Office::Common::Misc::FilePickerPlacesUrls::get( m_context ) ); - Sequence< OUString > placesNamesList( officecfg::Office::Common::Misc::FilePickerPlacesNames::get( m_context ) ); - - for( sal_Int32 nPlace = 0; nPlace < placesUrlsList.getLength() && nPlace < placesNamesList.getLength(); ++nPlace ) - { - ServicePtr pService( new Place( placesNamesList[nPlace], placesUrlsList[nPlace], true ) ); - m_aServices.push_back( pService ); - - // Add to the listbox only remote services, not local bookmarks - if( !pService->IsLocal() ) - { - OUString sPrefix = lcl_GetServiceType( pService ); - - if( !sPrefix.isEmpty() ) - sPrefix += ": "; - - m_pServices_lb->InsertEntry( sPrefix + placesNamesList[nPlace] ); - } - } - - if( m_pServices_lb->GetEntryCount() > 0 ) - m_pServices_lb->SelectEntryPos( 0 ); - - EnableControls(); -} - -int RemoteFilesDialog::GetSelectedServicePos() -{ - int nSelected = m_pServices_lb->GetSelectEntryPos(); - int nPos = 0; - int i = -1; - - if( m_aServices.size() == 0 ) - return -1; - - while( nPos < ( int )m_aServices.size() ) - { - while( m_aServices[nPos]->IsLocal() ) - nPos++; - i++; - if( i == nSelected ) - break; - nPos++; - } - - return nPos; -} - -void RemoteFilesDialog::AddFilter( const OUString& rFilter, const OUString& rType ) -{ - OUString sName = rFilter; - - if ( rType.isEmpty() ) - sName = "------------------------------------------"; - - m_aFilters.push_back( std::pair< OUString, OUString >( rFilter, rType ) ); - m_pFilter_lb->InsertEntry( sName ); - - if( m_pFilter_lb->GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND ) - m_pFilter_lb->SelectEntryPos( 0 ); -} - -OUString RemoteFilesDialog::GetPath() const -{ - return m_sPath; -} - -FileViewResult RemoteFilesDialog::OpenURL( OUString sURL ) -{ - FileViewResult eResult = eFailure; - - if( m_pFileView ) - { - OUString sFilter = FILEDIALOG_FILTER_ALL; - - if( m_nCurrentFilter != LISTBOX_ENTRY_NOTFOUND ) - { - sFilter = m_aFilters[m_nCurrentFilter].second; - } - - m_pFileView->EndInplaceEditing( false ); - eResult = m_pFileView->Initialize( sURL, sFilter, NULL, GetBlackList() ); - - if( eResult == eSuccess ) - { - m_pPath->SetURL( sURL ); - m_pTreeView->SetTreePath( sURL ); - - m_bIsConnected = true; - EnableControls(); - } - } - - return eResult; -} - -void RemoteFilesDialog::AddFileExtension() -{ - if( m_nCurrentFilter != LISTBOX_ENTRY_NOTFOUND ) - { - OUString sExt = m_aFilters[m_nCurrentFilter].second; - OUString sFileName = m_pName_ed->GetText(); - - sal_Int32 nDotPos = sFileName.lastIndexOf( '.' ); - - if ( nDotPos == -1 ) - { - sFileName += sExt.copy( 1 ); // without '*' - m_pName_ed->SetText( sFileName ); - } - } -} - -void RemoteFilesDialog::EnableControls() -{ - if( m_pServices_lb->GetEntryCount() > 0 ) - m_pServices_lb->Enable( true ); - else - m_pServices_lb->Enable( false ); - - if( m_bIsConnected ) - { - m_pFilter_lb->Enable( true ); - m_pName_ed->Enable( true ); - m_pContainer->Enable( true ); - - if( !m_pName_ed->GetText().isEmpty() ) - m_pOk_btn->Enable( true ); - else - m_pOk_btn->Enable( false ); - } - else - { - m_pFilter_lb->Enable( false ); - m_pName_ed->Enable( false ); - m_pContainer->Enable( false ); - m_pOk_btn->Enable( false ); - } -} - -IMPL_LINK_NOARG ( RemoteFilesDialog, AddServiceHdl ) -{ - ScopedVclPtrInstance< PlaceEditDialog > aDlg( this ); - short aRetCode = aDlg->Execute(); - - switch( aRetCode ) - { - case RET_OK : - { - ServicePtr newService = aDlg->GetPlace(); - m_aServices.push_back( newService ); - - OUString sPrefix = lcl_GetServiceType( newService ); - - if(!sPrefix.isEmpty()) - sPrefix += ": "; - - m_pServices_lb->InsertEntry( sPrefix + newService->GetName() ); - m_pServices_lb->SelectEntryPos( m_pServices_lb->GetEntryCount() - 1 ); - - m_bIsUpdated = true; - - EnableControls(); - break; - } - case RET_CANCEL : - default : - // Do Nothing - break; - }; - - return 1; -} - -IMPL_LINK_NOARG ( RemoteFilesDialog, SelectServiceHdl ) -{ - int nPos = GetSelectedServicePos(); - - if( nPos >= 0 ) - { - OUString sURL = m_aServices[nPos]->GetUrl(); - OUString sName = m_aServices[nPos]->GetName(); - - if( OpenURL( sURL ) == eSuccess ) - { - m_pPath->SetRootName( sName ); - m_pTreeView->Clear(); - - SvTreeListEntry* pRoot = m_pTreeView->InsertEntry( sName, NULL, true ); - OUString* sData = new OUString( sURL ); - pRoot->SetUserData( static_cast< void* >( sData ) ); - - m_pTreeView->Expand( pRoot ); - - m_pName_ed->GrabFocus(); - } - } - - return 1; -} - -IMPL_LINK_TYPED ( RemoteFilesDialog, EditServiceMenuHdl, MenuButton *, pButton, void ) -{ - OString sIdent( pButton->GetCurItemIdent() ); - if( sIdent == "edit_service" && m_pServices_lb->GetEntryCount() > 0 ) - { - unsigned int nSelected = m_pServices_lb->GetSelectEntryPos(); - int nPos = GetSelectedServicePos(); - - if( nPos >= 0 ) - { - ScopedVclPtrInstance< PlaceEditDialog > aDlg( this, m_aServices[nPos] ); - short aRetCode = aDlg->Execute(); - - switch( aRetCode ) - { - case RET_OK : - { - ServicePtr pEditedService = aDlg->GetPlace(); - - m_aServices[nPos] = pEditedService; - m_pServices_lb->RemoveEntry( nSelected ); - - OUString sPrefix = lcl_GetServiceType( pEditedService ); - - if(!sPrefix.isEmpty()) - sPrefix += ": "; - - m_pServices_lb->InsertEntry( sPrefix + pEditedService->GetName(), nSelected ); - m_pServices_lb->SelectEntryPos( nSelected ); - - m_bIsUpdated = true; - break; - } - case RET_CANCEL : - default : - // Do Nothing - break; - }; - } - } - else if( sIdent == "delete_service" && m_pServices_lb->GetEntryCount() > 0 ) - { - unsigned int nSelected = m_pServices_lb->GetSelectEntryPos(); - int nPos = GetSelectedServicePos(); - - if( nPos >= 0 ) - { - // TODO: Confirm dialog - - m_aServices.erase( m_aServices.begin() + nPos ); - m_pServices_lb->RemoveEntry( nSelected ); - - if( m_pServices_lb->GetEntryCount() > 0 ) - { - m_pServices_lb->SelectEntryPos( 0 ); - } - else - { - m_pServices_lb->SetNoSelection(); - } - - m_bIsUpdated = true; - } - } - - EnableControls(); -} - -IMPL_LINK_NOARG ( RemoteFilesDialog, DoubleClickHdl ) -{ - SvTreeListEntry* pEntry = m_pFileView->FirstSelected(); - - if( pEntry ) - { - SvtContentEntry* pData = static_cast< SvtContentEntry* >( pEntry->GetUserData() ); - - if( pData ) - { - if( pData->mbIsFolder ) - { - OUString sURL = m_pFileView->GetCurrentURL(); - - OpenURL( sURL ); - } - else - { - EndDialog( RET_OK ); - } - } - } - - return 1; -} - -IMPL_LINK_NOARG ( RemoteFilesDialog, SelectHdl ) -{ - SvTreeListEntry* pEntry = m_pFileView->FirstSelected(); - SvtContentEntry* pData = static_cast< SvtContentEntry* >( pEntry->GetUserData() ); - - if( ( pData->mbIsFolder && ( m_eType == REMOTEDLG_TYPE_PATHDLG ) ) - || ( !pData->mbIsFolder && ( m_eType == REMOTEDLG_TYPE_FILEDLG ) ) ) - { - INetURLObject aURL( pData->maURL ); - m_sPath = pData->maURL; - - m_pName_ed->SetText( INetURLObject::decode( aURL.GetLastName(), INetURLObject::DECODE_WITH_CHARSET ) ); - } - else - { - m_sPath = ""; - m_pName_ed->SetText( "" ); - } - - EnableControls(); - - return 1; -} - -IMPL_LINK_NOARG( RemoteFilesDialog, FileNameGetFocusHdl ) -{ - m_pFileView->SetNoSelection(); - return 1; -} - -IMPL_LINK_NOARG( RemoteFilesDialog, FileNameModifyHdl ) -{ - m_pFileView->SetNoSelection(); - EnableControls(); - - return 1; -} - -IMPL_LINK_NOARG ( RemoteFilesDialog, SplitHdl ) -{ - sal_Int32 nSplitPos = m_pSplitter->GetSplitPosPixel(); - - // Resize the tree list box - sal_Int32 nPlaceX = m_pTreeView->GetPosPixel().X(); - Size placeSize = m_pTreeView->GetSizePixel(); - placeSize.Width() = nSplitPos - nPlaceX; - m_pTreeView->SetSizePixel( placeSize ); - - // Change Pos and size of the fileview - Point fileViewPos = m_pFileView->GetPosPixel(); - sal_Int32 nOldX = fileViewPos.X(); - sal_Int32 nNewX = nSplitPos + m_pSplitter->GetSizePixel().Width(); - fileViewPos.X() = nNewX; - Size fileViewSize = m_pFileView->GetSizePixel(); - fileViewSize.Width() -= ( nNewX - nOldX ); - m_pFileView->SetPosSizePixel( fileViewPos, fileViewSize ); - - m_pSplitter->SetPosPixel( Point( placeSize.Width(), m_pSplitter->GetPosPixel().Y() ) ); - - return 1; -} - -IMPL_LINK_NOARG ( RemoteFilesDialog, SelectFilterHdl ) -{ - unsigned int nPos = m_pFilter_lb->GetSelectEntryPos(); - - if( nPos != LISTBOX_ENTRY_NOTFOUND && !m_aFilters[nPos].second.isEmpty() ) - { - m_nCurrentFilter = nPos; - - OUString sCurrentURL = m_pFileView->GetViewURL(); - - if( !sCurrentURL.isEmpty() ) - OpenURL( sCurrentURL ); - } - - return 1; -} - -IMPL_LINK ( RemoteFilesDialog, TreeSelectHdl, FolderTree *, pBox ) -{ - OUString* sURL = static_cast< OUString* >( pBox->GetHdlEntry()->GetUserData() ); - - if( sURL ) - OpenURL( *sURL ); - - return 1; -} - -IMPL_LINK ( RemoteFilesDialog, SelectBreadcrumbHdl, Breadcrumb*, pPtr ) -{ - if( pPtr ) - { - OpenURL( pPtr->GetHdlURL() ); - } - - return 1; -} - -IMPL_LINK_NOARG ( RemoteFilesDialog, OkHdl ) -{ - // auto extension - if( m_eMode == REMOTEDLG_MODE_SAVE ) - AddFileExtension(); - - // check if file/path exists - - OUString sCurrentPath = m_pFileView->GetViewURL(); - OUString sSelectedItem = m_pFileView->GetCurrentURL(); - OUString sName = m_pName_ed->GetText(); - - bool bFileDlg = ( m_eType == REMOTEDLG_TYPE_FILEDLG ); - bool bSelected = ( m_pFileView->GetSelectionCount() > 0 ); - - if( !sCurrentPath.endsWith( OUString( "/" ) ) ) - sCurrentPath += OUString( "/" ); - - if( !bSelected ) - { - m_sPath = sCurrentPath + INetURLObject::encode( sName, INetURLObject::PART_FPATH, INetURLObject::ENCODE_ALL ); - } - else - { - if( m_eType == REMOTEDLG_TYPE_PATHDLG ) - m_sPath = sCurrentPath; - else - m_sPath = sSelectedItem; - } - - bool bExists = false; - - Reference< XComponentContext > xContext = ::comphelper::getProcessComponentContext(); - Reference< XInteractionHandler > xInteractionHandler( - InteractionHandler::createWithParent( xContext, 0 ), UNO_QUERY_THROW ); - Reference< XCommandEnvironment > xEnv = new ::ucbhelper::CommandEnvironment( - xInteractionHandler, Reference< XProgressHandler >() ); - ::ucbhelper::Content m_aContent( m_sPath, xEnv, xContext ); - - try - { - if( bFileDlg ) - bExists = m_aContent.isDocument(); - else - bExists = m_aContent.isFolder(); - } - catch( const Exception& ) - { - bExists = false; - } - - if ( !bExists ) - { - if( m_eMode == REMOTEDLG_MODE_OPEN ) - return 0; - } - - EndDialog( RET_OK ); - return 1; -} - -// SvtFileDialog_Base - -SvtFileView* RemoteFilesDialog::GetView() -{ - return m_pFileView; -} - -void RemoteFilesDialog::SetHasFilename( bool ) -{ -} - -void RemoteFilesDialog::SetBlackList( const ::com::sun::star::uno::Sequence< OUString >& rBlackList ) -{ - m_aBlackList = rBlackList; - m_pTreeView->SetBlackList( rBlackList ); -} - -const ::com::sun::star::uno::Sequence< OUString >& RemoteFilesDialog::GetBlackList() const -{ - return m_aBlackList; -} - -void RemoteFilesDialog::SetStandardDir( const OUString& rStdDir ) -{ - m_sStdDir = rStdDir; -} - -const OUString& RemoteFilesDialog::GetStandardDir() const -{ - return m_sStdDir; -} - -void RemoteFilesDialog::SetPath( const OUString& rNewURL ) -{ - m_sPath = rNewURL; - - if( m_eMode == REMOTEDLG_MODE_SAVE ) - { - INetURLObject aUrl( m_sPath ); - OUString sFileName = aUrl.GetLastName( INetURLObject::DECODE_WITH_CHARSET ); - - m_pName_ed->SetText( sFileName ); - } -} - -void RemoteFilesDialog::AddFilterGroup( - const OUString& rFilter, - const com::sun::star::uno::Sequence< com::sun::star::beans::StringPair >& rFilters ) -{ - AddFilter( rFilter, OUString() ); - const StringPair* pSubFilters = rFilters.getConstArray(); - const StringPair* pSubFiltersEnd = pSubFilters + rFilters.getLength(); - for ( ; pSubFilters != pSubFiltersEnd; ++pSubFilters ) - AddFilter( pSubFilters->First, pSubFilters->Second ); -} - -OUString RemoteFilesDialog::GetCurFilter() const -{ - OUString sFilter; - - if( m_nCurrentFilter != LISTBOX_ENTRY_NOTFOUND ) - { - sFilter = m_aFilters[m_nCurrentFilter].first; - } - - return sFilter; -} - -OUString RemoteFilesDialog::getCurFilter( ) const -{ - return GetCurFilter(); -} - -void RemoteFilesDialog::SetCurFilter( const OUString& rFilter ) -{ - DBG_ASSERT( !IsInExecute(), "SvtFileDialog::SetCurFilter: currently executing!" ); - - // look for corresponding filter - sal_uInt16 nPos = m_aFilters.size(); - - while ( nPos-- ) - { - if ( m_aFilters[nPos].first == rFilter ) - { - m_nCurrentFilter = nPos; - m_pFilter_lb->SelectEntryPos( m_nCurrentFilter ); - break; - } - } -} - -void RemoteFilesDialog::SetFileCallback( ::svt::IFilePickerListener *pNotifier ) -{ - m_pFileNotifier = pNotifier; -} - -void RemoteFilesDialog::EnableAutocompletion( bool ) -{ - // This dialog contains Breadcrumb, not Edit -} - -const OUString& RemoteFilesDialog::GetPath() -{ - return m_sPath; -} - -std::vector<OUString> RemoteFilesDialog::GetPathList() const -{ - std::vector<OUString> aList; - sal_uLong nCount = m_pFileView->GetSelectionCount(); - SvTreeListEntry* pEntry = nCount ? m_pFileView->FirstSelected() : NULL; - - while( pEntry ) - { - aList.push_back( SvtFileView::GetURL( pEntry ) ); - pEntry = m_pFileView->NextSelected( pEntry ); - } - - if( aList.size() == 0 && !m_sPath.isEmpty() ) - aList.push_back( m_sPath ); - - return aList; -} - -bool RemoteFilesDialog::ContentIsFolder( const OUString& rURL ) -{ - try - { - Reference< XComponentContext > xContext = ::comphelper::getProcessComponentContext(); - Reference< XInteractionHandler > xInteractionHandler( - InteractionHandler::createWithParent( xContext, 0 ), UNO_QUERY_THROW ); - Reference< XCommandEnvironment > xEnv = new ::ucbhelper::CommandEnvironment( xInteractionHandler, Reference< XProgressHandler >() ); - ::ucbhelper::Content aContent( rURL, xEnv, xContext ); - - return aContent.isFolder(); - } - catch( const Exception& ) - { - // a content doesn't exist - } - - return false; -} - -sal_Int32 RemoteFilesDialog::getTargetColorDepth() -{ - // This dialog doesn't contain preview - return 0; -} - -sal_Int32 RemoteFilesDialog::getAvailableWidth() -{ - // This dialog doesn't contain preview - return 0; -} - -sal_Int32 RemoteFilesDialog::getAvailableHeight() -{ - // This dialog doesn't contain preview - return 0; -} - -void RemoteFilesDialog::setImage( sal_Int16, const ::com::sun::star::uno::Any& ) -{ - // This dialog doesn't contain preview -} - -bool RemoteFilesDialog::getShowState() -{ - // This dialog doesn't contain preview - return false; -} - -Control* RemoteFilesDialog::getControl( sal_Int16, bool) const -{ - return NULL; -} -void RemoteFilesDialog::enableControl( sal_Int16, bool ) -{ -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |