cui/source/options/certpath.cxx |   30 ++++++++++++++++++++----------
 cui/source/options/certpath.hxx |    3 ++-
 2 files changed, 22 insertions(+), 11 deletions(-)

New commits:
commit adbaa625acc14e2b814cf5d88267889e6193145f
Author:     Jan-Marek Glogowski <jan-marek.glogow...@extern.cib.de>
AuthorDate: Tue Oct 1 14:18:50 2019 +0000
Commit:     Jan-Marek Glogowski <glo...@fbihome.de>
CommitDate: Wed Oct 23 10:34:09 2019 +0200

    tdf#127909 list all mozilla profiles
    
    If there isn't an already selected profile, it'll select the
    default one.
    
    Change-Id: I66e39dbe1c3ce4d9436857c716d93e603582e3d1
    Reviewed-on: https://gerrit.libreoffice.org/79978
    Tested-by: Jenkins
    Reviewed-by: Jan-Marek Glogowski <glo...@fbihome.de>

diff --git a/cui/source/options/certpath.cxx b/cui/source/options/certpath.cxx
index dae67fb379e6..0d8366fb6c40 100644
--- a/cui/source/options/certpath.cxx
+++ b/cui/source/options/certpath.cxx
@@ -63,13 +63,22 @@ CertPathDialog::CertPathDialog(weld::Window* pParent)
 
         for (sal_Int32 i = 0; i < sal_Int32(SAL_N_ELEMENTS(productTypes)); ++i)
         {
-            OUString profile = 
xMozillaBootstrap->getDefaultProfile(productTypes[i]);
-
-            if (!profile.isEmpty())
+            sal_Int32 nProfileCount = 
xMozillaBootstrap->getProfileCount(productTypes[i]);
+            if (nProfileCount <= 0)
+                continue;
+            OUString sDefaultProfile = 
xMozillaBootstrap->getDefaultProfile(productTypes[i]);
+            uno::Sequence<OUString> aProfileList(nProfileCount);
+#ifndef NDEBUG
+            sal_Int32 nListLen =
+#endif
+                 xMozillaBootstrap->getProfileList(productTypes[i], 
aProfileList);
+            assert((nProfileCount == nListLen) && (nListLen == 
aProfileList.getLength()));
+
+            for (const auto& sProfileName : std::as_const(aProfileList))
             {
-                OUString sEntry = OUString::createFromAscii(productNames[i]) + 
":" + profile;
-                OUString sProfilePath = xMozillaBootstrap->getProfilePath( 
productTypes[i], profile );
-                AddCertPath(sEntry, sProfilePath);
+                OUString sEntry = OUString::createFromAscii(productNames[i]) + 
":" + sProfileName;
+                OUString sProfilePath = 
xMozillaBootstrap->getProfilePath(productTypes[i], sProfileName);
+                AddCertPath(sEntry, sProfilePath, sProfileName == 
sDefaultProfile);
             }
         }
     }
@@ -148,11 +157,11 @@ IMPL_LINK(CertPathDialog, CheckHdl_Impl, const row_col&, 
rRowCol, void)
 
 void CertPathDialog::HandleEntryChecked(int nRow)
 {
-    m_xCertPathList->select(nRow);
     const bool bChecked = m_xCertPathList->get_toggle(nRow, 0) == 
TRISTATE_TRUE;
     if (bChecked)
     {
         // we have radio button behavior -> so uncheck the other entries
+        m_xCertPathList->select(nRow);
         const int nCount = m_xCertPathList->n_children();
         for (int i = 0; i < nCount; ++i)
         {
@@ -162,7 +171,7 @@ void CertPathDialog::HandleEntryChecked(int nRow)
     }
 }
 
-void CertPathDialog::AddCertPath(const OUString &rProfile, const OUString 
&rPath)
+void CertPathDialog::AddCertPath(const OUString &rProfile, const OUString 
&rPath, const bool bSelect)
 {
     for (int i = 0, nCount = m_xCertPathList->n_children(); i < nCount; ++i)
     {
@@ -170,7 +179,8 @@ void CertPathDialog::AddCertPath(const OUString &rProfile, 
const OUString &rPath
         //already exists, just select the original one
         if (sCertPath == rPath)
         {
-            m_xCertPathList->set_toggle(i, TRISTATE_TRUE, 0);
+            const bool bWantSelected = bSelect || 
m_xCertPathList->get_toggle(i, 0);
+            m_xCertPathList->set_toggle(i, bWantSelected ? TRISTATE_TRUE : 
TRISTATE_FALSE, 0);
             HandleEntryChecked(i);
             return;
         }
@@ -178,7 +188,7 @@ void CertPathDialog::AddCertPath(const OUString &rProfile, 
const OUString &rPath
 
     m_xCertPathList->append();
     const int nRow = m_xCertPathList->n_children() - 1;
-    m_xCertPathList->set_toggle(nRow, TRISTATE_TRUE, 0);
+    m_xCertPathList->set_toggle(nRow, bSelect ? TRISTATE_TRUE : 
TRISTATE_FALSE, 0);
     m_xCertPathList->set_text(nRow, rProfile, 1);
     m_xCertPathList->set_text(nRow, rPath, 2);
     m_xCertPathList->set_id(nRow, rPath);
diff --git a/cui/source/options/certpath.hxx b/cui/source/options/certpath.hxx
index 175e77454566..70bf5e25d2a1 100644
--- a/cui/source/options/certpath.hxx
+++ b/cui/source/options/certpath.hxx
@@ -26,7 +26,8 @@ class CertPathDialog : public weld::GenericDialogController
     DECL_LINK(OKHdl_Impl, weld::Button&, void);
 
     void HandleEntryChecked(int nRow);
-    void AddCertPath(const OUString &rProfile, const OUString &rPath);
+    void AddCertPath(const OUString &rProfile, const OUString &rPath, bool 
bSelect = true);
+
 public:
     explicit CertPathDialog(weld::Window* pParent);
     virtual ~CertPathDialog() override;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to