xref: /aoo4110/main/sc/source/ui/undo/undodraw.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_sc.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski // INCLUDE ---------------------------------------------------------------
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski #include <svx/svdundo.hxx>
30*b1cdbd2cSJim Jagielski 
31*b1cdbd2cSJim Jagielski #include "undodraw.hxx"
32*b1cdbd2cSJim Jagielski #include "docsh.hxx"
33*b1cdbd2cSJim Jagielski #include "tabvwsh.hxx"
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski 
36*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski TYPEINIT1(ScUndoDraw, SfxUndoAction);
39*b1cdbd2cSJim Jagielski 
40*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
41*b1cdbd2cSJim Jagielski 
ScUndoDraw(SfxUndoAction * pUndo,ScDocShell * pDocSh)42*b1cdbd2cSJim Jagielski ScUndoDraw::ScUndoDraw( SfxUndoAction* pUndo, ScDocShell* pDocSh ) :
43*b1cdbd2cSJim Jagielski 	pDrawUndo( pUndo ),
44*b1cdbd2cSJim Jagielski 	pDocShell( pDocSh )
45*b1cdbd2cSJim Jagielski {
46*b1cdbd2cSJim Jagielski }
47*b1cdbd2cSJim Jagielski 
~ScUndoDraw()48*b1cdbd2cSJim Jagielski __EXPORT ScUndoDraw::~ScUndoDraw()
49*b1cdbd2cSJim Jagielski {
50*b1cdbd2cSJim Jagielski 	delete pDrawUndo;
51*b1cdbd2cSJim Jagielski }
52*b1cdbd2cSJim Jagielski 
ForgetDrawUndo()53*b1cdbd2cSJim Jagielski void ScUndoDraw::ForgetDrawUndo()
54*b1cdbd2cSJim Jagielski {
55*b1cdbd2cSJim Jagielski 	pDrawUndo = NULL;	// nicht loeschen (Draw-Undo muss dann von aussen gemerkt werden)
56*b1cdbd2cSJim Jagielski }
57*b1cdbd2cSJim Jagielski 
GetComment() const58*b1cdbd2cSJim Jagielski String __EXPORT ScUndoDraw::GetComment() const
59*b1cdbd2cSJim Jagielski {
60*b1cdbd2cSJim Jagielski 	if (pDrawUndo)
61*b1cdbd2cSJim Jagielski 		return pDrawUndo->GetComment();
62*b1cdbd2cSJim Jagielski 	else
63*b1cdbd2cSJim Jagielski 		return String();
64*b1cdbd2cSJim Jagielski }
65*b1cdbd2cSJim Jagielski 
GetRepeatComment(SfxRepeatTarget & rTarget) const66*b1cdbd2cSJim Jagielski String __EXPORT ScUndoDraw::GetRepeatComment(SfxRepeatTarget& rTarget) const
67*b1cdbd2cSJim Jagielski {
68*b1cdbd2cSJim Jagielski 	if (pDrawUndo)
69*b1cdbd2cSJim Jagielski 		return pDrawUndo->GetRepeatComment(rTarget);
70*b1cdbd2cSJim Jagielski 	else
71*b1cdbd2cSJim Jagielski 		return String();
72*b1cdbd2cSJim Jagielski }
73*b1cdbd2cSJim Jagielski 
GetId() const74*b1cdbd2cSJim Jagielski sal_uInt16 __EXPORT ScUndoDraw::GetId() const
75*b1cdbd2cSJim Jagielski {
76*b1cdbd2cSJim Jagielski 	if (pDrawUndo)
77*b1cdbd2cSJim Jagielski 		return pDrawUndo->GetId();
78*b1cdbd2cSJim Jagielski 	else
79*b1cdbd2cSJim Jagielski 		return 0;
80*b1cdbd2cSJim Jagielski }
81*b1cdbd2cSJim Jagielski 
SetLinkToSfxLinkUndoAction(SfxLinkUndoAction * pSfxLinkUndoAction)82*b1cdbd2cSJim Jagielski void __EXPORT ScUndoDraw::SetLinkToSfxLinkUndoAction(SfxLinkUndoAction* pSfxLinkUndoAction)
83*b1cdbd2cSJim Jagielski {
84*b1cdbd2cSJim Jagielski 	if (pDrawUndo)
85*b1cdbd2cSJim Jagielski 		pDrawUndo->SetLinkToSfxLinkUndoAction(pSfxLinkUndoAction);
86*b1cdbd2cSJim Jagielski     else
87*b1cdbd2cSJim Jagielski         SetLinkToSfxLinkUndoAction(pSfxLinkUndoAction);
88*b1cdbd2cSJim Jagielski }
89*b1cdbd2cSJim Jagielski 
Merge(SfxUndoAction * pNextAction)90*b1cdbd2cSJim Jagielski sal_Bool  __EXPORT ScUndoDraw::Merge( SfxUndoAction* pNextAction )
91*b1cdbd2cSJim Jagielski {
92*b1cdbd2cSJim Jagielski 	if (pDrawUndo)
93*b1cdbd2cSJim Jagielski 		return pDrawUndo->Merge(pNextAction);
94*b1cdbd2cSJim Jagielski 	else
95*b1cdbd2cSJim Jagielski 		return sal_False;
96*b1cdbd2cSJim Jagielski }
97*b1cdbd2cSJim Jagielski 
UpdateSubShell()98*b1cdbd2cSJim Jagielski void ScUndoDraw::UpdateSubShell()
99*b1cdbd2cSJim Jagielski {
100*b1cdbd2cSJim Jagielski     // #i26822# remove the draw shell if the selected object has been removed
101*b1cdbd2cSJim Jagielski     ScTabViewShell* pViewShell = pDocShell->GetBestViewShell();
102*b1cdbd2cSJim Jagielski     if (pViewShell)
103*b1cdbd2cSJim Jagielski         pViewShell->UpdateDrawShell();
104*b1cdbd2cSJim Jagielski }
105*b1cdbd2cSJim Jagielski 
Undo()106*b1cdbd2cSJim Jagielski void __EXPORT ScUndoDraw::Undo()
107*b1cdbd2cSJim Jagielski {
108*b1cdbd2cSJim Jagielski 	if (pDrawUndo)
109*b1cdbd2cSJim Jagielski 	{
110*b1cdbd2cSJim Jagielski 		pDrawUndo->Undo();
111*b1cdbd2cSJim Jagielski 		pDocShell->SetDrawModified();
112*b1cdbd2cSJim Jagielski         UpdateSubShell();
113*b1cdbd2cSJim Jagielski 	}
114*b1cdbd2cSJim Jagielski }
115*b1cdbd2cSJim Jagielski 
Redo()116*b1cdbd2cSJim Jagielski void __EXPORT ScUndoDraw::Redo()
117*b1cdbd2cSJim Jagielski {
118*b1cdbd2cSJim Jagielski 	if (pDrawUndo)
119*b1cdbd2cSJim Jagielski 	{
120*b1cdbd2cSJim Jagielski 		pDrawUndo->Redo();
121*b1cdbd2cSJim Jagielski 		pDocShell->SetDrawModified();
122*b1cdbd2cSJim Jagielski         UpdateSubShell();
123*b1cdbd2cSJim Jagielski 	}
124*b1cdbd2cSJim Jagielski }
125*b1cdbd2cSJim Jagielski 
Repeat(SfxRepeatTarget & rTarget)126*b1cdbd2cSJim Jagielski void __EXPORT ScUndoDraw::Repeat(SfxRepeatTarget& rTarget)
127*b1cdbd2cSJim Jagielski {
128*b1cdbd2cSJim Jagielski 	if (pDrawUndo)
129*b1cdbd2cSJim Jagielski 		pDrawUndo->Repeat(rTarget);
130*b1cdbd2cSJim Jagielski }
131*b1cdbd2cSJim Jagielski 
CanRepeat(SfxRepeatTarget & rTarget) const132*b1cdbd2cSJim Jagielski sal_Bool __EXPORT ScUndoDraw::CanRepeat(SfxRepeatTarget& rTarget) const
133*b1cdbd2cSJim Jagielski {
134*b1cdbd2cSJim Jagielski 	if (pDrawUndo)
135*b1cdbd2cSJim Jagielski 		return pDrawUndo->CanRepeat(rTarget);
136*b1cdbd2cSJim Jagielski 	else
137*b1cdbd2cSJim Jagielski 		return sal_False;
138*b1cdbd2cSJim Jagielski }
139*b1cdbd2cSJim Jagielski 
140*b1cdbd2cSJim Jagielski 
141*b1cdbd2cSJim Jagielski 
142