1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include <sal/config.h>
22 #include <TitleDialogData.hxx>
23 #include <TitleHelper.hxx>
24 #include <Diagram.hxx>
25 #include <AxisHelper.hxx>
26 #include <ChartModel.hxx>
30 using namespace ::com::sun::star
;
32 TitleDialogData::TitleDialogData( std::optional
<ReferenceSizeProvider
> pRefSizeProvider
)
33 : aPossibilityList
{ true, true, true, true, true, true, true }
34 , aExistenceList
{ false, false, false, false, false, false, false }
36 , apReferenceSizeProvider( std::move(pRefSizeProvider
) )
40 void TitleDialogData::readFromModel( const rtl::Reference
<::chart::ChartModel
>& xChartModel
)
42 rtl::Reference
< Diagram
> xDiagram
= xChartModel
->getFirstChartDiagram();
45 uno::Sequence
< sal_Bool
> aAxisPossibilityList
;
46 AxisHelper::getAxisOrGridPossibilities( aAxisPossibilityList
, xDiagram
);
47 sal_Bool
* pPossibilityList
= aPossibilityList
.getArray();
48 pPossibilityList
[2]=aAxisPossibilityList
[0];//x axis title
49 pPossibilityList
[3]=aAxisPossibilityList
[1];//y axis title
50 pPossibilityList
[4]=aAxisPossibilityList
[2];//z axis title
51 pPossibilityList
[5]=aAxisPossibilityList
[3];//secondary x axis title
52 pPossibilityList
[6]=aAxisPossibilityList
[4];//secondary y axis title
54 sal_Bool
* pExistenceList
= aExistenceList
.getArray();
55 auto pTextList
= aTextList
.getArray();
56 //find out which title exists and get their text
58 for( auto nTitleIndex
= +TitleHelper::TITLE_BEGIN
;
59 nTitleIndex
< +TitleHelper::NORMAL_TITLE_END
;
62 rtl::Reference
< Title
> xTitle
= TitleHelper::getTitle(
63 static_cast< TitleHelper::eTitleType
>( nTitleIndex
), xChartModel
);
64 pExistenceList
[nTitleIndex
] = xTitle
.is();
65 pTextList
[nTitleIndex
]=TitleHelper::getCompleteString( xTitle
);
69 bool TitleDialogData::writeDifferenceToModel(
70 const rtl::Reference
<::chart::ChartModel
>& xChartModel
71 , const uno::Reference
< uno::XComponentContext
>& xContext
72 , const TitleDialogData
* pOldState
)
74 bool bChanged
= false;
75 for( auto nN
= +TitleHelper::TITLE_BEGIN
;
76 nN
< +TitleHelper::NORMAL_TITLE_END
;
79 if( !pOldState
|| ( pOldState
->aExistenceList
[nN
] != aExistenceList
[nN
] ) )
81 if(aExistenceList
[nN
])
83 TitleHelper::createTitle(
84 static_cast< TitleHelper::eTitleType
>( nN
), aTextList
[nN
], xChartModel
, xContext
,
85 apReferenceSizeProvider
.has_value() ? &*apReferenceSizeProvider
: nullptr );
90 TitleHelper::removeTitle( static_cast< TitleHelper::eTitleType
>( nN
), xChartModel
);
94 else if( !pOldState
|| ( pOldState
->aTextList
[nN
] != aTextList
[nN
] ) )
97 rtl::Reference
< Title
> xTitle(
98 TitleHelper::getTitle( static_cast< TitleHelper::eTitleType
>( nN
), xChartModel
) );
101 TitleHelper::setCompleteString( aTextList
[nN
], xTitle
, xContext
, nullptr, true );
111 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */