/* -*- 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 #include using namespace css; namespace sc_apitest { class ScEditFieldObj_Header : public UnoApiTest, public apitest::TextContent, public apitest::XComponent, 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; } virtual void triggerDesktopTerminate() override{}; CPPUNIT_TEST_SUITE(ScEditFieldObj_Header); // TextContent CPPUNIT_TEST(testTextContentProperties); // XComponent CPPUNIT_TEST(testAddEventListener); CPPUNIT_TEST(testRemoveEventListener); CPPUNIT_TEST(testDispose); // 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: static uno::Reference mxField; static uno::Reference mxRightText; }; uno::Reference ScEditFieldObj_Header::mxField; uno::Reference ScEditFieldObj_Header::mxRightText; ScEditFieldObj_Header::ScEditFieldObj_Header() : UnoApiTest(u"/sc/qa/extras/testdocuments"_ustr) , TextContent(text::TextContentAnchorType_AS_CHARACTER, text::TextContentAnchorType_AS_CHARACTER, text::WrapTextMode_NONE, text::WrapTextMode_NONE) { } void ScEditFieldObj_Header::setUp() { UnoApiTest::setUp(); // Load an empty document. loadFromURL(u"private:factory/scalc"_ustr); } void ScEditFieldObj_Header::tearDown() { // Clear these before the component is destroyed. This is important! mxField.clear(); mxRightText.clear(); UnoApiTest::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(u"com.sun.star.text.TextField.Time"_ustr), 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(u"PageStyles"_ustr), uno::UNO_QUERY_THROW); uno::Reference xPropSet(xPageStyles->getByName(u"Default"_ustr), uno::UNO_QUERY_THROW); uno::Reference xHeaderContent( xPropSet->getPropertyValue(u"RightPageHeaderContent"_ustr), 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(u"RightPageHeaderContent"_ustr, uno::Any(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(u"com.sun.star.text.TextField.Date"_ustr), 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: */