[Libreoffice-commits] core.git: Branch 'private/moggi/conditional-format-api' - 11 commits - offapi/com sc/qa sc/source
Markus Mohrhard
markus.mohrhard at collabora.co.uk
Sun Mar 29 16:30:42 PDT 2015
offapi/com/sun/star/sheet/IconSetFormatEntry.idl | 13
sc/qa/extras/new_cond_format.cxx | 112 +++++
sc/qa/extras/testdocuments/new_cond_format_api.ods |binary
sc/source/ui/inc/condformatuno.hxx | 68 +++
sc/source/ui/unoobj/condformatuno.cxx | 399 +++++++++++++++++++--
5 files changed, 561 insertions(+), 31 deletions(-)
New commits:
commit a3adf88205df89c7fafac8a434956e0495fd90d4
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Mar 30 01:27:47 2015 +0200
add last databar part
Change-Id: Id86dfa4e6795d0ec6a66850747f95de6b0bd8b98
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index 0b81b5a..c0c20f0 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -894,6 +894,43 @@ uno::Reference<beans::XPropertySetInfo> SAL_CALL ScDataBarFormatObj::getProperty
return aRef;
}
+namespace {
+
+void setDataBarEntry(ScColorScaleEntry* pEntry, uno::Reference<sheet::XDataBarEntry> xEntry)
+{
+ ScColorScaleEntryType eType;
+ sal_Int32 nApiType = xEntry->getType();
+ bool bFound = false;
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aDataBarEntryTypeMap); ++i)
+ {
+ if (aDataBarEntryTypeMap[i].nApiType == nApiType)
+ {
+ eType = aDataBarEntryTypeMap[i].eType;
+ bFound = true;
+ break;
+ }
+ }
+
+ if (!bFound)
+ throw lang::IllegalArgumentException();
+
+ pEntry->SetType(eType);
+ switch (eType)
+ {
+ case COLORSCALE_FORMULA:
+ // TODO: Implement
+ break;
+ default:
+ {
+ double nVal = xEntry->getFormula().toDouble();
+ pEntry->SetValue(nVal);
+ }
+ break;
+ }
+}
+
+}
+
void SAL_CALL ScDataBarFormatObj::setPropertyValue(
const OUString& aPropertyName, const uno::Any& aValue )
throw(beans::UnknownPropertyException, beans::PropertyVetoException,
@@ -994,6 +1031,10 @@ void SAL_CALL ScDataBarFormatObj::setPropertyValue(
if (aEntries.getLength() != 2)
throw lang::IllegalArgumentException();
+ setDataBarEntry(getCoreObject()->GetDataBarData()->mpLowerLimit.get(),
+ aEntries[0]);
+ setDataBarEntry(getCoreObject()->GetDataBarData()->mpUpperLimit.get(),
+ aEntries[1]);
}
else
throw lang::IllegalArgumentException();
commit ca89b93acff683b7fb2f8212a6a303d43e7552f8
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Mar 30 01:17:44 2015 +0200
implement last missing IconSet piece
Change-Id: I97fb3a2e8bc5abb68a07e4daab6492a4ffa5c52a
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index 10a2e78..0b81b5a 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -1228,6 +1228,44 @@ uno::Reference<beans::XPropertySetInfo> SAL_CALL ScIconSetFormatObj::getProperty
return aRef;
}
+namespace {
+
+void setIconSetEntry(ScIconSetFormat* pFormat, uno::Reference<sheet::XIconSetEntry> xEntry, size_t nPos)
+{
+ ScIconSetFormatData* pData = pFormat->GetIconSetData();
+ ScColorScaleEntryType eType;
+ sal_Int32 nApiType = xEntry->getType();
+ bool bFound = false;
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aIconSetEntryTypeMap); ++i)
+ {
+ if (aIconSetEntryTypeMap[i].nApiType == nApiType)
+ {
+ eType = aIconSetEntryTypeMap[i].eType;
+ bFound = true;
+ break;
+ }
+ }
+
+ if (!bFound)
+ throw lang::IllegalArgumentException();
+
+ pData->maEntries[nPos].SetType(eType);
+ switch (eType)
+ {
+ case COLORSCALE_FORMULA:
+ // TODO: Implement
+ break;
+ default:
+ {
+ double nVal = xEntry->getFormula().toDouble();
+ pData->maEntries[nPos].SetValue(nVal);
+ }
+ break;
+ }
+}
+
+}
+
void SAL_CALL ScIconSetFormatObj::setPropertyValue(
const OUString& aPropertyName, const uno::Any& aValue )
throw(beans::UnknownPropertyException, beans::PropertyVetoException,
@@ -1286,7 +1324,11 @@ void SAL_CALL ScIconSetFormatObj::setPropertyValue(
uno::Sequence<uno::Reference<sheet::XIconSetEntry> > aEntries;
if (aValue >>= aEntries)
{
-
+ sal_Int32 nLength = aEntries.getLength();
+ for (size_t i = 0; i < size_t(nLength); ++i)
+ {
+ setIconSetEntry(getCoreObject(), aEntries[i], i);
+ }
}
else
throw lang::IllegalArgumentException();
commit c0d30df0ef942e34c84a941757f11d59c52a4875
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Mar 30 01:03:37 2015 +0200
first icon set entry always is minimum
Change-Id: Iddeced617ec6248601a3636a84abab6c1d4bb015
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index 6bbbe2e..10a2e78 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -1404,6 +1404,10 @@ sal_Int32 ScIconSetEntryObj::getType()
throw(uno::RuntimeException, std::exception)
{
ScColorScaleEntry* pEntry = getCoreObject();
+ // the first entry always is minimum
+ if (mnPos == 0)
+ return sheet::IconSetFormatEntry::ICONSET_MIN;
+
for (size_t i = 0; i < SAL_N_ELEMENTS(aIconSetEntryTypeMap); ++i)
{
if (aIconSetEntryTypeMap[i].eType == pEntry->GetType())
@@ -1418,6 +1422,10 @@ sal_Int32 ScIconSetEntryObj::getType()
void ScIconSetEntryObj::setType(sal_Int32 nType)
throw(uno::RuntimeException, std::exception)
{
+ // first entry is always MIN
+ if (mnPos == 0)
+ return;
+
ScColorScaleEntry* pEntry = getCoreObject();
for (size_t i = 0; i < SAL_N_ELEMENTS(aIconSetEntryTypeMap); ++i)
{
commit 48bc1ae1ede126aecee3f817515380e6c8a25a8d
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Mar 30 01:01:04 2015 +0200
add uno object for iconset entries
Change-Id: I3eed6b39a72369063e160e2be7a27fed53a0234a
diff --git a/sc/source/ui/inc/condformatuno.hxx b/sc/source/ui/inc/condformatuno.hxx
index a4f6928..7088bd3 100644
--- a/sc/source/ui/inc/condformatuno.hxx
+++ b/sc/source/ui/inc/condformatuno.hxx
@@ -441,6 +441,32 @@ private:
const ScIconSetFormat* mpFormat;
};
+class ScIconSetEntryObj : public cppu::WeakImplHelper1<com::sun::star::sheet::XIconSetEntry>
+{
+public:
+ ScIconSetEntryObj(rtl::Reference<ScIconSetFormatObj> xParent, size_t nPos);
+
+ virtual ~ScIconSetEntryObj();
+
+ virtual sal_Int32 SAL_CALL getType()
+ throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+ virtual void SAL_CALL setType(sal_Int32 nType)
+ throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+ virtual OUString SAL_CALL getFormula()
+ throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+ virtual void SAL_CALL setFormula(const OUString& rString)
+ throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+private:
+ ScColorScaleEntry* getCoreObject();
+
+ rtl::Reference<ScIconSetFormatObj> mxParent;
+ size_t mnPos;
+};
+
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index a78c562..6bbbe2e 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -28,6 +28,7 @@
#include <com/sun/star/sheet/DataBarAxis.hpp>
#include <com/sun/star/sheet/ConditionFormatOperator.hpp>
#include <com/sun/star/sheet/DataBarEntryType.hpp>
+#include <com/sun/star/sheet/IconSetFormatEntry.hpp>
namespace {
@@ -229,6 +230,21 @@ const IconSetTypeApiMap aIconSetApiMap[] =
{ IconSet_5Quarters, sheet::IconSetType::ICONSET_5QUARTERS },
};
+struct IconSetEntryTypeApiMap
+{
+ ScColorScaleEntryType eType;
+ sal_Int32 nApiType;
+};
+
+IconSetEntryTypeApiMap aIconSetEntryTypeMap[] =
+{
+ { COLORSCALE_MIN, sheet::IconSetFormatEntry::ICONSET_MIN },
+ { COLORSCALE_VALUE, sheet::IconSetFormatEntry::ICONSET_VALUE },
+ { COLORSCALE_FORMULA, sheet::IconSetFormatEntry::ICONSET_FORMULA },
+ { COLORSCALE_PERCENT, sheet::IconSetFormatEntry::ICONSET_PERCENT },
+ { COLORSCALE_PERCENTILE, sheet::IconSetFormatEntry::ICONSET_PERCENTILE }
+};
+
}
ScCondFormatsObj::ScCondFormatsObj(ScDocShell* pDocShell, SCTAB nTab):
@@ -1266,6 +1282,15 @@ void SAL_CALL ScIconSetFormatObj::setPropertyValue(
}
break;
case IconSetEntries:
+ {
+ uno::Sequence<uno::Reference<sheet::XIconSetEntry> > aEntries;
+ if (aValue >>= aEntries)
+ {
+
+ }
+ else
+ throw lang::IllegalArgumentException();
+ }
break;
default:
break;
@@ -1308,11 +1333,13 @@ uno::Any SAL_CALL ScIconSetFormatObj::getPropertyValue( const OUString& aPropert
break;
case IconSetEntries:
{
- uno::Sequence< sheet::XIconSetEntry > aEntries(getCoreObject()->size());
- for (auto it = getCoreObject()->begin(), itEnd = getCoreObject()->end(); it != itEnd; ++it)
+ uno::Sequence<uno::Reference<sheet::XIconSetEntry> > aEntries(getCoreObject()->size());
+ size_t i = 0;
+ for (auto it = getCoreObject()->begin(), itEnd = getCoreObject()->end(); it != itEnd; ++it, ++i)
{
- //aEntries.operator[] = ;
+ aEntries[i] = new ScIconSetEntryObj(this, i);
}
+ aAny <<= aEntries;
}
break;
default:
@@ -1353,4 +1380,86 @@ void SAL_CALL ScIconSetFormatObj::removeVetoableChangeListener( const OUString&,
SAL_WARN("sc", "not implemented");
}
+ScIconSetEntryObj::ScIconSetEntryObj(rtl::Reference<ScIconSetFormatObj> xParent,
+ size_t nPos):
+ mxParent(xParent),
+ mnPos(nPos)
+{
+}
+
+ScIconSetEntryObj::~ScIconSetEntryObj()
+{
+}
+
+ScColorScaleEntry* ScIconSetEntryObj::getCoreObject()
+{
+ ScIconSetFormat* pFormat = mxParent->getCoreObject();
+ if (pFormat->GetIconSetData()->maEntries.size() <= mnPos)
+ throw lang::IllegalArgumentException();
+
+ return &pFormat->GetIconSetData()->maEntries[mnPos];
+}
+
+sal_Int32 ScIconSetEntryObj::getType()
+ throw(uno::RuntimeException, std::exception)
+{
+ ScColorScaleEntry* pEntry = getCoreObject();
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aIconSetEntryTypeMap); ++i)
+ {
+ if (aIconSetEntryTypeMap[i].eType == pEntry->GetType())
+ {
+ return aIconSetEntryTypeMap[i].nApiType;
+ }
+ }
+
+ throw lang::IllegalArgumentException();
+}
+
+void ScIconSetEntryObj::setType(sal_Int32 nType)
+ throw(uno::RuntimeException, std::exception)
+{
+ ScColorScaleEntry* pEntry = getCoreObject();
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aIconSetEntryTypeMap); ++i)
+ {
+ if (aIconSetEntryTypeMap[i].nApiType == nType)
+ {
+ pEntry->SetType(aIconSetEntryTypeMap[i].eType);
+ return;
+ }
+ }
+ throw lang::IllegalArgumentException();
+}
+
+OUString ScIconSetEntryObj::getFormula()
+ throw(uno::RuntimeException, std::exception)
+{
+ ScColorScaleEntry* pEntry = getCoreObject();
+ switch (pEntry->GetType())
+ {
+ case COLORSCALE_FORMULA:
+ // TODO: Implement
+ break;
+ default:
+ return OUString::number(pEntry->GetValue());
+ }
+
+ return OUString();
+}
+
+void ScIconSetEntryObj::setFormula(const OUString& rFormula)
+ throw(uno::RuntimeException, std::exception)
+{
+ ScColorScaleEntry* pEntry = getCoreObject();
+ switch (pEntry->GetType())
+ {
+ case COLORSCALE_FORMULA:
+ // TODO: Implement
+ // pEntry->SetFormula(rFormula);
+ break;
+ default:
+ pEntry->SetValue(rFormula.toDouble());
+ break;
+ }
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 707fc3ad62f70e8ed5a8b83c1faa2b0ba7484e2d
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Mar 30 01:00:11 2015 +0200
add UNO object for DataBar entries
Change-Id: I5e11e62076495f62876654baeebe7dffe6492040
diff --git a/sc/source/ui/inc/condformatuno.hxx b/sc/source/ui/inc/condformatuno.hxx
index 6333775..a4f6928 100644
--- a/sc/source/ui/inc/condformatuno.hxx
+++ b/sc/source/ui/inc/condformatuno.hxx
@@ -34,6 +34,7 @@ class ScIconSetFormat;
class ScDataBarFormat;
class ScColorScaleFormat;
class ScCondFormatEntry;
+class ScColorScaleEntry;
using namespace com::sun::star;
@@ -355,6 +356,32 @@ private:
const ScDataBarFormat* mpFormat;
};
+class ScDataBarEntryObj : public cppu::WeakImplHelper1<com::sun::star::sheet::XDataBarEntry>
+{
+public:
+ ScDataBarEntryObj(rtl::Reference<ScDataBarFormatObj> xParent, size_t nPos);
+
+ virtual ~ScDataBarEntryObj();
+
+ virtual sal_Int32 SAL_CALL getType()
+ throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+ virtual void SAL_CALL setType(sal_Int32 nType)
+ throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+ virtual OUString SAL_CALL getFormula()
+ throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+ virtual void SAL_CALL setFormula(const OUString& rString)
+ throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+private:
+ ScColorScaleEntry* getCoreObject();
+
+ rtl::Reference<ScDataBarFormatObj> mxParent;
+ size_t mnPos;
+};
+
class ScIconSetFormatObj : public cppu::WeakImplHelper1<com::sun::star::beans::XPropertySet>
{
public:
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index 88fd41a..a78c562 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -27,6 +27,7 @@
#include <com/sun/star/sheet/IconSetType.hpp>
#include <com/sun/star/sheet/DataBarAxis.hpp>
#include <com/sun/star/sheet/ConditionFormatOperator.hpp>
+#include <com/sun/star/sheet/DataBarEntryType.hpp>
namespace {
@@ -161,6 +162,23 @@ DataBarAxisApiMap aDataBarAxisMap[] =
{ databar::MIDDLE, sheet::DataBarAxis::AXIS_MIDDLE }
};
+struct DataBarEntryTypeApiMap
+{
+ ScColorScaleEntryType eType;
+ sal_Int32 nApiType;
+};
+
+DataBarEntryTypeApiMap aDataBarEntryTypeMap[] =
+{
+ { COLORSCALE_AUTO, sheet::DataBarEntryType::DATABAR_MAX },
+ { COLORSCALE_MIN, sheet::DataBarEntryType::DATABAR_MIN },
+ { COLORSCALE_MAX, sheet::DataBarEntryType::DATABAR_MAX },
+ { COLORSCALE_VALUE, sheet::DataBarEntryType::DATABAR_VALUE },
+ { COLORSCALE_FORMULA, sheet::DataBarEntryType::DATABAR_FORMULA },
+ { COLORSCALE_PERCENT, sheet::DataBarEntryType::DATABAR_PERCENT },
+ { COLORSCALE_PERCENTILE, sheet::DataBarEntryType::DATABAR_PERCENTILE }
+};
+
enum IconSetProperties
{
Icons,
@@ -954,6 +972,15 @@ void SAL_CALL ScDataBarFormatObj::setPropertyValue(
break;
case DataBarEntries:
{
+ uno::Sequence<uno::Reference<sheet::XDataBarEntry> > aEntries;
+ if (aValue >>= aEntries)
+ {
+ if (aEntries.getLength() != 2)
+ throw lang::IllegalArgumentException();
+
+ }
+ else
+ throw lang::IllegalArgumentException();
}
break;
}
@@ -1026,6 +1053,10 @@ uno::Any SAL_CALL ScDataBarFormatObj::getPropertyValue( const OUString& aPropert
break;
case DataBarEntries:
{
+ uno::Sequence<uno::Reference<sheet::XDataBarEntry> > aEntries(2);
+ aEntries[0] = new ScDataBarEntryObj(this, 0);
+ aEntries[1] = new ScDataBarEntryObj(this, 1);
+ aAny <<= aEntries;
}
break;
}
@@ -1064,6 +1095,92 @@ void SAL_CALL ScDataBarFormatObj::removeVetoableChangeListener( const OUString&,
SAL_WARN("sc", "not implemented");
}
+ScDataBarEntryObj::ScDataBarEntryObj(rtl::Reference<ScDataBarFormatObj> xParent,
+ size_t nPos):
+ mxParent(xParent),
+ mnPos(nPos)
+{
+}
+
+ScDataBarEntryObj::~ScDataBarEntryObj()
+{
+}
+
+ScColorScaleEntry* ScDataBarEntryObj::getCoreObject()
+{
+ ScDataBarFormat* pFormat = mxParent->getCoreObject();
+ ScColorScaleEntry* pEntry;
+ if (mnPos == 0)
+ pEntry = pFormat->GetDataBarData()->mpLowerLimit.get();
+ else
+ pEntry = pFormat->GetDataBarData()->mpUpperLimit.get();
+
+ return pEntry;
+}
+
+sal_Int32 ScDataBarEntryObj::getType()
+ throw(uno::RuntimeException, std::exception)
+{
+ ScColorScaleEntry* pEntry = getCoreObject();
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aDataBarEntryTypeMap); ++i)
+ {
+ if (aDataBarEntryTypeMap[i].eType == pEntry->GetType())
+ {
+ return aDataBarEntryTypeMap[i].nApiType;
+ }
+ }
+
+ throw lang::IllegalArgumentException();
+}
+
+void ScDataBarEntryObj::setType(sal_Int32 nType)
+ throw(uno::RuntimeException, std::exception)
+{
+ ScColorScaleEntry* pEntry = getCoreObject();
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aDataBarEntryTypeMap); ++i)
+ {
+ if (aDataBarEntryTypeMap[i].nApiType == nType)
+ {
+ pEntry->SetType(aDataBarEntryTypeMap[i].eType);
+ return;
+ }
+ }
+ throw lang::IllegalArgumentException();
+}
+
+OUString ScDataBarEntryObj::getFormula()
+ throw(uno::RuntimeException, std::exception)
+{
+ ScColorScaleEntry* pEntry = getCoreObject();
+ switch (pEntry->GetType())
+ {
+ case COLORSCALE_FORMULA:
+ // TODO: Implement
+ break;
+ default:
+ return OUString::number(pEntry->GetValue());
+ }
+
+ return OUString();
+}
+
+void ScDataBarEntryObj::setFormula(const OUString& rFormula)
+ throw(uno::RuntimeException, std::exception)
+{
+ ScColorScaleEntry* pEntry = getCoreObject();
+ switch (pEntry->GetType())
+ {
+ case COLORSCALE_FORMULA:
+ // TODO: Implement
+ // pEntry->SetFormula(rFormula);
+ break;
+ default:
+ pEntry->SetValue(rFormula.toDouble());
+ break;
+ }
+}
+
+
ScIconSetFormatObj::ScIconSetFormatObj(rtl::Reference<ScCondFormatObj> xParent,
const ScIconSetFormat* pFormat):
mpDocShell(xParent->getDocShell()),
commit 22b3d0c25128953714a832bd9f9016768a195570
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Mar 30 00:58:43 2015 +0200
add value for first entry
Change-Id: Ifc53952ba0aaa8b5e59944e309428bfce4d48ef7
diff --git a/offapi/com/sun/star/sheet/IconSetFormatEntry.idl b/offapi/com/sun/star/sheet/IconSetFormatEntry.idl
index 24715e3..652618c 100644
--- a/offapi/com/sun/star/sheet/IconSetFormatEntry.idl
+++ b/offapi/com/sun/star/sheet/IconSetFormatEntry.idl
@@ -14,13 +14,18 @@ module com { module sun { module star { module sheet {
constants IconSetFormatEntry
{
- const long ICONSET_PERCENTILE = 0;
+ /**
+ * Can not be set! Will always be the type of the first entry.
+ */
+ const long ICONSET_MIN = 0;
- const long ICONSET_VALUE = 1;
+ const long ICONSET_PERCENTILE = 1;
- const long ICONSET_PERCENT = 2;
+ const long ICONSET_VALUE = 2;
- const long ICONSET_FORMULA = 3;
+ const long ICONSET_PERCENT = 3;
+
+ const long ICONSET_FORMULA = 4;
};
commit 2f5adf45526ae1dc918731f9eb768023f5b4a9d9
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sun Mar 29 23:10:51 2015 +0200
work on initial colorscale properties tests
Change-Id: Ifc71437b8c7dfd70bf733863713ada4ad605abad
diff --git a/sc/qa/extras/new_cond_format.cxx b/sc/qa/extras/new_cond_format.cxx
index 3f67d38..c4876e6 100644
--- a/sc/qa/extras/new_cond_format.cxx
+++ b/sc/qa/extras/new_cond_format.cxx
@@ -38,6 +38,7 @@ public:
void testCondFormatProperties();
void testCondFormatXIndex();
void testDataBarProperties();
+ void testColorScaleProperties();
CPPUNIT_TEST_SUITE(ScConditionalFormatTest);
CPPUNIT_TEST(testRequestCondFormatListFromSheet);
@@ -46,6 +47,7 @@ public:
CPPUNIT_TEST(testCondFormatProperties);
CPPUNIT_TEST(testCondFormatXIndex);
CPPUNIT_TEST(testDataBarProperties);
+ CPPUNIT_TEST(testColorScaleProperties);
CPPUNIT_TEST_SUITE_END();
private:
@@ -259,6 +261,25 @@ void ScConditionalFormatTest::testDataBarProperties()
}
}
+void ScConditionalFormatTest::testColorScaleProperties()
+{
+ uno::Reference<sheet::XConditionalFormats> xCondFormatList =
+ getConditionalFormatList(init(3));
+
+ uno::Sequence<uno::Reference<sheet::XConditionalFormat> > xCondFormats =
+ xCondFormatList->getConditionalFormats();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xCondFormats.getLength());
+
+ uno::Reference<sheet::XConditionalFormat> xCondFormat = xCondFormats[0];
+ CPPUNIT_ASSERT(xCondFormat.is());
+
+ uno::Type aType = xCondFormat->getElementType();
+ CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.beans.XPropertySet"), aType.getTypeName());
+
+ CPPUNIT_ASSERT(xCondFormat->hasElements());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xCondFormat->getCount());
+}
+
void ScConditionalFormatTest::setUp()
{
nTest++;
diff --git a/sc/qa/extras/testdocuments/new_cond_format_api.ods b/sc/qa/extras/testdocuments/new_cond_format_api.ods
index 480ee24..06bb1d7 100644
Binary files a/sc/qa/extras/testdocuments/new_cond_format_api.ods and b/sc/qa/extras/testdocuments/new_cond_format_api.ods differ
commit d43719e42eb0931c2d859937859096155f537657
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sun Mar 29 23:03:06 2015 +0200
the implementation is available so enable it again
Change-Id: Ia5974e57fd4a21897577ff25fb53f48cceb49501
diff --git a/sc/qa/extras/new_cond_format.cxx b/sc/qa/extras/new_cond_format.cxx
index 7b76f6e..3f67d38 100644
--- a/sc/qa/extras/new_cond_format.cxx
+++ b/sc/qa/extras/new_cond_format.cxx
@@ -170,11 +170,9 @@ void ScConditionalFormatTest::testCondFormatXIndex()
CPPUNIT_ASSERT(xCondFormat->hasElements());
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xCondFormat->getCount());
- /*
- * missing implementation
+
uno::Any aAny = xCondFormat->getByIndex(0);
CPPUNIT_ASSERT(aAny.hasValue());
- */
}
namespace {
commit d3615d310314998364054aa7c1a5f03944d1877c
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sun Mar 29 23:01:28 2015 +0200
start work on data property tests
Change-Id: I1f1722aa3566555816df19e68aa7eaa97e7a13d9
diff --git a/sc/qa/extras/new_cond_format.cxx b/sc/qa/extras/new_cond_format.cxx
index 0bd96d4..7b76f6e 100644
--- a/sc/qa/extras/new_cond_format.cxx
+++ b/sc/qa/extras/new_cond_format.cxx
@@ -14,6 +14,7 @@
#include <com/sun/star/sheet/XSpreadsheetDocument.hpp>
#include <com/sun/star/sheet/XSpreadsheet.hpp>
#include <com/sun/star/table/CellAddress.hpp>
+#include <com/sun/star/sheet/DataBarAxis.hpp>
#include <unonames.hxx>
using namespace css;
@@ -36,6 +37,7 @@ public:
void testCondFormatListFormats();
void testCondFormatProperties();
void testCondFormatXIndex();
+ void testDataBarProperties();
CPPUNIT_TEST_SUITE(ScConditionalFormatTest);
CPPUNIT_TEST(testRequestCondFormatListFromSheet);
@@ -43,6 +45,7 @@ public:
CPPUNIT_TEST(testCondFormatListFormats);
CPPUNIT_TEST(testCondFormatProperties);
CPPUNIT_TEST(testCondFormatXIndex);
+ CPPUNIT_TEST(testDataBarProperties);
CPPUNIT_TEST_SUITE_END();
private:
@@ -174,6 +177,90 @@ void ScConditionalFormatTest::testCondFormatXIndex()
*/
}
+namespace {
+
+void testAxisPosition(uno::Reference<beans::XPropertySet> xPropSet, sal_Int32 ePos)
+{
+ sal_Int32 eAxisPos;
+ uno::Any aAny = xPropSet->getPropertyValue("AxisPosition");
+ CPPUNIT_ASSERT(aAny >>= eAxisPos);
+ CPPUNIT_ASSERT_EQUAL(ePos, eAxisPos);
+}
+
+void testShowValue(uno::Reference<beans::XPropertySet> xPropSet, bool bShowVal)
+{
+ bool bShow;
+ uno::Any aAny = xPropSet->getPropertyValue("ShowValue");
+ CPPUNIT_ASSERT(aAny >>= bShow);
+ CPPUNIT_ASSERT_EQUAL(bShowVal, bShow);
+}
+
+void testUseGradient(uno::Reference<beans::XPropertySet> xPropSet, bool bUseGradient)
+{
+ bool bGradient;
+ uno::Any aAny = xPropSet->getPropertyValue("UseGradient");
+ CPPUNIT_ASSERT(aAny >>= bGradient);
+ CPPUNIT_ASSERT_EQUAL(bUseGradient, bGradient);
+}
+
+void testPositiveColor(uno::Reference<beans::XPropertySet> xPropSet, Color aColor)
+{
+ sal_Int32 nColor;
+ uno::Any aAny = xPropSet->getPropertyValue("Color");
+ CPPUNIT_ASSERT(aAny >>= nColor);
+ CPPUNIT_ASSERT_EQUAL(aColor.GetColor(), sal_uInt32(nColor));
+}
+
+void testNegativeColor(uno::Reference<beans::XPropertySet> xPropSet, Color aColor)
+{
+ sal_Int32 nColor;
+ uno::Any aAny = xPropSet->getPropertyValue("NegativeColor");
+ CPPUNIT_ASSERT(aAny >>= nColor);
+ CPPUNIT_ASSERT_EQUAL(aColor.GetColor(), sal_uInt32(nColor));
+}
+
+void testAxisColor(uno::Reference<beans::XPropertySet> xPropSet, Color aColor)
+{
+ sal_Int32 nColor;
+ uno::Any aAny = xPropSet->getPropertyValue("AxisColor");
+ CPPUNIT_ASSERT(aAny >>= nColor);
+ CPPUNIT_ASSERT_EQUAL(aColor.GetColor(), sal_uInt32(nColor));
+}
+
+}
+
+void ScConditionalFormatTest::testDataBarProperties()
+{
+ uno::Reference<sheet::XConditionalFormats> xCondFormatList =
+ getConditionalFormatList(init(2));
+
+ uno::Sequence<uno::Reference<sheet::XConditionalFormat> > xCondFormats =
+ xCondFormatList->getConditionalFormats();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xCondFormats.getLength());
+
+ uno::Reference<sheet::XConditionalFormat> xCondFormat = xCondFormats[0];
+ CPPUNIT_ASSERT(xCondFormat.is());
+
+ uno::Type aType = xCondFormat->getElementType();
+ CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.beans.XPropertySet"), aType.getTypeName());
+
+ CPPUNIT_ASSERT(xCondFormat->hasElements());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(5), xCondFormat->getCount());
+
+ uno::Reference<beans::XPropertySet> xPropSet;
+ {
+ uno::Any aAny = xCondFormat->getByIndex(0);
+ CPPUNIT_ASSERT(aAny.hasValue());
+ CPPUNIT_ASSERT(aAny >>= xPropSet);
+ testAxisPosition(xPropSet, sheet::DataBarAxis::AXIS_AUTOMATIC);
+ testShowValue(xPropSet, true);
+ testUseGradient(xPropSet, true);
+ testPositiveColor(xPropSet, COL_LIGHTBLUE);
+ testNegativeColor(xPropSet, COL_LIGHTRED);
+ testAxisColor(xPropSet, COL_BLACK);
+ }
+}
+
void ScConditionalFormatTest::setUp()
{
nTest++;
diff --git a/sc/qa/extras/testdocuments/new_cond_format_api.ods b/sc/qa/extras/testdocuments/new_cond_format_api.ods
index 3660f45..480ee24 100644
Binary files a/sc/qa/extras/testdocuments/new_cond_format_api.ods and b/sc/qa/extras/testdocuments/new_cond_format_api.ods differ
commit 75e0f2ec5ef4b119cabe749dd394937153c70323
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sun Mar 29 23:01:10 2015 +0200
fix condition
Change-Id: If8ad2361d6c0d838c39f8625f129fc326efd2cd4
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index 1a5af16..88fd41a 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -398,7 +398,7 @@ uno::Any ScCondFormatObj::getByIndex(sal_Int32 nIndex)
throw(uno::RuntimeException, std::exception)
{
SolarMutexGuard aGuard;
- if (getCoreObject()->size() >= size_t(nIndex))
+ if (getCoreObject()->size() <= size_t(nIndex))
throw lang::IllegalArgumentException();
const ScFormatEntry* pEntry = getCoreObject()->GetEntry(nIndex);
commit 0e9ac286b45a21b2214365a154abcbf0d1cff93c
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Sun Mar 29 19:54:09 2015 +0200
correct lifecycle handling for more objects
Change-Id: I456019c298c73bc872b49b55b628af1e0233be73
diff --git a/sc/source/ui/inc/condformatuno.hxx b/sc/source/ui/inc/condformatuno.hxx
index 04acec2..6333775 100644
--- a/sc/source/ui/inc/condformatuno.hxx
+++ b/sc/source/ui/inc/condformatuno.hxx
@@ -177,7 +177,8 @@ class ScConditionEntryObj : public cppu::WeakImplHelper2<com::sun::star::beans::
{
public:
- ScConditionEntryObj(rtl::Reference<ScCondFormatObj> xParent);
+ ScConditionEntryObj(rtl::Reference<ScCondFormatObj> xParent,
+ const ScCondFormatEntry* pFormat);
virtual ~ScConditionEntryObj();
static ScConditionEntryObj* getImplementation(uno::Reference<sheet::XConditionEntry> xCondition);
@@ -233,13 +234,14 @@ private:
ScDocShell* mpDocShell;
rtl::Reference<ScCondFormatObj> mxParent;
SfxItemPropertySet maPropSet;
+ const ScCondFormatEntry* mpFormat;
};
class ScColorScaleFormatObj : public cppu::WeakImplHelper1<com::sun::star::beans::XPropertySet>
{
public:
- ScColorScaleFormatObj(rtl::Reference<ScCondFormatObj> xParent);
+ ScColorScaleFormatObj(rtl::Reference<ScCondFormatObj> xParent, const ScColorScaleFormat* pFormat);
virtual ~ScColorScaleFormatObj();
static ScColorScaleFormatObj* getImplementation(uno::Reference<beans::XPropertySet> xPropSet);
@@ -291,12 +293,14 @@ private:
ScDocShell* mpDocShell;
rtl::Reference<ScCondFormatObj> mxParent;
SfxItemPropertySet maPropSet;
+ const ScColorScaleFormat* mpFormat;
};
class ScDataBarFormatObj : public cppu::WeakImplHelper1<com::sun::star::beans::XPropertySet>
{
public:
- ScDataBarFormatObj(rtl::Reference<ScCondFormatObj> xParent);
+ ScDataBarFormatObj(rtl::Reference<ScCondFormatObj> xParent,
+ const ScDataBarFormat* pFormat);
virtual ~ScDataBarFormatObj();
static ScDataBarFormatObj* getImplementation(uno::Reference<beans::XPropertySet> xPropSet);
@@ -348,12 +352,14 @@ private:
ScDocShell* mpDocShell;
rtl::Reference<ScCondFormatObj> mxParent;
SfxItemPropertySet maPropSet;
+ const ScDataBarFormat* mpFormat;
};
class ScIconSetFormatObj : public cppu::WeakImplHelper1<com::sun::star::beans::XPropertySet>
{
public:
- ScIconSetFormatObj(rtl::Reference<ScCondFormatObj> xParent);
+ ScIconSetFormatObj(rtl::Reference<ScCondFormatObj> xParent,
+ const ScIconSetFormat* pFormat);
virtual ~ScIconSetFormatObj();
static ScIconSetFormatObj* getImplementation(uno::Reference<beans::XPropertySet> xPropSet);
@@ -405,6 +411,7 @@ private:
ScDocShell* mpDocShell;
rtl::Reference<ScCondFormatObj> mxParent;
SfxItemPropertySet maPropSet;
+ const ScIconSetFormat* mpFormat;
};
#endif
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index aee40f7..1a5af16 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -303,16 +303,20 @@ uno::Reference<beans::XPropertySet> createConditionEntry(const ScFormatEntry* pE
switch (pEntry->GetType())
{
case condformat::CONDITION:
- return new ScConditionEntryObj(xParent);
+ return new ScConditionEntryObj(xParent,
+ static_cast<const ScCondFormatEntry*>(pEntry));
break;
case condformat::COLORSCALE:
- return new ScColorScaleFormatObj(xParent);
+ return new ScColorScaleFormatObj(xParent,
+ static_cast<const ScColorScaleFormat*>(pEntry));
break;
case condformat::DATABAR:
- return new ScDataBarFormatObj(xParent);
+ return new ScDataBarFormatObj(xParent,
+ static_cast<const ScDataBarFormat*>(pEntry));
break;
case condformat::ICONSET:
- return new ScIconSetFormatObj(xParent);
+ return new ScIconSetFormatObj(xParent,
+ static_cast<const ScIconSetFormat*>(pEntry));
break;
case condformat::DATE:
break;
@@ -519,10 +523,26 @@ void SAL_CALL ScCondFormatObj::removeVetoableChangeListener( const OUString&,
SAL_WARN("sc", "not implemented");
}
-ScConditionEntryObj::ScConditionEntryObj(rtl::Reference<ScCondFormatObj> xParent):
+namespace {
+
+bool isObjectStillAlive(ScConditionalFormat* pFormat, const ScFormatEntry* pEntry)
+{
+ for(size_t i = 0, n= pFormat->size(); i < n; ++i)
+ {
+ if (pFormat->GetEntry(i) == pEntry)
+ return true;
+ }
+ return false;
+}
+
+}
+
+ScConditionEntryObj::ScConditionEntryObj(rtl::Reference<ScCondFormatObj> xParent,
+ const ScCondFormatEntry* pFormat):
mpDocShell(xParent->getDocShell()),
mxParent(xParent),
- maPropSet(getConditionEntryrPropSet())
+ maPropSet(getConditionEntryrPropSet()),
+ mpFormat(pFormat)
{
}
@@ -532,7 +552,11 @@ ScConditionEntryObj::~ScConditionEntryObj()
ScCondFormatEntry* ScConditionEntryObj::getCoreObject()
{
- return NULL;
+ ScConditionalFormat* pFormat = mxParent->getCoreObject();
+ if (isObjectStillAlive(pFormat, mpFormat))
+ return const_cast<ScCondFormatEntry*>(mpFormat);
+
+ throw lang::IllegalArgumentException();
}
sal_Int32 ScConditionEntryObj::getType()
@@ -697,10 +721,12 @@ void SAL_CALL ScConditionEntryObj::removeVetoableChangeListener( const OUString&
SAL_WARN("sc", "not implemented");
}
-ScColorScaleFormatObj::ScColorScaleFormatObj(rtl::Reference<ScCondFormatObj> xParent):
+ScColorScaleFormatObj::ScColorScaleFormatObj(rtl::Reference<ScCondFormatObj> xParent,
+ const ScColorScaleFormat* pFormat):
mpDocShell(xParent->getDocShell()),
mxParent(xParent),
- maPropSet(getColorScalePropSet())
+ maPropSet(getColorScalePropSet()),
+ mpFormat(pFormat)
{
}
@@ -710,7 +736,11 @@ ScColorScaleFormatObj::~ScColorScaleFormatObj()
ScColorScaleFormat* ScColorScaleFormatObj::getCoreObject()
{
- return NULL;
+ ScConditionalFormat* pFormat = mxParent->getCoreObject();
+ if (isObjectStillAlive(pFormat, mpFormat))
+ return const_cast<ScColorScaleFormat*>(mpFormat);
+
+ throw lang::IllegalArgumentException();
}
uno::Reference<beans::XPropertySetInfo> SAL_CALL ScColorScaleFormatObj::getPropertySetInfo()
@@ -799,10 +829,12 @@ void SAL_CALL ScColorScaleFormatObj::removeVetoableChangeListener( const OUStrin
SAL_WARN("sc", "not implemented");
}
-ScDataBarFormatObj::ScDataBarFormatObj(rtl::Reference<ScCondFormatObj> xParent):
+ScDataBarFormatObj::ScDataBarFormatObj(rtl::Reference<ScCondFormatObj> xParent,
+ const ScDataBarFormat* pFormat):
mpDocShell(xParent->getDocShell()),
mxParent(xParent),
- maPropSet(getDataBarPropSet())
+ maPropSet(getDataBarPropSet()),
+ mpFormat(pFormat)
{
}
@@ -812,7 +844,11 @@ ScDataBarFormatObj::~ScDataBarFormatObj()
ScDataBarFormat* ScDataBarFormatObj::getCoreObject()
{
- return NULL;
+ ScConditionalFormat* pFormat = mxParent->getCoreObject();
+ if (isObjectStillAlive(pFormat, mpFormat))
+ return const_cast<ScDataBarFormat*>(mpFormat);
+
+ throw lang::IllegalArgumentException();
}
uno::Reference<beans::XPropertySetInfo> SAL_CALL ScDataBarFormatObj::getPropertySetInfo()
@@ -1028,10 +1064,12 @@ void SAL_CALL ScDataBarFormatObj::removeVetoableChangeListener( const OUString&,
SAL_WARN("sc", "not implemented");
}
-ScIconSetFormatObj::ScIconSetFormatObj(rtl::Reference<ScCondFormatObj> xParent):
+ScIconSetFormatObj::ScIconSetFormatObj(rtl::Reference<ScCondFormatObj> xParent,
+ const ScIconSetFormat* pFormat):
mpDocShell(xParent->getDocShell()),
mxParent(xParent),
- maPropSet(getIconSetPropSet())
+ maPropSet(getIconSetPropSet()),
+ mpFormat(pFormat)
{
}
@@ -1041,7 +1079,11 @@ ScIconSetFormatObj::~ScIconSetFormatObj()
ScIconSetFormat* ScIconSetFormatObj::getCoreObject()
{
- return NULL;
+ ScConditionalFormat* pFormat = mxParent->getCoreObject();
+ if (isObjectStillAlive(pFormat, mpFormat))
+ return const_cast<ScIconSetFormat*>(mpFormat);
+
+ throw lang::IllegalArgumentException();
}
uno::Reference<beans::XPropertySetInfo> SAL_CALL ScIconSetFormatObj::getPropertySetInfo()
More information about the Libreoffice-commits
mailing list