vcl/source/window/builder.cxx |  229 +++++++-----------------------------------
 1 file changed, 43 insertions(+), 186 deletions(-)

New commits:
commit f36de41877dc5afdfca59308331202ac1ec18959
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Sat Nov 30 10:51:12 2024 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Sat Nov 30 12:32:31 2024 +0100

    tdf#130857 vcl: Deduplicate extract* methods returning OUString
    
    This is similar to
    
        Change-Id: Id0cd9ca29ee0cbd638f90a32434b1ce6b4200e6b
        Author: Michael Weghorn <m.wegh...@posteo.de>
        Date:   Sat Nov 30 10:24:30 2024 +0100
    
            tdf#130857 VclBuilder: Deduplicate extract* methods returning bool
    
    , but for methods extracting an OUString value instead
    of a bool one.
    
    Change-Id: Ic90ac0c630ee7454b8a7fa4f34383f8635d21ff3
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177585
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 18f41f730de4..e181acf7ed21 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -850,6 +850,19 @@ void VclBuilder::disposeBuilder()
 
 namespace
 {
+    inline OUString extractStringEntry(BuilderBase::stringmap& rMap, const 
OUString& rKey,
+                                       const OUString& rDefaultValue = 
OUString())
+    {
+        BuilderBase::stringmap::iterator aFind = rMap.find(rKey);
+        if (aFind != rMap.end())
+        {
+            const OUString sValue = aFind->second;
+            rMap.erase(aFind);
+            return sValue;
+        }
+        return rDefaultValue;
+    }
+
     inline bool extractBoolEntry(BuilderBase::stringmap& rMap, const OUString& 
rKey, bool bDefaultValue)
     {
         BuilderBase::stringmap::iterator aFind = rMap.find(rKey);
@@ -874,50 +887,22 @@ namespace
 
     OUString extractPopupMenu(VclBuilder::stringmap& rMap)
     {
-        OUString sRet;
-        VclBuilder::stringmap::iterator aFind = rMap.find(u"popup"_ustr);
-        if (aFind != rMap.end())
-        {
-            sRet = aFind->second;
-            rMap.erase(aFind);
-        }
-        return sRet;
+        return extractStringEntry(rMap, u"popup"_ustr);
     }
 
     OUString extractWidgetName(VclBuilder::stringmap& rMap)
     {
-        OUString sRet;
-        VclBuilder::stringmap::iterator aFind = rMap.find(u"name"_ustr);
-        if (aFind != rMap.end())
-        {
-            sRet = aFind->second;
-            rMap.erase(aFind);
-        }
-        return sRet;
+        return extractStringEntry(rMap, u"name"_ustr);
     }
 
     OUString extractValuePos(VclBuilder::stringmap& rMap)
     {
-        OUString sRet(u"top"_ustr);
-        VclBuilder::stringmap::iterator aFind = rMap.find(u"value-pos"_ustr);
-        if (aFind != rMap.end())
-        {
-            sRet = aFind->second;
-            rMap.erase(aFind);
-        }
-        return sRet;
+        return extractStringEntry(rMap,u"value-pos"_ustr, u"top"_ustr);
     }
 
     OUString extractTypeHint(VclBuilder::stringmap &rMap)
     {
-        OUString sRet(u"normal"_ustr);
-        VclBuilder::stringmap::iterator aFind = rMap.find(u"type-hint"_ustr);
-        if (aFind != rMap.end())
-        {
-            sRet = aFind->second;
-            rMap.erase(aFind);
-        }
-        return sRet;
+        return extractStringEntry(rMap, u"type-hint"_ustr, u"normal"_ustr);
     }
 
 #if HAVE_FEATURE_DESKTOP
@@ -983,26 +968,12 @@ namespace
 
     OUString extractLabel(VclBuilder::stringmap &rMap)
     {
-        OUString sType;
-        VclBuilder::stringmap::iterator aFind = rMap.find(u"label"_ustr);
-        if (aFind != rMap.end())
-        {
-            sType = aFind->second;
-            rMap.erase(aFind);
-        }
-        return sType;
+        return extractStringEntry(rMap, u"label"_ustr);
     }
 
     OUString extractActionName(VclBuilder::stringmap &rMap)
     {
-        OUString sActionName;
-        VclBuilder::stringmap::iterator aFind = rMap.find(u"action-name"_ustr);
-        if (aFind != rMap.end())
-        {
-            sActionName = aFind->second;
-            rMap.erase(aFind);
-        }
-        return sActionName;
+        return extractStringEntry(rMap, u"action-name"_ustr);
     }
 
     Size extractSizeRequest(VclBuilder::stringmap &rMap)
@@ -1038,14 +1009,7 @@ namespace
 
     OUString extractTitle(VclBuilder::stringmap &rMap)
     {
-        OUString sTitle;
-        VclBuilder::stringmap::iterator aFind = rMap.find(u"title"_ustr);
-        if (aFind != rMap.end())
-        {
-            sTitle = aFind->second;
-            rMap.erase(aFind);
-        }
-        return sTitle;
+        return extractStringEntry(rMap, u"title"_ustr);
     }
 
     bool extractSortIndicator(VclBuilder::stringmap &rMap)
@@ -2141,14 +2105,7 @@ namespace BuilderUtils
 
     OUString extractCustomProperty(VclBuilder::stringmap &rMap)
     {
-        OUString sCustomProperty;
-        VclBuilder::stringmap::iterator aFind = 
rMap.find(u"customproperty"_ustr);
-        if (aFind != rMap.end())
-        {
-            sCustomProperty = aFind->second;
-            rMap.erase(aFind);
-        }
-        return sCustomProperty;
+        return extractStringEntry(rMap, u"customproperty"_ustr);
     }
 
     void ensureDefaultWidthChars(VclBuilder::stringmap &rMap)
commit 1e54fbfa6b01cbeea1a497f116baa8b956bd6ace
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Sat Nov 30 10:24:30 2024 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Sat Nov 30 12:32:25 2024 +0100

    tdf#130857 vcl: Deduplicate extract* methods returning bool
    
    Add new `extractBoolEntry` helper that takes the
    map, key and a default value to return if the
    map doesn't contain the key.
    
    Use that new helper to deduplicate the various
    methods implementing the same logic over and over
    again.
    
    Change-Id: Id0cd9ca29ee0cbd638f90a32434b1ce6b4200e6b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177584
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>
    Tested-by: Jenkins

diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index e638eaa21854..18f41f730de4 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -850,28 +850,26 @@ void VclBuilder::disposeBuilder()
 
 namespace
 {
-    bool extractHasFrame(VclBuilder::stringmap& rMap)
+    inline bool extractBoolEntry(BuilderBase::stringmap& rMap, const OUString& 
rKey, bool bDefaultValue)
     {
-        bool bHasFrame = true;
-        VclBuilder::stringmap::iterator aFind = rMap.find(u"has-frame"_ustr);
+        BuilderBase::stringmap::iterator aFind = rMap.find(rKey);
         if (aFind != rMap.end())
         {
-            bHasFrame = toBool(aFind->second);
+            const bool bValue = toBool(aFind->second);
             rMap.erase(aFind);
+            return bValue;
         }
-        return bHasFrame;
+        return bDefaultValue;
+    }
+
+    bool extractHasFrame(VclBuilder::stringmap& rMap)
+    {
+        return extractBoolEntry(rMap, u"has-frame"_ustr, true);
     }
 
     bool extractDrawValue(VclBuilder::stringmap& rMap)
     {
-        bool bDrawValue = true;
-        VclBuilder::stringmap::iterator aFind = rMap.find(u"draw-value"_ustr);
-        if (aFind != rMap.end())
-        {
-            bDrawValue = toBool(aFind->second);
-            rMap.erase(aFind);
-        }
-        return bDrawValue;
+        return extractBoolEntry(rMap, u"draw-value"_ustr, true);
     }
 
     OUString extractPopupMenu(VclBuilder::stringmap& rMap)
@@ -925,39 +923,18 @@ namespace
 #if HAVE_FEATURE_DESKTOP
     bool extractModal(VclBuilder::stringmap &rMap)
     {
-        bool bModal = false;
-        VclBuilder::stringmap::iterator aFind = rMap.find(u"modal"_ustr);
-        if (aFind != rMap.end())
-        {
-            bModal = toBool(aFind->second);
-            rMap.erase(aFind);
-        }
-        return bModal;
+        return extractBoolEntry(rMap, u"modal"_ustr, false);
     }
 #endif
 
     bool extractDecorated(VclBuilder::stringmap &rMap)
     {
-        bool bDecorated = true;
-        VclBuilder::stringmap::iterator aFind = rMap.find(u"decorated"_ustr);
-        if (aFind != rMap.end())
-        {
-            bDecorated = toBool(aFind->second);
-            rMap.erase(aFind);
-        }
-        return bDecorated;
+        return extractBoolEntry(rMap, u"decorated"_ustr, true);
     }
 
     bool extractCloseable(VclBuilder::stringmap &rMap)
     {
-        bool bCloseable = true;
-        VclBuilder::stringmap::iterator aFind = rMap.find(u"deletable"_ustr);
-        if (aFind != rMap.end())
-        {
-            bCloseable = toBool(aFind->second);
-            rMap.erase(aFind);
-        }
-        return bCloseable;
+        return extractBoolEntry(rMap, u"deletable"_ustr, true);
     }
 
     bool extractVerticalTabPos(VclBuilder::stringmap &rMap)
@@ -987,14 +964,7 @@ namespace
 
     bool extractInconsistent(VclBuilder::stringmap &rMap)
     {
-        bool bInconsistent = false;
-        VclBuilder::stringmap::iterator aFind = 
rMap.find(u"inconsistent"_ustr);
-        if (aFind != rMap.end())
-        {
-            bInconsistent = toBool(aFind->second);
-            rMap.erase(aFind);
-        }
-        return bInconsistent;
+        return extractBoolEntry(rMap, u"inconsistent"_ustr, false);
     }
 
     WinBits extractRelief(VclBuilder::stringmap &rMap)
@@ -1080,26 +1050,12 @@ namespace
 
     bool extractSortIndicator(VclBuilder::stringmap &rMap)
     {
-        bool bSortIndicator = false;
-        VclBuilder::stringmap::iterator aFind = 
rMap.find(u"sort-indicator"_ustr);
-        if (aFind != rMap.end())
-        {
-            bSortIndicator = toBool(aFind->second);
-            rMap.erase(aFind);
-        }
-        return bSortIndicator;
+        return extractBoolEntry(rMap, u"sort-indicator"_ustr, false);
     }
 
     bool extractClickable(VclBuilder::stringmap &rMap)
     {
-        bool bClickable = false;
-        VclBuilder::stringmap::iterator aFind = rMap.find(u"clickable"_ustr);
-        if (aFind != rMap.end())
-        {
-            bClickable = toBool(aFind->second);
-            rMap.erase(aFind);
-        }
-        return bClickable;
+        return extractBoolEntry(rMap, u"clickable"_ustr, false);
     }
 
     void setupFromActionName(Button *pButton, VclBuilder::stringmap &rMap, 
const css::uno::Reference<css::frame::XFrame>& rFrame)
@@ -1223,14 +1179,7 @@ namespace
 {
     bool extractSelectable(VclBuilder::stringmap &rMap)
     {
-        bool bSelectable = false;
-        VclBuilder::stringmap::iterator aFind = rMap.find(u"selectable"_ustr);
-        if (aFind != rMap.end())
-        {
-            bSelectable = toBool(aFind->second);
-            rMap.erase(aFind);
-        }
-        return bSelectable;
+        return extractBoolEntry(rMap, u"selectable"_ustr, false);
     }
 
     OUString extractAdjustment(VclBuilder::stringmap &rMap)
@@ -1248,14 +1197,7 @@ namespace
 
     bool extractDrawIndicator(VclBuilder::stringmap &rMap)
     {
-        bool bDrawIndicator = false;
-        VclBuilder::stringmap::iterator aFind = 
rMap.find(u"draw-indicator"_ustr);
-        if (aFind != rMap.end())
-        {
-            bDrawIndicator = toBool(aFind->second);
-            rMap.erase(aFind);
-        }
-        return bDrawIndicator;
+        return extractBoolEntry(rMap, u"draw-indicator"_ustr, false);
     }
 }
 
@@ -2219,14 +2161,7 @@ namespace BuilderUtils
 
     bool extractDropdown(VclBuilder::stringmap &rMap)
     {
-        bool bDropdown = true;
-        VclBuilder::stringmap::iterator aFind = rMap.find(u"dropdown"_ustr);
-        if (aFind != rMap.end())
-        {
-            bDropdown = toBool(aFind->second);
-            rMap.erase(aFind);
-        }
-        return bDropdown;
+        return extractBoolEntry(rMap, u"dropdown"_ustr, true);
     }
 
     void reorderWithinParent(vcl::Window &rWindow, sal_uInt16 nNewPosition)
@@ -3475,26 +3410,12 @@ sal_Int32 
BuilderBase::extractActive(VclBuilder::stringmap& rMap)
 
 bool BuilderBase::extractEntry(VclBuilder::stringmap &rMap)
 {
-    bool bHasEntry = false;
-    VclBuilder::stringmap::iterator aFind = rMap.find(u"has-entry"_ustr);
-    if (aFind != rMap.end())
-    {
-        bHasEntry = toBool(aFind->second);
-        rMap.erase(aFind);
-    }
-    return bHasEntry;
+    return extractBoolEntry(rMap, u"has-entry"_ustr, false);
 }
 
 bool BuilderBase::extractHeadersVisible(VclBuilder::stringmap& rMap)
 {
-    bool bHeadersVisible = true;
-    VclBuilder::stringmap::iterator aFind = rMap.find(u"headers-visible"_ustr);
-    if (aFind != rMap.end())
-    {
-        bHeadersVisible = toBool(aFind->second);
-        rMap.erase(aFind);
-    }
-    return bHeadersVisible;
+    return extractBoolEntry(rMap, u"headers-visible"_ustr, true);
 }
 
 OUString BuilderBase::extractIconName(VclBuilder::stringmap &rMap)
@@ -3525,26 +3446,12 @@ OUString 
BuilderBase::extractIconName(VclBuilder::stringmap &rMap)
 
 bool BuilderBase::extractResizable(stringmap& rMap)
 {
-    bool bResizable = true;
-    VclBuilder::stringmap::iterator aFind = rMap.find(u"resizable"_ustr);
-    if (aFind != rMap.end())
-    {
-        bResizable = toBool(aFind->second);
-        rMap.erase(aFind);
-    }
-    return bResizable;
+    return extractBoolEntry(rMap, u"resizable"_ustr, true);
 }
 
 bool BuilderBase::extractShowExpanders(VclBuilder::stringmap& rMap)
 {
-    bool bShowExpanders = true;
-    VclBuilder::stringmap::iterator aFind = rMap.find(u"show-expanders"_ustr);
-    if (aFind != rMap.end())
-    {
-        bShowExpanders = toBool(aFind->second);
-        rMap.erase(aFind);
-    }
-    return bShowExpanders;
+    return extractBoolEntry(rMap, u"show-expanders"_ustr, true);
 }
 
 OUString BuilderBase::extractTooltipText(stringmap& rMap)
@@ -3563,14 +3470,7 @@ OUString BuilderBase::extractTooltipText(stringmap& rMap)
 
 bool BuilderBase::extractVisible(VclBuilder::stringmap& rMap)
 {
-    bool bRet = false;
-    VclBuilder::stringmap::iterator aFind = rMap.find(u"visible"_ustr);
-    if (aFind != rMap.end())
-    {
-        bRet = toBool(aFind->second);
-        rMap.erase(aFind);
-    }
-    return bRet;
+    return extractBoolEntry(rMap, u"visible"_ustr, false);
 }
 
 void BuilderBase::collectProperty(xmlreader::XmlReader& reader, stringmap& 
rMap) const

Reply via email to