/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace css; namespace sc_apitest { class ScEditFieldObj_Header : public CalcUnoApiTest, public apitest::TextContent, public apitest::XPropertySet, public apitest::XTextContent, public apitest::XTextField { public: ScEditFieldObj_Header(); virtual void setUp() override; virtual void tearDown() override; virtual uno::Reference init() override; virtual uno::Reference getTextContent() override; virtual uno::Reference getTextRange() override; virtual bool isAttachSupported() override { return false; } CPPUNIT_TEST_SUITE(ScEditFieldObj_Header); // TextContent CPPUNIT_TEST(testTextContentProperties); // XPropertySet CPPUNIT_TEST(testGetPropertySetInfo); CPPUNIT_TEST(testGetPropertyValue); CPPUNIT_TEST(testSetPropertyValue); CPPUNIT_TEST(testPropertyChangeListener); CPPUNIT_TEST(testVetoableChangeListener); // XTextContent CPPUNIT_TEST(testGetAnchor); CPPUNIT_TEST(testAttach); // XTextField CPPUNIT_TEST(testGetPresentationEmptyString); CPPUNIT_TEST_SUITE_END(); private: uno::Reference mxComponent; static uno::Reference mxField; static uno::Reference mxRightText; }; uno::Reference ScEditFieldObj_Header::mxField; uno::Reference ScEditFieldObj_Header::mxRightText; ScEditFieldObj_Header::ScEditFieldObj_Header() : CalcUnoApiTest("/sc/qa/extras/testdocuments") , TextContent(text::TextContentAnchorType_AS_CHARACTER, text::TextContentAnchorType_AS_CHARACTER, text::WrapTextMode_NONE, text::WrapTextMode_NONE) { } void ScEditFieldObj_Header::setUp() { CalcUnoApiTest::setUp(); // Load an empty document. mxComponent = loadFromDesktop("private:factory/scalc"); } void ScEditFieldObj_Header::tearDown() { // Clear these before the component is destroyed. This is important! mxField.clear(); mxRightText.clear(); closeDocument(mxComponent); CalcUnoApiTest::tearDown(); } uno::Reference ScEditFieldObj_Header::init() { // Return a field that's already in the header. if (!mxField.is()) { uno::Reference xSM(mxComponent, uno::UNO_QUERY_THROW); // Create a new URL field object, and populate it with name and URL. mxField.set(xSM->createInstance("com.sun.star.text.TextField.Time"), uno::UNO_QUERY_THROW); uno::Reference xSFS(mxComponent, uno::UNO_QUERY_THROW); uno::Reference xStyleFamilies(xSFS->getStyleFamilies(), uno::UNO_SET_THROW); uno::Reference xPageStyles(xStyleFamilies->getByName("PageStyles"), uno::UNO_QUERY_THROW); uno::Reference xPropSet(xPageStyles->getByName("Default"), uno::UNO_QUERY_THROW); uno::Reference xHeaderContent( xPropSet->getPropertyValue("RightPageHeaderContent"), uno::UNO_QUERY_THROW); // Use the left header text. uno::Reference xText = xHeaderContent->getLeftText(); uno::Reference xCursor = xText->createTextCursor(); uno::Reference xRange(xCursor, uno::UNO_QUERY_THROW); uno::Reference xContent(mxField, uno::UNO_QUERY_THROW); xText->insertTextContent(xRange, xContent, false); xPropSet->setPropertyValue("RightPageHeaderContent", uno::makeAny(xHeaderContent)); mxRightText = xHeaderContent->getRightText(); } return mxField; } uno::Reference ScEditFieldObj_Header::getTextContent() { // Return a field object that's not yet inserted. uno::Reference xSM(mxComponent, uno::UNO_QUERY_THROW); uno::Reference xField( xSM->createInstance("com.sun.star.text.TextField.Date"), uno::UNO_QUERY_THROW); return xField; } uno::Reference ScEditFieldObj_Header::getTextRange() { // Use the right header text for this. uno::Reference xRange(mxRightText, uno::UNO_QUERY_THROW); return xRange; } CPPUNIT_TEST_SUITE_REGISTRATION(ScEditFieldObj_Header); } // namespace sc_apitest CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */