sc/inc/colorscale.hxx                          |    6 --
 sc/inc/fillinfo.hxx                            |    1 
 sc/qa/unit/subsequent_filters_test4.cxx        |   14 -----
 sc/qa/unit/ucalc_condformat.cxx                |    9 +--
 sc/source/core/data/colorscale.cxx             |   66 ++++++-------------------
 sc/source/ui/condformat/condformatdlgentry.cxx |   29 ++++++----
 sc/uiconfig/scalc/ui/conditionaliconset.ui     |   12 +---
 7 files changed, 41 insertions(+), 96 deletions(-)

New commits:
commit 27be65a7d5326608f75839e3964ac322e88224a1
Author:     Xisco Fauli <xiscofa...@libreoffice.org>
AuthorDate: Fri Sep 13 08:14:47 2024 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Fri Sep 13 11:23:11 2024 +0200

    tdf#162938: Revert "tdf#61313 Replace the static ">="...
    
    ... with a dropdown of different operators"
    
    Why was this patch submitted in the first place?
    It added a call to convertToOldCondFormat in testTdf101104,
    testComplexIconSetsXLSX and testTdf64401 to make those tests
    pass but the issue was already reproducible with those files
    
    This reverts commit fcc5770dd1e33dcb4f4f0c28683569af5d1d8368.
    
    Change-Id: Ifd8904de26d39d23e52ec2188d917bec34ad93b7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173310
    Tested-by: Jenkins
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sc/inc/colorscale.hxx b/sc/inc/colorscale.hxx
index 85b57bb6e7b9..bc3b646fe457 100644
--- a/sc/inc/colorscale.hxx
+++ b/sc/inc/colorscale.hxx
@@ -48,13 +48,11 @@ private:
     ScConditionalFormat* mpFormat;
     Color maColor;
     ScColorScaleEntryType meType;
-    ScConditionMode meMode;
 
     void setListener();
 
 public:
-    SC_DLLPUBLIC ScColorScaleEntry(double nVal, const Color& rCol, 
ScColorScaleEntryType eType = COLORSCALE_VALUE,
-            ScConditionMode eMode = ScConditionMode::Equal);
+    SC_DLLPUBLIC ScColorScaleEntry(double nVal, const Color& rCol, 
ScColorScaleEntryType eType = COLORSCALE_VALUE);
     SC_DLLPUBLIC ScColorScaleEntry();
     ScColorScaleEntry(const ScColorScaleEntry& rEntry);
     ScColorScaleEntry(ScDocument* pDoc, const ScColorScaleEntry& rEntry);
@@ -76,9 +74,7 @@ public:
     SC_DLLPUBLIC OUString GetFormula( formula::FormulaGrammar::Grammar 
eGrammar ) const;
 
     ScColorScaleEntryType GetType() const { return meType;}
-    ScConditionMode GetMode() const { return meMode; }
     SC_DLLPUBLIC void SetType( ScColorScaleEntryType eType );
-    SC_DLLPUBLIC void SetMode( ScConditionMode eMode ) { meMode = eMode; }
 
     void SetRepaintCallback(ScConditionalFormat* pParent);
     void SetRepaintCallback(const std::function<void()>& func);
diff --git a/sc/inc/fillinfo.hxx b/sc/inc/fillinfo.hxx
index e9c713373724..caecd6a7072b 100644
--- a/sc/inc/fillinfo.hxx
+++ b/sc/inc/fillinfo.hxx
@@ -92,7 +92,6 @@ struct ScIconSetInfo
 {
     sal_Int32 nIconIndex;
     ScIconSetType eIconSetType;
-    ScConditionMode eConditionMode;
     tools::Long mnHeight = 0;
     bool mbShowValue;
 };
