[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.0' - configmgr/source

Mike Kaganski mike.kaganski at collabora.com
Thu Apr 26 09:24:15 UTC 2018


 configmgr/source/winreg.cxx |   17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

New commits:
commit 8f0e11c7bed35f44ecbb12ac43179d33f077bcd0
Author: Mike Kaganski <mike.kaganski at collabora.com>
Date:   Tue Apr 24 16:01:56 2018 +0100

    Winreg config layer: Allow to define external backend separately
    
    Defining backend separately allows e.g. creating ADMX templates with
    easy-to-use UI, where user defines only LDAP names for the setting, and
    doesn't need to type the LO configuration backend name.
    
    Change-Id: I64f23043c94a5a4e0ba7281d0f711a427d694126
    Reviewed-on: https://gerrit.libreoffice.org/53413
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
    (cherry picked from commit 8776a895d41f174bf5d86332093ed5795c73bdd6)
    Reviewed-on: https://gerrit.libreoffice.org/53435
    Reviewed-by: Andras Timar <andras.timar at collabora.com>
    Tested-by: Andras Timar <andras.timar at collabora.com>

diff --git a/configmgr/source/winreg.cxx b/configmgr/source/winreg.cxx
index e9c6e8359510..dd85bb43d7e1 100644
--- a/configmgr/source/winreg.cxx
+++ b/configmgr/source/winreg.cxx
@@ -40,7 +40,7 @@ namespace {
 // Last element of Key becomes prop, first part is the path and optionally nodes,
 // when the node has oor:op attribute.
 // Values can be the following: Value (string), Type (string, optional),
-// Final (dword, optional), External (dword, optional)
+// Final (dword, optional), External (dword, optional), ExternalBackend (string, optional)
 //
 // For example the following registry setting:
 // [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\LibreOffice\org.openoffice.UserProfile\Data\o]
@@ -85,9 +85,10 @@ namespace {
 //
 // External (component data) example:
 // [HKEY_CURRENT_USER\Software\Policies\LibreOffice\org.openoffice.UserProfile\Data\o]
-// "Value"="com.sun.star.configuration.backend.LdapUserProfileBe company"
+// "Value"="company"
 // "Final"=dword:00000001
 // "External"=dword:00000001
+// "ExternalBackend"="com.sun.star.configuration.backend.LdapUserProfileBe"
 // becomes the following in configuration:
 // <item oor:path="/org.openoffice.UserProfile/Data">
 //     <prop oor:name="o" oor:finalized="true">
@@ -143,6 +144,7 @@ void dumpWindowsRegistryKey(HKEY hKey, OUString const & aKeyName, TempFile &aFil
             bool bExternal = false;
             OUString aValue;
             OUString aType;
+            OUString aExternalBackend;
 
             for(DWORD i = 0; i < nValues; ++i)
             {
@@ -165,11 +167,20 @@ void dumpWindowsRegistryKey(HKEY hKey, OUString const & aKeyName, TempFile &aFil
                     if (*reinterpret_cast<DWORD*>(pValue.get()) == 1)
                         bExternal = true;
                 }
+                else if (!wcscmp(pValueName.get(), L"ExternalBackend"))
+                    aExternalBackend = o3tl::toU(pValue.get());
             }
-            // type and external are mutually exclusive
             if (bExternal)
+            {
+                // type and external are mutually exclusive
                 aType.clear();
 
+                // Prepend backend, like in
+                // "com.sun.star.configuration.backend.LdapUserProfileBe company"
+                if (!aExternalBackend.isEmpty())
+                    aValue = aExternalBackend + " " + aValue;
+            }
+
             sal_Int32 aLastSeparator = aKeyName.lastIndexOf('\\');
             OUString aPathAndNodes = aKeyName.copy(0, aLastSeparator);
             OUString aProp = aKeyName.copy(aLastSeparator + 1);


More information about the Libreoffice-commits mailing list