diff options
author | Szymon Kłos <eszkadev@gmail.com> | 2015-06-10 17:24:12 +0200 |
---|---|---|
committer | Szymon Kłos <eszkadev@gmail.com> | 2015-07-16 09:52:55 +0200 |
commit | 19c74d1fdf5a86717265aefae3617a01750f1074 (patch) | |
tree | afad985b8072146e98ba10d34453227e3c8183a3 /svtools/source | |
parent | 9d552ef119ab83d1b8f9ebf9655d8b4188e5f792 (diff) |
added a new mode of showing path in the breadcrumb
Change-Id: I0819f2346ee3412d044c2d6c7d3bbc2dd9231ed5
Diffstat (limited to 'svtools/source')
-rw-r--r-- | svtools/source/control/breadcrumb.cxx | 33 | ||||
-rw-r--r-- | svtools/source/dialogs/RemoteFilesDialog.cxx | 1 |
2 files changed, 31 insertions, 3 deletions
diff --git a/svtools/source/control/breadcrumb.cxx b/svtools/source/control/breadcrumb.cxx index ba2ed5de7b92..c7cbc0064a36 100644 --- a/svtools/source/control/breadcrumb.cxx +++ b/svtools/source/control/breadcrumb.cxx @@ -11,6 +11,7 @@ Breadcrumb::Breadcrumb( vcl::Window* pParent, WinBits nWinStyle ) : VclHBox( pParent, nWinStyle ) { + m_eMode = SvtBreadcrumbMode::ONLY_CURRENT_PATH; set_spacing( 6 ); appendField(); // root } @@ -56,6 +57,8 @@ void Breadcrumb::SetURL( const OUString& rURL ) unsigned int nPos = 0; unsigned int i; + bool bClear = ( m_eMode == SvtBreadcrumbMode::ONLY_CURRENT_PATH ); + m_aLinks[0]->SetText( m_sRootName ); m_aLinks[0]->Show(); m_aLinks[0]->Enable( true ); @@ -71,6 +74,13 @@ void Breadcrumb::SetURL( const OUString& rURL ) unsigned int nEnd = sPath.indexOf( '/', nPos + 1 ); OUString sLabel = OUString( sPath.getStr() + nPos + 1, nEnd - nPos - 1 ); + if( m_eMode == SvtBreadcrumbMode::ALL_VISITED ) + { + if( m_aLinks[i]->GetText() != sLabel ) + bClear = true; + } + + m_aLinks[i]->SetText( sLabel ); m_aLinks[i]->SetURL( INetURLObject::GetScheme( aURL.GetProtocol() ) + aURL.GetHost() @@ -85,13 +95,21 @@ void Breadcrumb::SetURL( const OUString& rURL ) m_aLinks[i - 1]->Enable( false ); m_aSeparators[i - 1]->Hide(); - for( ; i < m_aLinks.size(); i++ ) + if( bClear ) { - m_aLinks[i]->Hide(); - m_aSeparators[i]->Hide(); + clearFields( i ); + } + else + { + for( ; i < m_aLinks.size(); i++ ) + m_aLinks[i]->Enable( true ); } } +void Breadcrumb::SetMode( SvtBreadcrumbMode eMode ) +{ + m_eMode = eMode; +} void Breadcrumb::appendField() { @@ -104,6 +122,15 @@ void Breadcrumb::appendField() m_aSeparators[m_aLinks.size() - 1]->Hide(); } +void Breadcrumb::clearFields( unsigned int nStartIndex ) +{ + for( unsigned int i = nStartIndex; i < m_aLinks.size(); i++ ) + { + m_aLinks[i]->Hide(); + m_aSeparators[i]->Hide(); + } +} + IMPL_LINK ( Breadcrumb, ClickLinkHdl, FixedHyperlink*, pLink ) { m_sClickedURL = pLink->GetURL(); diff --git a/svtools/source/dialogs/RemoteFilesDialog.cxx b/svtools/source/dialogs/RemoteFilesDialog.cxx index b85f1e883b1c..663d719b1abb 100644 --- a/svtools/source/dialogs/RemoteFilesDialog.cxx +++ b/svtools/source/dialogs/RemoteFilesDialog.cxx @@ -120,6 +120,7 @@ RemoteFilesDialog::RemoteFilesDialog(vcl::Window* pParent, WinBits nBits) 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") ); |