[Libreoffice-commits] core.git: Branch 'feature/gsoc15-open-remote-files-dialog' - 48 commits - chart2/source configure.ac drawinglayer/source extensions/source external/glm fpicker/source fpicker/uiconfig framework/inc framework/source include/svtools include/vcl officecfg/registry sc/sdi sc/source sc/uiconfig slideshow/inc slideshow/source slideshow/test svtools/source svtools/uiconfig svx/source sw/qa sw/source ucb/source vcl/unx

Szymon Kłos eszkadev at gmail.com
Mon Aug 10 03:06:35 PDT 2015


Rebased ref, commits from common ancestor:
commit 904e0d6acf824d81c7d7a0f016866d2dbafb5adb
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Mon Aug 10 12:02:55 2015 +0200

    when user typed a folder name, open it
    
    Change-Id: I800f97bfd9f564c065ca7e59f5751768f2f2bd0d

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index 20ce343..a85c40d 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -914,6 +914,9 @@ IMPL_LINK_NOARG ( RemoteFilesDialog, NewFolderHdl )
 
 IMPL_LINK_NOARG ( RemoteFilesDialog, OkHdl )
 {
+    OUString sNameNoExt = m_pName_ed->GetText();
+    OUString sPathNoExt;
+
     // auto extension
     if( m_eMode == REMOTEDLG_MODE_SAVE )
         AddFileExtension();
@@ -933,6 +936,7 @@ IMPL_LINK_NOARG ( RemoteFilesDialog, OkHdl )
     if( !bSelected )
     {
         m_sPath = sCurrentPath + INetURLObject::encode( sName, INetURLObject::PART_FPATH, INetURLObject::ENCODE_ALL );
+        sPathNoExt = sCurrentPath + INetURLObject::encode( sNameNoExt, INetURLObject::PART_FPATH, INetURLObject::ENCODE_ALL );
     }
     else
     {
@@ -953,11 +957,11 @@ IMPL_LINK_NOARG ( RemoteFilesDialog, OkHdl )
     bool bExists = false;
 
     if( bFileDlg )
-        bExists = ContentIsDocument(m_sPath);
+        bExists = ContentIsDocument( m_sPath );
     else
-        bExists = ContentIsFolder(m_sPath);
+        bExists = ContentIsFolder( m_sPath );
 
-    if ( bExists )
+    if( bExists )
     {
         if( m_eMode == REMOTEDLG_MODE_SAVE )
         {
@@ -970,9 +974,15 @@ IMPL_LINK_NOARG ( RemoteFilesDialog, OkHdl )
     }
     else
     {
-        if( m_eMode == REMOTEDLG_MODE_OPEN )
+        if( ContentIsFolder( sPathNoExt ) )
+        {
+            OpenURL( sPathNoExt );
+            m_pName_ed->SetText( "" );
+
             return 0;
-        if( m_eMode == REMOTEDLG_MODE_SAVE && ContentIsFolder(m_sPath) )
+        }
+
+        if( m_eMode == REMOTEDLG_MODE_OPEN )
             return 0;
     }
 
commit e4aa4bb290cd1a50125e4e5f47681a985e2912e6
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Fri Aug 7 18:32:32 2015 +0200

    added New Folder button
    
    Change-Id: I4b1ef03e707fdfb3d1968dca9f48c548f872612c

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index 80abcac..20ce343 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -183,6 +183,7 @@ RemoteFilesDialog::RemoteFilesDialog( vcl::Window* pParent, WinBits nBits )
     get( m_pServices_lb, "services_lb" );
     get( m_pFilter_lb, "filter_lb" );
     get( m_pName_ed, "name_ed" );
+    get( m_pNewFolder, "new_folder" );
 
     m_eMode = ( nBits & WB_SAVEAS ) ? REMOTEDLG_MODE_SAVE : REMOTEDLG_MODE_OPEN;
     m_eType = ( nBits & WB_PATH ) ? REMOTEDLG_TYPE_PATHDLG : REMOTEDLG_TYPE_FILEDLG;
@@ -196,10 +197,20 @@ RemoteFilesDialog::RemoteFilesDialog( vcl::Window* pParent, WinBits nBits )
     m_pName_ed->Enable( false );
 
     if( m_eMode == REMOTEDLG_MODE_OPEN )
+    {
         get( m_pOk_btn, "open" );
+
+        m_pNewFolder->Hide();
+    }
     else
+    {
         get( m_pOk_btn, "save" );
 
+        m_aImages = ImageList( fpicker::SvtResId( RID_FILEPICKER_IMAGES ) );
+        m_pNewFolder->SetModeImage( m_aImages.GetImage( IMG_FILEDLG_CREATEFOLDER ) );
+        m_pNewFolder->SetClickHdl( LINK( this, RemoteFilesDialog, NewFolderHdl ) );
+    }
+
     m_pOk_btn->Show();
     m_pOk_btn->Enable( false );
 
@@ -324,6 +335,7 @@ void RemoteFilesDialog::dispose()
     m_pServices_lb.clear();
     m_pFilter_lb.clear();
     m_pName_ed.clear();
+    m_pNewFolder.clear();
 
     ModalDialog::dispose();
 }
@@ -872,6 +884,34 @@ IMPL_LINK ( RemoteFilesDialog, SelectBreadcrumbHdl, Breadcrumb*, pPtr )
     return 1;
 }
 
+IMPL_LINK_NOARG ( RemoteFilesDialog, NewFolderHdl )
+{
+    m_pFileView->EndInplaceEditing( false );
+
+    SmartContent aContent( m_pFileView->GetViewURL() );
+    OUString aTitle;
+    aContent.getTitle( aTitle );
+    ScopedVclPtrInstance< QueryFolderNameDialog > aDlg( this, aTitle, fpicker::SVT_RESSTR( STR_SVT_NEW_FOLDER ) );
+    bool bHandled = false;
+
+    while( !bHandled )
+    {
+        if( aDlg->Execute() == RET_OK )
+        {
+            OUString aUrl = aContent.createFolder( aDlg->GetName() );
+            if( !aUrl.isEmpty() )
+            {
+                m_pFileView->CreatedFolder( aUrl, aDlg->GetName() );
+                bHandled = true;
+            }
+        }
+        else
+            bHandled = true;
+    }
+
+    return 1;
+}
+
 IMPL_LINK_NOARG ( RemoteFilesDialog, OkHdl )
 {
     // auto extension
diff --git a/fpicker/source/office/RemoteFilesDialog.hxx b/fpicker/source/office/RemoteFilesDialog.hxx
index 0d61f41..a63bef3 100644
--- a/fpicker/source/office/RemoteFilesDialog.hxx
+++ b/fpicker/source/office/RemoteFilesDialog.hxx
@@ -37,6 +37,9 @@
 
 #include "fpdialogbase.hxx"
 #include "fpsofficeResMgr.hxx"
+#include "OfficeFilePicker.hrc"
+#include "QueryFolderName.hxx"
+#include "iodlg.hrc"
 
 using namespace ::com::sun::star::beans;
 using namespace ::com::sun::star::uno;
@@ -141,6 +144,7 @@ private:
     VclPtr< MenuButton > m_pAddService_btn;
     VclPtr< ListBox > m_pServices_lb;
     VclPtr< Breadcrumb > m_pPath;
+    VclPtr<PushButton> m_pNewFolder;
     VclPtr< Splitter > m_pSplitter;
     VclPtr< FolderTree > m_pTreeView;
     VclPtr< SvtFileView > m_pFileView;
@@ -149,6 +153,8 @@ private:
     VclPtr< Edit > m_pName_ed;
     PopupMenu* m_pAddMenu;
 
+    ImageList m_aImages;
+
     std::vector< ServicePtr > m_aServices;
     std::vector< std::pair< OUString, OUString > > m_aFilters;
 
@@ -184,6 +190,8 @@ private:
 
     DECL_LINK( SelectBreadcrumbHdl, Breadcrumb * );
 
+    DECL_LINK( NewFolderHdl, void * );
+
     DECL_LINK( OkHdl, void * );
     DECL_LINK( CancelHdl, void * );
 };
diff --git a/fpicker/uiconfig/ui/remotefilesdialog.ui b/fpicker/uiconfig/ui/remotefilesdialog.ui
index 8bf57a3..7c0c923 100644
--- a/fpicker/uiconfig/ui/remotefilesdialog.ui
+++ b/fpicker/uiconfig/ui/remotefilesdialog.ui
@@ -138,12 +138,44 @@
           </packing>
         </child>
         <child>
-          <object class="GtkBox" id="breadcrumb_container">
+          <object class="GtkBox" id="box2">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="hexpand">True</property>
+            <property name="spacing">6</property>
             <child>
-              <placeholder/>
+              <object class="GtkBox" id="breadcrumb_container">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="valign">center</property>
+                <property name="hexpand">True</property>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="new_folder">
+                <property name="use_action_appearance">False</property>
+                <property name="width_request">25</property>
+                <property name="height_request">25</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="has_tooltip">True</property>
+                <property name="tooltip_markup" translatable="yes">Create New Folder</property>
+                <property name="tooltip_text" translatable="yes">Create New Folder</property>
+                <property name="margin_left">6</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
             </child>
           </object>
           <packing>
commit 0f73b16bc259393f9a184f3ae5b15ddf89bd46ca
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Fri Aug 7 14:54:39 2015 +0200

    avoid name conflict: SvtResId
    
    Change-Id: I5fbde751c9d6b0d9be7d6dd50abfb99bb14a3512

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index 11278f2..80abcac 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -206,7 +206,7 @@ RemoteFilesDialog::RemoteFilesDialog( vcl::Window* pParent, WinBits nBits )
     m_pOk_btn->SetClickHdl( LINK( this, RemoteFilesDialog, OkHdl ) );
     m_pCancel_btn->SetClickHdl( LINK( this, RemoteFilesDialog, CancelHdl ) );
 
-    m_sRootLabel = ResId( STR_SVT_ROOTLABEL, *ResMgrHolder::getOrCreate() );
+    m_sRootLabel = fpicker::SvtResId( STR_SVT_ROOTLABEL );
     m_pPath = VclPtr<Breadcrumb>::Create( get< vcl::Window >( "breadcrumb_container" ) );
     m_pPath->set_hexpand( true );
     m_pPath->SetClickHdl( LINK( this, RemoteFilesDialog, SelectBreadcrumbHdl ) );
@@ -710,7 +710,7 @@ IMPL_LINK_TYPED ( RemoteFilesDialog, EditServiceMenuHdl, MenuButton *, pButton,
 
         if( nPos >= 0 )
         {
-            OUString sMsg = ResId( STR_SVT_DELETESERVICE, *ResMgrHolder::getOrCreate() );
+            OUString sMsg = fpicker::SvtResId( STR_SVT_DELETESERVICE );
             sMsg = sMsg.replaceFirst( "$servicename$", m_pServices_lb->GetSelectEntry() );
             ScopedVclPtrInstance< MessageDialog > aBox( this, sMsg, VCL_MESSAGE_QUESTION, VCL_BUTTONS_YES_NO );
 
@@ -921,7 +921,7 @@ IMPL_LINK_NOARG ( RemoteFilesDialog, OkHdl )
     {
         if( m_eMode == REMOTEDLG_MODE_SAVE )
         {
-            OUString sMsg = ResId( STR_SVT_ALREADYEXISTOVERWRITE, *ResMgrHolder::getOrCreate() );
+            OUString sMsg = fpicker::SvtResId( STR_SVT_ALREADYEXISTOVERWRITE );
             sMsg = sMsg.replaceFirst( "$filename$", sName );
             ScopedVclPtrInstance< MessageDialog > aBox( this, sMsg, VCL_MESSAGE_QUESTION, VCL_BUTTONS_YES_NO );
             if( aBox->Execute() != RET_YES )
diff --git a/fpicker/source/office/fpsofficeResMgr.hxx b/fpicker/source/office/fpsofficeResMgr.hxx
index 76b4538..359fc88 100644
--- a/fpicker/source/office/fpsofficeResMgr.hxx
+++ b/fpicker/source/office/fpsofficeResMgr.hxx
@@ -13,7 +13,7 @@
 #include <osl/getglobalmutex.hxx>
 #include <tools/resmgr.hxx>
 
-namespace
+namespace fpicker
 {
     struct ResMgrHolder
     {
diff --git a/fpicker/source/office/iodlg.cxx b/fpicker/source/office/iodlg.cxx
index 6b5eaa7..6d1e1a1 100644
--- a/fpicker/source/office/iodlg.cxx
+++ b/fpicker/source/office/iodlg.cxx
@@ -100,6 +100,7 @@ using namespace ::com::sun::star::ucb;
 using namespace ::com::sun::star::container;
 using namespace ::com::sun::star::task;
 using namespace ::com::sun::star::sdbc;
+using namespace ::fpicker;
 using namespace ::utl;
 using namespace ::svt;
 
commit e6038d4aefe2160db2f9ef6274f5ad32240b8945
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Thu Aug 6 11:11:00 2015 +0200

    Rework of the 'Add service' dialog
    
    Change-Id: Ie53352367a92468fb7b1bfbe106230327e4a6599

diff --git a/include/svtools/ServerDetailsControls.hxx b/include/svtools/ServerDetailsControls.hxx
index 16b8e23..20e69f6 100644
--- a/include/svtools/ServerDetailsControls.hxx
+++ b/include/svtools/ServerDetailsControls.hxx
@@ -24,14 +24,20 @@
 
 class DetailsContainer
 {
-    private:
-        Link<>             m_aChangeHdl;
-        VclPtr<VclGrid>    m_pFrame;
-        VclPtr<VclGrid>    m_pCommon;
-        bool               m_bIsActive;
+    protected:
+        Link<>                 m_aChangeHdl;
+        VclPtr<VclGrid>        m_pDetailsGrid;
+        VclPtr<VclHBox>        m_pHostBox;
+        VclPtr<Edit>           m_pEDHost;
+        VclPtr<FixedText>      m_pFTHost;
+        VclPtr<NumericField>   m_pEDPort;
+        VclPtr<FixedText>      m_pFTPort;
+        VclPtr<Edit>           m_pEDRoot;
+        VclPtr<FixedText>      m_pFTRoot;
+        bool                   m_bIsActive;
 
     public:
-        DetailsContainer( VclBuilderContainer* pBuilder, const OString& rFrame );
+        DetailsContainer( VclBuilderContainer* pBuilder );
         virtual ~DetailsContainer( );
 
         void setChangeHdl( const Link<>& rLink ) { m_aChangeHdl = rLink; }
@@ -60,11 +66,7 @@ class HostDetailsContainer : public DetailsContainer
     private:
         sal_uInt16 m_nDefaultPort;
         OUString m_sScheme;
-
-    protected:
-        VclPtr<Edit>           m_pEDHost;
-        VclPtr<NumericField>   m_pEDPort;
-        VclPtr<Edit>           m_pEDPath;
+        OUString m_sHost;
 
     public:
         HostDetailsContainer( VclBuilderContainer* pBuilder, sal_uInt16 nPort, const OUString& sScheme );
@@ -104,9 +106,8 @@ class DavDetailsContainer : public HostDetailsContainer
 class SmbDetailsContainer : public DetailsContainer
 {
     private:
-        VclPtr<Edit>           m_pEDHost;
         VclPtr<Edit>           m_pEDShare;
-        VclPtr<Edit>           m_pEDPath;
+        VclPtr<FixedText>      m_pFTShare;
 
     public:
         SmbDetailsContainer( VclBuilderContainer* pBuilder );
@@ -114,6 +115,7 @@ class SmbDetailsContainer : public DetailsContainer
 
         virtual INetURLObject getUrl( ) SAL_OVERRIDE;
         virtual bool setUrl( const INetURLObject& rUrl ) SAL_OVERRIDE;
+        virtual void show( bool bShow = true ) SAL_OVERRIDE;
 };
 
 class CmisDetailsContainer : public DetailsContainer
@@ -125,10 +127,10 @@ class CmisDetailsContainer : public DetailsContainer
         OUString m_sRepoId;
         OUString m_sBinding;
 
-        VclPtr<Edit>       m_pEDBinding;
+        VclPtr<VclHBox>    m_pRepositoryBox;
+        VclPtr<FixedText>  m_pFTRepository;
         VclPtr<ListBox>    m_pLBRepository;
         VclPtr<Button>     m_pBTRepoRefresh;
-        VclPtr<Edit>       m_pEDRoot;
 
     public:
         CmisDetailsContainer( VclBuilderContainer* pBuilder, OUString const & sBinding );
diff --git a/svtools/source/dialogs/ServerDetailsControls.cxx b/svtools/source/dialogs/ServerDetailsControls.cxx
index f585666..49d9645 100644
--- a/svtools/source/dialogs/ServerDetailsControls.cxx
+++ b/svtools/source/dialogs/ServerDetailsControls.cxx
@@ -31,23 +31,30 @@ using namespace com::sun::star::task;
 using namespace com::sun::star::ucb;
 using namespace com::sun::star::uno;
 
-DetailsContainer::DetailsContainer( VclBuilderContainer* pBuilder, const OString& rFrame ) :
+DetailsContainer::DetailsContainer( VclBuilderContainer* pBuilder ) :
     m_bIsActive ( true )
 {
-    pBuilder->get( m_pFrame, rFrame );
-    pBuilder->get( m_pCommon, "CommonDetails" );
+    pBuilder->get( m_pDetailsGrid, "Details" );
+    pBuilder->get( m_pHostBox, "HostDetails" );
+    pBuilder->get( m_pEDHost, "host" );
+    pBuilder->get( m_pFTHost, "hostLabel" );
+    pBuilder->get( m_pEDPort, "port-nospin" );
+    pBuilder->get( m_pFTPort, "portLabel" );
+    pBuilder->get( m_pEDRoot, "path" );
+    pBuilder->get( m_pFTRoot, "pathLabel" );
 }
 
 DetailsContainer::~DetailsContainer( )
 {
 }
 
-void DetailsContainer::show( bool bShow )
+void DetailsContainer::show( bool )
 {
-    m_pFrame->Show( bShow );
+    m_pDetailsGrid->Enable( m_bIsActive );
 
-    m_pFrame->Enable( m_bIsActive );
-    m_pCommon->Enable( m_bIsActive );
+    m_pEDHost->SetModifyHdl( LINK( this, DetailsContainer, ValueChangeHdl ) );
+    m_pEDPort->SetModifyHdl( LINK( this, DetailsContainer, ValueChangeHdl ) );
+    m_pEDRoot->SetModifyHdl( LINK( this, DetailsContainer, ValueChangeHdl ) );
 }
 
 INetURLObject DetailsContainer::getUrl( )
@@ -80,34 +87,34 @@ IMPL_LINK_NOARG( DetailsContainer, ValueChangeHdl )
 }
 
 HostDetailsContainer::HostDetailsContainer( VclBuilderContainer* pBuilder, sal_uInt16 nPort, const OUString& sScheme ) :
-    DetailsContainer( pBuilder, "HostDetails" ),
+    DetailsContainer( pBuilder ),
     m_nDefaultPort( nPort ),
     m_sScheme( sScheme )
 {
-    pBuilder->get( m_pEDHost, "host" );
-    m_pEDHost->SetModifyHdl( LINK( this, DetailsContainer, ValueChangeHdl ) );
-
-    pBuilder->get( m_pEDPort, "port-nospin" );
-    m_pEDPort->SetModifyHdl( LINK( this, DetailsContainer, ValueChangeHdl ) );
-
-    pBuilder->get( m_pEDPath, "path" );
-    m_pEDPath->SetModifyHdl( LINK( this, DetailsContainer, ValueChangeHdl ) );
-
     show( false );
 }
 
 void HostDetailsContainer::show( bool bShow )
 {
+    m_pFTHost->Show( bShow );
+    m_pHostBox->Show( bShow );
+    m_pEDRoot->Show( bShow );
+    m_pFTRoot->Show( bShow );
+
     DetailsContainer::show( bShow );
+
     if ( bShow )
+    {
         m_pEDPort->SetValue( m_nDefaultPort );
+        m_pEDHost->SetText( m_sHost );
+    }
 }
 
 INetURLObject HostDetailsContainer::getUrl( )
 {
     OUString sHost = m_pEDHost->GetText().trim( );
     sal_Int64 nPort = m_pEDPort->GetValue();
-    OUString sPath = m_pEDPath->GetText().trim( );
+    OUString sPath = m_pEDRoot->GetText().trim( );
 
     OUString sUrl;
     if ( !sHost.isEmpty( ) )
@@ -132,7 +139,7 @@ bool HostDetailsContainer::setUrl( const INetURLObject& rUrl )
     {
         m_pEDHost->SetText( rUrl.GetHost( ) );
         m_pEDPort->SetValue( rUrl.GetPort( ) );
-        m_pEDPath->SetText( rUrl.GetURLPath() );
+        m_pEDRoot->SetText( rUrl.GetURLPath() );
     }
 
     return bSuccess;
@@ -198,17 +205,13 @@ IMPL_LINK( DavDetailsContainer, ToggledDavsHdl, CheckBox*, pCheckBox )
 }
 
 SmbDetailsContainer::SmbDetailsContainer( VclBuilderContainer* pBuilder ) :
-    DetailsContainer( pBuilder, "SmbDetails" )
+    DetailsContainer( pBuilder )
 {
-    pBuilder->get( m_pEDHost, "smbHost" );
-    m_pEDHost->SetModifyHdl( LINK( this, DetailsContainer, ValueChangeHdl ) );
+    pBuilder->get( m_pEDShare, "share" );
+    pBuilder->get( m_pFTShare, "shareLabel" );
 
-    pBuilder->get( m_pEDShare, "smbShare" );
     m_pEDShare->SetModifyHdl( LINK( this, DetailsContainer, ValueChangeHdl ) );
 
-    pBuilder->get( m_pEDPath, "smbPath" );
-    m_pEDPath->SetModifyHdl( LINK( this, DetailsContainer, ValueChangeHdl ) );
-
     show( false );
 }
 
@@ -216,7 +219,7 @@ INetURLObject SmbDetailsContainer::getUrl( )
 {
     OUString sHost = m_pEDHost->GetText().trim( );
     OUString sShare = m_pEDShare->GetText().trim( );
-    OUString sPath = m_pEDPath->GetText().trim( );
+    OUString sPath = m_pEDRoot->GetText().trim( );
 
     OUString sUrl;
     if ( !sHost.isEmpty( ) )
@@ -252,14 +255,27 @@ bool SmbDetailsContainer::setUrl( const INetURLObject& rUrl )
 
         m_pEDHost->SetText( rUrl.GetHost( ) );
         m_pEDShare->SetText( sShare );
-        m_pEDPath->SetText( sPath );
+        m_pEDRoot->SetText( sPath );
     }
 
     return bSuccess;
 }
 
+void SmbDetailsContainer::show( bool bShow )
+{
+    m_pEDShare->Show( bShow );
+    m_pFTShare->Show( bShow );
+    m_pEDRoot->Show( bShow );
+    m_pFTRoot->Show( bShow );
+
+    m_pFTHost->Show( bShow );
+    m_pHostBox->Show( bShow );
+    m_pEDPort->Enable( !bShow );
+    m_pFTPort->Enable( !bShow );
+}
+
 CmisDetailsContainer::CmisDetailsContainer( VclBuilderContainer* pBuilder, OUString const & sBinding ) :
-    DetailsContainer( pBuilder, "CmisDetails" ),
+    DetailsContainer( pBuilder ),
     m_sUsername( ),
     m_xCmdEnv( ),
     m_aRepoIds( ),
@@ -271,39 +287,50 @@ CmisDetailsContainer::CmisDetailsContainer( VclBuilderContainer* pBuilder, OUStr
         InteractionHandler::createWithParent(xContext, 0), UNO_QUERY );
     m_xCmdEnv = new ucbhelper::CommandEnvironment( xGlobalInteractionHandler, Reference< XProgressHandler >() );
 
-    pBuilder->get( m_pEDBinding, "binding" );
+    pBuilder->get( m_pFTRepository, "repositoryLabel" );
     pBuilder->get( m_pLBRepository, "repositories" );
     pBuilder->get( m_pBTRepoRefresh, "repositoriesRefresh" );
-
-    pBuilder->get( m_pEDRoot, "cmisPath" );
+    pBuilder->get( m_pRepositoryBox, "RepositoryDetails" );
 
     show( false );
 }
 
 void CmisDetailsContainer::show( bool bShow )
 {
-    m_pEDBinding->SetModifyHdl( LINK( this, DetailsContainer, ValueChangeHdl ) );
     m_pLBRepository->SetSelectHdl( LINK( this, CmisDetailsContainer, SelectRepoHdl ) );
     m_pBTRepoRefresh->SetClickHdl( LINK( this, CmisDetailsContainer, RefreshReposHdl ) );
-    m_pEDRoot->SetModifyHdl( LINK( this, DetailsContainer, ValueChangeHdl ) );
 
-    m_pEDBinding->SetText( m_sBinding );
+    m_pEDHost->SetText( m_sBinding );
 
     if( ( m_sBinding == GDRIVE_BASE_URL )
             || m_sBinding.startsWith( ALFRESCO_CLOUD_BASE_URL )
             || ( m_sBinding == ONEDRIVE_BASE_URL ) )
     {
-        DetailsContainer::show( false );
+        m_pFTHost->Show( false );
+        m_pHostBox->Show( false );
+        m_pFTRepository->Show( false );
+        m_pRepositoryBox->Show( false );
+        m_pEDRoot->Show( false );
+        m_pFTRoot->Show( false );
     }
     else
     {
-        DetailsContainer::show( bShow );
+        m_pFTHost->Show( bShow );
+        m_pHostBox->Show( bShow );
+        m_pFTRepository->Show( bShow );
+        m_pRepositoryBox->Show( bShow );
+        m_pEDRoot->Show( bShow );
+        m_pFTRoot->Show( bShow );
     }
+
+    DetailsContainer::show( bShow );
+    m_pEDPort->Enable( !bShow );
+    m_pFTPort->Enable( !bShow );
 }
 
 INetURLObject CmisDetailsContainer::getUrl( )
 {
-    OUString sBindingUrl = m_pEDBinding->GetText().trim( );
+    OUString sBindingUrl = m_pEDHost->GetText().trim( );
     OUString sPath = m_pEDRoot->GetText().trim( );
 
     bool bSkip = true;
@@ -344,7 +371,7 @@ bool CmisDetailsContainer::setUrl( const INetURLObject& rUrl )
         m_sBinding = aHostUrl.GetURLNoMark( );
         m_sRepoId = aHostUrl.GetMark( );
 
-        m_pEDBinding->SetText( m_sBinding );
+        m_pEDHost->SetText( m_sBinding );
         m_pEDRoot->SetText( rUrl.GetURLPath() );
     }
     return bSuccess;
@@ -368,7 +395,7 @@ void CmisDetailsContainer::selectRepository( )
 
 IMPL_LINK_NOARG( CmisDetailsContainer, RefreshReposHdl  )
 {
-    OUString sBindingUrl = m_pEDBinding->GetText().trim( );
+    OUString sBindingUrl = m_pEDHost->GetText().trim( );
 
     OUString sEncodedUsername = "";
 
diff --git a/svtools/uiconfig/ui/placeedit.ui b/svtools/uiconfig/ui/placeedit.ui
index e2b1c30..ec5c41e 100644
--- a/svtools/uiconfig/ui/placeedit.ui
+++ b/svtools/uiconfig/ui/placeedit.ui
@@ -162,7 +162,7 @@
           </packing>
         </child>
         <child>
-          <object class="GtkGrid" id="HostDetails">
+          <object class="GtkGrid" id="Details">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="row_spacing">6</property>
@@ -181,21 +181,6 @@
               </packing>
             </child>
             <child>
-              <object class="GtkCheckButton" id="webdavs">
-                <property name="label" translatable="yes">Secure connection</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="hexpand">True</property>
-                <property name="xalign">0</property>
-                <property name="draw_indicator">True</property>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">2</property>
-                <property name="width">3</property>
-              </packing>
-            </child>
-            <child>
               <object class="GtkLabel" id="pathLabel">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
@@ -206,7 +191,7 @@
               </object>
               <packing>
                 <property name="left_attach">0</property>
-                <property name="top_attach">1</property>
+                <property name="top_attach">6</property>
               </packing>
             </child>
             <child>
@@ -218,112 +203,77 @@
               </object>
               <packing>
                 <property name="left_attach">1</property>
-                <property name="top_attach">1</property>
-                <property name="width">3</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkEntry" id="host">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="hexpand">True</property>
-                <property name="invisible_char">●</property>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">0</property>
+                <property name="top_attach">6</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="portLabel">
+              <object class="GtkLabel" id="shareLabel">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes">Port:</property>
+                <property name="label" translatable="yes">Share:</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">port-nospin</property>
               </object>
               <packing>
-                <property name="left_attach">2</property>
-                <property name="top_attach">0</property>
+                <property name="left_attach">0</property>
+                <property name="top_attach">2</property>
               </packing>
             </child>
             <child>
-              <object class="GtkSpinButton" id="port-nospin">
+              <object class="GtkEntry" id="share">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="max_length">4</property>
+                <property name="hexpand">True</property>
                 <property name="invisible_char">●</property>
-                <property name="max_width_chars">4</property>
-                <property name="text" translatable="yes">0</property>
-                <property name="adjustment">adjustment1</property>
-                <property name="numeric">True</property>
               </object>
               <packing>
-                <property name="left_attach">3</property>
-                <property name="top_attach">0</property>
+                <property name="left_attach">1</property>
+                <property name="top_attach">2</property>
               </packing>
             </child>
             <child>
-              <placeholder/>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkGrid" id="SmbDetails">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="row_spacing">6</property>
-            <property name="column_spacing">12</property>
-            <child>
-              <object class="GtkLabel" id="label9">
+              <object class="GtkLabel" id="repositoryLabel">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes">Host:</property>
+                <property name="label" translatable="yes">Repository:</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">smbHost</property>
               </object>
               <packing>
                 <property name="left_attach">0</property>
-                <property name="top_attach">0</property>
+                <property name="top_attach">3</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label10">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
+              <object class="GtkCheckButton" id="webdavs">
+                <property name="label" translatable="yes">Secure connection</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="hexpand">True</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes">Share:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">smbShare</property>
+                <property name="draw_indicator">True</property>
               </object>
               <packing>
-                <property name="left_attach">0</property>
+                <property name="left_attach">1</property>
                 <property name="top_attach">1</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label11">
+              <object class="GtkLabel" id="loginLabel">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes">Root:</property>
+                <property name="label" translatable="yes">User:</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">smbPath</property>
+                <property name="mnemonic_widget">login</property>
               </object>
               <packing>
                 <property name="left_attach">0</property>
-                <property name="top_attach">2</property>
+                <property name="top_attach">4</property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="smbHost">
+              <object class="GtkEntry" id="login">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="hexpand">True</property>
@@ -331,23 +281,25 @@
               </object>
               <packing>
                 <property name="left_attach">1</property>
-                <property name="top_attach">0</property>
+                <property name="top_attach">4</property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="smbShare">
+              <object class="GtkLabel" id="nameLabel">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="hexpand">True</property>
-                <property name="invisible_char">●</property>
+                <property name="can_focus">False</property>
+                <property name="xalign">0</property>
+                <property name="label" translatable="yes">Label:</property>
+                <property name="use_underline">True</property>
+                <property name="mnemonic_widget">name</property>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">1</property>
+                <property name="left_attach">0</property>
+                <property name="top_attach">5</property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="smbPath">
+              <object class="GtkEntry" id="name">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="hexpand">True</property>
@@ -355,56 +307,59 @@
               </object>
               <packing>
                 <property name="left_attach">1</property>
-                <property name="top_attach">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkGrid" id="CmisDetails">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="row_spacing">6</property>
-            <property name="column_spacing">12</property>
-            <child>
-              <object class="GtkLabel" id="bindingLabel">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">Host:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">binding</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">0</property>
+                <property name="top_attach">5</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="repositoryLabel">
+              <object class="GtkBox" id="HostDetails">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">Repository:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">repositories</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkEntry" id="binding">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="hexpand">True</property>
-                <property name="invisible_char">●</property>
+                <property name="spacing">6</property>
+                <child>
+                  <object class="GtkEntry" id="host">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hexpand">True</property>
+                    <property name="invisible_char">●</property>
+                  </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="portLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="xalign">0</property>
+                    <property name="label" translatable="yes">Port:</property>
+                    <property name="use_underline">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkSpinButton" id="port-nospin">
+                    <property name="width_request">50</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="max_length">4</property>
+                    <property name="invisible_char">●</property>
+                    <property name="max_width_chars">4</property>
+                    <property name="text" translatable="yes">0</property>
+                    <property name="adjustment">adjustment1</property>
+                    <property name="numeric">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
               </object>
               <packing>
                 <property name="left_attach">1</property>
@@ -412,10 +367,10 @@
               </packing>
             </child>
             <child>
-              <object class="GtkGrid" id="grid6">
+              <object class="GtkBox" id="RepositoryDetails">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="column_spacing">6</property>
+                <property name="spacing">6</property>
                 <child>
                   <object class="GtkComboBox" id="repositories">
                     <property name="visible">True</property>
@@ -423,8 +378,9 @@
                     <property name="hexpand">True</property>
                   </object>
                   <packing>
-                    <property name="left_attach">0</property>
-                    <property name="top_attach">0</property>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
@@ -435,111 +391,25 @@
                     <property name="image">image1</property>
                   </object>
                   <packing>
-                    <property name="left_attach">1</property>
-                    <property name="top_attach">0</property>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
                   </packing>
                 </child>
               </object>
               <packing>
                 <property name="left_attach">1</property>
-                <property name="top_attach">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="rootLabel">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">Root:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">cmisPath</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">2</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkEntry" id="cmisPath">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="invisible_char">●</property>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkGrid" id="CommonDetails">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="row_spacing">6</property>
-            <property name="column_spacing">12</property>
-            <child>
-              <object class="GtkLabel" id="label16">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">User:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">login</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkEntry" id="login">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="hexpand">True</property>
-                <property name="invisible_char">●</property>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="labelLabel">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="xalign">0</property>
-                <property name="label" translatable="yes">Label:</property>
-                <property name="use_underline">True</property>
-                <property name="mnemonic_widget">name</property>
-              </object>
-              <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">1</property>
+                <property name="top_attach">3</property>
               </packing>
             </child>
             <child>
-              <object class="GtkEntry" id="name">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="hexpand">True</property>
-                <property name="invisible_char">●</property>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">1</property>
-              </packing>
+              <placeholder/>
             </child>
           </object>
           <packing>
             <property name="expand">False</property>
             <property name="fill">True</property>
-            <property name="position">4</property>
+            <property name="position">1</property>
           </packing>
         </child>
       </object>
commit 585bc859b4ca2e891b0110cffd8fdc9f610b44b5
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Wed Aug 5 11:56:06 2015 +0200

    Show unavailable services with disabled controls
    
    Change-Id: I9fe25bc5e8ce31cd848c4f6434b747be96a8006a

diff --git a/include/svtools/ServerDetailsControls.hxx b/include/svtools/ServerDetailsControls.hxx
index 8043d46..16b8e23 100644
--- a/include/svtools/ServerDetailsControls.hxx
+++ b/include/svtools/ServerDetailsControls.hxx
@@ -25,8 +25,10 @@
 class DetailsContainer
 {
     private:
-        Link<> m_aChangeHdl;
-        VclPtr<VclGrid>       m_pFrame;
+        Link<>             m_aChangeHdl;
+        VclPtr<VclGrid>    m_pFrame;
+        VclPtr<VclGrid>    m_pCommon;
+        bool               m_bIsActive;
 
     public:
         DetailsContainer( VclBuilderContainer* pBuilder, const OString& rFrame );
@@ -46,6 +48,8 @@ class DetailsContainer
 
         virtual void setUsername( const OUString& /*rUsername*/ ) { };
 
+        virtual void setActive( bool bActive = true );
+
     protected:
         void notifyChange( );
         DECL_LINK ( ValueChangeHdl, void * );
diff --git a/svtools/source/dialogs/PlaceEditDialog.cxx b/svtools/source/dialogs/PlaceEditDialog.cxx
index 125a817..8ead056 100644
--- a/svtools/source/dialogs/PlaceEditDialog.cxx
+++ b/svtools/source/dialogs/PlaceEditDialog.cxx
@@ -150,18 +150,20 @@ void PlaceEditDialog::InitDetails( )
     for ( sal_Int32 i = 0; i < aTypesUrlsList.getLength( ) && aTypesNamesList.getLength( ); ++i )
     {
         OUString sUrl = aTypesUrlsList[i];
-        if ( !( sUrl == GDRIVE_BASE_URL && bSkipGDrive ) &&
-             !( sUrl.startsWith( ALFRESCO_CLOUD_BASE_URL ) && bSkipAlfresco ) &&
-             !( sUrl == ONEDRIVE_BASE_URL && bSkipOneDrive ) )
-        {
-            nPos = m_pLBServerType->InsertEntry( aTypesNamesList[i], nPos );
+        nPos = m_pLBServerType->InsertEntry( aTypesNamesList[i], nPos );
 
-            std::shared_ptr<DetailsContainer> xCmisDetails(std::make_shared<CmisDetailsContainer>(this, sUrl));
-            xCmisDetails->setChangeHdl( LINK( this, PlaceEditDialog, EditHdl ) );
-            m_aDetailsContainers.push_back(xCmisDetails);
+        std::shared_ptr<DetailsContainer> xCmisDetails(std::make_shared<CmisDetailsContainer>(this, sUrl));
+        xCmisDetails->setChangeHdl( LINK( this, PlaceEditDialog, EditHdl ) );
+        m_aDetailsContainers.push_back(xCmisDetails);
 
-            nPos++;
+        if ( ( sUrl == GDRIVE_BASE_URL && bSkipGDrive ) ||
+             ( sUrl.startsWith( ALFRESCO_CLOUD_BASE_URL ) && bSkipAlfresco ) ||
+             ( sUrl == ONEDRIVE_BASE_URL && bSkipOneDrive ) )
+        {
+            xCmisDetails->setActive( false );
         }
+
+        nPos++;
     }
 
     // Create WebDAV / FTP / SSH details control
diff --git a/svtools/source/dialogs/ServerDetailsControls.cxx b/svtools/source/dialogs/ServerDetailsControls.cxx
index a5b40e0..f585666 100644
--- a/svtools/source/dialogs/ServerDetailsControls.cxx
+++ b/svtools/source/dialogs/ServerDetailsControls.cxx
@@ -31,9 +31,11 @@ using namespace com::sun::star::task;
 using namespace com::sun::star::ucb;
 using namespace com::sun::star::uno;
 
-DetailsContainer::DetailsContainer( VclBuilderContainer* pBuilder, const OString& rFrame )
+DetailsContainer::DetailsContainer( VclBuilderContainer* pBuilder, const OString& rFrame ) :
+    m_bIsActive ( true )
 {
     pBuilder->get( m_pFrame, rFrame );
+    pBuilder->get( m_pCommon, "CommonDetails" );
 }
 
 DetailsContainer::~DetailsContainer( )
@@ -43,6 +45,9 @@ DetailsContainer::~DetailsContainer( )
 void DetailsContainer::show( bool bShow )
 {
     m_pFrame->Show( bShow );
+
+    m_pFrame->Enable( m_bIsActive );
+    m_pCommon->Enable( m_bIsActive );
 }
 
 INetURLObject DetailsContainer::getUrl( )
@@ -63,6 +68,11 @@ void DetailsContainer::notifyChange( )
     m_aChangeHdl.Call( this );
 }
 
+void DetailsContainer::setActive( bool bActive )
+{
+    m_bIsActive = bActive;
+}
+
 IMPL_LINK_NOARG( DetailsContainer, ValueChangeHdl )
 {
     notifyChange( );
diff --git a/svtools/uiconfig/ui/placeedit.ui b/svtools/uiconfig/ui/placeedit.ui
index 4fb556b..e2b1c30 100644
--- a/svtools/uiconfig/ui/placeedit.ui
+++ b/svtools/uiconfig/ui/placeedit.ui
@@ -478,9 +478,10 @@
           </packing>
         </child>
         <child>
-          <object class="GtkGrid" id="UserDetails">
+          <object class="GtkGrid" id="CommonDetails">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
+            <property name="row_spacing">6</property>
             <property name="column_spacing">12</property>
             <child>
               <object class="GtkLabel" id="label16">
@@ -508,18 +509,6 @@
                 <property name="top_attach">0</property>
               </packing>
             </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">4</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkGrid" id="LabelGrid">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="column_spacing">6</property>
             <child>
               <object class="GtkLabel" id="labelLabel">
                 <property name="visible">True</property>
@@ -531,7 +520,7 @@
               </object>
               <packing>
                 <property name="left_attach">0</property>
-                <property name="top_attach">0</property>
+                <property name="top_attach">1</property>
               </packing>
             </child>
             <child>
@@ -543,14 +532,14 @@
               </object>
               <packing>
                 <property name="left_attach">1</property>
-                <property name="top_attach">0</property>
+                <property name="top_attach">1</property>
               </packing>
             </child>
           </object>
           <packing>
             <property name="expand">False</property>
             <property name="fill">True</property>
-            <property name="position">5</property>
+            <property name="position">4</property>
           </packing>
         </child>
       </object>
commit 9626a6b0766d5b779ae00863ef3a577a85fecf4e
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Wed Aug 5 11:13:09 2015 +0200

    Port field without buttons, max 4 chars
    
    Change-Id: I4ddc294dba5ad66a11ff260e8942977d0a6a292f

diff --git a/svtools/source/dialogs/ServerDetailsControls.cxx b/svtools/source/dialogs/ServerDetailsControls.cxx
index 71eab33..a5b40e0 100644
--- a/svtools/source/dialogs/ServerDetailsControls.cxx
+++ b/svtools/source/dialogs/ServerDetailsControls.cxx
@@ -77,7 +77,7 @@ HostDetailsContainer::HostDetailsContainer( VclBuilderContainer* pBuilder, sal_u
     pBuilder->get( m_pEDHost, "host" );
     m_pEDHost->SetModifyHdl( LINK( this, DetailsContainer, ValueChangeHdl ) );
 
-    pBuilder->get( m_pEDPort, "port" );
+    pBuilder->get( m_pEDPort, "port-nospin" );
     m_pEDPort->SetModifyHdl( LINK( this, DetailsContainer, ValueChangeHdl ) );
 
     pBuilder->get( m_pEDPath, "path" );
diff --git a/svtools/uiconfig/ui/placeedit.ui b/svtools/uiconfig/ui/placeedit.ui
index 272c096..4fb556b 100644
--- a/svtools/uiconfig/ui/placeedit.ui
+++ b/svtools/uiconfig/ui/placeedit.ui
@@ -241,7 +241,7 @@
                 <property name="xalign">0</property>
                 <property name="label" translatable="yes">Port:</property>
                 <property name="use_underline">True</property>
-                <property name="mnemonic_widget">port</property>
+                <property name="mnemonic_widget">port-nospin</property>
               </object>
               <packing>
                 <property name="left_attach">2</property>
@@ -249,10 +249,12 @@
               </packing>
             </child>
             <child>
-              <object class="GtkSpinButton" id="port">
+              <object class="GtkSpinButton" id="port-nospin">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
+                <property name="max_length">4</property>
                 <property name="invisible_char">●</property>
+                <property name="max_width_chars">4</property>
                 <property name="text" translatable="yes">0</property>
                 <property name="adjustment">adjustment1</property>
                 <property name="numeric">True</property>
commit 0894a416d0e713ed6ad3ad4cc0c3969f74238842
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Wed Aug 5 10:46:43 2015 +0200

    Port field on the same line as Host
    
    Change-Id: Iddf611e372772cbe5c38aecc81f4d43412d653da

diff --git a/svtools/uiconfig/ui/placeedit.ui b/svtools/uiconfig/ui/placeedit.ui
index 5434102..272c096 100644
--- a/svtools/uiconfig/ui/placeedit.ui
+++ b/svtools/uiconfig/ui/placeedit.ui
@@ -191,7 +191,8 @@
               </object>
               <packing>
                 <property name="left_attach">1</property>
-                <property name="top_attach">3</property>
+                <property name="top_attach">2</property>
+                <property name="width">3</property>
               </packing>
             </child>
             <child>
@@ -205,7 +206,7 @@
               </object>
               <packing>
                 <property name="left_attach">0</property>
-                <property name="top_attach">2</property>
+                <property name="top_attach">1</property>
               </packing>
             </child>
             <child>
@@ -217,7 +218,20 @@
               </object>
               <packing>
                 <property name="left_attach">1</property>
-                <property name="top_attach">2</property>
+                <property name="top_attach">1</property>
+                <property name="width">3</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkEntry" id="host">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hexpand">True</property>
+                <property name="invisible_char">●</property>
+              </object>
+              <packing>
+                <property name="left_attach">1</property>
+                <property name="top_attach">0</property>
               </packing>
             </child>
             <child>
@@ -230,8 +244,8 @@
                 <property name="mnemonic_widget">port</property>
               </object>
               <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">1</property>
+                <property name="left_attach">2</property>
+                <property name="top_attach">0</property>
               </packing>
             </child>
             <child>
@@ -244,19 +258,7 @@
                 <property name="numeric">True</property>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkEntry" id="host">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="hexpand">True</property>
-                <property name="invisible_char">●</property>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
+                <property name="left_attach">3</property>
                 <property name="top_attach">0</property>
               </packing>
             </child>
commit de00645cbc1c20d0d9b968c48eae8eff155c0141
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Tue Aug 4 15:34:51 2015 +0200

    The Add Service dialog width changed to 400+ px
    
    Change-Id: Ied97043e0649c552190b490d41f60579db523625

diff --git a/svtools/uiconfig/ui/placeedit.ui b/svtools/uiconfig/ui/placeedit.ui
index f0cf611..5434102 100644
--- a/svtools/uiconfig/ui/placeedit.ui
+++ b/svtools/uiconfig/ui/placeedit.ui
@@ -33,6 +33,7 @@
     </data>
   </object>
   <object class="GtkDialog" id="PlaceEditDialog">
+    <property name="width_request">400</property>
     <property name="can_focus">False</property>
     <property name="border_width">6</property>
     <property name="title" translatable="yes">File Services</property>
commit 626befc4fa3d3c879136f51300d854a049398a79
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Tue Aug 4 15:06:37 2015 +0200

    no selection after deletion of a service
    
    Change-Id: Id59a55a2af74851ff7b2fa8d6af30350347eb4c6

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index f998633..11278f2 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -719,15 +719,8 @@ IMPL_LINK_TYPED ( RemoteFilesDialog, EditServiceMenuHdl, MenuButton *, pButton,
                 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_pAddService_btn->SetPopupMenu( NULL );
-                }
+                m_pServices_lb->SetNoSelection();
+                m_pAddService_btn->SetPopupMenu( NULL );
 
                 m_bIsUpdated = true;
             }
commit 1bd5e84a3fdc031c312f814d3a17e54a177d2dbc
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Tue Aug 4 15:03:19 2015 +0200

    do not show Add Service dialog on start
    
    Change-Id: I4548856d6df0e1ae7d57850a5e479635c62b97c0

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index 0806c81..f998633 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -342,11 +342,6 @@ void RemoteFilesDialog::Resize()
 
 short RemoteFilesDialog::Execute()
 {
-    if( m_pServices_lb->GetEntryCount() == 0 )
-    {
-        Show();
-        AddServiceHdl( NULL );
-    }
     if( m_pServices_lb->GetEntryCount() > 0 )
     {
         Show();
commit d8ebd42940269c3add46f6d0cdc0f7f4d194d240
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Mon Aug 3 16:47:29 2015 +0200

    delete entry in the context menu
    
    Change-Id: Ib315dbc27b8b278ffce4bb24f4c4b60e5cb4d709

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index 4ec8569..0806c81 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -226,6 +226,7 @@ RemoteFilesDialog::RemoteFilesDialog( vcl::Window* pParent, WinBits nBits )
     m_pFileView->EnableAutoResize();
     m_pFileView->SetDoubleClickHdl( LINK( this, RemoteFilesDialog, DoubleClickHdl ) );
     m_pFileView->SetSelectHdl( LINK( this, RemoteFilesDialog, SelectHdl ) );
+    m_pFileView->EnableDelete( true );
 
     m_pSplitter = VclPtr< Splitter >::Create( m_pContainer, WB_HSCROLL );
     m_pSplitter->SetBackground( Wallpaper( Application::GetSettings().GetStyleSettings().GetFaceColor() ) );
commit 12bd5afbf76494be98fbab0ac11f8a5da0d4cb1d
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Mon Aug 3 16:33:25 2015 +0200

    don't show edit menu when there is no selected service
    
    Change-Id: I6b5f713926383d776aa687801f6bef239c9675cb

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index 5233a62..4ec8569 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -354,6 +354,7 @@ short RemoteFilesDialog::Execute()
     if( !m_bIsConnected )
     {
         m_pServices_lb->SetNoSelection();
+        m_pAddService_btn->SetPopupMenu( NULL );
     }
 
     short nRet = SvtFileDialog_Base::Execute();
@@ -654,6 +655,7 @@ IMPL_LINK_NOARG ( RemoteFilesDialog, SelectServiceHdl )
     if( nPos >= 0 )
     {
         OUString sURL = m_aServices[nPos]->GetUrl();
+        m_pAddService_btn->SetPopupMenu( m_pAddMenu );
 
         m_bServiceChanged = true;
         OpenURL( sURL );
commit 8ab1f65761b4064c60a5724d1ff5c7165a61bbde
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Mon Aug 3 14:59:58 2015 +0200

    FolderTree: changed root node name ('Root')
    
    Change-Id: I495965e065366880b364578a02af7092d6efbad4

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index 0e26283..5233a62 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -1099,12 +1099,11 @@ void RemoteFilesDialog::UpdateControls( const OUString& rURL )
     if( nPos >= 0 && m_bServiceChanged && rURL == m_aServices[nPos]->GetUrl() )
     {
         OUString sURL = m_aServices[nPos]->GetUrl();
-        OUString sName = m_aServices[nPos]->GetName();
 
         m_pPath->SetRootName( m_sRootLabel );
         m_pTreeView->Clear();
 
-        SvTreeListEntry* pRoot = m_pTreeView->InsertEntry( sName, NULL, true );
+        SvTreeListEntry* pRoot = m_pTreeView->InsertEntry( m_sRootLabel, NULL, true );
         OUString* sData = new OUString( rURL );
         pRoot->SetUserData( static_cast< void* >( sData ) );
 
commit acd916fcca6523bde8b78e3f71fd5c1d0bdee246
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Mon Aug 3 14:56:14 2015 +0200

    FolderTree width 100 -> 150
    
    Change-Id: I2d349c19a11679b0c58a1efbd134837f5c3aabdd

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index b32f196..0e26283 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -233,7 +233,7 @@ RemoteFilesDialog::RemoteFilesDialog( vcl::Window* pParent, WinBits nBits )
     m_pSplitter->Show();
 
     m_pTreeView = VclPtr< FolderTree >::Create( m_pContainer, WB_BORDER );
-    Size aSize( 100, 200 );
+    Size aSize( 150, 200 );
     m_pTreeView->set_height_request( aSize.Height() );
     m_pTreeView->set_width_request( aSize.Width() );
     m_pTreeView->SetSizePixel( aSize );
commit 0f9b1412b96d7b05ff485f2a438138a6022642b1
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Mon Aug 3 14:50:44 2015 +0200

    don't invalidate the dialog after every typed character
    
    Change-Id: Ib422edf3b615fec6513887283595f647f5bc197e

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index 40b9c75..b32f196 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -814,7 +814,8 @@ IMPL_LINK_NOARG( RemoteFilesDialog, FileNameGetFocusHdl )
 IMPL_LINK_NOARG( RemoteFilesDialog, FileNameModifyHdl )
 {
     m_pFileView->SetNoSelection();
-    EnableControls();
+    if( !m_pOk_btn->IsEnabled() )
+        EnableControls();
 
     return 1;
 }
commit a6995084ac2fefd1189bf001d2812f03d17abcdb
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Mon Aug 3 14:43:32 2015 +0200

    Breadcrumb: changed first entry label ('Root')
    
    Change-Id: Id15bc1ef92fdab22ba3332dc9b42fb9c785298b4

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index dde7eeb..40b9c75 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -206,6 +206,7 @@ RemoteFilesDialog::RemoteFilesDialog( vcl::Window* pParent, WinBits nBits )
     m_pOk_btn->SetClickHdl( LINK( this, RemoteFilesDialog, OkHdl ) );
     m_pCancel_btn->SetClickHdl( LINK( this, RemoteFilesDialog, CancelHdl ) );
 
+    m_sRootLabel = ResId( STR_SVT_ROOTLABEL, *ResMgrHolder::getOrCreate() );
     m_pPath = VclPtr<Breadcrumb>::Create( get< vcl::Window >( "breadcrumb_container" ) );
     m_pPath->set_hexpand( true );
     m_pPath->SetClickHdl( LINK( this, RemoteFilesDialog, SelectBreadcrumbHdl ) );
@@ -1099,7 +1100,7 @@ void RemoteFilesDialog::UpdateControls( const OUString& rURL )
         OUString sURL = m_aServices[nPos]->GetUrl();
         OUString sName = m_aServices[nPos]->GetName();
 
-        m_pPath->SetRootName( sName );
+        m_pPath->SetRootName( m_sRootLabel );
         m_pTreeView->Clear();
 
         SvTreeListEntry* pRoot = m_pTreeView->InsertEntry( sName, NULL, true );
diff --git a/fpicker/source/office/RemoteFilesDialog.hxx b/fpicker/source/office/RemoteFilesDialog.hxx
index ea6af5f..0d61f41 100644
--- a/fpicker/source/office/RemoteFilesDialog.hxx
+++ b/fpicker/source/office/RemoteFilesDialog.hxx
@@ -127,6 +127,7 @@ private:
 
     OUString m_sPath;
     OUString m_sStdDir;
+    OUString m_sRootLabel;
     OUString m_sLastServiceUrl;
     unsigned int m_nCurrentFilter;
 
diff --git a/fpicker/source/office/iodlg.src b/fpicker/source/office/iodlg.src
index bc43b98..775b6ee 100644
--- a/fpicker/source/office/iodlg.src
+++ b/fpicker/source/office/iodlg.src
@@ -110,6 +110,11 @@ String STR_SVT_DELETESERVICE
     Text [ en-US ] = "Are you sure you want to delete the service?\n\"$servicename$\"" ;
 };
 
+String STR_SVT_ROOTLABEL
+{
+    Text [ en-US ] = "Root" ;
+};
+
 String STR_SVT_NEW_FOLDER
 {
     Text [ en-US ] = "Folder" ;
diff --git a/include/vcl/fpicker.hrc b/include/vcl/fpicker.hrc
index 7d4bd16..896d9c8 100644
--- a/include/vcl/fpicker.hrc
+++ b/include/vcl/fpicker.hrc
@@ -28,6 +28,7 @@
 #define STR_SVT_FOLDERPICKER_DEFAULT_DESCRIPTION    (STR_SVT_FILEPICKER_START+13)
 #define STR_SVT_ALREADYEXISTOVERWRITE               (STR_SVT_FILEPICKER_START+14)
 #define STR_SVT_DELETESERVICE                       (STR_SVT_FILEPICKER_START+15)
+#define STR_SVT_ROOTLABEL                           (STR_SVT_FILEPICKER_START+16)
 
 #endif
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 4e8a3f4c1a5f3c786fca60186e7d1dfa1b7da010
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Mon Aug 3 14:28:42 2015 +0200

    changed label text (File name)
    
    Change-Id: Ida5bcd0287b49b7e6e97a7573e9cf12f25d95f6d

diff --git a/fpicker/uiconfig/ui/remotefilesdialog.ui b/fpicker/uiconfig/ui/remotefilesdialog.ui
index c9a6ac0..8bf57a3 100644
--- a/fpicker/uiconfig/ui/remotefilesdialog.ui
+++ b/fpicker/uiconfig/ui/remotefilesdialog.ui
@@ -194,7 +194,7 @@
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="xalign">0</property>
-                <property name="label" translatable="yes">Full name</property>
+                <property name="label" translatable="yes">File name</property>
               </object>
               <packing>
                 <property name="left_attach">0</property>
commit b68c3b09ae3a3f6a764759c95c0d7ecb3abaff26
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Mon Aug 3 13:19:51 2015 +0200

    remember user settings
    
    Change-Id: I69c4672646365ca4cbeb04d6956741ffe365ad35

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index cdb38ec..dde7eeb 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -249,6 +249,9 @@ RemoteFilesDialog::RemoteFilesDialog( vcl::Window* pParent, WinBits nBits )
     m_pContainer->Show();
     m_pContainer->Enable( false );
 
+    m_sIniKey = "RemoteFilesDialog";
+    InitSize();
+
     m_pName_ed->SetGetFocusHdl( LINK( this, RemoteFilesDialog, FileNameGetFocusHdl ) );
     m_pName_ed->SetModifyHdl( LINK( this, RemoteFilesDialog, FileNameModifyHdl ) );
 
@@ -273,6 +276,17 @@ void RemoteFilesDialog::dispose()
 {
     m_pFileView->SetSelectHdl( Link<>() );
 
+    // save window state
+    if( !m_sIniKey.isEmpty() )
+    {
+        SvtViewOptions aDlgOpt( E_DIALOG, m_sIniKey );
+        aDlgOpt.SetWindowState( OStringToOUString( GetWindowState(), osl_getThreadTextEncoding() ) );
+        OUString sUserData = m_pFileView->GetConfigString();
+        aDlgOpt.SetUserItem( OUString( "UserData" ),
+                             makeAny( sUserData ) );
+    }
+
+    // save services
     std::shared_ptr< comphelper::ConfigurationChanges > batch( comphelper::ConfigurationChanges::create( m_context ) );
 
     officecfg::Office::Common::Misc::FilePickerLastService::set( m_sLastServiceUrl, batch );
@@ -381,6 +395,25 @@ OUString lcl_GetServiceType( ServicePtr pService )
     }
 }
 
+void RemoteFilesDialog::InitSize()
+{
+    if( m_sIniKey.isEmpty() )
+        return;
+
+    // initialize from config
+    SvtViewOptions aDlgOpt( E_DIALOG, m_sIniKey );
+
+    if( aDlgOpt.Exists() )
+    {
+        SetWindowState( OUStringToOString( aDlgOpt.GetWindowState(), osl_getThreadTextEncoding() ) );
+
+        Any aUserData = aDlgOpt.GetUserItem( OUString( "UserData" ) );
+        OUString sCfgStr;
+        if( aUserData >>= sCfgStr )
+            m_pFileView->SetConfigString( sCfgStr );
+    }
+}
+
 void RemoteFilesDialog::FillServicesListbox()
 {
     m_pServices_lb->Clear();
diff --git a/fpicker/source/office/RemoteFilesDialog.hxx b/fpicker/source/office/RemoteFilesDialog.hxx
index 2bb7c35..ea6af5f 100644
--- a/fpicker/source/office/RemoteFilesDialog.hxx
+++ b/fpicker/source/office/RemoteFilesDialog.hxx
@@ -19,6 +19,8 @@
 #include <tools/errinf.hxx>
 #include <tools/resid.hxx>
 
+#include <unotools/viewoptions.hxx>
+
 #include <vcl/button.hxx>
 #include <vcl/fpicker.hrc>
 #include <vcl/menubtn.hxx>
@@ -121,6 +123,8 @@ private:
     bool m_bIsConnected;
     bool m_bServiceChanged;
 
+    OUString m_sIniKey;
+
     OUString m_sPath;
     OUString m_sStdDir;
     OUString m_sLastServiceUrl;
@@ -147,6 +151,8 @@ private:
     std::vector< ServicePtr > m_aServices;
     std::vector< std::pair< OUString, OUString > > m_aFilters;
 
+    void InitSize();
+
     void FillServicesListbox();
 
     /* If failure returns < 0 */
commit cb96416b629f56dfba7797a7280e371c841fbc9c
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Thu Jul 30 15:11:22 2015 +0200

    clear string (cached url) in correct place
    
    Change-Id: Ib7ff8200b768ef3a2a50c42f0ebf165185cfeeba

diff --git a/svtools/source/contnr/foldertree.cxx b/svtools/source/contnr/foldertree.cxx
index 2f1d7fb..a7185e2 100644
--- a/svtools/source/contnr/foldertree.cxx
+++ b/svtools/source/contnr/foldertree.cxx
@@ -75,12 +75,12 @@ void FolderTree::FillTreeEntry( SvTreeListEntry* pEntry )
                 }
             }
         }
-    }
-    else
-    {
-        // this dir was updated recently
-        // next time read this remote folder
-        m_sLastUpdatedDir = "";
+        else
+        {
+            // this dir was updated recently
+            // next time read this remote folder
+            m_sLastUpdatedDir = "";
+        }
     }
 }
 
commit d7bb9feab18fa33d9281d3e2e9a208881dc420b0
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Thu Jul 30 13:57:20 2015 +0200

    'Wait' cursor while expanding a tree node
    
    Change-Id: Iad79fa16bc4c7f7086d2adca6ea417f6e1959e61

diff --git a/svtools/source/contnr/foldertree.cxx b/svtools/source/contnr/foldertree.cxx
index f783a5b..2f1d7fb 100644
--- a/svtools/source/contnr/foldertree.cxx
+++ b/svtools/source/contnr/foldertree.cxx
@@ -27,7 +27,14 @@ FolderTree::FolderTree( vcl::Window* pParent, WinBits nBits )
 
 void FolderTree::RequestingChildren( SvTreeListEntry* pEntry )
 {
+    EnableChildPointerOverwrite( true );
+    SetPointer( PointerStyle::Wait );
+    Invalidate(InvalidateFlags::Update);
+
     FillTreeEntry( pEntry );
+
+    SetPointer( PointerStyle::Arrow );
+    EnableChildPointerOverwrite( false );
 }
 
 void FolderTree::FillTreeEntry( SvTreeListEntry* pEntry )
commit 2d25bdb2562c908acfd89849ea00afdbb6dc0e16
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Thu Jul 30 12:41:38 2015 +0200

    append '(Remote)' in the titlebar when remote file is opened
    
    Change-Id: Idf0a9594406601154319ae17e42ece4bf2d56dc9

diff --git a/framework/inc/classes/resource.hrc b/framework/inc/classes/resource.hrc
index 2b1ea1c..c7fc394 100644
--- a/framework/inc/classes/resource.hrc
+++ b/framework/inc/classes/resource.hrc
@@ -52,6 +52,7 @@
 #define STR_LANGSTATUS_HINT                     (RID_STR_START+25)
 #define STR_OPEN_REMOTE                         (RID_STR_START+26)
 #define STR_REMOTE_FILE                         (RID_STR_START+27)
+#define STR_REMOTE_TITLE                        (RID_STR_START+28)
 
 #define POPUPMENU_TOOLBAR_QUICKCUSTOMIZATION    (RID_MENU_START+0)
 
diff --git a/framework/source/classes/resource.src b/framework/source/classes/resource.src
index 44e0c70..570e288 100644
--- a/framework/source/classes/resource.src
+++ b/framework/source/classes/resource.src
@@ -124,6 +124,11 @@ String STR_REMOTE_FILE
     Text [ en-US ] = "Save Remote File...";
 };
 
+String STR_REMOTE_TITLE
+{
+    Text [ en-US ] = " (Remote)";
+};
+
 String STR_TOOLBAR_TITLE_ADDON
 {
     Text [ en-US ] = "Add-On %num%";
diff --git a/framework/source/fwe/helper/titlehelper.cxx b/framework/source/fwe/helper/titlehelper.cxx
index d8c44d3..64d547e 100644
--- a/framework/source/fwe/helper/titlehelper.cxx
+++ b/framework/source/fwe/helper/titlehelper.cxx
@@ -18,6 +18,8 @@
  */
 
 #include <framework/titlehelper.hxx>
+#include <classes/fwkresid.hxx>
+#include <classes/resource.hrc>
 #include <services.h>
 #include <properties.h>
 
@@ -409,6 +411,7 @@ void TitleHelper::impl_updateTitleForController (const css::uno::Reference< css:
         nLeasedNumber = xNumbers->leaseNumber (xOwner);
 
     css::uno::Reference< css::frame::XTitle > xModelTitle(xController->getModel (), css::uno::UNO_QUERY);
+    css::uno::Reference< css::frame::XModel > xModel(xController->getModel (), css::uno::UNO_QUERY);
     if (!xModelTitle.is ())
         xModelTitle.set(xController, css::uno::UNO_QUERY);
     if (xModelTitle.is ())
@@ -419,6 +422,16 @@ void TitleHelper::impl_updateTitleForController (const css::uno::Reference< css:
             sTitle.appendAscii (" : ");
             sTitle.append      ((::sal_Int32)nLeasedNumber);
         }
+        if (xModel.is ())
+        {
+            INetURLObject aURL (xModel->getURL ());
+            if (aURL.GetProtocol () != INetProtocol::File
+                && aURL.GetProtocol () != INetProtocol::NotValid)
+            {
+                OUString sRemoteText (FwkResId (STR_REMOTE_TITLE));
+                sTitle.append (sRemoteText);
+            }
+        }
     }
     else
     {
commit 3f9dbea4710578575e6426bc8281234d718b104d
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Wed Jul 29 14:13:58 2015 +0200

    save mode improvements
    
    Change-Id: I14953eafb3fbd840df5f9c890b55855e14a1fd9a

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index 5a32d76..cdb38ec 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -757,8 +757,11 @@ IMPL_LINK_NOARG ( RemoteFilesDialog, SelectHdl )
             }
             else
             {
-                m_sPath.clear();
-                m_pName_ed->SetText( "" );
+                if( m_eMode == REMOTEDLG_MODE_OPEN )
+                {
+                    m_sPath.clear();
+                    m_pName_ed->SetText( "" );
+                }
             }
 
             EnableControls();
@@ -883,24 +886,10 @@ IMPL_LINK_NOARG ( RemoteFilesDialog, OkHdl )
 
     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( bFileDlg )
+        bExists = ContentIsDocument(m_sPath);
+    else
+        bExists = ContentIsFolder(m_sPath);
 
     if ( bExists )
     {
@@ -917,6 +906,8 @@ IMPL_LINK_NOARG ( RemoteFilesDialog, OkHdl )
     {
         if( m_eMode == REMOTEDLG_MODE_OPEN )
             return 0;
+        if( m_eMode == REMOTEDLG_MODE_SAVE && ContentIsFolder(m_sPath) )
+            return 0;
     }
 
     EndDialog( RET_OK );
@@ -1157,7 +1148,25 @@ bool RemoteFilesDialog::ContentIsFolder( const OUString& rURL )
     return false;
 }
 
+bool RemoteFilesDialog::ContentIsDocument( 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.isDocument();
+    }
+    catch( const Exception& )
+    {
+        // a content doesn't exist
+    }
 
+    return false;
+}
 
 sal_Int32 RemoteFilesDialog::getTargetColorDepth()
 {
diff --git a/fpicker/source/office/RemoteFilesDialog.hxx b/fpicker/source/office/RemoteFilesDialog.hxx
index 5e45873..2bb7c35 100644
--- a/fpicker/source/office/RemoteFilesDialog.hxx
+++ b/fpicker/source/office/RemoteFilesDialog.hxx
@@ -80,6 +80,7 @@ public:
     virtual const OUString& GetPath() SAL_OVERRIDE;
     virtual std::vector<OUString> GetPathList() const SAL_OVERRIDE;
     virtual bool ContentIsFolder( const OUString& rURL ) SAL_OVERRIDE;
+    virtual bool ContentIsDocument( const OUString& rURL );
 
     virtual OUString getCurrentFileText() const SAL_OVERRIDE;
     virtual void setCurrentFileText( const OUString& rText, bool bSelectAll = false ) SAL_OVERRIDE;
commit 8d81845c1b2711e60e51546a4c0f55c98e52e3cb
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Wed Jul 29 12:42:12 2015 +0200

    set no selection when user aborted auth
    
    Change-Id: I15c865306948d4fe321b188324ad298fee322a6a

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index 6078db4..5a32d76 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -336,6 +336,10 @@ short RemoteFilesDialog::Execute()
         Show();
         SelectServiceHdl( NULL );
     }
+    if( !m_bIsConnected )
+    {
+        m_pServices_lb->SetNoSelection();
+    }
 
     short nRet = SvtFileDialog_Base::Execute();
 
commit 684ad114592bf2bba11c3281863aad6dbf2153ea
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Wed Jul 29 11:09:44 2015 +0200

    path must contain user name
    
    Change-Id: Ic8c98e724645d49fd9c6da796f9e060aa784246f

diff --git a/svtools/source/control/breadcrumb.cxx b/svtools/source/control/breadcrumb.cxx
index 5ae725d..53e1780 100644
--- a/svtools/source/control/breadcrumb.cxx
+++ b/svtools/source/control/breadcrumb.cxx
@@ -74,8 +74,12 @@ void Breadcrumb::SetURL( const OUString& rURL )
     INetURLObject aURL( rURL );
     aURL.setFinalSlash();
 
+    OUString sUser = aURL.GetUser( INetURLObject::NO_DECODE );
     OUString sPath = aURL.GetURLPath(INetURLObject::DECODE_WITH_CHARSET);
-    OUString sRootPath = INetURLObject::GetScheme( aURL.GetProtocol() ) + aURL.GetHost();
+    OUString sRootPath = INetURLObject::GetScheme( aURL.GetProtocol() )
+                        + sUser
+                        + ( sUser.isEmpty() ? OUString() : "@" )
+                        + aURL.GetHost();
 
     int nSegments = aURL.getSegmentCount();
     unsigned int nPos = 0;
commit 3131bea20e2a31c4fb2888c322598d70e6f22fa0
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Wed Jul 29 10:18:20 2015 +0200

    CMIS: remember new session for each user
    
    Change-Id: I7d0a72e48b8f9056e8761cae8939e2b8f6dbdd24

diff --git a/ucb/source/ucp/cmis/cmis_content.cxx b/ucb/source/ucp/cmis/cmis_content.cxx
index 3ee3518..d23ce6e 100644
--- a/ucb/source/ucp/cmis/cmis_content.cxx
+++ b/ucb/source/ucp/cmis/cmis_content.cxx
@@ -339,7 +339,7 @@ namespace cmis
         // Look for a cached session, key is binding url + repo id
         OUString sSessionId = m_aURL.getBindingUrl( ) + m_aURL.getRepositoryId( );
         if ( NULL == m_pSession )
-            m_pSession = m_pProvider->getSession( sSessionId );
+            m_pSession = m_pProvider->getSession( sSessionId, m_aURL.getUsername( ) );
 
         if ( NULL == m_pSession )
         {
@@ -411,7 +411,7 @@ namespace cmis
                 }
                 else
                 {
-                    m_pProvider->registerSession(sSessionId, m_pSession);
+                    m_pProvider->registerSession(sSessionId, m_aURL.getUsername( ), m_pSession);
                 }
             }
             else
@@ -2019,14 +2019,20 @@ namespace cmis
                 {
                     // TODO Cache the objects
 
+                    INetURLObject aURL( m_sURL );
+                    OUString sUser = aURL.GetUser( INetURLObject::NO_DECODE );
+
                     URL aUrl( m_sURL );
                     OUString sPath( m_sObjectPath );
                     if ( !sPath.endsWith("/") )
                         sPath += "/";
                     sPath += STD_TO_OUSTR( ( *it )->getName( ) );
                     OUString sId = STD_TO_OUSTR( ( *it )->getId( ) );
+
                     aUrl.setObjectId( sId );
                     aUrl.setObjectPath( sPath );
+                    aUrl.setUsername( sUser );
+
                     uno::Reference< ucb::XContentIdentifier > xId = new ucbhelper::ContentIdentifier( aUrl.asString( ) );
                     uno::Reference< ucb::XContent > xContent = new Content( m_xContext, m_pProvider, xId, *it );
 
diff --git a/ucb/source/ucp/cmis/cmis_provider.cxx b/ucb/source/ucp/cmis/cmis_provider.cxx
index a41b52c..c9819b5 100644
--- a/ucb/source/ucp/cmis/cmis_provider.cxx
+++ b/ucb/source/ucp/cmis/cmis_provider.cxx
@@ -59,10 +59,11 @@ ContentProvider::queryContent(
     return xContent;
 }
 
-libcmis::Session* ContentProvider::getSession( const OUString& sBindingUrl )
+libcmis::Session* ContentProvider::getSession( const OUString& sBindingUrl, const OUString& sUsername )
 {
     libcmis::Session* pSession = NULL;
-    std::map< OUString, libcmis::Session* >::iterator it = m_aSessionCache.find( sBindingUrl );
+    std::map< std::pair< OUString, OUString >, libcmis::Session* >::iterator it
+            = m_aSessionCache.find( std::pair< OUString, OUString >( sBindingUrl, sUsername ) );
     if ( it != m_aSessionCache.end( ) )
     {
         pSession = it->second;
@@ -70,9 +71,13 @@ libcmis::Session* ContentProvider::getSession( const OUString& sBindingUrl )
     return pSession;
 }
 
-void ContentProvider::registerSession( const OUString& sBindingUrl, libcmis::Session* pSession )
+void ContentProvider::registerSession( const OUString& sBindingUrl, const OUString& sUsername, libcmis::Session* pSession )
 {
-    m_aSessionCache.insert( std::pair< OUString, libcmis::Session* >( sBindingUrl, pSession ) );
+    m_aSessionCache.insert( std::pair< std::pair< OUString, OUString >, libcmis::Session* >
+                            (
+                                std::pair< OUString, OUString >( sBindingUrl, sUsername ),
+                                pSession
+                            ) );
 }
 
 ContentProvider::ContentProvider(
diff --git a/ucb/source/ucp/cmis/cmis_provider.hxx b/ucb/source/ucp/cmis/cmis_provider.hxx
index efbd439..1dcad0a 100644
--- a/ucb/source/ucp/cmis/cmis_provider.hxx
+++ b/ucb/source/ucp/cmis/cmis_provider.hxx
@@ -20,7 +20,7 @@ namespace cmis
 class ContentProvider : public ::ucbhelper::ContentProviderImplHelper
 {
 private:
-    std::map< OUString, libcmis::Session* > m_aSessionCache;
+    std::map< std::pair< OUString, OUString >, libcmis::Session* > m_aSessionCache;
 
 public:
     explicit ContentProvider( const ::com::sun::star::uno::Reference<
@@ -64,8 +64,8 @@ public:
         throw( ::com::sun::star::ucb::IllegalIdentifierException,
                ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
 
-    libcmis::Session* getSession( const OUString& sBindingUrl );
-    void registerSession( const OUString& sBindingUrl, libcmis::Session* pSession );
+    libcmis::Session* getSession( const OUString& sBindingUrl, const OUString& sUsername );
+    void registerSession( const OUString& sBindingUrl, const OUString& sUsername, libcmis::Session* pSession );
 };
 
 }
diff --git a/ucb/source/ucp/cmis/cmis_url.cxx b/ucb/source/ucp/cmis/cmis_url.cxx
index ff0763c..533ebf2 100644
--- a/ucb/source/ucp/cmis/cmis_url.cxx
+++ b/ucb/source/ucp/cmis/cmis_url.cxx
@@ -53,6 +53,11 @@ namespace cmis
         m_sId = sId;
     }
 
+    void URL::setUsername( const OUString& sUser )
+    {
+        m_sUser = sUser;
+    }
+
     OUString URL::asString( )
     {
         OUString sUrl;
@@ -61,7 +66,9 @@ namespace cmis
                 rtl_UriCharClassRelSegment,
                 rtl_UriEncodeKeepEscapes,
                 RTL_TEXTENCODING_UTF8 );
-        sUrl = "vnd.libreoffice.cmis://" + sEncodedBinding;
+        sUrl = "vnd.libreoffice.cmis://" +
+                ( m_sUser.isEmpty() ? OUString( ) : (m_sUser + "@") ) +
+                sEncodedBinding;
 
         if ( !m_sPath.isEmpty( ) )
         {
diff --git a/ucb/source/ucp/cmis/cmis_url.hxx b/ucb/source/ucp/cmis/cmis_url.hxx
index 14a32c00..c09b509 100644
--- a/ucb/source/ucp/cmis/cmis_url.hxx
+++ b/ucb/source/ucp/cmis/cmis_url.hxx
@@ -38,6 +38,7 @@ namespace cmis
             const OUString& getPassword() const { return m_sPass; }
             void setObjectPath( const OUString& sPath );
             void setObjectId( const OUString& sId );
+            void setUsername( const OUString& sUser );
 
             OUString asString( );
     };
commit f6abd51cd8408fab41eb19c185964c44d6240b03
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Tue Jul 28 10:30:58 2015 +0200

    reuse data from SvtFileView in the FolderTree
    
    Change-Id: I5a830459e7d5d9c71b7997b9014dde048b317d81

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index 5681efd..6078db4 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -1078,8 +1078,6 @@ void RemoteFilesDialog::UpdateControls( const OUString& rURL )
         OUString* sData = new OUString( rURL );
         pRoot->SetUserData( static_cast< void* >( sData ) );
 
-        m_pTreeView->Expand( pRoot );
-
         m_pName_ed->GrabFocus();
 
         m_sLastServiceUrl = sURL;
@@ -1088,8 +1086,13 @@ void RemoteFilesDialog::UpdateControls( const OUString& rURL )
     }
 
     m_pPath->SetURL( rURL );
+
     m_pTreeView->SetSelectHdl( Link<>() );
-    m_pTreeView->SetTreePath( rURL );
+
+    // read cached data for this url and fill the tree
+    const ::std::vector< std::pair< OUString, OUString > >& rFolders = m_pFileView->GetSubFolders();
+    m_pTreeView->FillTreeEntry( rURL, rFolders );
+
     m_pTreeView->SetSelectHdl( LINK( this, RemoteFilesDialog, TreeSelectHdl ) );
 
     m_bIsConnected = true;
diff --git a/include/svtools/fileview.hxx b/include/svtools/fileview.hxx
index 6bb6415..6946975 100644
--- a/include/svtools/fileview.hxx
+++ b/include/svtools/fileview.hxx
@@ -173,6 +173,8 @@ public:
 
     void                    EndInplaceEditing( bool _bCancel );
 
+    ::std::vector< std::pair< OUString, OUString > > GetSubFolders();
+
 protected:
     virtual void            StateChanged( StateChangedType nStateChange ) SAL_OVERRIDE;
 };
diff --git a/include/svtools/foldertree.hxx b/include/svtools/foldertree.hxx
index 4be22b9..ccf0382 100644
--- a/include/svtools/foldertree.hxx
+++ b/include/svtools/foldertree.hxx
@@ -42,12 +42,15 @@ private:
     Image m_aFolderImage;
     Image m_aFolderExpandedImage;
 
+    OUString m_sLastUpdatedDir;
+
 public:
     FolderTree( vcl::Window* pParent, WinBits nBits );
 
     virtual void RequestingChildren( SvTreeListEntry* pEntry ) SAL_OVERRIDE;
 
     void FillTreeEntry( SvTreeListEntry* pEntry );
+    void FillTreeEntry( const OUString & rUrl, const ::std::vector< std::pair< OUString, OUString > >& rFolders );
     void SetTreePath( OUString const & sUrl );
     void SetBlackList( const ::com::sun::star::uno::Sequence< OUString >& rBlackList );
 };
diff --git a/svtools/source/contnr/fileview.cxx b/svtools/source/contnr/fileview.cxx
index 38fa3c4..08874fc 100644
--- a/svtools/source/contnr/fileview.cxx
+++ b/svtools/source/contnr/fileview.cxx
@@ -1387,6 +1387,21 @@ OUString SvtFileView::GetConfigString() const
     return sRet;
 }
 
+::std::vector< std::pair< OUString, OUString > > SvtFileView::GetSubFolders()
+{
+    ::std::vector< std::pair< OUString, OUString > > aContent;
+
+    for( ::std::vector< SortingData_Impl* >::size_type i = 0; i < mpImp->maContent.size(); i++ )
+    {
+        if( mpImp->maContent[i]->mbIsFolder )
+        {
+            std::pair< OUString, OUString > aEntry( mpImp->maContent[i]->GetTitle(), mpImp->maContent[i]->maTargetURL );
+            aContent.push_back( aEntry );
+        }
+    }
+
+    return aContent;
+}
 
 void SvtFileView::SetConfigString( const OUString& rCfgStr )
 {
diff --git a/svtools/source/contnr/foldertree.cxx b/svtools/source/contnr/foldertree.cxx
index 7131340..f783a5b 100644
--- a/svtools/source/contnr/foldertree.cxx
+++ b/svtools/source/contnr/foldertree.cxx
@@ -34,21 +34,21 @@ void FolderTree::FillTreeEntry( SvTreeListEntry* pEntry )
 {
     if( pEntry )
     {
-        while (SvTreeListEntry* pChild = FirstChild(pEntry))
-        {
-            GetModel()->Remove(pChild);
-        }
+        OUString* pURL = static_cast< OUString* >( pEntry->GetUserData() );
 
-        ::std::vector< SortingData_Impl* > aContent;
+        if( pURL && m_sLastUpdatedDir != *pURL )
+        {
+            while (SvTreeListEntry* pChild = FirstChild(pEntry))
+            {
+                GetModel()->Remove(pChild);
+            }
 
-        ::rtl::Reference< ::svt::FileViewContentEnumerator >
-            xContentEnumerator(new FileViewContentEnumerator(
-            m_xEnv, aContent, m_aMutex, NULL));
+            ::std::vector< SortingData_Impl* > aContent;
 
-        OUString* pURL = static_cast< OUString* >( pEntry->GetUserData() );
+            ::rtl::Reference< ::svt::FileViewContentEnumerator >
+                xContentEnumerator(new FileViewContentEnumerator(
+                m_xEnv, aContent, m_aMutex, NULL));
 
-        if( pURL )
-        {
             FolderDescriptor aFolder( *pURL );
 
             EnumerationResult eResult =
@@ -69,6 +69,38 @@ void FolderTree::FillTreeEntry( SvTreeListEntry* pEntry )
             }
         }
     }
+    else
+    {
+        // this dir was updated recently
+        // next time read this remote folder
+        m_sLastUpdatedDir = "";
+    }
+}
+
+void FolderTree::FillTreeEntry( const OUString & rUrl, const ::std::vector< std::pair< OUString, OUString > >& rFolders )
+{
+    SetTreePath( rUrl );
+
+    SvTreeListEntry* pParent = GetCurEntry();
+
+    if( pParent && !IsExpanded( pParent ) )
+    {
+        while( GetChildCount( pParent ) > 0 )
+        {
+            SvTreeListEntry* pChild = FirstChild( pParent );
+            GetModel()->Remove( pChild );
+        }
+
+        for(::std::vector< std::pair< OUString, OUString > >::const_iterator it = rFolders.begin(); it != rFolders.end() ; ++it)
+        {
+            SvTreeListEntry* pNewEntry = InsertEntry( it->first, pParent, true  );
+            OUString* sData = new OUString( it->second );
+            pNewEntry->SetUserData( static_cast< void* >( sData ) );
+        }
+
+        m_sLastUpdatedDir = rUrl;
+        Expand( pParent );
+    }
 }
 
 void FolderTree::SetTreePath( OUString const & sUrl )
commit 938a1b00332090e68cca44c99eb6f4adeedc1f00
Author: Thomas Klausner <wiz at NetBSD.org>
Date:   Sun Aug 9 20:28:24 2015 +0200

    Fix some typos in strings.
    
    Change-Id: I7fb077c08dbfa3fe3f03941c7567dc65630cf266

diff --git a/sw/source/filter/ww8/ww8toolbar.cxx b/sw/source/filter/ww8/ww8toolbar.cxx
index 429d3b5..6460cc6 100644
--- a/sw/source/filter/ww8/ww8toolbar.cxx
+++ b/sw/source/filter/ww8/ww8toolbar.cxx
@@ -214,7 +214,7 @@ void SwCTBWrapper::Print( FILE* fp )
 
     for ( std::vector< Customization >::iterator it = rCustomizations.begin(); it != rCustomizations.end(); ++it, ++index )
     {
-        indent_printf(fp,"  Dumping custimization [%d]\n", static_cast< int >( index ));
+        indent_printf(fp,"  Dumping customization [%d]\n", static_cast< int >( index ));
         Indent c;
         it->Print(fp);
     }
@@ -258,7 +258,7 @@ Customization::~Customization()
 
 bool Customization::Read( SvStream &rS)
 {
-    SAL_INFO("sw.ww8","Custimization::Read() stream pos 0x" << std::hex << rS.Tell() );
+    SAL_INFO("sw.ww8","Customization::Read() stream pos 0x" << std::hex << rS.Tell() );
     nOffSet = rS.Tell();
     rS.ReadInt32( tbidForTBD ).ReadUInt16( reserved1 ).ReadUInt16( ctbds );
     if ( tbidForTBD )
@@ -273,7 +273,7 @@ bool Customization::Read( SvStream &rS)
             if (!aTBDelta.Read( rS ) )
                 return false;
             customizationDataTBDelta.push_back( aTBDelta );
-            // Only set the drop down for menu's associated with standard toolbar
+            // Only set the drop down for menus associated with standard toolbar
             if ( aTBDelta.ControlDropsToolBar() && tbidForTBD == 0x25 )
                 pWrapper->InsertDropIndex( aTBDelta.CustomizationIndex() );
         }
commit 5e5dee3512f5b010b832fcf569d7a3eb60f0f62c
Author: Maxim Monastirsky <momonasmon at gmail.com>
Date:   Sun Aug 9 15:23:16 2015 +0000

    Revert "tdf#91781 Add additional selection options and go to page to menu"
    
    This reverts commit 351c17497e36c5a42fba627043dabaef2e7040eb.
    
    Change-Id: I0f1367dd4ede68183cdb8d0574a4db10997bbe49
    Reviewed-on: https://gerrit.libreoffice.org/17616
    Reviewed-by: Maxim Monastirsky <momonasmon at gmail.com>
    Tested-by: Maxim Monastirsky <momonasmon at gmail.com>

diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
index ab3148e..3ee4ec3 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
@@ -5558,22 +5558,6 @@
         </prop>
       </node>
     </node>
-    <node oor:name=".uno:StatusSelectionModeExt" oor:op="replace">
-      <prop oor:name="Label" oor:type="xs:string">
-        <value xml:lang="en-US">Extended Selection</value>
-      </prop>
-      <prop oor:name="ContextLabel" oor:type="xs:string">
-        <value xml:lang="en-US">Extended</value>
-      </prop>
-    </node>
-    <node oor:name=".uno:StatusSelectionModeExp" oor:op="replace">
-      <prop oor:name="Label" oor:type="xs:string">
-        <value xml:lang="en-US">Adding Selection</value>
-      </prop>
-      <prop oor:name="ContextLabel" oor:type="xs:string">
-        <value xml:lang="en-US">Adding</value>
-      </prop>
-    </node>
     <node oor:name="Popups">
       <node oor:name=".uno:HelpMenu" oor:op="replace">
         <prop oor:name="Label" oor:type="xs:string">
diff --git a/sw/uiconfig/swriter/menubar/menubar.xml b/sw/uiconfig/swriter/menubar/menubar.xml
index 40dbed3..8300196 100644
--- a/sw/uiconfig/swriter/menubar/menubar.xml
+++ b/sw/uiconfig/swriter/menubar/menubar.xml
@@ -37,9 +37,9 @@
       <menu:menuitem menu:id=".uno:VersionDialog"/>
       <menu:menuseparator/>
       <menu:menuitem menu:id=".uno:Save"/>
-      <menu:menuitem menu:id=".uno:SaveAsRemote"/>
       <menu:menuitem menu:id=".uno:SaveAs"/>
       <menu:menuitem menu:id=".uno:SaveACopy"/>
+      <menu:menuitem menu:id=".uno:SaveAsRemote"/>
       <menu:menuitem menu:id=".uno:SaveAll"/>
       <menu:menuitem menu:id=".uno:CheckOut"/>
       <menu:menuitem menu:id=".uno:CancelCheckOut"/>
@@ -91,8 +91,6 @@
       <menu:menu menu:id=".uno:SelectionModeMenu">
         <menu:menupopup>
           <menu:menuitem menu:id=".uno:SelectionModeDefault" menu:style="radio"/>
-          <menu:menuitem menu:id=".uno:StatusSelectionModeExt" menu:style="radio"/>
-          <menu:menuitem menu:id=".uno:StatusSelectionModeExp" menu:style="radio"/>
           <menu:menuitem menu:id=".uno:SelectionModeBlock" menu:style="radio"/>
         </menu:menupopup>
       </menu:menu>
@@ -101,7 +99,6 @@
       <menu:menuseparator/>
       <menu:menuitem menu:id="vnd.sun.star.findbar:FocusToFindbar"/>
       <menu:menuitem menu:id=".uno:SearchDialog"/>
-      <menu:menuitem menu:id=".uno:GotoPage"/>
       <menu:menuseparator/>
       <menu:menu menu:id=".uno:ChangesMenu">
         <menu:menupopup>
commit 351c17497e36c5a42fba627043dabaef2e7040eb
Author: Yousuf Philips <philipz85 at hotmail.com>
Date:   Sun Aug 9 01:02:46 2015 +0400

    tdf#91781 Add additional selection options and go to page to menu
    
    Change-Id: I8ece4db5c776d8c233bdca3bee4c5fbf689baffb
    Reviewed-on: https://gerrit.libreoffice.org/17597
    Reviewed-by: Yousuf Philips <philipz85 at hotmail.com>
    Tested-by: Yousuf Philips <philipz85 at hotmail.com>

diff --git a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
index 3ee4ec3..ab3148e 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu
@@ -5558,6 +5558,22 @@
         </prop>
       </node>
     </node>
+    <node oor:name=".uno:StatusSelectionModeExt" oor:op="replace">
+      <prop oor:name="Label" oor:type="xs:string">
+        <value xml:lang="en-US">Extended Selection</value>
+      </prop>
+      <prop oor:name="ContextLabel" oor:type="xs:string">
+        <value xml:lang="en-US">Extended</value>
+      </prop>
+    </node>
+    <node oor:name=".uno:StatusSelectionModeExp" oor:op="replace">
+      <prop oor:name="Label" oor:type="xs:string">
+        <value xml:lang="en-US">Adding Selection</value>
+      </prop>
+      <prop oor:name="ContextLabel" oor:type="xs:string">
+        <value xml:lang="en-US">Adding</value>
+      </prop>
+    </node>
     <node oor:name="Popups">
       <node oor:name=".uno:HelpMenu" oor:op="replace">
         <prop oor:name="Label" oor:type="xs:string">
diff --git a/sw/uiconfig/swriter/menubar/menubar.xml b/sw/uiconfig/swriter/menubar/menubar.xml
index 8300196..40dbed3 100644
--- a/sw/uiconfig/swriter/menubar/menubar.xml
+++ b/sw/uiconfig/swriter/menubar/menubar.xml
@@ -37,9 +37,9 @@
       <menu:menuitem menu:id=".uno:VersionDialog"/>
       <menu:menuseparator/>
       <menu:menuitem menu:id=".uno:Save"/>
+      <menu:menuitem menu:id=".uno:SaveAsRemote"/>
       <menu:menuitem menu:id=".uno:SaveAs"/>
       <menu:menuitem menu:id=".uno:SaveACopy"/>
-      <menu:menuitem menu:id=".uno:SaveAsRemote"/>
       <menu:menuitem menu:id=".uno:SaveAll"/>
       <menu:menuitem menu:id=".uno:CheckOut"/>
       <menu:menuitem menu:id=".uno:CancelCheckOut"/>
@@ -91,6 +91,8 @@
       <menu:menu menu:id=".uno:SelectionModeMenu">
         <menu:menupopup>
           <menu:menuitem menu:id=".uno:SelectionModeDefault" menu:style="radio"/>

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list