1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sdext.hxx"
26 
27 #include "optimizationstats.hxx"
28 #include <com/sun/star/awt/Size.hpp>
29 #include <com/sun/star/drawing/XShapes.hpp>
30 #include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
31 #include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
32 
33 
34 using namespace ::com::sun::star;
35 using namespace ::com::sun::star::uno;
36 using namespace ::com::sun::star::frame;
37 using namespace ::com::sun::star::drawing;
38 using namespace ::com::sun::star::beans;
39 
40 using ::rtl::OUString;
41 
42 // -----------------------------------------------------------------------------
43 
44 OptimizationStats::OptimizationStats()
45 {
46 }
47 
48 // -----------------------------------------------------------------------------
49 
50 void OptimizationStats::SetStatusValue( const PPPOptimizerTokenEnum eStat, const uno::Any& rStatValue )
51 {
52 	maStats[ eStat ] = rStatValue;
53 }
54 
55 // -----------------------------------------------------------------------------
56 
57 const uno::Any* OptimizationStats::GetStatusValue( const PPPOptimizerTokenEnum eStat ) const
58 {
59 	std::map< PPPOptimizerTokenEnum, uno::Any, Compare >::const_iterator aIter( maStats.find( eStat ) );
60 	return aIter != maStats.end() ? &((*aIter).second) : NULL;
61 }
62 
63 // -----------------------------------------------------------------------------
64 
65 com::sun::star::beans::PropertyValues OptimizationStats::GetStatusSequence()
66 {
67 	int i = 0;
68 	uno::Sequence< PropertyValue > aStatsSequence( maStats.size() );
69 	std::map< PPPOptimizerTokenEnum, uno::Any, Compare >::iterator aIter( maStats.begin() );
70 	while( aIter != maStats.end() )
71 	{
72 		aStatsSequence[ i ].Name = TKGet( (*aIter).first );
73 		aStatsSequence[ i++ ].Value <<= (*aIter++).second;
74 	}
75 	return aStatsSequence;
76 }
77 
78 // -----------------------------------------------------------------------------
79 
80 void OptimizationStats::InitializeStatusValues( const uno::Sequence< PropertyValue >& rOptimizationStats )
81 {
82 	for( int i = 0; i < rOptimizationStats.getLength(); i++ )
83 		rOptimizationStats[ i ].Value >>= maStats[ TKGet( rOptimizationStats[ i ].Name ) ];
84 }
85 
86 // -----------------------------------------------------------------------------
87 
88 void OptimizationStats::InitializeStatusValuesFromDocument( Reference< XModel > rxModel )
89 {
90 	try
91 	{
92 		Reference< XDrawPagesSupplier > xDrawPagesSupplier( rxModel, UNO_QUERY_THROW );
93 		Reference< XDrawPages > xDrawPages( xDrawPagesSupplier->getDrawPages(), UNO_QUERY_THROW );
94 		SetStatusValue( TK_Pages, Any( awt::Size( 0, xDrawPages->getCount() ) ) );
95 	}
96 	catch ( Exception& )
97 	{
98 	}
99 }
100