1*f6e50924SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*f6e50924SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*f6e50924SAndrew Rist * or more contributor license agreements. See the NOTICE file
5*f6e50924SAndrew Rist * distributed with this work for additional information
6*f6e50924SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*f6e50924SAndrew Rist * to you under the Apache License, Version 2.0 (the
8*f6e50924SAndrew Rist * "License"); you may not use this file except in compliance
9*f6e50924SAndrew Rist * with the License. You may obtain a copy of the License at
10cdf0e10cSrcweir *
11*f6e50924SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir *
13*f6e50924SAndrew Rist * Unless required by applicable law or agreed to in writing,
14*f6e50924SAndrew Rist * software distributed under the License is distributed on an
15*f6e50924SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*f6e50924SAndrew Rist * KIND, either express or implied. See the License for the
17*f6e50924SAndrew Rist * specific language governing permissions and limitations
18*f6e50924SAndrew Rist * under the License.
19cdf0e10cSrcweir *
20*f6e50924SAndrew Rist *************************************************************/
21*f6e50924SAndrew Rist
22*f6e50924SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_svx.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir
28cdf0e10cSrcweir #include "svdoutlinercache.hxx"
29cdf0e10cSrcweir #include <svx/svdoutl.hxx>
30cdf0e10cSrcweir #include <svx/svdmodel.hxx>
31cdf0e10cSrcweir
32cdf0e10cSrcweir extern SdrOutliner* SdrMakeOutliner( sal_uInt16 nOutlinerMode, SdrModel* pModel );
33cdf0e10cSrcweir
SdrOutlinerCache(SdrModel * pModel)34cdf0e10cSrcweir SdrOutlinerCache::SdrOutlinerCache( SdrModel* pModel )
35cdf0e10cSrcweir : mpModel( pModel ),
36cdf0e10cSrcweir mpModeOutline( NULL ),
37cdf0e10cSrcweir mpModeText( NULL )
38cdf0e10cSrcweir {
39cdf0e10cSrcweir }
40cdf0e10cSrcweir
createOutliner(sal_uInt16 nOutlinerMode)41cdf0e10cSrcweir SdrOutliner* SdrOutlinerCache::createOutliner( sal_uInt16 nOutlinerMode )
42cdf0e10cSrcweir {
43cdf0e10cSrcweir SdrOutliner* pOutliner = NULL;
44cdf0e10cSrcweir
45cdf0e10cSrcweir if( (OUTLINERMODE_OUTLINEOBJECT == nOutlinerMode) && mpModeOutline )
46cdf0e10cSrcweir {
47cdf0e10cSrcweir pOutliner = mpModeOutline;
48cdf0e10cSrcweir mpModeOutline = NULL;
49cdf0e10cSrcweir }
50cdf0e10cSrcweir else if( (OUTLINERMODE_TEXTOBJECT == nOutlinerMode) && mpModeText )
51cdf0e10cSrcweir {
52cdf0e10cSrcweir pOutliner = mpModeText;
53cdf0e10cSrcweir mpModeText = NULL;
54cdf0e10cSrcweir }
55cdf0e10cSrcweir else
56cdf0e10cSrcweir {
57cdf0e10cSrcweir pOutliner = SdrMakeOutliner( nOutlinerMode, mpModel );
58cdf0e10cSrcweir Outliner& aDrawOutliner = mpModel->GetDrawOutliner();
59cdf0e10cSrcweir pOutliner->SetCalcFieldValueHdl( aDrawOutliner.GetCalcFieldValueHdl() );
60cdf0e10cSrcweir }
61cdf0e10cSrcweir
62cdf0e10cSrcweir return pOutliner;
63cdf0e10cSrcweir }
64cdf0e10cSrcweir
~SdrOutlinerCache()65cdf0e10cSrcweir SdrOutlinerCache::~SdrOutlinerCache()
66cdf0e10cSrcweir {
67cdf0e10cSrcweir if( mpModeOutline )
68cdf0e10cSrcweir {
69cdf0e10cSrcweir delete mpModeOutline;
70cdf0e10cSrcweir mpModeOutline = NULL;
71cdf0e10cSrcweir }
72cdf0e10cSrcweir
73cdf0e10cSrcweir if( mpModeText )
74cdf0e10cSrcweir {
75cdf0e10cSrcweir delete mpModeText;
76cdf0e10cSrcweir mpModeText = NULL;
77cdf0e10cSrcweir }
78cdf0e10cSrcweir }
79cdf0e10cSrcweir
disposeOutliner(SdrOutliner * pOutliner)80cdf0e10cSrcweir void SdrOutlinerCache::disposeOutliner( SdrOutliner* pOutliner )
81cdf0e10cSrcweir {
82cdf0e10cSrcweir if( pOutliner )
83cdf0e10cSrcweir {
84cdf0e10cSrcweir sal_uInt16 nOutlMode = pOutliner->GetOutlinerMode();
85cdf0e10cSrcweir
86cdf0e10cSrcweir if( (OUTLINERMODE_OUTLINEOBJECT == nOutlMode) && (NULL == mpModeOutline) )
87cdf0e10cSrcweir {
88cdf0e10cSrcweir mpModeOutline = pOutliner;
89cdf0e10cSrcweir pOutliner->Clear();
90cdf0e10cSrcweir pOutliner->SetVertical( false );
91cdf0e10cSrcweir
92cdf0e10cSrcweir // #101088# Deregister on outliner, might be reused from outliner cache
93cdf0e10cSrcweir pOutliner->SetNotifyHdl( Link() );
94cdf0e10cSrcweir }
95cdf0e10cSrcweir else if( (OUTLINERMODE_TEXTOBJECT == nOutlMode) && (NULL == mpModeText) )
96cdf0e10cSrcweir {
97cdf0e10cSrcweir mpModeText = pOutliner;
98cdf0e10cSrcweir pOutliner->Clear();
99cdf0e10cSrcweir pOutliner->SetVertical( false );
100cdf0e10cSrcweir
101cdf0e10cSrcweir // #101088# Deregister on outliner, might be reused from outliner cache
102cdf0e10cSrcweir pOutliner->SetNotifyHdl( Link() );
103cdf0e10cSrcweir }
104cdf0e10cSrcweir else
105cdf0e10cSrcweir {
106cdf0e10cSrcweir delete pOutliner;
107cdf0e10cSrcweir }
108cdf0e10cSrcweir }
109cdf0e10cSrcweir }
110cdf0e10cSrcweir
111cdf0e10cSrcweir
112