include/svtools/RemoteFilesDialog.hxx | 1 svtools/source/control/breadcrumb.cxx | 2 svtools/source/dialogs/RemoteFilesDialog.cxx | 108 ++++++++++++++++++--------- 3 files changed, 74 insertions(+), 37 deletions(-)
New commits: commit db5669304c26b7d4d90ac001b35ee34c94c4d859 Author: Szymon KÅos <eszka...@gmail.com> Date: Wed Jun 24 13:13:02 2015 +0200 RemoteFilesDialog: SvTreeListBox shows the current path Change-Id: Ib8873fe7f97dd1b46752fc2dee433be72621a93e diff --git a/include/svtools/RemoteFilesDialog.hxx b/include/svtools/RemoteFilesDialog.hxx index c6bf8d8..c437e1e 100644 --- a/include/svtools/RemoteFilesDialog.hxx +++ b/include/svtools/RemoteFilesDialog.hxx @@ -114,6 +114,7 @@ private: FileViewResult OpenURL( OUString sURL ); void fillTreeEntry( SvTreeListEntry* pParent ); + void setTreePath( OUString sPath ); DECL_LINK ( AddServiceHdl, void * ); DECL_LINK ( SelectServiceHdl, void * ); diff --git a/svtools/source/dialogs/RemoteFilesDialog.cxx b/svtools/source/dialogs/RemoteFilesDialog.cxx index 8bba8fe..0d4541b 100644 --- a/svtools/source/dialogs/RemoteFilesDialog.cxx +++ b/svtools/source/dialogs/RemoteFilesDialog.cxx @@ -198,7 +198,7 @@ RemoteFilesDialog::RemoteFilesDialog(vcl::Window* pParent, WinBits nBits) m_pTreeView->SetDefaultExpandedEntryBmp(m_aFolderImage); m_pTreeView->SetSelectHdl( LINK( this, RemoteFilesDialog, TreeSelectHdl ) ); - m_pTreeView->SetExpandedHdl( LINK( this, RemoteFilesDialog, TreeExpandHdl ) ); + m_pTreeView->SetExpandingHdl( LINK( this, RemoteFilesDialog, TreeExpandHdl ) ); sal_Int32 nPosX = m_pTreeView->GetSizePixel().Width(); m_pSplitter->SetPosPixel(Point(nPosX, 0)); @@ -403,6 +403,7 @@ FileViewResult RemoteFilesDialog::OpenURL( OUString sURL ) if( eResult == eSuccess ) { m_pPath->SetURL( sURL ); + setTreePath( sURL ); m_pFilter_lb->Enable( true ); m_pName_ed->Enable( true ); m_pContainer->Enable( true ); @@ -414,58 +415,93 @@ FileViewResult RemoteFilesDialog::OpenURL( OUString sURL ) void RemoteFilesDialog::fillTreeEntry( SvTreeListEntry* pParent ) { - if( pParent && m_pTreeView->IsExpanded( pParent ) ) + if( pParent && !m_pTreeView->IsExpanded( pParent ) ) { - // remove childs + // fill only empty entries - containing only dummy entry + if( m_pTreeView->GetChildCount( pParent ) == 1 && pParent->GetUserData() ) + { + ::std::vector< SortingData_Impl* > aContent; - SvTreeList* pModel = m_pTreeView->GetModel(); + FileViewContentEnumerator* pContentEnumerator = new FileViewContentEnumerator( + m_xEnv, aContent, m_aMutex, NULL ); - if( pModel->HasChildren( pParent ) ) - { - SvTreeListEntries& rEntries = pModel->GetChildList( pParent ); - rEntries.clear(); - } + OUString* pURL = static_cast< OUString* >( pParent->GetUserData() ); + + if( pURL ) + { + FolderDescriptor aFolder( *pURL ); + Sequence< OUString > aBlackList; - // fill with new ones + EnumerationResult eResult = + pContentEnumerator->enumerateFolderContentSync( aFolder, aBlackList ); + + if ( SUCCESS == eResult ) + { + unsigned int nChilds = 0; + + for( unsigned int i = 0; i < aContent.size(); i++ ) + { + if( aContent[i]->mbIsFolder ) + { + SvTreeListEntry* pEntry = m_pTreeView->InsertEntry( aContent[i]->GetTitle(), pParent, true ); - ::std::vector< SortingData_Impl* > aContent; + OUString* sData = new OUString( aContent[i]->maTargetURL ); + pEntry->SetUserData( static_cast< void* >( sData ) ); - FileViewContentEnumerator* pContentEnumerator = new FileViewContentEnumerator( - m_xEnv, aContent, m_aMutex, NULL ); + nChilds++; + } + } + } + } + } + } +} + +void RemoteFilesDialog::setTreePath( OUString sUrl ) +{ + INetURLObject aURL( sUrl ); + aURL.setFinalSlash(); - OUString* pURL = static_cast< OUString* >( pParent->GetUserData() ); + OUString sPath = aURL.GetURLPath( INetURLObject::DECODE_WITH_CHARSET ); - if( pURL ) + SvTreeListEntry* pEntry = m_pTreeView->First(); + bool end = false; + + while( pEntry && !end ) + { + if( pEntry->GetUserData() ) { - FolderDescriptor aFolder( *pURL ); - Sequence< OUString > aBlackList; + OUString sNodeUrl = *static_cast< OUString* >( pEntry->GetUserData() ); - EnumerationResult eResult = - pContentEnumerator->enumerateFolderContentSync( aFolder, aBlackList ); + INetURLObject aUrlObj( sNodeUrl ); + aUrlObj.setFinalSlash(); - if ( SUCCESS == eResult ) - { - unsigned int nChilds = 0; + sNodeUrl = aUrlObj.GetURLPath( INetURLObject::DECODE_WITH_CHARSET ); - for( unsigned int i = 0; i < aContent.size(); i++ ) - { - if( aContent[i]->mbIsFolder ) - { - SvTreeListEntry* pEntry = m_pTreeView->InsertEntry( aContent[i]->GetTitle(), pParent, true ); + if( sPath == sNodeUrl) + { + m_pTreeView->Select( pEntry ); - OUString* sData = new OUString( aContent[i]->maTargetURL ); - pEntry->SetUserData( static_cast< void* >( sData ) ); + if( !m_pTreeView->IsExpanded( pEntry ) ) + m_pTreeView->Expand( pEntry ); - nChilds++; - } - } + end = true; + } + else if( sPath.startsWith( sNodeUrl ) ) + { + if( !m_pTreeView->IsExpanded( pEntry ) ) + m_pTreeView->Expand( pEntry ); - if( nChilds == 0 ) - { - m_pTreeView->Collapse( pParent ); - } + pEntry = m_pTreeView->FirstChild( pEntry ); + pEntry = m_pTreeView->NextSibling( pEntry ); + } + else + { + pEntry = m_pTreeView->NextSibling( pEntry ); } } + else + break; } } commit d85b370bcbcee982cdff4b41d46a7850a20eb196 Author: Szymon KÅos <eszka...@gmail.com> Date: Tue Jun 23 17:08:16 2015 +0200 Breadcrumb: accessibility, TABSTOP Change-Id: I97c4ba80697ff57fbbf6f41cdc9204703aaf86e5 diff --git a/svtools/source/control/breadcrumb.cxx b/svtools/source/control/breadcrumb.cxx index 735756a..8b43fa1 100644 --- a/svtools/source/control/breadcrumb.cxx +++ b/svtools/source/control/breadcrumb.cxx @@ -182,7 +182,7 @@ void Breadcrumb::SetMode( SvtBreadcrumbMode eMode ) void Breadcrumb::appendField() { - m_aLinks.push_back( VclPtr< FixedHyperlink >::Create( this ) ); + m_aLinks.push_back( VclPtr< FixedHyperlink >::Create( this, WB_TABSTOP ) ); m_aLinks[m_aLinks.size() - 1]->Hide(); m_aLinks[m_aLinks.size() - 1]->SetClickHdl( LINK( this, Breadcrumb, ClickLinkHdl ) );
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits