[Libreoffice-commits] core.git: cui/inc cui/source

Stephan Bergmann (via logerrit) logerrit at kemper.freedesktop.org
Tue Aug 27 10:40:42 UTC 2019


 cui/inc/strings.hrc            |    2 +
 cui/source/options/optjava.cxx |   69 +++++++++++++++++++++++++++--------------
 2 files changed, 49 insertions(+), 22 deletions(-)

New commits:
commit b742b4d7f1f3bb6e1fce45ccf5d885e587e01801
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Tue Aug 27 08:50:38 2019 +0200
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Tue Aug 27 12:39:04 2019 +0200

    Use osl::FileBase::getSystemPathFromFileURL
    
    ...instead of INetURLObject FSysStyle::Detect guesswork (with the hope of
    eventually phasing out use of the latter).
    
    (In each of the three places where a filesystem pathname would need to be
    converted back to a URL with osl::FileBase::getFileURLFromSystemPath, failure is
    rather harmless, so they don't check error returns and are marked as "best
    effort".)
    
    Change-Id: Ia312b49b20543cdd83aff5609bb054e0fc1dc194
    Reviewed-on: https://gerrit.libreoffice.org/78165
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/cui/inc/strings.hrc b/cui/inc/strings.hrc
index 9b70cbf55301..1ade0c0d6b38 100644
--- a/cui/inc/strings.hrc
+++ b/cui/inc/strings.hrc
@@ -379,6 +379,8 @@
 
 #define RID_SVXSTR_REGISTERED_DATABASES             NC_("RID_SVXSTR_REGISTERED_DATABASES", "Registered Databases")
 
+#define RID_SVXSTR_CANNOTCONVERTURL_ERR             NC_("RID_SVXSTR_CANNOTCONVERTURL_ERR", "The URL <%1> cannot be converted to a filesystem path.")
+
 #define RID_SVXSTR_ABOUT_VERSION                    NC_("aboutdialog|textbuffer1", "Version: %ABOUTBOXPRODUCTVERSION%ABOUTBOXPRODUCTVERSIONSUFFIX")
 #define RID_SVXSTR_ABOUT_COPYRIGHT                  NC_("aboutdialog|copyright", "Copyright © 2000–2019 LibreOffice contributors.")
 #define RID_SVXSTR_ABOUT_CREDITS_URL                NC_("aboutdialog|link", "https://www.libreoffice.org/about-us/credits/")
diff --git a/cui/source/options/optjava.cxx b/cui/source/options/optjava.cxx
index 1f718a9b5122..ec0eeac4494e 100644
--- a/cui/source/options/optjava.cxx
+++ b/cui/source/options/optjava.cxx
@@ -31,6 +31,7 @@
 #include <dialmgr.hxx>
 
 #include <officecfg/Office/Common.hxx>
+#include <osl/file.hxx>
 #include <svtools/miscopt.hxx>
 
 #include <strings.hrc>
@@ -790,26 +791,37 @@ IMPL_LINK_NOARG(SvxJavaClassPathDlg, AddArchiveHdl_Impl, weld::Button&, void)
     OUString sFolder;
     if (m_xPathList->count_selected_rows() > 0)
     {
-        INetURLObject aObj(m_xPathList->get_selected_text(), FSysStyle::Detect);
-        sFolder = aObj.GetMainURL( INetURLObject::DecodeMechanism::NONE );
+        osl::FileBase::getFileURLFromSystemPath(m_xPathList->get_selected_text(), sFolder);
+            // best effort
     }
-    else
+    if (sFolder.isEmpty())
          sFolder = SvtPathOptions().GetWorkPath();
     aDlg.SetDisplayDirectory( sFolder );
     if ( aDlg.Execute() == ERRCODE_NONE )
     {
         OUString sURL = aDlg.GetPath();
-        INetURLObject aURL( sURL );
-        OUString sFile = aURL.getFSysPath( FSysStyle::Detect );
-        if ( !IsPathDuplicate( sFile ) )
+        OUString sFile;
+        if (osl::FileBase::getSystemPathFromFileURL(sURL, sFile) == osl::FileBase::E_None)
         {
-            m_xPathList->append("", sFile, SvFileInformationManager::GetImageId(aURL));
-            m_xPathList->select(m_xPathList->n_children() - 1);
+            INetURLObject aURL( sURL );
+            if ( !IsPathDuplicate( sFile ) )
+            {
+                m_xPathList->append("", sFile, SvFileInformationManager::GetImageId(aURL));
+                m_xPathList->select(m_xPathList->n_children() - 1);
+            }
+            else
+            {
+                OUString sMsg( CuiResId( RID_SVXSTR_MULTIFILE_DBL_ERR ) );
+                sMsg = sMsg.replaceFirst( "%1", sFile );
+                std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(m_xDialog.get(),
+                                                          VclMessageType::Warning, VclButtonsType::Ok, sMsg));
+                xBox->run();
+            }
         }
         else
         {
-            OUString sMsg( CuiResId( RID_SVXSTR_MULTIFILE_DBL_ERR ) );
-            sMsg = sMsg.replaceFirst( "%1", sFile );
+            OUString sMsg( CuiResId( RID_SVXSTR_CANNOTCONVERTURL_ERR ) );
+            sMsg = sMsg.replaceFirst( "%1", sURL );
             std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(m_xDialog.get(),
                                                       VclMessageType::Warning, VclButtonsType::Ok, sMsg));
             xBox->run();
@@ -826,26 +838,38 @@ IMPL_LINK_NOARG(SvxJavaClassPathDlg, AddPathHdl_Impl, weld::Button&, void)
     OUString sOldFolder;
     if (m_xPathList->count_selected_rows() > 0)
     {
-        INetURLObject aObj(m_xPathList->get_selected_text(), FSysStyle::Detect);
-        sOldFolder = aObj.GetMainURL( INetURLObject::DecodeMechanism::NONE );
+        osl::FileBase::getFileURLFromSystemPath(m_xPathList->get_selected_text(), sOldFolder);
+            // best effort
     }
-    else
+    if (sOldFolder.isEmpty())
         sOldFolder = SvtPathOptions().GetWorkPath();
     xFolderPicker->setDisplayDirectory( sOldFolder );
     if ( xFolderPicker->execute() == ExecutableDialogResults::OK )
     {
         OUString sFolderURL( xFolderPicker->getDirectory() );
         INetURLObject aURL( sFolderURL );
-        OUString sNewFolder = aURL.getFSysPath( FSysStyle::Detect );
-        if ( !IsPathDuplicate( sNewFolder ) )
+        OUString sNewFolder;
+        if (osl::FileBase::getSystemPathFromFileURL(sFolderURL, sNewFolder)
+            == osl::FileBase::E_None)
         {
-            m_xPathList->append("", sNewFolder, SvFileInformationManager::GetImageId(aURL));
-            m_xPathList->select(m_xPathList->n_children() - 1);
+            if ( !IsPathDuplicate( sNewFolder ) )
+            {
+                m_xPathList->append("", sNewFolder, SvFileInformationManager::GetImageId(aURL));
+                m_xPathList->select(m_xPathList->n_children() - 1);
+            }
+            else
+            {
+                OUString sMsg( CuiResId( RID_SVXSTR_MULTIFILE_DBL_ERR ) );
+                sMsg = sMsg.replaceFirst( "%1", sNewFolder );
+                std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(m_xDialog.get(),
+                                                          VclMessageType::Warning, VclButtonsType::Ok, sMsg));
+                xBox->run();
+            }
         }
         else
         {
-            OUString sMsg( CuiResId( RID_SVXSTR_MULTIFILE_DBL_ERR ) );
-            sMsg = sMsg.replaceFirst( "%1", sNewFolder );
+            OUString sMsg( CuiResId( RID_SVXSTR_CANNOTCONVERTURL_ERR ) );
+            sMsg = sMsg.replaceFirst( "%1", sFolderURL );
             std::unique_ptr<weld::MessageDialog> xBox(Application::CreateMessageDialog(m_xDialog.get(),
                                                       VclMessageType::Warning, VclButtonsType::Ok, sMsg));
             xBox->run();
@@ -917,9 +941,10 @@ void SvxJavaClassPathDlg::SetClassPath( const OUString& _rPath )
         do
         {
             OUString sToken = _rPath.getToken( 0, CLASSPATH_DELIMITER, nIdx );
-            INetURLObject aURL( sToken, FSysStyle::Detect );
-            OUString sPath = aURL.getFSysPath( FSysStyle::Detect );
-            m_xPathList->append("", sPath, SvFileInformationManager::GetImageId(aURL));
+            OUString sURL;
+            osl::FileBase::getFileURLFromSystemPath(sToken, sURL); // best effort
+            INetURLObject aURL( sURL );
+            m_xPathList->append("", sToken, SvFileInformationManager::GetImageId(aURL));
         }
         while (nIdx>=0);
         // select first entry


More information about the Libreoffice-commits mailing list