summaryrefslogtreecommitdiff
path: root/svtools/source/control/breadcrumb.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svtools/source/control/breadcrumb.cxx')
-rw-r--r--svtools/source/control/breadcrumb.cxx33
1 files changed, 30 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();