sc/source/ui/miscdlgs/dataproviderdlg.cxx |   56 ++++++++++--------------------
 sc/uiconfig/scalc/ui/dataproviderdlg.ui   |   14 +++++++
 2 files changed, 34 insertions(+), 36 deletions(-)

New commits:
commit 048cc17da1102b001d756dbe49f7c4f3005ab31e
Author:     Olivier Hallot <olivier.hal...@libreoffice.org>
AuthorDate: Thu Feb 13 23:00:50 2025 -0300
Commit:     Olivier Hallot <olivier.hal...@libreoffice.org>
CommitDate: Tue Feb 18 14:18:10 2025 +0100

    tdf#126824 Make l10n for Data Provider transforms
    
    + Moved data provider transformation names to ui file
    + Adjust controller
    
    PS2: transform into static array.
    PS3: handle thru indexes to prevent issues with reordering
    
    Change-Id: I3be6fe4c466c4b041884f3808faea44c26efe021
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181657
    Reviewed-by: Olivier Hallot <olivier.hal...@libreoffice.org>
    Tested-by: Jenkins

diff --git a/sc/source/ui/miscdlgs/dataproviderdlg.cxx 
b/sc/source/ui/miscdlgs/dataproviderdlg.cxx
index 114da63c897c..fd9b83aded94 100644
--- a/sc/source/ui/miscdlgs/dataproviderdlg.cxx
+++ b/sc/source/ui/miscdlgs/dataproviderdlg.cxx
@@ -76,27 +76,6 @@ 
ScDataTransformationBaseControl::~ScDataTransformationBaseControl()
 
 namespace {
 
-struct MenuData
-{
-    const char* aTransformationName;
-    std::function<void(ScDataProviderDlg*)> maCallback;
-};
-
-MenuData aTransformationData[] = {
-    { "Delete Column", &ScDataProviderDlg::deleteColumn },
-    { "Delete Row", &ScDataProviderDlg::deleteRowTransformation},
-    { "Swap Rows", &ScDataProviderDlg::swapRowsTransformation},
-    { "Split Column", &ScDataProviderDlg::splitColumn },
-    { "Merge Columns", &ScDataProviderDlg::mergeColumns },
-    { "Text Transformation", &ScDataProviderDlg::textTransformation },
-    { "Sort Columns", &ScDataProviderDlg::sortTransformation },
-    { "Aggregate Functions", &ScDataProviderDlg::aggregateFunction},
-    { "Number Transformations", &ScDataProviderDlg::numberTransformation },
-    { "Replace Null Transformations", 
&ScDataProviderDlg::replaceNullTransformation },
-    { "Date & Time Transformations", 
&ScDataProviderDlg::dateTimeTransformation },
-    { "Find Replace Transformation", 
&ScDataProviderDlg::findReplaceTransformation}
-};
-
 class ScDeleteColumnTransformationControl : public 
ScDataTransformationBaseControl
 {
 private:
@@ -802,11 +781,6 @@ ScDataProviderDlg::ScDataProviderDlg(weld::Window* 
pParent, std::shared_ptr<ScDo
         mxDBRanges->append_text(rNamedDB->GetName());
     }
 
-    for (const auto& i : aTransformationData)
-    {
-         
mxTransformationBox->append_text(OUString::createFromAscii(i.aTransformationName));
-    }
-
     pDBData = new ScDBData(u"data"_ustr, 0, 0, 0, mxDoc->MaxCol(), 
mxDoc->MaxRow());
     bool bSuccess = 
mxDoc->GetDBCollection()->getNamedDBs().insert(std::unique_ptr<ScDBData>(pDBData));
     SAL_WARN_IF(!bSuccess, "sc", "temporary warning");
@@ -861,16 +835,26 @@ IMPL_LINK_NOARG(ScDataProviderDlg, CancelQuitHdl, 
weld::Button&, void)
 
 IMPL_LINK_NOARG(ScDataProviderDlg, TransformationListHdl, weld::Button&, void)
 {
-    OUString transformation_string = mxTransformationBox->get_active_text();
-    for (auto& i: aTransformationData)
-    {
-        if (transformation_string == 
OUString::createFromAscii(i.aTransformationName))
-        {
-            i.maCallback(this);
-            maIdle.Start();
-            return;
-        }
-    }
+    static std::function<void(ScDataProviderDlg*)> aTransformationOp[12]{
+        &ScDataProviderDlg::deleteColumn,
+        &ScDataProviderDlg::deleteRowTransformation,
+        &ScDataProviderDlg::swapRowsTransformation,
+        &ScDataProviderDlg::splitColumn,
+        &ScDataProviderDlg::mergeColumns,
+        &ScDataProviderDlg::textTransformation,
+        &ScDataProviderDlg::sortTransformation,
+        &ScDataProviderDlg::aggregateFunction,
+        &ScDataProviderDlg::numberTransformation,
+        &ScDataProviderDlg::replaceNullTransformation,
+        &ScDataProviderDlg::dateTimeTransformation,
+        &ScDataProviderDlg::findReplaceTransformation
+    };
+    OUString rId = mxTransformationBox->get_active_id();
+    int nPos = mxTransformationBox->find_id(rId);
+
+    aTransformationOp[nPos](this);
+    maIdle.Start();
+    return;
 }
 
 IMPL_LINK_NOARG(ScDataProviderDlg, ProviderSelectHdl, weld::ComboBox&, void)
diff --git a/sc/uiconfig/scalc/ui/dataproviderdlg.ui 
b/sc/uiconfig/scalc/ui/dataproviderdlg.ui
index 1661562081d0..5c00a3001260 100644
--- a/sc/uiconfig/scalc/ui/dataproviderdlg.ui
+++ b/sc/uiconfig/scalc/ui/dataproviderdlg.ui
@@ -273,6 +273,20 @@
                             <property name="visible">True</property>
                             <property name="can-focus">False</property>
                             <property name="hexpand">True</property>
+                            <items>
+                              <item id="0" translatable="yes" 
context="dataproviderdlg|transformation_list">Delete Column</item>
+                              <item id="1" translatable="yes" 
context="dataproviderdlg|transformation_list">Delete Row</item>
+                              <item id="2" translatable="yes" 
context="dataproviderdlg|transformation_list">Swap Rows</item>
+                              <item id="3" translatable="yes" 
context="dataproviderdlg|transformation_list">Split Column</item>
+                              <item id="4" translatable="yes" 
context="dataproviderdlg|transformation_list">Merge Columns</item>
+                              <item id="5" translatable="yes" 
context="dataproviderdlg|transformation_list">Text Transformation</item>
+                              <item id="6" translatable="yes" 
context="dataproviderdlg|transformation_list">Sort Columns</item>
+                              <item id="7" translatable="yes" 
context="dataproviderdlg|transformation_list">Aggregate Functions</item>
+                              <item id="8" translatable="yes" 
context="dataproviderdlg|transformation_list">Number Transformations</item>
+                              <item id="9" translatable="yes" 
context="dataproviderdlg|transformation_list">Replace Null 
Transformations</item>
+                              <item id="10" translatable="yes" 
context="dataproviderdlg|transformation_list">Date &amp; Time 
Transformations</item>
+                              <item id="11" translatable="yes" 
context="dataproviderdlg|transformation_list">Find Replace Transformation</item>
+                            </items>
                           </object>
                           <packing>
                             <property name="left-attach">0</property>

Reply via email to