xref: /trunk/main/sc/source/ui/drawfunc/fuconuno.cxx (revision b3f79822)
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_sc.hxx"
26 
27 #include "fuconuno.hxx"
28 #include "tabvwsh.hxx"
29 #include "sc.hrc"
30 #include "drawview.hxx"
31 
32 /*************************************************************************
33 |*
34 |* Konstruktor
35 |*
36 \************************************************************************/
37 
FuConstUnoControl(ScTabViewShell * pViewSh,Window * pWin,ScDrawView * pViewP,SdrModel * pDoc,SfxRequest & rReq)38 FuConstUnoControl::FuConstUnoControl(ScTabViewShell* pViewSh, Window* pWin, ScDrawView* pViewP,
39 				   SdrModel* pDoc, SfxRequest& rReq)
40     : FuConstruct(pViewSh, pWin, pViewP, pDoc, rReq)
41 {
42 	SFX_REQUEST_ARG( rReq, pInventorItem, SfxUInt32Item, SID_FM_CONTROL_INVENTOR, sal_False );
43 	SFX_REQUEST_ARG( rReq, pIdentifierItem, SfxUInt16Item, SID_FM_CONTROL_IDENTIFIER, sal_False );
44 	if( pInventorItem )
45 		nInventor = pInventorItem->GetValue();
46 	if( pIdentifierItem )
47 		nIdentifier = pIdentifierItem->GetValue();
48 }
49 
50 /*************************************************************************
51 |*
52 |* Destruktor
53 |*
54 \************************************************************************/
55 
~FuConstUnoControl()56 FuConstUnoControl::~FuConstUnoControl()
57 {
58 }
59 
60 /*************************************************************************
61 |*
62 |* MouseButtonDown-event
63 |*
64 \************************************************************************/
65 
MouseButtonDown(const MouseEvent & rMEvt)66 sal_Bool __EXPORT FuConstUnoControl::MouseButtonDown(const MouseEvent& rMEvt)
67 {
68 	// #95491# remember button state for creation of own MouseEvents
69 	SetMouseButtonCode(rMEvt.GetButtons());
70 
71 	sal_Bool bReturn = FuConstruct::MouseButtonDown(rMEvt);
72 
73 	if ( rMEvt.IsLeft() && !pView->IsAction() )
74 	{
75 		Point aPnt( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
76 		pWindow->CaptureMouse();
77 		pView->BegCreateObj(aPnt);
78 		bReturn = sal_True;
79 	}
80 	return bReturn;
81 }
82 
83 /*************************************************************************
84 |*
85 |* MouseMove-event
86 |*
87 \************************************************************************/
88 
MouseMove(const MouseEvent & rMEvt)89 sal_Bool __EXPORT FuConstUnoControl::MouseMove(const MouseEvent& rMEvt)
90 {
91 	return FuConstruct::MouseMove(rMEvt);
92 }
93 
94 /*************************************************************************
95 |*
96 |* MouseButtonUp-event
97 |*
98 \************************************************************************/
99 
MouseButtonUp(const MouseEvent & rMEvt)100 sal_Bool __EXPORT FuConstUnoControl::MouseButtonUp(const MouseEvent& rMEvt)
101 {
102 	// #95491# remember button state for creation of own MouseEvents
103 	SetMouseButtonCode(rMEvt.GetButtons());
104 
105 	sal_Bool bReturn = sal_False;
106 
107 	if ( pView->IsCreateObj() && rMEvt.IsLeft() )
108 	{
109 		Point aPnt( pWindow->PixelToLogic( rMEvt.GetPosPixel() ) );
110 		pView->EndCreateObj(SDRCREATE_FORCEEND);
111 		bReturn = sal_True;
112 	}
113 	return (FuConstruct::MouseButtonUp(rMEvt) || bReturn);
114 }
115 
116 /*************************************************************************
117 |*
118 |* Tastaturereignisse bearbeiten
119 |*
120 |* Wird ein KeyEvent bearbeitet, so ist der Return-Wert sal_True, andernfalls
121 |* FALSE.
122 |*
123 \************************************************************************/
124 
KeyInput(const KeyEvent & rKEvt)125 sal_Bool __EXPORT FuConstUnoControl::KeyInput(const KeyEvent& rKEvt)
126 {
127 	sal_Bool bReturn = FuConstruct::KeyInput(rKEvt);
128 	return(bReturn);
129 }
130 
131 /*************************************************************************
132 |*
133 |* Function aktivieren
134 |*
135 \************************************************************************/
136 
Activate()137 void FuConstUnoControl::Activate()
138 {
139 	pView->SetCurrentObj( nIdentifier, nInventor );
140 
141 	aNewPointer = Pointer( POINTER_DRAW_RECT );
142 	aOldPointer = pWindow->GetPointer();
143 	pViewShell->SetActivePointer( aNewPointer );
144 
145 	SdrLayer* pLayer = pView->GetModel()->GetLayerAdmin().GetLayerPerID(SC_LAYER_CONTROLS);
146 	if (pLayer)
147 		pView->SetActiveLayer( pLayer->GetName() );
148 
149 	FuConstruct::Activate();
150 }
151 
152 /*************************************************************************
153 |*
154 |* Function deaktivieren
155 |*
156 \************************************************************************/
157 
Deactivate()158 void FuConstUnoControl::Deactivate()
159 {
160 	FuConstruct::Deactivate();
161 
162 	SdrLayer* pLayer = pView->GetModel()->GetLayerAdmin().GetLayerPerID(SC_LAYER_FRONT);
163 	if (pLayer)
164 		pView->SetActiveLayer( pLayer->GetName() );
165 
166 	pViewShell->SetActivePointer( aOldPointer );
167 }
168 
169 // #98185# Create default drawing objects via keyboard
CreateDefaultObject(const sal_uInt16,const Rectangle & rRectangle)170 SdrObject* FuConstUnoControl::CreateDefaultObject(const sal_uInt16 /* nID */, const Rectangle& rRectangle)
171 {
172 	// case SID_FM_CREATE_CONTROL:
173 
174 	SdrObject* pObj = SdrObjFactory::MakeNewObject(
175 		pView->GetCurrentObjInventor(), pView->GetCurrentObjIdentifier(),
176 		0L, pDrDoc);
177 
178 	if(pObj)
179 	{
180 		pObj->SetLogicRect(rRectangle);
181 	}
182 
183 	return pObj;
184 }
185 
186 
187