summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2019-08-27 08:50:38 +0200
committerStephan Bergmann <sbergman@redhat.com>2019-08-27 12:39:04 +0200
commitb742b4d7f1f3bb6e1fce45ccf5d885e587e01801 (patch)
tree48124cf33e1a7178521b56055d451041fef8f9a8
parent09be7ac7dce1e8141f25bc84273968ea273a018c (diff)
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@redhat.com>
-rw-r--r--cui/inc/strings.hrc2
-rw-r--r--cui/source/options/optjava.cxx69
2 files changed, 49 insertions, 22 deletions
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