[Libreoffice-commits] core.git: Branch 'private/moggi/conditional-format-api-rebased' - 36 commits - bin/gbuild-to-ide offapi/com sc/CppunitTest_sc_new_cond_format_api.mk sc/inc sc/Library_sc.mk sc/Module_sc.mk sc/qa sc/source
Markus Mohrhard
markus.mohrhard at collabora.co.uk
Sun Mar 29 19:46:51 PDT 2015
Rebased ref, commits from common ancestor:
commit 64c251f99ba633c96c1e3410e69dfcdcbf44a267
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Mar 30 02:03:14 2015 +0200
let all cond format objects inherit from XConditionEntry
Change-Id: I60f156b4a64cc70bd1d19f4bb29c79cc8cff3e94
diff --git a/sc/source/ui/inc/condformatuno.hxx b/sc/source/ui/inc/condformatuno.hxx
index 48ab6fe..99e5dec 100644
--- a/sc/source/ui/inc/condformatuno.hxx
+++ b/sc/source/ui/inc/condformatuno.hxx
@@ -238,7 +238,8 @@ private:
const ScCondFormatEntry* mpFormat;
};
-class ScColorScaleFormatObj : public cppu::WeakImplHelper1<com::sun::star::beans::XPropertySet>
+class ScColorScaleFormatObj : public cppu::WeakImplHelper2<com::sun::star::beans::XPropertySet,
+ com::sun::star::sheet::XConditionEntry>
{
public:
@@ -247,6 +248,11 @@ public:
static ScColorScaleFormatObj* getImplementation(uno::Reference<beans::XPropertySet> xPropSet);
+ // XConditionEntry
+ virtual sal_Int32 SAL_CALL getType()
+ throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+
ScColorScaleFormat* getCoreObject();
// XPropertySet
@@ -329,7 +335,8 @@ private:
size_t mnPos;
};
-class ScDataBarFormatObj : public cppu::WeakImplHelper1<com::sun::star::beans::XPropertySet>
+class ScDataBarFormatObj : public cppu::WeakImplHelper2<com::sun::star::beans::XPropertySet,
+ com::sun::star::sheet::XConditionEntry>
{
public:
ScDataBarFormatObj(rtl::Reference<ScCondFormatObj> xParent,
@@ -340,7 +347,11 @@ public:
ScDataBarFormat* getCoreObject();
- // XPropertySet
+ // XConditionEntry
+ virtual sal_Int32 SAL_CALL getType()
+ throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+ // XPropertySet
virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
SAL_CALL getPropertySetInfo()
throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
@@ -414,7 +425,8 @@ private:
size_t mnPos;
};
-class ScIconSetFormatObj : public cppu::WeakImplHelper1<com::sun::star::beans::XPropertySet>
+class ScIconSetFormatObj : public cppu::WeakImplHelper2<com::sun::star::beans::XPropertySet,
+ com::sun::star::sheet::XConditionEntry>
{
public:
ScIconSetFormatObj(rtl::Reference<ScCondFormatObj> xParent,
@@ -425,7 +437,11 @@ public:
ScIconSetFormat* getCoreObject();
- // XPropertySet
+ // XConditionEntry
+ virtual sal_Int32 SAL_CALL getType()
+ throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+ // XPropertySet
virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
SAL_CALL getPropertySetInfo()
throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index b3ff5c9..ba9d496 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -30,6 +30,7 @@
#include <com/sun/star/sheet/DataBarEntryType.hpp>
#include <com/sun/star/sheet/ColorScaleEntryType.hpp>
#include <com/sun/star/sheet/IconSetFormatEntry.hpp>
+#include <com/sun/star/sheet/ConditionEntryType.hpp>
namespace {
@@ -613,7 +614,7 @@ ScCondFormatEntry* ScConditionEntryObj::getCoreObject()
sal_Int32 ScConditionEntryObj::getType()
throw(uno::RuntimeException, std::exception)
{
- return 0;
+ return sheet::ConditionEntryType::CONDITION;
}
uno::Reference<beans::XPropertySetInfo> SAL_CALL ScConditionEntryObj::getPropertySetInfo()
@@ -729,7 +730,6 @@ uno::Any SAL_CALL ScConditionEntryObj::getPropertyValue( const OUString& aProper
{
aAny <<= aConditionEntryMap[i].nApiMode;
break;
-
}
}
}
@@ -794,6 +794,12 @@ ScColorScaleFormat* ScColorScaleFormatObj::getCoreObject()
throw lang::IllegalArgumentException();
}
+sal_Int32 ScColorScaleFormatObj::getType()
+ throw(uno::RuntimeException, std::exception)
+{
+ return sheet::ConditionEntryType::COLORSCALE;
+}
+
uno::Reference<beans::XPropertySetInfo> SAL_CALL ScColorScaleFormatObj::getPropertySetInfo()
throw(uno::RuntimeException, std::exception)
{
@@ -1057,6 +1063,12 @@ ScDataBarFormat* ScDataBarFormatObj::getCoreObject()
throw lang::IllegalArgumentException();
}
+sal_Int32 ScDataBarFormatObj::getType()
+ throw(uno::RuntimeException, std::exception)
+{
+ return sheet::ConditionEntryType::DATABAR;
+}
+
uno::Reference<beans::XPropertySetInfo> SAL_CALL ScDataBarFormatObj::getPropertySetInfo()
throw(uno::RuntimeException, std::exception)
{
@@ -1432,6 +1444,12 @@ ScIconSetFormat* ScIconSetFormatObj::getCoreObject()
throw lang::IllegalArgumentException();
}
+sal_Int32 ScIconSetFormatObj::getType()
+ throw(uno::RuntimeException, std::exception)
+{
+ return sheet::ConditionEntryType::ICONSET;
+}
+
uno::Reference<beans::XPropertySetInfo> SAL_CALL ScIconSetFormatObj::getPropertySetInfo()
throw(uno::RuntimeException, std::exception)
{
commit d21f9f5079c4ca705331dcb298709bc55971bafa
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Mar 30 02:02:39 2015 +0200
fix API values
Change-Id: I3a5890d8d46936b264510150ef0fa8ac79feb74d
diff --git a/offapi/com/sun/star/sheet/ConditionEntryType.idl b/offapi/com/sun/star/sheet/ConditionEntryType.idl
index 151ed52..43148cf 100644
--- a/offapi/com/sun/star/sheet/ConditionEntryType.idl
+++ b/offapi/com/sun/star/sheet/ConditionEntryType.idl
@@ -16,13 +16,13 @@ constants ConditionEntryType
{
const long CONDITION = 0;
- const long COLORSCALE = 0;
+ const long COLORSCALE = 1;
- const long DATABAR = 0;
+ const long DATABAR = 2;
- const long ICONSET = 0;
+ const long ICONSET = 3;
- const long DATE = 0;
+ const long DATE = 4;
};
commit fc3e8355774a5e7ee524626bc50f2a39d4785c00
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Mar 30 01:55:29 2015 +0200
implement last part for color scales
Change-Id: Ieaca45d01b5e631e624016b58ab7964dc880725a
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index e7295f9..b3ff5c9 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -802,8 +802,46 @@ uno::Reference<beans::XPropertySetInfo> SAL_CALL ScColorScaleFormatObj::getPrope
return aRef;
}
+namespace {
+
+void setColorScaleEntry(ScColorScaleEntry* pEntry, uno::Reference<sheet::XColorScaleEntry> xEntry)
+{
+ ScColorScaleEntryType eType;
+ sal_Int32 nApiType = xEntry->getType();
+ bool bFound = false;
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aColorScaleEntryTypeMap); ++i)
+ {
+ if (aColorScaleEntryTypeMap[i].nApiType == nApiType)
+ {
+ eType = aColorScaleEntryTypeMap[i].eType;
+ bFound = true;
+ break;
+ }
+ }
+
+ if (!bFound)
+ throw lang::IllegalArgumentException();
+
+ pEntry->SetType(eType);
+ pEntry->SetColor(xEntry->getColor());
+ switch (eType)
+ {
+ case COLORSCALE_FORMULA:
+ // TODO: Implement
+ break;
+ default:
+ {
+ double nVal = xEntry->getFormula().toDouble();
+ pEntry->SetValue(nVal);
+ }
+ break;
+ }
+}
+
+}
+
void SAL_CALL ScColorScaleFormatObj::setPropertyValue(
- const OUString& aPropertyName, const uno::Any& /*aValue*/ )
+ const OUString& aPropertyName, const uno::Any& aValue )
throw(beans::UnknownPropertyException, beans::PropertyVetoException,
lang::IllegalArgumentException, lang::WrappedTargetException,
uno::RuntimeException, std::exception)
@@ -818,6 +856,19 @@ void SAL_CALL ScColorScaleFormatObj::setPropertyValue(
switch(pEntry->nWID)
{
case ColorScaleEntries:
+ {
+ uno::Sequence<uno::Reference<sheet::XColorScaleEntry> > aEntries;
+ if (aValue >>= aEntries)
+ {
+ size_t n = size_t(aEntries.getLength());
+ for (size_t i = 0; i < n; ++i)
+ {
+ setColorScaleEntry(getCoreObject()->GetEntry(i), aEntries[i]);
+ }
+ }
+ else
+ throw lang::IllegalArgumentException();
+ }
break;
default:
SAL_WARN("sc", "unknown property");
commit 21e9287987e99b1c9a5b9af7ace1c3f8b3b888dd
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Mar 30 01:47:13 2015 +0200
add color scale entries
Change-Id: If88822765b5ec738f3204a4ef7c76c3d529e6be2
diff --git a/sc/inc/colorscale.hxx b/sc/inc/colorscale.hxx
index 1b5c4f6..7409706 100644
--- a/sc/inc/colorscale.hxx
+++ b/sc/inc/colorscale.hxx
@@ -281,6 +281,8 @@ public:
iterator end();
const_iterator end() const;
+ ScColorScaleEntry* GetEntry(size_t nPos);
+
size_t size() const;
};
diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx
index 366f9dc..9f02077 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -671,6 +671,14 @@ ScColorScaleFormat::const_iterator ScColorScaleFormat::end() const
return maColorScales.end();
}
+ScColorScaleEntry* ScColorScaleFormat::GetEntry(size_t nPos)
+{
+ if (maColorScales.size() <= nPos)
+ return NULL;
+
+ return &maColorScales[nPos];
+}
+
size_t ScColorScaleFormat::size() const
{
return maColorScales.size();
diff --git a/sc/source/ui/inc/condformatuno.hxx b/sc/source/ui/inc/condformatuno.hxx
index 1792058..48ab6fe 100644
--- a/sc/source/ui/inc/condformatuno.hxx
+++ b/sc/source/ui/inc/condformatuno.hxx
@@ -297,6 +297,38 @@ private:
const ScColorScaleFormat* mpFormat;
};
+class ScColorScaleEntryObj : public cppu::WeakImplHelper1<com::sun::star::sheet::XColorScaleEntry>
+{
+public:
+ ScColorScaleEntryObj(rtl::Reference<ScColorScaleFormatObj> xParent, size_t nPos);
+
+ virtual ~ScColorScaleEntryObj();
+
+ virtual com::sun::star::util::Color SAL_CALL getColor()
+ throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+ virtual void SAL_CALL setColor(com::sun::star::util::Color aColor)
+ throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+
+ 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<ScColorScaleFormatObj> mxParent;
+ size_t mnPos;
+};
+
class ScDataBarFormatObj : 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 c0c20f0..e7295f9 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/ColorScaleEntryType.hpp>
#include <com/sun/star/sheet/IconSetFormatEntry.hpp>
namespace {
@@ -121,6 +122,22 @@ const SfxItemPropertyMapEntry* getColorScalePropSet()
return aColorScalePropertyMap_Impl;
}
+struct ColorScaleEntryTypeApiMap
+{
+ ScColorScaleEntryType eType;
+ sal_Int32 nApiType;
+};
+
+ColorScaleEntryTypeApiMap aColorScaleEntryTypeMap[] =
+{
+ { COLORSCALE_MIN, sheet::ColorScaleEntryType::COLORSCALE_MIN },
+ { COLORSCALE_MAX, sheet::ColorScaleEntryType::COLORSCALE_MAX },
+ { COLORSCALE_VALUE, sheet::ColorScaleEntryType::COLORSCALE_VALUE },
+ { COLORSCALE_FORMULA, sheet::ColorScaleEntryType::COLORSCALE_FORMULA },
+ { COLORSCALE_PERCENT, sheet::ColorScaleEntryType::COLORSCALE_PERCENT },
+ { COLORSCALE_PERCENTILE, sheet::ColorScaleEntryType::COLORSCALE_PERCENTILE }
+};
+
enum DataBarProperties
{
AxisPosition,
@@ -823,6 +840,14 @@ uno::Any SAL_CALL ScColorScaleFormatObj::getPropertyValue( const OUString& aProp
switch(pEntry->nWID)
{
case ColorScaleEntries:
+ {
+ uno::Sequence<uno::Reference<sheet::XColorScaleEntry> > aEntries(getCoreObject()->size());
+ for (size_t i = 0; i < getCoreObject()->size(); ++i)
+ {
+ aEntries[i] = new ScColorScaleEntryObj(this, i);
+ }
+ aAny <<= aEntries;
+ }
break;
default:
SAL_WARN("sc", "unknown property");
@@ -863,6 +888,102 @@ void SAL_CALL ScColorScaleFormatObj::removeVetoableChangeListener( const OUStrin
SAL_WARN("sc", "not implemented");
}
+ScColorScaleEntryObj::ScColorScaleEntryObj(rtl::Reference<ScColorScaleFormatObj> xParent,
+ size_t nPos):
+ mxParent(xParent),
+ mnPos(nPos)
+{
+}
+
+ScColorScaleEntryObj::~ScColorScaleEntryObj()
+{
+}
+
+ScColorScaleEntry* ScColorScaleEntryObj::getCoreObject()
+{
+ ScColorScaleFormat* pFormat = mxParent->getCoreObject();
+ if (pFormat->size() <= mnPos)
+ throw lang::IllegalArgumentException();
+
+ return pFormat->GetEntry(mnPos);
+}
+
+util::Color ScColorScaleEntryObj::getColor()
+ throw(uno::RuntimeException, std::exception)
+{
+ Color aColor = getCoreObject()->GetColor();
+ return aColor.GetColor();
+}
+
+void ScColorScaleEntryObj::setColor(util::Color aColor)
+ throw(uno::RuntimeException, std::exception)
+{
+ getCoreObject()->SetColor(Color(aColor));
+}
+
+sal_Int32 ScColorScaleEntryObj::getType()
+ throw(uno::RuntimeException, std::exception)
+{
+ ScColorScaleEntry* pEntry = getCoreObject();
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aColorScaleEntryTypeMap); ++i)
+ {
+ if (aColorScaleEntryTypeMap[i].eType == pEntry->GetType())
+ {
+ return aColorScaleEntryTypeMap[i].nApiType;
+ }
+ }
+
+ throw lang::IllegalArgumentException();
+}
+
+void ScColorScaleEntryObj::setType(sal_Int32 nType)
+ throw(uno::RuntimeException, std::exception)
+{
+ ScColorScaleEntry* pEntry = getCoreObject();
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aColorScaleEntryTypeMap); ++i)
+ {
+ if (aColorScaleEntryTypeMap[i].nApiType == nType)
+ {
+ pEntry->SetType(aColorScaleEntryTypeMap[i].eType);
+ return;
+ }
+ }
+ throw lang::IllegalArgumentException();
+}
+
+OUString ScColorScaleEntryObj::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 ScColorScaleEntryObj::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;
+ }
+}
+
+
ScDataBarFormatObj::ScDataBarFormatObj(rtl::Reference<ScCondFormatObj> xParent,
const ScDataBarFormat* pFormat):
mpDocShell(xParent->getDocShell()),
commit 2773e6ffb57d514e667e8e75cf165a6bfef82dec
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 5762370f7a9b6061e30ea458a4b08d24ff745788
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 8b3137c9460aec7873001d5bbdf1b6f29d7646a4
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 3dce04a789f076c73f6fbcfadc86903be114020c
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 7188065..1792058 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 dd45f089b2fc45ece880c4c1ff219a92975a95d5
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 497285f..7188065 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 ad6d79c61702b2301a7deba11ff4be836bae326d
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 b48cd09e419efc012fe4719afafc9a8ddbf875f9
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 e49808edc46c75ae2bd351ca71f09fb43c3b9051
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 76115b29524be1214e29613aa31cc433f5ba7c75
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 af56ed1ca1e4d37bdef0875757bdee050c35cfef
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 e21e3b26646e9642d3e72269c44cbe3b781f9782
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 a7140e7..497285f 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()
commit 97054f533f8c7153545a1c08dae12ca92f069122
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Fri Mar 27 04:13:52 2015 +0100
implement one more method
Change-Id: Ie18be81fa664df88af605674968e302c59f7dc98
diff --git a/sc/source/ui/inc/condformatuno.hxx b/sc/source/ui/inc/condformatuno.hxx
index d5c1865..a7140e7 100644
--- a/sc/source/ui/inc/condformatuno.hxx
+++ b/sc/source/ui/inc/condformatuno.hxx
@@ -93,6 +93,7 @@ public:
virtual ~ScCondFormatObj();
static ScCondFormatObj* getImplementation( uno::Reference<sheet::XConditionalFormat> XCondFormat);
+ ScDocShell* getDocShell();
// XConditionalFormat
virtual void SAL_CALL addEntry(const uno::Reference<sheet::XConditionEntry>& xEntry)
@@ -176,7 +177,7 @@ class ScConditionEntryObj : public cppu::WeakImplHelper2<com::sun::star::beans::
{
public:
- ScConditionEntryObj();
+ ScConditionEntryObj(rtl::Reference<ScCondFormatObj> xParent);
virtual ~ScConditionEntryObj();
static ScConditionEntryObj* getImplementation(uno::Reference<sheet::XConditionEntry> xCondition);
@@ -238,7 +239,7 @@ class ScColorScaleFormatObj : public cppu::WeakImplHelper1<com::sun::star::beans
{
public:
- ScColorScaleFormatObj();
+ ScColorScaleFormatObj(rtl::Reference<ScCondFormatObj> xParent);
virtual ~ScColorScaleFormatObj();
static ScColorScaleFormatObj* getImplementation(uno::Reference<beans::XPropertySet> xPropSet);
@@ -295,7 +296,7 @@ private:
class ScDataBarFormatObj : public cppu::WeakImplHelper1<com::sun::star::beans::XPropertySet>
{
public:
- ScDataBarFormatObj();
+ ScDataBarFormatObj(rtl::Reference<ScCondFormatObj> xParent);
virtual ~ScDataBarFormatObj();
static ScDataBarFormatObj* getImplementation(uno::Reference<beans::XPropertySet> xPropSet);
@@ -352,7 +353,7 @@ private:
class ScIconSetFormatObj : public cppu::WeakImplHelper1<com::sun::star::beans::XPropertySet>
{
public:
- ScIconSetFormatObj();
+ ScIconSetFormatObj(rtl::Reference<ScCondFormatObj> xParent);
virtual ~ScIconSetFormatObj();
static ScIconSetFormatObj* getImplementation(uno::Reference<beans::XPropertySet> xPropSet);
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index fcf32b5..aee40f7 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -295,6 +295,35 @@ ScConditionalFormatList* ScCondFormatsObj::getCoreObject()
return pList;
}
+namespace {
+
+uno::Reference<beans::XPropertySet> createConditionEntry(const ScFormatEntry* pEntry,
+ rtl::Reference<ScCondFormatObj> xParent)
+{
+ switch (pEntry->GetType())
+ {
+ case condformat::CONDITION:
+ return new ScConditionEntryObj(xParent);
+ break;
+ case condformat::COLORSCALE:
+ return new ScColorScaleFormatObj(xParent);
+ break;
+ case condformat::DATABAR:
+ return new ScDataBarFormatObj(xParent);
+ break;
+ case condformat::ICONSET:
+ return new ScIconSetFormatObj(xParent);
+ break;
+ case condformat::DATE:
+ break;
+ default:
+ break;
+ }
+ return uno::Reference<beans::XPropertySet>();
+}
+
+}
+
ScCondFormatObj::ScCondFormatObj(ScDocShell* pDocShell, rtl::Reference<ScCondFormatsObj> xCondFormats,
sal_Int32 nKey):
mxCondFormatList(xCondFormats),
@@ -318,6 +347,11 @@ ScConditionalFormat* ScCondFormatObj::getCoreObject()
return pFormat;
}
+ScDocShell* ScCondFormatObj::getDocShell()
+{
+ return mpDocShell;
+}
+
void ScCondFormatObj::addEntry(const uno::Reference<sheet::XConditionEntry>& /*xEntry*/)
throw(uno::RuntimeException, std::exception)
{
@@ -356,10 +390,18 @@ sal_Int32 ScCondFormatObj::getCount()
return pFormat->size();
}
-uno::Any ScCondFormatObj::getByIndex(sal_Int32 /*nIndex*/)
+uno::Any ScCondFormatObj::getByIndex(sal_Int32 nIndex)
throw(uno::RuntimeException, std::exception)
{
+ SolarMutexGuard aGuard;
+ if (getCoreObject()->size() >= size_t(nIndex))
+ throw lang::IllegalArgumentException();
+
+ const ScFormatEntry* pEntry = getCoreObject()->GetEntry(nIndex);
+ uno::Reference<beans::XPropertySet> xCondEntry =
+ createConditionEntry(pEntry, this);
uno::Any aAny;
+ aAny <<= xCondEntry;
return aAny;
}
@@ -477,7 +519,9 @@ void SAL_CALL ScCondFormatObj::removeVetoableChangeListener( const OUString&,
SAL_WARN("sc", "not implemented");
}
-ScConditionEntryObj::ScConditionEntryObj():
+ScConditionEntryObj::ScConditionEntryObj(rtl::Reference<ScCondFormatObj> xParent):
+ mpDocShell(xParent->getDocShell()),
+ mxParent(xParent),
maPropSet(getConditionEntryrPropSet())
{
}
@@ -653,7 +697,9 @@ void SAL_CALL ScConditionEntryObj::removeVetoableChangeListener( const OUString&
SAL_WARN("sc", "not implemented");
}
-ScColorScaleFormatObj::ScColorScaleFormatObj():
+ScColorScaleFormatObj::ScColorScaleFormatObj(rtl::Reference<ScCondFormatObj> xParent):
+ mpDocShell(xParent->getDocShell()),
+ mxParent(xParent),
maPropSet(getColorScalePropSet())
{
}
@@ -753,7 +799,9 @@ void SAL_CALL ScColorScaleFormatObj::removeVetoableChangeListener( const OUStrin
SAL_WARN("sc", "not implemented");
}
-ScDataBarFormatObj::ScDataBarFormatObj():
+ScDataBarFormatObj::ScDataBarFormatObj(rtl::Reference<ScCondFormatObj> xParent):
+ mpDocShell(xParent->getDocShell()),
+ mxParent(xParent),
maPropSet(getDataBarPropSet())
{
}
@@ -980,7 +1028,9 @@ void SAL_CALL ScDataBarFormatObj::removeVetoableChangeListener( const OUString&,
SAL_WARN("sc", "not implemented");
}
-ScIconSetFormatObj::ScIconSetFormatObj():
+ScIconSetFormatObj::ScIconSetFormatObj(rtl::Reference<ScCondFormatObj> xParent):
+ mpDocShell(xParent->getDocShell()),
+ mxParent(xParent),
maPropSet(getIconSetPropSet())
{
}
commit 35ea7ffe7549eb8a5f2539bc37ac5041a8d80c72
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Fri Mar 27 04:12:53 2015 +0100
fix return type
Change-Id: I581a8a0c7348a9752611b378e883ef20172d16e0
diff --git a/sc/qa/extras/new_cond_format.cxx b/sc/qa/extras/new_cond_format.cxx
index e648edc..0bd96d4 100644
--- a/sc/qa/extras/new_cond_format.cxx
+++ b/sc/qa/extras/new_cond_format.cxx
@@ -163,7 +163,7 @@ void ScConditionalFormatTest::testCondFormatXIndex()
CPPUNIT_ASSERT(xCondFormat.is());
uno::Type aType = xCondFormat->getElementType();
- CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.sheet.XConditionEntry"), aType.getTypeName());
+ CPPUNIT_ASSERT_EQUAL(OUString("com.sun.star.beans.XPropertySet"), aType.getTypeName());
CPPUNIT_ASSERT(xCondFormat->hasElements());
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xCondFormat->getCount());
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index a21fc7e..fcf32b5 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -336,7 +336,7 @@ void ScCondFormatObj::removeByIndex(const sal_Int32 nIndex)
uno::Type ScCondFormatObj::getElementType()
throw(uno::RuntimeException, std::exception)
{
- return cppu::UnoType<sheet::XConditionEntry>::get();
+ return cppu::UnoType<beans::XPropertySet>::get();
}
sal_Bool ScCondFormatObj::hasElements()
commit 4a9ba96520bdd6f8d40a9e92ef11b481f0d408dc
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Fri Mar 27 04:11:53 2015 +0100
implement one more method
Change-Id: I3483b2004c0afb8bea651d9eec35d1cbf9aff2a1
diff --git a/sc/inc/conditio.hxx b/sc/inc/conditio.hxx
index 425e09e..fc039c0 100644
--- a/sc/inc/conditio.hxx
+++ b/sc/inc/conditio.hxx
@@ -392,6 +392,7 @@ public:
ScConditionalFormat* Clone(ScDocument* pNewDoc = NULL) const;
void AddEntry( ScFormatEntry* pNew );
+ void RemoveEntry(size_t nIndex);
void SetRange( const ScRangeList& rRanges );
const ScRangeList& GetRange() const { return maRanges; }
// don't use the same name as for the const version
diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx
index b39d4d0..3036999 100644
--- a/sc/source/core/data/conditio.cxx
+++ b/sc/source/core/data/conditio.cxx
@@ -1853,6 +1853,15 @@ void ScConditionalFormat::AddEntry( ScFormatEntry* pNew )
pNew->SetParent(this);
}
+void ScConditionalFormat::RemoveEntry(size_t n)
+{
+ if (n < maEntries.size())
+ {
+ maEntries.erase(maEntries.begin() + n);
+ DoRepaint(NULL);
+ }
+}
+
bool ScConditionalFormat::IsEmpty() const
{
return maEntries.empty();
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index 9a3876b..a21fc7e 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -323,9 +323,14 @@ void ScCondFormatObj::addEntry(const uno::Reference<sheet::XConditionEntry>& /*x
{
}
-void ScCondFormatObj::removeByIndex(const sal_Int32 /*nIndex*/)
+void ScCondFormatObj::removeByIndex(const sal_Int32 nIndex)
throw(uno::RuntimeException, std::exception)
{
+ SolarMutexGuard aGuard;
+ if (getCoreObject()->size() >= size_t(nIndex))
+ throw lang::IllegalArgumentException();
+
+ getCoreObject()->RemoveEntry(nIndex);
}
uno::Type ScCondFormatObj::getElementType()
commit c40a4290193e6e16f92e3b90b76ef709db41cb9d
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Fri Mar 27 03:24:35 2015 +0100
implement some more properties for databars
Change-Id: Ib6c7f4f316ff49d433c8810ef9a7bbfe64c0576d
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index 9aad855..9a3876b 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -788,6 +788,19 @@ void SAL_CALL ScDataBarFormatObj::setPropertyValue(
{
case AxisPosition:
{
+ sal_Int32 nVal;
+ if (aValue >>= nVal)
+ {
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aDataBarAxisMap); ++i)
+ {
+ if (aDataBarAxisMap[i].nApiPos == nVal)
+ {
+ getCoreObject()->GetDataBarData()->meAxisPosition =
+ aDataBarAxisMap[i].ePos;
+ break;
+ }
+ }
+ }
}
break;
case UseGradient:
@@ -1038,6 +1051,10 @@ void SAL_CALL ScIconSetFormatObj::setPropertyValue(
getCoreObject()->GetIconSetData()->eIconSetType = eType;
}
break;
+ case IconSetEntries:
+ break;
+ default:
+ break;
}
}
commit 2f266f2dd20e5e2a05504ea68d5a8d224429d511
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Thu Mar 26 23:16:27 2015 +0100
fix getPropertyValue/setPropertyValue for ScCondFormatEntry UNO object
Change-Id: Id1a3cc62288c6c618c8b86caaa69a96eb541d06f
diff --git a/sc/inc/conditio.hxx b/sc/inc/conditio.hxx
index 57dd2d9..425e09e 100644
--- a/sc/inc/conditio.hxx
+++ b/sc/inc/conditio.hxx
@@ -209,6 +209,7 @@ public:
bool IsCellValid( ScRefCellValue& rCell, const ScAddress& rPos ) const;
ScConditionMode GetOperation() const { return eOp; }
+ void SetOperation(ScConditionMode eMode);
bool IsIgnoreBlank() const { return ( nOptions & SC_COND_NOBLANKS ) == 0; }
void SetIgnoreBlank(bool bSet);
ScAddress GetSrcPos() const { return aSrcPos; }
diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx
index 3da67a4..b39d4d0 100644
--- a/sc/source/core/data/conditio.cxx
+++ b/sc/source/core/data/conditio.cxx
@@ -322,6 +322,11 @@ ScConditionEntry::~ScConditionEntry()
delete pFormula2;
}
+void ScConditionEntry::SetOperation(ScConditionMode eMode)
+{
+ eOp = eMode;
+}
+
void ScConditionEntry::Compile( const OUString& rExpr1, const OUString& rExpr2,
const OUString& rExprNmsp1, const OUString& rExprNmsp2,
FormulaGrammar::Grammar eGrammar1, FormulaGrammar::Grammar eGrammar2, bool bTextToReal )
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index 81e32f7..9aad855 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -14,6 +14,8 @@
#include "colorscale.hxx"
#include "docsh.hxx"
#include "miscuno.hxx"
+#include "compiler.hxx"
+#include "tokenarray.hxx"
#include "cellsuno.hxx"
#include "convuno.hxx"
@@ -72,11 +74,35 @@ struct ConditionEntryApiMap
sal_Int32 nApiMode;
};
-/*
ConditionEntryApiMap aConditionEntryMap[] =
{
+ {SC_COND_EQUAL, sheet::ConditionFormatOperator::EQUAL},
+ {SC_COND_LESS, sheet::ConditionFormatOperator::LESS},
+ {SC_COND_GREATER, sheet::ConditionFormatOperator::GREATER},
+ {SC_COND_EQLESS, sheet::ConditionFormatOperator::LESS_EQUAL},
+ {SC_COND_EQGREATER, sheet::ConditionFormatOperator::GREATER_EQUAL},
+ {SC_COND_NOTEQUAL, sheet::ConditionFormatOperator::NOT_EQUAL},
+ {SC_COND_BETWEEN, sheet::ConditionFormatOperator::BETWEEN},
+ {SC_COND_NOTBETWEEN, sheet::ConditionFormatOperator::NOT_BETWEEN},
+ {SC_COND_DUPLICATE, sheet::ConditionFormatOperator::DUPLICATE},
+ {SC_COND_NOTDUPLICATE, sheet::ConditionFormatOperator::UNIQUE},
+ {SC_COND_DIRECT, sheet::ConditionFormatOperator::EXPRESSION},
+ {SC_COND_TOP10, sheet::ConditionFormatOperator::TOP_N_ELEMENTS},
+ {SC_COND_BOTTOM10, sheet::ConditionFormatOperator::BOTTOM_N_ELEMENTS},
+ {SC_COND_TOP_PERCENT, sheet::ConditionFormatOperator::TOP_N_PERCENT},
+ {SC_COND_BOTTOM_PERCENT, sheet::ConditionFormatOperator::BOTTOM_N_PERCENT},
+ {SC_COND_ABOVE_AVERAGE, sheet::ConditionFormatOperator::ABOVE_AVERAGE},
+ {SC_COND_BELOW_AVERAGE, sheet::ConditionFormatOperator::BELOW_AVERAGE},
+ {SC_COND_ABOVE_EQUAL_AVERAGE, sheet::ConditionFormatOperator::ABOVE_EQUAL_AVERAGE},
+ {SC_COND_BELOW_EQUAL_AVERAGE, sheet::ConditionFormatOperator::BELOW_EQUAL_AVERAGE},
+ {SC_COND_ERROR, sheet::ConditionFormatOperator::ERROR},
+ {SC_COND_NOERROR, sheet::ConditionFormatOperator::NO_ERROR},
+ {SC_COND_BEGINS_WITH, sheet::ConditionFormatOperator::BEGINS_WITH},
+ {SC_COND_ENDS_WITH, sheet::ConditionFormatOperator::ENDS_WITH},
+ {SC_COND_CONTAINS_TEXT, sheet::ConditionFormatOperator::CONTAINS},
+ {SC_COND_NOT_CONTAINS_TEXT, sheet::ConditionFormatOperator::NOT_CONTAINS},
+ {SC_COND_NONE, sheet::ConditionFormatOperator::EQUAL},
};
-*/
enum ColorScaleProperties
{
@@ -475,7 +501,7 @@ uno::Reference<beans::XPropertySetInfo> SAL_CALL ScConditionEntryObj::getPropert
}
void SAL_CALL ScConditionEntryObj::setPropertyValue(
- const OUString& aPropertyName, const uno::Any& /*aValue*/ )
+ const OUString& aPropertyName, const uno::Any& aValue )
throw(beans::UnknownPropertyException, beans::PropertyVetoException,
lang::IllegalArgumentException, lang::WrappedTargetException,
uno::RuntimeException, std::exception)
@@ -490,12 +516,49 @@ void SAL_CALL ScConditionEntryObj::setPropertyValue(
switch(pEntry->nWID)
{
case StyleName:
+ {
+ OUString aStyleName;
+ if ((aValue >>= aStyleName) && !aStyleName.isEmpty())
+ getCoreObject()->UpdateStyleName(aStyleName);
+ }
break;
case Formula1:
+ {
+ OUString aFormula;
+ if ((aValue >>= aFormula) && !aFormula.isEmpty())
+ {
+ ScCompiler aComp(&mpDocShell->GetDocument(), getCoreObject()->GetSrcPos());
+ boost::scoped_ptr<ScTokenArray> pArr(aComp.CompileString(aFormula));
+ getCoreObject()->SetFormula1(*pArr);
+ }
+ }
break;
case Formula2:
+ {
+ OUString aFormula;
+ if ((aValue >>= aFormula) && !aFormula.isEmpty())
+ {
+ ScCompiler aComp(&mpDocShell->GetDocument(), getCoreObject()->GetSrcPos());
+ boost::scoped_ptr<ScTokenArray> pArr(aComp.CompileString(aFormula));
+ getCoreObject()->SetFormula2(*pArr);
+ }
+ }
break;
case Operator:
+ {
+ sal_Int32 nVal;
+ if (aValue >>= nVal)
+ {
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aConditionEntryMap); ++i)
+ {
+ if (aConditionEntryMap[i].nApiMode == nVal)
+ {
+ getCoreObject()->SetOperation(aConditionEntryMap[i].eMode);
+ break;
+ }
+ }
+ }
+ }
break;
default:
SAL_WARN("sc", "unsupported property");
@@ -517,25 +580,34 @@ uno::Any SAL_CALL ScConditionEntryObj::getPropertyValue( const OUString& aProper
switch(pEntry->nWID)
{
case StyleName:
- aAny <<= pFormat->GetStyle();
+ aAny <<= getCoreObject()->GetStyle();
break;
case Formula1:
{
- ScAddress aCursor = pFormat->GetSrcPos();
- OUString aFormula = pFormat->GetExpression(aCursor, 0);
+ ScAddress aCursor = getCoreObject()->GetSrcPos();
+ OUString aFormula = getCoreObject()->GetExpression(aCursor, 0);
aAny <<= aFormula;
}
break;
case Formula2:
{
- ScAddress aCursor = pFormat->GetSrcPos();
- OUString aFormula = pFormat->GetExpression(aCursor, 1);
+ ScAddress aCursor = getCoreObject()->GetSrcPos();
+ OUString aFormula = getCoreObject()->GetExpression(aCursor, 1);
aAny <<= aFormula;
}
break;
case Operator:
{
+ ScConditionMode eMode = getCoreObject()->GetOperation();
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aConditionEntryMap); ++i)
+ {
+ if (aConditionEntryMap[i].eMode == eMode)
+ {
+ aAny <<= aConditionEntryMap[i].nApiMode;
+ break;
+ }
+ }
}
break;
default:
commit b1df39726f28b356a3f77e17d83809dd13dabcb6
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Thu Mar 26 23:14:29 2015 +0100
more work for fixing lifecycle
Change-Id: Ieba2eef93777f616bda6a46fe206b773c09ab2a0
diff --git a/sc/source/ui/inc/condformatuno.hxx b/sc/source/ui/inc/condformatuno.hxx
index e23ff42..d5c1865 100644
--- a/sc/source/ui/inc/condformatuno.hxx
+++ b/sc/source/ui/inc/condformatuno.hxx
@@ -32,7 +32,7 @@ class ScConditionalFormatList;
class ScConditionalFormat;
class ScIconSetFormat;
class ScDataBarFormat;
-class ScColorScale;
+class ScColorScaleFormat;
class ScCondFormatEntry;
using namespace com::sun::star;
@@ -181,6 +181,8 @@ public:
static ScConditionEntryObj* getImplementation(uno::Reference<sheet::XConditionEntry> xCondition);
+ ScCondFormatEntry* getCoreObject();
+
// XConditionEntry
virtual sal_Int32 SAL_CALL getType()
throw(::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
@@ -227,8 +229,9 @@ public:
::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
private:
+ ScDocShell* mpDocShell;
+ rtl::Reference<ScCondFormatObj> mxParent;
SfxItemPropertySet maPropSet;
- ScCondFormatEntry* pFormat;
};
class ScColorScaleFormatObj : public cppu::WeakImplHelper1<com::sun::star::beans::XPropertySet>
@@ -240,6 +243,8 @@ public:
static ScColorScaleFormatObj* getImplementation(uno::Reference<beans::XPropertySet> xPropSet);
+ ScColorScaleFormat* getCoreObject();
+
// XPropertySet
virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
SAL_CALL getPropertySetInfo()
@@ -282,7 +287,8 @@ public:
::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
private:
- ScColorScale* pColorScale;
+ ScDocShell* mpDocShell;
+ rtl::Reference<ScCondFormatObj> mxParent;
SfxItemPropertySet maPropSet;
};
@@ -294,6 +300,8 @@ public:
static ScDataBarFormatObj* getImplementation(uno::Reference<beans::XPropertySet> xPropSet);
+ ScDataBarFormat* getCoreObject();
+
// XPropertySet
virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
SAL_CALL getPropertySetInfo()
@@ -336,7 +344,8 @@ public:
::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
private:
- ScDataBarFormat* mpDataBar;
+ ScDocShell* mpDocShell;
+ rtl::Reference<ScCondFormatObj> mxParent;
SfxItemPropertySet maPropSet;
};
@@ -348,6 +357,8 @@ public:
static ScIconSetFormatObj* getImplementation(uno::Reference<beans::XPropertySet> xPropSet);
+ ScIconSetFormat* getCoreObject();
+
// XPropertySet
virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
SAL_CALL getPropertySetInfo()
@@ -390,8 +401,8 @@ public:
::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
private:
-
- ScIconSetFormat* mpIconSet;
+ ScDocShell* mpDocShell;
+ rtl::Reference<ScCondFormatObj> mxParent;
SfxItemPropertySet maPropSet;
};
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index 7113129..81e32f7 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -455,6 +455,11 @@ ScConditionEntryObj::~ScConditionEntryObj()
{
}
+ScCondFormatEntry* ScConditionEntryObj::getCoreObject()
+{
+ return NULL;
+}
+
sal_Int32 ScConditionEntryObj::getType()
throw(uno::RuntimeException, std::exception)
{
@@ -580,6 +585,11 @@ ScColorScaleFormatObj::~ScColorScaleFormatObj()
{
}
+ScColorScaleFormat* ScColorScaleFormatObj::getCoreObject()
+{
+ return NULL;
+}
+
uno::Reference<beans::XPropertySetInfo> SAL_CALL ScColorScaleFormatObj::getPropertySetInfo()
throw(uno::RuntimeException, std::exception)
{
@@ -675,6 +685,11 @@ ScDataBarFormatObj::~ScDataBarFormatObj()
{
}
+ScDataBarFormat* ScDataBarFormatObj::getCoreObject()
+{
+ return NULL;
+}
+
uno::Reference<beans::XPropertySetInfo> SAL_CALL ScDataBarFormatObj::getPropertySetInfo()
throw(uno::RuntimeException, std::exception)
{
@@ -708,7 +723,7 @@ void SAL_CALL ScDataBarFormatObj::setPropertyValue(
bool bUseGradient = true;
if (aValue >>= bUseGradient)
{
- mpDataBar->GetDataBarData()->mbGradient = bUseGradient;
+ getCoreObject()->GetDataBarData()->mbGradient = bUseGradient;
}
}
break;
@@ -717,10 +732,10 @@ void SAL_CALL ScDataBarFormatObj::setPropertyValue(
bool bUseNegativeColor = false;
if (aValue >>= bUseNegativeColor)
{
- mpDataBar->GetDataBarData()->mbNeg = bUseNegativeColor;
- if (bUseNegativeColor && !mpDataBar->GetDataBarData()->mpNegativeColor)
+ getCoreObject()->GetDataBarData()->mbNeg = bUseNegativeColor;
+ if (bUseNegativeColor && !getCoreObject()->GetDataBarData()->mpNegativeColor)
{
- mpDataBar->GetDataBarData()->mpNegativeColor.reset(new Color(COL_AUTO));
+ getCoreObject()->GetDataBarData()->mpNegativeColor.reset(new Color(COL_AUTO));
}
}
}
@@ -730,7 +745,7 @@ void SAL_CALL ScDataBarFormatObj::setPropertyValue(
bool bShowValue = true;
if (aValue >>= bShowValue)
{
- mpDataBar->GetDataBarData()->mbOnlyBar = !bShowValue;
+ getCoreObject()->GetDataBarData()->mbOnlyBar = !bShowValue;
}
}
break;
@@ -739,7 +754,7 @@ void SAL_CALL ScDataBarFormatObj::setPropertyValue(
sal_Int32 nColor = COL_AUTO;
if (aValue >>= nColor)
{
- mpDataBar->GetDataBarData()->maPositiveColor.SetColor(nColor);
+ getCoreObject()->GetDataBarData()->maPositiveColor.SetColor(nColor);
}
}
break;
@@ -748,16 +763,16 @@ void SAL_CALL ScDataBarFormatObj::setPropertyValue(
sal_Int32 nAxisColor = COL_AUTO;
if (aValue >>= nAxisColor)
{
- mpDataBar->GetDataBarData()->maAxisColor.SetColor(nAxisColor);
+ getCoreObject()->GetDataBarData()->maAxisColor.SetColor(nAxisColor);
}
}
break;
case NegativeColor:
{
sal_Int32 nNegativeColor = COL_AUTO;
- if ((aValue >>= nNegativeColor) && mpDataBar->GetDataBarData()->mbNeg)
+ if ((aValue >>= nNegativeColor) && getCoreObject()->GetDataBarData()->mbNeg)
{
- mpDataBar->GetDataBarData()->mpNegativeColor->SetColor(nNegativeColor);
+ getCoreObject()->GetDataBarData()->mpNegativeColor->SetColor(nNegativeColor);
}
else
throw lang::IllegalArgumentException();
@@ -786,7 +801,7 @@ uno::Any SAL_CALL ScDataBarFormatObj::getPropertyValue( const OUString& aPropert
{
case AxisPosition:
{
- databar::ScAxisPosition ePos = mpDataBar->GetDataBarData()->meAxisPosition;
+ databar::ScAxisPosition ePos = getCoreObject()->GetDataBarData()->meAxisPosition;
sal_Int32 nApiPos = sheet::DataBarAxis::AXIS_NONE;
for (size_t i = 0; i < SAL_N_ELEMENTS(aDataBarAxisMap); ++i)
{
@@ -801,36 +816,36 @@ uno::Any SAL_CALL ScDataBarFormatObj::getPropertyValue( const OUString& aPropert
break;
case UseGradient:
{
- aAny <<= mpDataBar->GetDataBarData()->mbGradient;
+ aAny <<= getCoreObject()->GetDataBarData()->mbGradient;
}
break;
case UseNegativeColor:
{
- aAny <<= mpDataBar->GetDataBarData()->mbNeg;
+ aAny <<= getCoreObject()->GetDataBarData()->mbNeg;
}
break;
case DataBar_ShowValue:
{
- aAny <<= !mpDataBar->GetDataBarData()->mbOnlyBar;
+ aAny <<= !getCoreObject()->GetDataBarData()->mbOnlyBar;
}
break;
case DataBar_Color:
{
- sal_Int32 nColor = mpDataBar->GetDataBarData()->maPositiveColor.GetColor();
+ sal_Int32 nColor = getCoreObject()->GetDataBarData()->maPositiveColor.GetColor();
aAny <<= nColor;
}
break;
case AxisColor:
{
- sal_Int32 nAxisColor = mpDataBar->GetDataBarData()->maAxisColor.GetColor();
+ sal_Int32 nAxisColor = getCoreObject()->GetDataBarData()->maAxisColor.GetColor();
aAny <<= nAxisColor;
}
break;
case NegativeColor:
{
- if (mpDataBar->GetDataBarData()->mbNeg && mpDataBar->GetDataBarData()->mpNegativeColor)
+ if (getCoreObject()->GetDataBarData()->mbNeg && getCoreObject()->GetDataBarData()->mpNegativeColor)
{
- sal_Int32 nNegativeColor = mpDataBar->GetDataBarData() ->mpNegativeColor->GetColor();
+ sal_Int32 nNegativeColor = getCoreObject()->GetDataBarData()->mpNegativeColor->GetColor();
aAny <<= nNegativeColor;
}
}
@@ -884,6 +899,11 @@ ScIconSetFormatObj::~ScIconSetFormatObj()
{
}
+ScIconSetFormat* ScIconSetFormatObj::getCoreObject()
+{
+ return NULL;
+}
+
uno::Reference<beans::XPropertySetInfo> SAL_CALL ScIconSetFormatObj::getPropertySetInfo()
throw(uno::RuntimeException, std::exception)
{
@@ -912,14 +932,14 @@ void SAL_CALL ScIconSetFormatObj::setPropertyValue(
{
bool bShowValue = true;
aValue >>= bShowValue;
- mpIconSet->GetIconSetData()->mbShowValue = bShowValue;
+ getCoreObject()->GetIconSetData()->mbShowValue = bShowValue;
}
break;
case Reverse:
{
bool bReverse = false;
aValue >>= bReverse;
- mpIconSet->GetIconSetData()->mbReverse = bReverse;
+ getCoreObject()->GetIconSetData()->mbReverse = bReverse;
}
break;
case Icons:
@@ -943,7 +963,7 @@ void SAL_CALL ScIconSetFormatObj::setPropertyValue(
throw lang::IllegalArgumentException();
}
- mpIconSet->GetIconSetData()->eIconSetType = eType;
+ getCoreObject()->GetIconSetData()->eIconSetType = eType;
}
break;
}
@@ -965,14 +985,14 @@ uno::Any SAL_CALL ScIconSetFormatObj::getPropertyValue( const OUString& aPropert
switch(pEntry->nWID)
{
case ShowValue:
- aAny <<= mpIconSet->GetIconSetData()->mbShowValue;
+ aAny <<= getCoreObject()->GetIconSetData()->mbShowValue;
break;
case Reverse:
- aAny <<= mpIconSet->GetIconSetData()->mbReverse;
+ aAny <<= getCoreObject()->GetIconSetData()->mbReverse;
break;
case Icons:
{
- ScIconSetType eType = mpIconSet->GetIconSetData()->eIconSetType;
+ ScIconSetType eType = getCoreObject()->GetIconSetData()->eIconSetType;
for (size_t i = 0; i < SAL_N_ELEMENTS(aIconSetApiMap); ++i)
{
if (aIconSetApiMap[i].eType == eType)
@@ -985,8 +1005,8 @@ uno::Any SAL_CALL ScIconSetFormatObj::getPropertyValue( const OUString& aPropert
break;
case IconSetEntries:
{
- uno::Sequence< sheet::XIconSetEntry > aEntries(mpIconSet->size());
- for (auto it = mpIconSet->begin(), itEnd = mpIconSet->end(); it != itEnd; ++it)
+ uno::Sequence< sheet::XIconSetEntry > aEntries(getCoreObject()->size());
+ for (auto it = getCoreObject()->begin(), itEnd = getCoreObject()->end(); it != itEnd; ++it)
{
//aEntries.operator[] = ;
}
commit a017e073f033f669de79bb7fc7dc1268ff236dd8
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Thu Mar 26 23:12:10 2015 +0100
add missing enum values
Change-Id: I3234fb21e3f62068e39b6667e9c77e857536ade4
diff --git a/offapi/com/sun/star/sheet/ConditionFormatOperator.idl b/offapi/com/sun/star/sheet/ConditionFormatOperator.idl
index 187fde36..68ac0e2 100644
--- a/offapi/com/sun/star/sheet/ConditionFormatOperator.idl
+++ b/offapi/com/sun/star/sheet/ConditionFormatOperator.idl
@@ -54,11 +54,15 @@ constants ConditionFormatOperator
const long NO_ERROR = 19;
- const long CONTAINS = 20;
+ const long BEGINS_WITH = 20;
- const long NOT_CONTAINS = 21;
+ const long ENDS_WITH = 21;
- const long EXPRESSION = 22;
+ const long CONTAINS = 22;
+
+ const long NOT_CONTAINS = 23;
+
+ const long EXPRESSION = 24;
};
commit 31cf3baa7985cc98339a83ecd22aa7fe5fbc7916
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Tue Mar 17 08:34:05 2015 +0100
let all new conditional formatting objects use WeakImplHelper
Change-Id: I3b7bfb0104fb4b41c2c84d00723934faa8de5be9
diff --git a/sc/source/ui/inc/condformatuno.hxx b/sc/source/ui/inc/condformatuno.hxx
index 12b7f2f..e23ff42 100644
--- a/sc/source/ui/inc/condformatuno.hxx
+++ b/sc/source/ui/inc/condformatuno.hxx
@@ -171,9 +171,8 @@ private:
sal_Int32 mnKey;
};
-class ScConditionEntryObj : public com::sun::star::beans::XPropertySet,
- public com::sun::star::sheet::XConditionEntry,
- public cppu::OWeakObject
+class ScConditionEntryObj : public cppu::WeakImplHelper2<com::sun::star::beans::XPropertySet,
+ com::sun::star::sheet::XConditionEntry>
{
public:
@@ -232,8 +231,7 @@ private:
ScCondFormatEntry* pFormat;
};
-class ScColorScaleFormatObj : public com::sun::star::beans::XPropertySet,
- public cppu::OWeakObject
+class ScColorScaleFormatObj : public cppu::WeakImplHelper1<com::sun::star::beans::XPropertySet>
{
public:
@@ -288,8 +286,7 @@ private:
SfxItemPropertySet maPropSet;
};
-class ScDataBarFormatObj : public com::sun::star::beans::XPropertySet,
- public cppu::OWeakObject
+class ScDataBarFormatObj : public cppu::WeakImplHelper1<com::sun::star::beans::XPropertySet>
{
public:
ScDataBarFormatObj();
@@ -343,8 +340,7 @@ private:
SfxItemPropertySet maPropSet;
};
-class ScIconSetFormatObj : public com::sun::star::beans::XPropertySet,
- public cppu::OWeakObject
+class ScIconSetFormatObj : public cppu::WeakImplHelper1<com::sun::star::beans::XPropertySet>
{
public:
ScIconSetFormatObj();
commit f2462b220562dc961f0858073389ed9ef3bbf571
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Tue Mar 17 08:28:20 2015 +0100
add XIndex interface tests for ScCondFormatObj
Change-Id: I55604485183057f476c636abc4d43bc9fc58711a
diff --git a/sc/qa/extras/new_cond_format.cxx b/sc/qa/extras/new_cond_format.cxx
index 88bccdd..e648edc 100644
--- a/sc/qa/extras/new_cond_format.cxx
+++ b/sc/qa/extras/new_cond_format.cxx
@@ -20,7 +20,7 @@ using namespace css;
namespace sc_apitest {
-#define NUMBER_OF_TESTS 4
+#define NUMBER_OF_TESTS 5
class ScConditionalFormatTest : public CalcUnoApiTest
{
@@ -35,12 +35,14 @@ public:
void testCondFormatListProperties();
void testCondFormatListFormats();
void testCondFormatProperties();
+ void testCondFormatXIndex();
CPPUNIT_TEST_SUITE(ScConditionalFormatTest);
CPPUNIT_TEST(testRequestCondFormatListFromSheet);
CPPUNIT_TEST(testCondFormatListProperties);
CPPUNIT_TEST(testCondFormatListFormats);
CPPUNIT_TEST(testCondFormatProperties);
+ CPPUNIT_TEST(testCondFormatXIndex);
CPPUNIT_TEST_SUITE_END();
private:
@@ -148,6 +150,30 @@ void ScConditionalFormatTest::testCondFormatProperties()
CPPUNIT_ASSERT_EQUAL(sal_Int32(16), aRange.EndRow);
}
+void ScConditionalFormatTest::testCondFormatXIndex()
+{
+ uno::Reference<sheet::XConditionalFormats> xCondFormatList =
+ getConditionalFormatList(init(1));
+
+ 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.sheet.XConditionEntry"), aType.getTypeName());
+
+ CPPUNIT_ASSERT(xCondFormat->hasElements());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xCondFormat->getCount());
+ /*
+ * missing implementation
+ uno::Any aAny = xCondFormat->getByIndex(0);
+ CPPUNIT_ASSERT(aAny.hasValue());
+ */
+}
+
void ScConditionalFormatTest::setUp()
{
nTest++;
commit 0b1c4b8a0a5fb0b61cf044a2d54ba797fec69d9b
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Tue Mar 17 08:17:53 2015 +0100
add test for XPropertySet for ScCondFormatObj
Change-Id: I1786a8b1bf871ccefd73efe3e0515bc3a7dda709
diff --git a/sc/qa/extras/new_cond_format.cxx b/sc/qa/extras/new_cond_format.cxx
index ea17e10..88bccdd 100644
--- a/sc/qa/extras/new_cond_format.cxx
+++ b/sc/qa/extras/new_cond_format.cxx
@@ -20,7 +20,7 @@ using namespace css;
namespace sc_apitest {
-#define NUMBER_OF_TESTS 2
+#define NUMBER_OF_TESTS 4
class ScConditionalFormatTest : public CalcUnoApiTest
{
@@ -34,11 +34,13 @@ public:
void testRequestCondFormatListFromSheet();
void testCondFormatListProperties();
void testCondFormatListFormats();
+ void testCondFormatProperties();
CPPUNIT_TEST_SUITE(ScConditionalFormatTest);
CPPUNIT_TEST(testRequestCondFormatListFromSheet);
CPPUNIT_TEST(testCondFormatListProperties);
CPPUNIT_TEST(testCondFormatListFormats);
+ CPPUNIT_TEST(testCondFormatProperties);
CPPUNIT_TEST_SUITE_END();
private:
@@ -120,6 +122,32 @@ void ScConditionalFormatTest::testCondFormatListFormats()
}
}
+void ScConditionalFormatTest::testCondFormatProperties()
+{
+ uno::Reference<sheet::XConditionalFormats> xCondFormatList =
+ getConditionalFormatList(init(1));
+
+ 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::Reference<beans::XPropertySet> xPropSet(xCondFormat, uno::UNO_QUERY_THROW);
+ uno::Any aAny = xPropSet->getPropertyValue("Range");
+ uno::Reference<sheet::XSheetCellRanges> xCellRanges;
+ CPPUNIT_ASSERT(aAny >>= xCellRanges);
+ CPPUNIT_ASSERT(xCellRanges.is());
+ uno::Sequence<table::CellRangeAddress> aRanges = xCellRanges->getRangeAddresses();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), aRanges.getLength());
+ table::CellRangeAddress aRange = aRanges[0];
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(1), aRange.Sheet);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), aRange.StartColumn);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(6), aRange.StartRow);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(7), aRange.EndColumn);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(16), aRange.EndRow);
+}
+
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 8208fea..3660f45 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 c75c0cd7eea3b6c626ab3c981b717a92cbf1d8f8
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Tue Mar 17 07:56:58 2015 +0100
prepare test code for next tests
Change-Id: I38cfba16e3187a9d80b51258c85f06a829a8a76c
diff --git a/sc/qa/extras/new_cond_format.cxx b/sc/qa/extras/new_cond_format.cxx
index cd4826c..ea17e10 100644
--- a/sc/qa/extras/new_cond_format.cxx
+++ b/sc/qa/extras/new_cond_format.cxx
@@ -30,7 +30,7 @@ public:
virtual void setUp() SAL_OVERRIDE;
virtual void tearDown() SAL_OVERRIDE;
- uno::Reference< uno::XInterface > init();
+ uno::Reference< uno::XInterface > init(sal_Int32 nIndex = 0);
void testRequestCondFormatListFromSheet();
void testCondFormatListProperties();
void testCondFormatListFormats();
@@ -54,7 +54,7 @@ ScConditionalFormatTest::ScConditionalFormatTest()
{
}
-uno::Reference< uno::XInterface > ScConditionalFormatTest::init()
+uno::Reference< uno::XInterface > ScConditionalFormatTest::init(sal_Int32 nIndex)
{
if(!mxComponent.is())
{
@@ -68,7 +68,7 @@ uno::Reference< uno::XInterface > ScConditionalFormatTest::init()
// get the first sheet
uno::Reference< sheet::XSpreadsheetDocument > xDoc(mxComponent, uno::UNO_QUERY_THROW);
uno::Reference< container::XIndexAccess > xIndex (xDoc->getSheets(), uno::UNO_QUERY_THROW);
- uno::Reference< sheet::XSpreadsheet > xSheet( xIndex->getByIndex(0), uno::UNO_QUERY_THROW);
+ uno::Reference< sheet::XSpreadsheet > xSheet( xIndex->getByIndex(nIndex), uno::UNO_QUERY_THROW);
return xSheet;
}
commit f104581dd1c3daf8e0ccd5c027259f12792cd26e
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Tue Mar 17 07:56:20 2015 +0100
fix a few places around range for conditional format API
Change-Id: I544314004e32465248a1ec228dddcf84052d7d2d
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index 8ceee90..7113129 100644
--- a/sc/source/ui/unoobj/condformatuno.cxx
+++ b/sc/source/ui/unoobj/condformatuno.cxx
@@ -16,6 +16,7 @@
#include "miscuno.hxx"
#include "cellsuno.hxx"
+#include "convuno.hxx"
#include <vcl/svapp.hxx>
#include <rtl/ustring.hxx>
@@ -341,7 +342,7 @@ uno::Reference<beans::XPropertySetInfo> SAL_CALL ScCondFormatObj::getPropertySet
}
void SAL_CALL ScCondFormatObj::setPropertyValue(
- const OUString& aPropertyName, const uno::Any& /*aValue*/ )
+ const OUString& aPropertyName, const uno::Any& aValue )
throw(beans::UnknownPropertyException, beans::PropertyVetoException,
lang::IllegalArgumentException, lang::WrappedTargetException,
uno::RuntimeException, std::exception)
@@ -359,6 +360,23 @@ void SAL_CALL ScCondFormatObj::setPropertyValue(
throw lang::IllegalArgumentException();
break;
case CondFormat_Range:
+ {
+ uno::Reference<sheet::XSheetCellRanges> xRange;
+ if (aValue >>= xRange)
+ {
+ ScConditionalFormat* pFormat = getCoreObject();
+ uno::Sequence<table::CellRangeAddress> aRanges =
+ xRange->getRangeAddresses();
+ ScRangeList aTargetRange;
+ for (size_t i = 0, n = aRanges.getLength(); i < n; ++i)
+ {
+ ScRange aRange;
+ ScUnoConversion::FillScRange(aRange, aRanges[i]);
+ aTargetRange.Join(aRange);
+ }
+ pFormat->SetRange(aTargetRange);
+ }
+ }
break;
default:
SAL_WARN("sc", "unknown property");
@@ -387,6 +405,7 @@ uno::Any SAL_CALL ScCondFormatObj::getPropertyValue( const OUString& aPropertyNa
const ScRangeList& rRange = getCoreObject()->GetRange();
uno::Reference<sheet::XSheetCellRanges> xRange;
xRange.set(new ScCellRangesObj(mpDocShell, rRange));
+ aAny <<= xRange;
}
break;
default:
commit 8a5482912b5091ede68b823e4e29cfb2f74c6315
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Mar 16 23:14:08 2015 +0100
add test for one of the ScCondFormatsObj methods
Change-Id: I05fc54a2153fd90d03d2575bdd9bde30a54d71c1
diff --git a/sc/qa/extras/new_cond_format.cxx b/sc/qa/extras/new_cond_format.cxx
index 3200998..cd4826c 100644
--- a/sc/qa/extras/new_cond_format.cxx
+++ b/sc/qa/extras/new_cond_format.cxx
@@ -33,10 +33,12 @@ public:
uno::Reference< uno::XInterface > init();
void testRequestCondFormatListFromSheet();
void testCondFormatListProperties();
+ void testCondFormatListFormats();
CPPUNIT_TEST_SUITE(ScConditionalFormatTest);
CPPUNIT_TEST(testRequestCondFormatListFromSheet);
CPPUNIT_TEST(testCondFormatListProperties);
+ CPPUNIT_TEST(testCondFormatListFormats);
CPPUNIT_TEST_SUITE_END();
private:
@@ -104,6 +106,20 @@ void ScConditionalFormatTest::testCondFormatListProperties()
CPPUNIT_ASSERT_EQUAL(sal_Int32(4), xCondFormat->getLength());
}
+void ScConditionalFormatTest::testCondFormatListFormats()
+{
+ uno::Reference<sheet::XConditionalFormats> xCondFormatList =
+ getConditionalFormatList(init());
+
+ uno::Sequence<uno::Reference<sheet::XConditionalFormat> > xCondFormats =
+ xCondFormatList->getConditionalFormats();
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), xCondFormats.getLength());
+ for (sal_Int32 i = 0, n = xCondFormats.getLength(); i < n; ++i)
+ {
+ CPPUNIT_ASSERT(xCondFormats[i].is());
+ }
+}
+
void ScConditionalFormatTest::setUp()
{
nTest++;
commit 0b8777dc19bb86fb196f45183cdc9fa8f764add3
Author: Markus Mohrhard <markus.mohrhard at collabora.co.uk>
Date: Mon Mar 16 22:50:18 2015 +0100
integrate ScConditionalFormat UNO object correctly
Change-Id: I8da8d954dc7bcdf0a8c2f78eeb6b2403eb75d9e3
diff --git a/sc/source/ui/inc/condformatuno.hxx b/sc/source/ui/inc/condformatuno.hxx
index eacdd21..12b7f2f 100644
--- a/sc/source/ui/inc/condformatuno.hxx
+++ b/sc/source/ui/inc/condformatuno.hxx
@@ -21,8 +21,10 @@
#include <com/sun/star/sheet/XIconSetEntry.hpp>
#include <cppuhelper/implbase1.hxx>
+#include <cppuhelper/implbase2.hxx>
#include <svl/itemprop.hxx>
#include <svl/lstner.hxx>
+#include <rtl/ref.hxx>
class ScDocument;
class ScDocShell;
@@ -75,18 +77,18 @@ public:
throw(::com::sun::star::uno::RuntimeException,
std::exception) SAL_OVERRIDE;
-private:
ScConditionalFormatList* getCoreObject();
+
+private:
SCTAB mnTab;
ScDocShell* mpDocShell;
};
-class ScCondFormatObj : public com::sun::star::sheet::XConditionalFormat,
- public com::sun::star::beans::XPropertySet,
- public cppu::OWeakObject
+class ScCondFormatObj : public cppu::WeakImplHelper2<com::sun::star::sheet::XConditionalFormat,
+ com::sun::star::beans::XPropertySet>
{
public:
- ScCondFormatObj(ScDocument* pDoc, ScConditionalFormat* pList);
+ ScCondFormatObj(ScDocShell* pDocShell, rtl::Reference<ScCondFormatsObj> xCondFormats, sal_Int32 nKey);
virtual ~ScCondFormatObj();
@@ -101,6 +103,24 @@ public:
throw(::com::sun::star::uno::RuntimeException,
std::exception) SAL_OVERRIDE;
+ // XIndexAccess
+
+ virtual uno::Type SAL_CALL getElementType()
+ throw(::com::sun::star::uno::RuntimeException,
+ std::exception) SAL_OVERRIDE;
+
+ virtual sal_Bool SAL_CALL hasElements()
+ throw(::com::sun::star::uno::RuntimeException,
+ std::exception) SAL_OVERRIDE;
+
+ virtual sal_Int32 SAL_CALL getCount()
+ throw(::com::sun::star::uno::RuntimeException,
+ std::exception) SAL_OVERRIDE;
+
+ virtual uno::Any SAL_CALL getByIndex(sal_Int32 nIndex)
+ throw(::com::sun::star::uno::RuntimeException,
+ std::exception) SAL_OVERRIDE;
+
// XPropertySet
virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo >
SAL_CALL getPropertySetInfo()
@@ -142,9 +162,13 @@ public:
::com::sun::star::lang::WrappedTargetException,
::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
+ ScConditionalFormat* getCoreObject();
+
private:
- ScConditionalFormat* mpFormat;
+ rtl::Reference<ScCondFormatsObj> mxCondFormatList;
+ ScDocShell* mpDocShell;
SfxItemPropertySet maPropSet;
+ sal_Int32 mnKey;
};
class ScConditionEntryObj : public com::sun::star::beans::XPropertySet,
diff --git a/sc/source/ui/unoobj/condformatuno.cxx b/sc/source/ui/unoobj/condformatuno.cxx
index faa108c..8ceee90 100644
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list