[Libreoffice-commits] core.git: Branch 'feature/gsoc15-open-remote-files-dialog' - fpicker/source

Szymon Kłos eszkadev at gmail.com
Mon Aug 10 05:17:01 PDT 2015


 fpicker/source/office/RemoteFilesDialog.cxx |   69 +++++++++++++++++++---------
 1 file changed, 49 insertions(+), 20 deletions(-)

New commits:
commit 48ed3e1f7b3b4f225166dbea6944c63785c0905e
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Mon Aug 10 14:15:59 2015 +0200

    Show 'change password' only if is password is stored
    
    Change-Id: I04275d2e45ff32ed003a2487cd87500d550e9d73

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx b/fpicker/source/office/RemoteFilesDialog.cxx
index c90175d..7b90ae0 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -578,7 +578,39 @@ void RemoteFilesDialog::AddFileExtension()
 void RemoteFilesDialog::EnableControls()
 {
     if( m_pServices_lb->GetEntryCount() > 0 )
+    {
         m_pServices_lb->Enable( true );
+
+        if( m_pServices_lb->GetSelectEntryCount() )
+        {
+            m_pAddMenu->EnableItem( "change_password", false );
+
+            try
+            {
+                Reference< XPasswordContainer2 > xMasterPasswd(
+                    PasswordContainer::create( comphelper::getProcessComponentContext() ) );
+
+                if( xMasterPasswd->isPersistentStoringAllowed() )
+                {
+                    int nPos = GetSelectedServicePos();
+
+                    if( nPos >= 0 )
+                    {
+                        OUString sUrl( m_aServices[nPos]->GetUrl() );
+
+                        UrlRecord aURLEntries = xMasterPasswd->find( sUrl, Reference< XInteractionHandler>() );
+
+                        if( aURLEntries.UserList.getLength() )
+                        {
+                            m_pAddMenu->EnableItem( "change_password" );
+                        }
+                    }
+                }
+            }
+            catch( const Exception& )
+            {}
+        }
+    }
     else
         m_pServices_lb->Enable( false );
 
@@ -745,7 +777,7 @@ IMPL_LINK_TYPED ( RemoteFilesDialog, EditServiceMenuHdl, MenuButton *, pButton,
             Reference< XPasswordContainer2 > xMasterPasswd(
                 PasswordContainer::create( comphelper::getProcessComponentContext() ) );
 
-            if( xMasterPasswd->isPersistentStoringAllowed() )
+            if( xMasterPasswd->isPersistentStoringAllowed() && xMasterPasswd->authorizateWithMasterPassword( Reference< XInteractionHandler>() ) )
             {
                 int nPos = GetSelectedServicePos();
 
@@ -759,29 +791,26 @@ IMPL_LINK_TYPED ( RemoteFilesDialog, EditServiceMenuHdl, MenuButton *, pButton,
 
                     UrlRecord aURLEntries = xMasterPasswd->find( sUrl, xInteractionHandler );
 
-                    if( aURLEntries.Url == sUrl )
+                    if( aURLEntries.Url == sUrl && aURLEntries.UserList.getLength() )
                     {
-                        if( aURLEntries.UserList.getLength() )
-                        {
-                            OUString sUserName = aURLEntries.UserList[0].UserName;
+                        OUString sUserName = aURLEntries.UserList[0].UserName;
 
-                            ::comphelper::SimplePasswordRequest* pPasswordRequest
-                                = new ::comphelper::SimplePasswordRequest( PasswordRequestMode_PASSWORD_CREATE );
-                            Reference< XInteractionRequest > rRequest( pPasswordRequest );
+                        ::comphelper::SimplePasswordRequest* pPasswordRequest
+                            = new ::comphelper::SimplePasswordRequest( PasswordRequestMode_PASSWORD_CREATE );
+                        Reference< XInteractionRequest > rRequest( pPasswordRequest );
 
-                            xInteractionHandler->handle( rRequest );
+                        xInteractionHandler->handle( rRequest );
 
-                            if ( pPasswordRequest->isPassword() )
-                            {
-                                OUString aNewPass = pPasswordRequest->getPassword();
-                                Sequence< OUString > aPasswd( 1 );
-                                aPasswd[0] = aNewPass;
-
-                                Reference< XPasswordContainer2 > xPasswdContainer(
-                                    PasswordContainer::create(comphelper::getProcessComponentContext()));
-                                xPasswdContainer->addPersistent(
-                                    sUrl, sUserName, aPasswd, xInteractionHandler );
-                            }
+                        if ( pPasswordRequest->isPassword() )
+                        {
+                            OUString aNewPass = pPasswordRequest->getPassword();
+                            Sequence< OUString > aPasswd( 1 );
+                            aPasswd[0] = aNewPass;
+
+                            Reference< XPasswordContainer2 > xPasswdContainer(
+                                PasswordContainer::create( comphelper::getProcessComponentContext() ) );
+                            xPasswdContainer->addPersistent(
+                                sUrl, sUserName, aPasswd, xInteractionHandler );
                         }
                     }
                 }


More information about the Libreoffice-commits mailing list