diff --git a/sc/qa/unit/subsequent_filters_test4.cxx 
b/sc/qa/unit/subsequent_filters_test4.cxx
index 31d2d9c5c4eb..0fc2b9d16767 100644
--- a/sc/qa/unit/subsequent_filters_test4.cxx
+++ b/sc/qa/unit/subsequent_filters_test4.cxx
@@ -884,17 +884,6 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest4, 
testCondFormatThemeColor3XLSX)
 
 namespace
 {
-// This function is used temporarily so we don't have to update test files.
-void convertToOldCondFormat(const ScIconSetFormat* pIconSet)
-{
-    auto itr = pIconSet->begin();
-    (*itr)->SetMode(ScConditionMode::Less);
-    (*itr)->SetValue((*(itr + 1))->GetValue());
-    (*itr)->SetType((*(++itr))->GetType());
-    for (; itr != pIconSet->end(); ++itr)
-        (*itr)->SetMode(ScConditionMode::EqGreater);
-}
-
 void testComplexIconSetsXLSX_Impl(const ScDocument& rDoc, SCCOL nCol, 
ScIconSetType eType)
 {
     ScConditionalFormat* pFormat = rDoc.GetCondFormat(nCol, 1, 0);
@@ -917,7 +906,6 @@ void testCustomIconSetsXLSX_Impl(const ScDocument& rDoc, 
SCCOL nCol, SCROW nRow,
     CPPUNIT_ASSERT(pEntry);
     CPPUNIT_ASSERT_EQUAL(ScFormatEntry::Type::Iconset, pEntry->GetType());
     const ScIconSetFormat* pIconSet = static_cast<const 
ScIconSetFormat*>(pEntry);
-    convertToOldCondFormat(pIconSet);
     std::unique_ptr<ScIconSetInfo> 
pInfo(pIconSet->GetIconSetInfo(ScAddress(nCol, nRow, 1)));
     if (nIndex == -1)
         CPPUNIT_ASSERT(!pInfo);
@@ -966,7 +954,6 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest4, testTdf101104)
     CPPUNIT_ASSERT(pEntry);
     CPPUNIT_ASSERT_EQUAL(ScFormatEntry::Type::Iconset, pEntry->GetType());
     const ScIconSetFormat* pIconSet = static_cast<const 
ScIconSetFormat*>(pEntry);
-    convertToOldCondFormat(pIconSet);
 
     for (size_t i = 1; i < 10; ++i)
     {
@@ -993,7 +980,6 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest4, testTdf64401)
     CPPUNIT_ASSERT(pEntry);
     CPPUNIT_ASSERT_EQUAL(ScFormatEntry::Type::Iconset, pEntry->GetType());
     const ScIconSetFormat* pIconSet = static_cast<const 
ScIconSetFormat*>(pEntry);
-    convertToOldCondFormat(pIconSet);
 
     for (size_t i = 0; i < 10; ++i)
     {
diff --git a/sc/qa/unit/ucalc_condformat.cxx b/sc/qa/unit/ucalc_condformat.cxx
index 9f7d7cf39443..87a169b1a2c5 100644
--- a/sc/qa/unit/ucalc_condformat.cxx
+++ b/sc/qa/unit/ucalc_condformat.cxx
@@ -731,9 +731,9 @@ CPPUNIT_TEST_FIXTURE(TestCondformat, testIconSet)
 
     ScIconSetFormat* pEntry = new ScIconSetFormat(m_pDoc);
     ScIconSetFormatData* pData = new ScIconSetFormatData;
-    pData->m_Entries.emplace_back(new ScColorScaleEntry(0, COL_BLUE, 
COLORSCALE_VALUE, ScConditionMode::EqGreater));
-    pData->m_Entries.emplace_back(new ScColorScaleEntry(1, COL_GREEN, 
COLORSCALE_VALUE, ScConditionMode::EqGreater));
-    pData->m_Entries.emplace_back(new ScColorScaleEntry(2, COL_RED, 
COLORSCALE_VALUE, ScConditionMode::Equal));
+    pData->m_Entries.emplace_back(new ScColorScaleEntry(0, COL_BLUE));
+    pData->m_Entries.emplace_back(new ScColorScaleEntry(1, COL_GREEN));
+    pData->m_Entries.emplace_back(new ScColorScaleEntry(2, COL_RED));
     pEntry->SetIconSetData(pData);
 
     m_pDoc->AddCondFormatData(pFormat->GetRange(), 0, 1);
@@ -742,10 +742,11 @@ CPPUNIT_TEST_FIXTURE(TestCondformat, testIconSet)
     static struct {
         double nVal; sal_Int32 nIndex;
     } const aTests[] = {
+        { -1.0, 0 },
         { 0.0, 0 },
         { 1.0, 1 },
         { 2.0, 2 },
-        { 3.0, 1 }
+        { 3.0, 2 }
     };
     for(size_t i = 0; i < SAL_N_ELEMENTS(aTests); ++i)
     {
diff --git a/sc/source/core/data/colorscale.cxx 
b/sc/source/core/data/colorscale.cxx
index 5c1ffe880dd6..24c662adffa9 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -154,17 +154,15 @@ bool ScFormulaListener::NeedsRepaint() const
 ScColorScaleEntry::ScColorScaleEntry():
     mnVal(0),
     mpFormat(nullptr),
-    meType(COLORSCALE_VALUE),
-    meMode(ScConditionMode::Equal)
+    meType(COLORSCALE_VALUE)
 {
 }
 
-ScColorScaleEntry::ScColorScaleEntry(double nVal, const Color& rCol, 
ScColorScaleEntryType eType, ScConditionMode eMode):
+ScColorScaleEntry::ScColorScaleEntry(double nVal, const Color& rCol, 
ScColorScaleEntryType eType):
     mnVal(nVal),
     mpFormat(nullptr),
     maColor(rCol),
-    meType(eType),
-    meMode(eMode)
+    meType(eType)
 {
 }
 
@@ -172,8 +170,7 @@ ScColorScaleEntry::ScColorScaleEntry(const 
ScColorScaleEntry& rEntry):
     mnVal(rEntry.mnVal),
     mpFormat(rEntry.mpFormat),
     maColor(rEntry.maColor),
-    meType(rEntry.meType),
-    meMode(rEntry.meMode)
+    meType(rEntry.meType)
 {
     setListener();
     if(rEntry.mpCell)
@@ -188,8 +185,7 @@ ScColorScaleEntry::ScColorScaleEntry(ScDocument* pDoc, 
const ScColorScaleEntry&
     mnVal(rEntry.mnVal),
     mpFormat(rEntry.mpFormat),
     maColor(rEntry.maColor),
-    meType(rEntry.meType),
-    meMode(rEntry.meMode)
+    meType(rEntry.meType)
 {
     setListener();
     if(rEntry.mpCell)
@@ -1070,30 +1066,6 @@ void ScDataBarFormat::EnsureSize()
     }
 }
 
-static bool Compare(double nVal1, double nVal2, const 
ScIconSetFormat::const_iterator& itr)
-{
-    switch ((*itr)->GetMode())
-    {
-        case ScConditionMode::Equal:
-            return nVal1 == nVal2;
-        case ScConditionMode::Less:
-            return nVal1 < nVal2;
-        case ScConditionMode::Greater:
-            return nVal1 > nVal2;
-        case ScConditionMode::EqLess:
-            return nVal1 <= nVal2;
-        case ScConditionMode::EqGreater:
-            return nVal1 >= nVal2;
-        case ScConditionMode::NotEqual:
-            return nVal1 != nVal2;
-
-        default:
-            break;
-    }
-
-    return false;
-}
-
 ScIconSetFormatData::ScIconSetFormatData(ScIconSetFormatData const& rOther)
     : eIconSetType(rOther.eIconSetType)
     , mbShowValue(rOther.mbShowValue)
@@ -1159,32 +1131,27 @@ std::unique_ptr<ScIconSetInfo> 
ScIconSetFormat::GetIconSetInfo(const ScAddress&
     // now we have for sure a value
     double nVal = rCell.getValue();
 
-    if (mpFormatData->m_Entries.size() < 1)
+    if (mpFormatData->m_Entries.size() < 2)
         return nullptr;
 
     double nMin = GetMinValue();
     double nMax = GetMaxValue();
 
-    sal_Int32 nIndex = -1;
-    ScConditionMode eMode = ScConditionMode::EqGreater;
+    sal_Int32 nIndex = 0;
     const_iterator itr = begin();
-    double nValRef = 0;
+    ++itr;
+    double nValMax = CalcValue(nMin, nMax, itr);
 
-    int i = 0;
-    while(itr != end())
+    ++itr;
+    while(itr != end() && nVal >= nValMax)
     {
-        nValRef = CalcValue(nMin, nMax, itr);
-        if (Compare(nVal, nValRef, itr))
-        {
-            nIndex = i;
-            eMode = (*itr)->GetMode();
-        }
-        itr++;
-        i++;
+        ++nIndex;
+        nValMax = CalcValue(nMin, nMax, itr);
+        ++itr;
     }
 
-    if (nIndex == -1)
-        return nullptr;
+    if(nVal >= nValMax)
+        ++nIndex;
 
     std::unique_ptr<ScIconSetInfo> pInfo(new ScIconSetInfo);
 
@@ -1217,7 +1184,6 @@ std::unique_ptr<ScIconSetInfo> 
ScIconSetFormat::GetIconSetInfo(const ScAddress&
     }
 
     pInfo->mbShowValue = mpFormatData->mbShowValue;
-    pInfo->eConditionMode = eMode;
     return pInfo;
 }
 
diff --git a/sc/source/ui/condformat/condformatdlgentry.cxx 
b/sc/source/ui/condformat/condformatdlgentry.cxx
index 605b960c15de..0bff49e32f44 100644
--- a/sc/source/ui/condformat/condformatdlgentry.cxx
+++ b/sc/source/ui/condformat/condformatdlgentry.cxx
@@ -1250,9 +1250,9 @@ protected:
 private:
     std::unique_ptr<weld::Container> mxGrid;
     std::unique_ptr<weld::Image> mxImgIcon;
+    std::unique_ptr<weld::Label> mxFtEntry;
     std::unique_ptr<weld::Entry> mxEdEntry;
     std::unique_ptr<weld::ComboBox> mxLbEntryType;
-    std::unique_ptr<weld::ComboBox> mxConditionMode;
     weld::Container* mpContainer;
 
 public:
@@ -1268,6 +1268,8 @@ public:
     }
 
     ScColorScaleEntry* CreateEntry(ScDocument& rDoc, const ScAddress& rPos) 
const;
+
+    void SetFirstEntry();
 };
 
 ScIconSetFrmtDataEntry::ScIconSetFrmtDataEntry(weld::Container* pParent, 
ScIconSetType eType, const ScDocument* pDoc, sal_Int32 i, const 
ScColorScaleEntry* pEntry)
@@ -1276,17 +1278,11 @@ 
ScIconSetFrmtDataEntry::ScIconSetFrmtDataEntry(weld::Container* pParent, ScIconS
     , mxImgIcon(mxBuilder->weld_image(u"icon"_ustr))
     , mxEdEntry(mxBuilder->weld_entry(u"entry"_ustr))
     , mxLbEntryType(mxBuilder->weld_combo_box(u"listbox"_ustr))
-    , mxConditionMode(mxBuilder->weld_combo_box(u"conditionMode"_ustr))
     , mpContainer(pParent)
 {
     mxImgIcon->set_from_icon_name(ScIconSetFormat::getIconName(eType, i));
     if(pEntry)
     {
-        if (pEntry->GetMode() >= ScConditionMode::Equal && pEntry->GetMode() 
<= ScConditionMode::NotEqual)
-            mxConditionMode->set_active(static_cast<int>(pEntry->GetMode()));
-        else
-            assert(false && "ScIconSetFrmtDataEntry::ScIconSetFrmtDataEntry: 
Invalid condition mode");
-
         switch(pEntry->GetType())
         {
             case COLORSCALE_VALUE:
@@ -1312,7 +1308,6 @@ 
ScIconSetFrmtDataEntry::ScIconSetFrmtDataEntry(weld::Container* pParent, ScIconS
     else
     {
         mxLbEntryType->set_active(1);
-        mxConditionMode->set_active(0);
     }
 }
 
@@ -1323,8 +1318,7 @@ ScIconSetFrmtDataEntry::~ScIconSetFrmtDataEntry()
 
 ScColorScaleEntry* ScIconSetFrmtDataEntry::CreateEntry(ScDocument& rDoc, const 
ScAddress& rPos) const
 {
-    sal_Int32 nTypePos = mxLbEntryType->get_active();
-    sal_Int32 nModePos = mxConditionMode->get_active();
+    sal_Int32 nPos = mxLbEntryType->get_active();
     OUString aText = mxEdEntry->get_text();
     ScColorScaleEntry* pEntry = new ScColorScaleEntry();
 
@@ -1334,7 +1328,7 @@ ScColorScaleEntry* 
ScIconSetFrmtDataEntry::CreateEntry(ScDocument& rDoc, const S
     (void)pNumberFormatter->IsNumberFormat(aText, nIndex, nVal);
     pEntry->SetValue(nVal);
 
-    switch(nTypePos)
+    switch(nPos)
     {
         case 0:
             pEntry->SetType(COLORSCALE_VALUE);
@@ -1353,11 +1347,18 @@ ScColorScaleEntry* 
ScIconSetFrmtDataEntry::CreateEntry(ScDocument& rDoc, const S
             assert(false);
     }
 
-    pEntry->SetMode(static_cast<ScConditionMode>(nModePos));
-
     return pEntry;
 }
 
+void ScIconSetFrmtDataEntry::SetFirstEntry()
+{
+    mxEdEntry->hide();
+    mxLbEntryType->hide();
+    mxFtEntry->hide();
+    mxEdEntry->set_text("0");
+    mxLbEntryType->set_active(1);
+}
+
 ScIconSetFrmtEntry::ScIconSetFrmtEntry(ScCondFormatList* pParent, ScDocument* 
pDoc, const ScAddress& rPos, const ScIconSetFormat* pFormat)
     : ScCondFrmtEntry(pParent, pDoc, rPos)
     , mxLbColorFormat(mxBuilder->weld_combo_box(u"colorformat"_ustr))
@@ -1384,6 +1385,7 @@ ScIconSetFrmtEntry::ScIconSetFrmtEntry(ScCondFormatList* 
pParent, ScDocument* pD
                 mxIconParent.get(), eType, pDoc, i, 
pIconSetFormatData->m_Entries[i].get()));
             maEntries[i]->set_grid_top_attach(i);
         }
+        maEntries[0]->SetFirstEntry();
     }
     else
         IconSetTypeHdl(*mxLbIconSetType);
@@ -1417,6 +1419,7 @@ IMPL_LINK_NOARG( ScIconSetFrmtEntry, IconSetTypeHdl, 
weld::ComboBox&, void )
         maEntries[i]->set_grid_top_attach(i);
         maEntries[i]->Show();
     }
+    maEntries[0]->SetFirstEntry();
 }
 
 OUString ScIconSetFrmtEntry::GetExpressionString()
diff --git a/sc/uiconfig/scalc/ui/conditionaliconset.ui 
b/sc/uiconfig/scalc/ui/conditionaliconset.ui
index 27c0bf9cdb96..88eef18113af 100644
--- a/sc/uiconfig/scalc/ui/conditionaliconset.ui
+++ b/sc/uiconfig/scalc/ui/conditionaliconset.ui
@@ -16,17 +16,11 @@
         <property name="row-spacing">6</property>
         <property name="column-spacing">12</property>
         <child>
-          <object class="GtkComboBoxText" id="conditionMode">
+          <object class="GtkLabel" id="label">
             <property name="visible">True</property>
             <property name="can-focus">False</property>
-            <items>
-              <item context="conditionaliconset|conditionMode"> = </item>
-              <item context="conditionaliconset|conditionMode"> &lt; </item>
-              <item context="conditionaliconset|conditionMode"> &gt; </item>
-              <item context="conditionaliconset|conditionMode"> &lt;= </item>
-              <item context="conditionaliconset|conditionMode"> &gt;= </item>
-              <item context="conditionaliconset|conditionMode"> &lt;&gt; 
</item>
-            </items>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes" 
context="conditionaliconset|label"> &gt;= </property>
           </object>
           <packing>
             <property name="left-attach">1</property>

Reply via email to