[Libreoffice-commits] core.git: Branch 'private/moggi/conditional-format-api' - 4 commits - sc/qa sc/source
Markus Mohrhard
markus.mohrhard at collabora.co.uk
Tue Mar 17 00:30:08 PDT 2015
sc/qa/extras/new_cond_format.cxx | 62 +++++++++++++++++++--
sc/qa/extras/testdocuments/new_cond_format_api.ods |binary
sc/source/ui/unoobj/condformatuno.cxx | 21 ++++++-
3 files changed, 78 insertions(+), 5 deletions(-)
New commits:
commit bcb470224969420a9c7d5a7c4fbe52852209a6da
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 720813d776eb1ed33b76d84c9399639062d005ab
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 24b158fc554cf150d6418d8f8362e51acf468acc
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 aa35e3a50e6412346b0e761df03c89d84767997c
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:
More information about the Libreoffice-commits
mailing list