summaryrefslogtreecommitdiff
path: root/svtools/source
diff options
context:
space:
mode:
authorSzymon Kłos <eszkadev@gmail.com>2015-06-10 17:24:12 +0200
committerSzymon Kłos <eszkadev@gmail.com>2015-07-16 09:52:55 +0200
commit19c74d1fdf5a86717265aefae3617a01750f1074 (patch)
treeafad985b8072146e98ba10d34453227e3c8183a3 /svtools/source
parent9d552ef119ab83d1b8f9ebf9655d8b4188e5f792 (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.cxx33
-rw-r--r--svtools/source/dialogs/RemoteFilesDialog.cxx1
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") );