xref: /aoo4110/main/svtools/source/contnr/svicnvw.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_svtools.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <svtools/svlbox.hxx>
28*b1cdbd2cSJim Jagielski #include <svtools/svicnvw.hxx>
29*b1cdbd2cSJim Jagielski #include <svimpicn.hxx>
30*b1cdbd2cSJim Jagielski #include <svtools/svlbitm.hxx>
31*b1cdbd2cSJim Jagielski 
32*b1cdbd2cSJim Jagielski #ifndef GCC
33*b1cdbd2cSJim Jagielski #endif
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski #define ICNVW_BLOCK_ENTRYINS	0x0001
36*b1cdbd2cSJim Jagielski 
SvIcnVwDataEntry()37*b1cdbd2cSJim Jagielski SvIcnVwDataEntry::SvIcnVwDataEntry()
38*b1cdbd2cSJim Jagielski 	: nIcnVwFlags(0),eTextMode(ShowTextDontKnow)
39*b1cdbd2cSJim Jagielski {
40*b1cdbd2cSJim Jagielski }
41*b1cdbd2cSJim Jagielski 
~SvIcnVwDataEntry()42*b1cdbd2cSJim Jagielski SvIcnVwDataEntry::~SvIcnVwDataEntry()
43*b1cdbd2cSJim Jagielski {
44*b1cdbd2cSJim Jagielski }
45*b1cdbd2cSJim Jagielski 
SvIconView(Window * pParent,WinBits nWinStyle)46*b1cdbd2cSJim Jagielski SvIconView::SvIconView( Window* pParent, WinBits nWinStyle ) :
47*b1cdbd2cSJim Jagielski 	SvLBox( pParent, nWinStyle | WB_BORDER )
48*b1cdbd2cSJim Jagielski {
49*b1cdbd2cSJim Jagielski 	nIcnVwFlags = 0;
50*b1cdbd2cSJim Jagielski 	pImp = new SvImpIconView( this, GetModel(), nWinStyle | WB_ICON );
51*b1cdbd2cSJim Jagielski 	pImp->mpViewData = 0;
52*b1cdbd2cSJim Jagielski 	SetSelectionMode( SINGLE_SELECTION );
53*b1cdbd2cSJim Jagielski 	SetLineColor();
54*b1cdbd2cSJim Jagielski 	const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
55*b1cdbd2cSJim Jagielski 	SetBackground( Wallpaper( rStyleSettings.GetFieldColor() ) );
56*b1cdbd2cSJim Jagielski 	SetDefaultFont();
57*b1cdbd2cSJim Jagielski }
58*b1cdbd2cSJim Jagielski 
SvIconView(Window * pParent,const ResId & rResId)59*b1cdbd2cSJim Jagielski SvIconView::SvIconView( Window* pParent , const ResId& rResId ) :
60*b1cdbd2cSJim Jagielski 	SvLBox( pParent, rResId )
61*b1cdbd2cSJim Jagielski {
62*b1cdbd2cSJim Jagielski 	pImp = new SvImpIconView( this, GetModel(), WB_BORDER | WB_ICON );
63*b1cdbd2cSJim Jagielski 	nIcnVwFlags = 0;
64*b1cdbd2cSJim Jagielski 	pImp->mpViewData = 0;
65*b1cdbd2cSJim Jagielski 	SetLineColor();
66*b1cdbd2cSJim Jagielski 	const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
67*b1cdbd2cSJim Jagielski 	SetBackground( Wallpaper( rStyleSettings.GetFieldColor() ) );
68*b1cdbd2cSJim Jagielski 	SetDefaultFont();
69*b1cdbd2cSJim Jagielski 	pImp->SetSelectionMode( GetSelectionMode() );
70*b1cdbd2cSJim Jagielski }
71*b1cdbd2cSJim Jagielski 
~SvIconView()72*b1cdbd2cSJim Jagielski SvIconView::~SvIconView()
73*b1cdbd2cSJim Jagielski {
74*b1cdbd2cSJim Jagielski 	delete pImp;
75*b1cdbd2cSJim Jagielski }
76*b1cdbd2cSJim Jagielski 
SetDefaultFont()77*b1cdbd2cSJim Jagielski void SvIconView::SetDefaultFont()
78*b1cdbd2cSJim Jagielski {
79*b1cdbd2cSJim Jagielski 	SetFont( GetFont() );
80*b1cdbd2cSJim Jagielski }
81*b1cdbd2cSJim Jagielski 
CreateEntry(const XubString & rStr,const Image & rCollEntryBmp,const Image & rExpEntryBmp)82*b1cdbd2cSJim Jagielski SvLBoxEntry* SvIconView::CreateEntry( const XubString& rStr,
83*b1cdbd2cSJim Jagielski 	const Image& rCollEntryBmp, const Image& rExpEntryBmp )
84*b1cdbd2cSJim Jagielski {
85*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry = new SvLBoxEntry;
86*b1cdbd2cSJim Jagielski 
87*b1cdbd2cSJim Jagielski 	SvLBoxContextBmp* pContextBmp =
88*b1cdbd2cSJim Jagielski 	  new SvLBoxContextBmp( pEntry,0, rCollEntryBmp,rExpEntryBmp, 0xffff );
89*b1cdbd2cSJim Jagielski 	pEntry->AddItem( pContextBmp );
90*b1cdbd2cSJim Jagielski 
91*b1cdbd2cSJim Jagielski 	SvLBoxString* pString = new SvLBoxString( pEntry, 0, rStr );
92*b1cdbd2cSJim Jagielski 	pEntry->AddItem( pString );
93*b1cdbd2cSJim Jagielski 
94*b1cdbd2cSJim Jagielski 	return pEntry;
95*b1cdbd2cSJim Jagielski }
96*b1cdbd2cSJim Jagielski 
DisconnectFromModel()97*b1cdbd2cSJim Jagielski void SvIconView::DisconnectFromModel()
98*b1cdbd2cSJim Jagielski {
99*b1cdbd2cSJim Jagielski 	SvLBox::DisconnectFromModel();
100*b1cdbd2cSJim Jagielski 	pImp->SetModel( GetModel(), 0 );
101*b1cdbd2cSJim Jagielski }
102*b1cdbd2cSJim Jagielski 
103*b1cdbd2cSJim Jagielski 
InsertEntry(const XubString & rText,SvLBoxEntry * pParent,sal_Bool bChildsOnDemand,sal_uLong nPos)104*b1cdbd2cSJim Jagielski SvLBoxEntry* SvIconView::InsertEntry( const XubString& rText,
105*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pParent, sal_Bool bChildsOnDemand, sal_uLong nPos )
106*b1cdbd2cSJim Jagielski {
107*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry = CreateEntry(
108*b1cdbd2cSJim Jagielski 		rText, aCollapsedEntryBmp, aExpandedEntryBmp );
109*b1cdbd2cSJim Jagielski 	pEntry->EnableChildsOnDemand( bChildsOnDemand );
110*b1cdbd2cSJim Jagielski 
111*b1cdbd2cSJim Jagielski 	if ( !pParent )
112*b1cdbd2cSJim Jagielski 		SvLBox::Insert( pEntry, nPos );
113*b1cdbd2cSJim Jagielski 	else
114*b1cdbd2cSJim Jagielski 		SvLBox::Insert( pEntry, pParent, nPos );
115*b1cdbd2cSJim Jagielski 	return pEntry;
116*b1cdbd2cSJim Jagielski }
117*b1cdbd2cSJim Jagielski 
InsertEntry(const XubString & rText,const Image & rExpEntryBmp,const Image & rCollEntryBmp,SvLBoxEntry * pParent,sal_Bool bChildsOnDemand,sal_uLong nPos)118*b1cdbd2cSJim Jagielski SvLBoxEntry* SvIconView::InsertEntry( const XubString& rText,
119*b1cdbd2cSJim Jagielski 	const Image& rExpEntryBmp,
120*b1cdbd2cSJim Jagielski 	const Image& rCollEntryBmp,
121*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pParent, sal_Bool bChildsOnDemand, sal_uLong nPos)
122*b1cdbd2cSJim Jagielski {
123*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry = CreateEntry(
124*b1cdbd2cSJim Jagielski 		rText, rCollEntryBmp, rExpEntryBmp );
125*b1cdbd2cSJim Jagielski 
126*b1cdbd2cSJim Jagielski 	pEntry->EnableChildsOnDemand( bChildsOnDemand );
127*b1cdbd2cSJim Jagielski 	if ( !pParent )
128*b1cdbd2cSJim Jagielski 		SvLBox::Insert( pEntry, nPos );
129*b1cdbd2cSJim Jagielski 	else
130*b1cdbd2cSJim Jagielski 		SvLBox::Insert( pEntry, pParent, nPos );
131*b1cdbd2cSJim Jagielski 	return pEntry;
132*b1cdbd2cSJim Jagielski }
133*b1cdbd2cSJim Jagielski 
134*b1cdbd2cSJim Jagielski 
SetEntryText(SvLBoxEntry * pEntry,const XubString & rStr)135*b1cdbd2cSJim Jagielski void SvIconView::SetEntryText(SvLBoxEntry* pEntry, const XubString& rStr)
136*b1cdbd2cSJim Jagielski {
137*b1cdbd2cSJim Jagielski 	SvLBoxString* pItem = (SvLBoxString*)(pEntry->GetFirstItem(SV_ITEM_ID_LBOXSTRING));
138*b1cdbd2cSJim Jagielski 	if ( pItem )
139*b1cdbd2cSJim Jagielski 	{
140*b1cdbd2cSJim Jagielski 		pItem->SetText( pEntry, rStr );
141*b1cdbd2cSJim Jagielski 		GetModel()->InvalidateEntry( pEntry );
142*b1cdbd2cSJim Jagielski 	}
143*b1cdbd2cSJim Jagielski }
144*b1cdbd2cSJim Jagielski 
SetExpandedEntryBmp(SvLBoxEntry * pEntry,const Image & rBmp)145*b1cdbd2cSJim Jagielski void SvIconView::SetExpandedEntryBmp(SvLBoxEntry* pEntry, const Image& rBmp)
146*b1cdbd2cSJim Jagielski {
147*b1cdbd2cSJim Jagielski 	SvLBoxContextBmp* pItem = (SvLBoxContextBmp*)(pEntry->GetFirstItem(SV_ITEM_ID_LBOXCONTEXTBMP));
148*b1cdbd2cSJim Jagielski 	if ( pItem )
149*b1cdbd2cSJim Jagielski 	{
150*b1cdbd2cSJim Jagielski 		pItem->SetBitmap2( rBmp );
151*b1cdbd2cSJim Jagielski 		GetModel()->InvalidateEntry( pEntry );
152*b1cdbd2cSJim Jagielski 	}
153*b1cdbd2cSJim Jagielski }
154*b1cdbd2cSJim Jagielski 
SetCollapsedEntryBmp(SvLBoxEntry * pEntry,const Image & rBmp)155*b1cdbd2cSJim Jagielski void SvIconView::SetCollapsedEntryBmp(SvLBoxEntry* pEntry,
156*b1cdbd2cSJim Jagielski 	const Image& rBmp )
157*b1cdbd2cSJim Jagielski {
158*b1cdbd2cSJim Jagielski 	SvLBoxContextBmp* pItem = (SvLBoxContextBmp*)(pEntry->GetFirstItem(SV_ITEM_ID_LBOXCONTEXTBMP));
159*b1cdbd2cSJim Jagielski 	if ( pItem )
160*b1cdbd2cSJim Jagielski 	{
161*b1cdbd2cSJim Jagielski 		pItem->SetBitmap1( rBmp );
162*b1cdbd2cSJim Jagielski 		GetModel()->InvalidateEntry( pEntry );
163*b1cdbd2cSJim Jagielski 	}
164*b1cdbd2cSJim Jagielski }
165*b1cdbd2cSJim Jagielski 
GetEntryText(SvLBoxEntry * pEntry) const166*b1cdbd2cSJim Jagielski XubString SvIconView::GetEntryText(SvLBoxEntry* pEntry ) const
167*b1cdbd2cSJim Jagielski {
168*b1cdbd2cSJim Jagielski 	XubString aStr;
169*b1cdbd2cSJim Jagielski 	SvLBoxString* pItem = (SvLBoxString*)(pEntry->GetFirstItem(SV_ITEM_ID_LBOXSTRING));
170*b1cdbd2cSJim Jagielski 	if ( pItem )
171*b1cdbd2cSJim Jagielski 		aStr = pItem->GetText();
172*b1cdbd2cSJim Jagielski 	return aStr;
173*b1cdbd2cSJim Jagielski }
174*b1cdbd2cSJim Jagielski 
GetExpandedEntryBmp(SvLBoxEntry * pEntry) const175*b1cdbd2cSJim Jagielski Image SvIconView::GetExpandedEntryBmp(SvLBoxEntry* pEntry) const
176*b1cdbd2cSJim Jagielski {
177*b1cdbd2cSJim Jagielski 	Image aBmp;
178*b1cdbd2cSJim Jagielski 	SvLBoxContextBmp* pItem = (SvLBoxContextBmp*)(pEntry->GetFirstItem(SV_ITEM_ID_LBOXCONTEXTBMP));
179*b1cdbd2cSJim Jagielski 	if ( pItem )
180*b1cdbd2cSJim Jagielski 		aBmp = pItem->GetBitmap2();
181*b1cdbd2cSJim Jagielski 	return aBmp;
182*b1cdbd2cSJim Jagielski }
183*b1cdbd2cSJim Jagielski 
GetCollapsedEntryBmp(SvLBoxEntry * pEntry) const184*b1cdbd2cSJim Jagielski Image SvIconView::GetCollapsedEntryBmp(SvLBoxEntry* pEntry) const
185*b1cdbd2cSJim Jagielski {
186*b1cdbd2cSJim Jagielski 	Image aBmp;
187*b1cdbd2cSJim Jagielski 	SvLBoxContextBmp* pItem = (SvLBoxContextBmp*)(pEntry->GetFirstItem(SV_ITEM_ID_LBOXCONTEXTBMP));
188*b1cdbd2cSJim Jagielski 	if ( pItem )
189*b1cdbd2cSJim Jagielski 		aBmp = pItem->GetBitmap1();
190*b1cdbd2cSJim Jagielski 	return aBmp;
191*b1cdbd2cSJim Jagielski }
192*b1cdbd2cSJim Jagielski 
193*b1cdbd2cSJim Jagielski 
CloneEntry(SvLBoxEntry * pSource)194*b1cdbd2cSJim Jagielski SvLBoxEntry* SvIconView::CloneEntry( SvLBoxEntry* pSource )
195*b1cdbd2cSJim Jagielski {
196*b1cdbd2cSJim Jagielski 	XubString aStr;
197*b1cdbd2cSJim Jagielski 	Image aCollEntryBmp;
198*b1cdbd2cSJim Jagielski 	Image aExpEntryBmp;
199*b1cdbd2cSJim Jagielski 
200*b1cdbd2cSJim Jagielski 	SvLBoxString* pStringItem = (SvLBoxString*)(pSource->GetFirstItem(SV_ITEM_ID_LBOXSTRING));
201*b1cdbd2cSJim Jagielski 	if ( pStringItem )
202*b1cdbd2cSJim Jagielski 		aStr = pStringItem->GetText();
203*b1cdbd2cSJim Jagielski 	SvLBoxContextBmp* pBmpItem =(SvLBoxContextBmp*)(pSource->GetFirstItem(SV_ITEM_ID_LBOXCONTEXTBMP));
204*b1cdbd2cSJim Jagielski 	if ( pBmpItem )
205*b1cdbd2cSJim Jagielski 	{
206*b1cdbd2cSJim Jagielski 		aCollEntryBmp = pBmpItem->GetBitmap1();
207*b1cdbd2cSJim Jagielski 		aExpEntryBmp  = pBmpItem->GetBitmap2();
208*b1cdbd2cSJim Jagielski 	}
209*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry = CreateEntry( aStr, aCollEntryBmp, aExpEntryBmp );
210*b1cdbd2cSJim Jagielski 	pEntry->SvListEntry::Clone( pSource );
211*b1cdbd2cSJim Jagielski 	pEntry->EnableChildsOnDemand( pSource->HasChildsOnDemand() );
212*b1cdbd2cSJim Jagielski 	pEntry->SetUserData( pSource->GetUserData() );
213*b1cdbd2cSJim Jagielski 	return pEntry;
214*b1cdbd2cSJim Jagielski }
215*b1cdbd2cSJim Jagielski 
216*b1cdbd2cSJim Jagielski 
IsA()217*b1cdbd2cSJim Jagielski sal_uInt16 SvIconView::IsA()
218*b1cdbd2cSJim Jagielski {
219*b1cdbd2cSJim Jagielski 	return SV_LISTBOX_ID_ICONVIEW;
220*b1cdbd2cSJim Jagielski }
221*b1cdbd2cSJim Jagielski 
RequestingChilds(SvLBoxEntry * pParent)222*b1cdbd2cSJim Jagielski void SvIconView::RequestingChilds( SvLBoxEntry* pParent )
223*b1cdbd2cSJim Jagielski {
224*b1cdbd2cSJim Jagielski 	if ( !pParent->HasChilds() )
225*b1cdbd2cSJim Jagielski 		InsertEntry( String::CreateFromAscii("<dummy>"), pParent, sal_False, LIST_APPEND );
226*b1cdbd2cSJim Jagielski }
227*b1cdbd2cSJim Jagielski 
Paint(const Rectangle & rRect)228*b1cdbd2cSJim Jagielski void __EXPORT SvIconView::Paint( const Rectangle& rRect )
229*b1cdbd2cSJim Jagielski {
230*b1cdbd2cSJim Jagielski 	pImp->Paint( rRect );
231*b1cdbd2cSJim Jagielski }
232*b1cdbd2cSJim Jagielski 
MouseButtonDown(const MouseEvent & rMEvt)233*b1cdbd2cSJim Jagielski void __EXPORT SvIconView::MouseButtonDown( const MouseEvent& rMEvt )
234*b1cdbd2cSJim Jagielski {
235*b1cdbd2cSJim Jagielski 	pImp->MouseButtonDown( rMEvt );
236*b1cdbd2cSJim Jagielski }
237*b1cdbd2cSJim Jagielski 
MouseButtonUp(const MouseEvent & rMEvt)238*b1cdbd2cSJim Jagielski void __EXPORT SvIconView::MouseButtonUp( const MouseEvent& rMEvt )
239*b1cdbd2cSJim Jagielski {
240*b1cdbd2cSJim Jagielski 	pImp->MouseButtonUp( rMEvt );
241*b1cdbd2cSJim Jagielski }
242*b1cdbd2cSJim Jagielski 
MouseMove(const MouseEvent & rMEvt)243*b1cdbd2cSJim Jagielski void __EXPORT SvIconView::MouseMove( const MouseEvent& rMEvt )
244*b1cdbd2cSJim Jagielski {
245*b1cdbd2cSJim Jagielski 	pImp->MouseMove( rMEvt );
246*b1cdbd2cSJim Jagielski }
247*b1cdbd2cSJim Jagielski 
KeyInput(const KeyEvent & rKEvt)248*b1cdbd2cSJim Jagielski void __EXPORT SvIconView::KeyInput( const KeyEvent& rKEvt )
249*b1cdbd2cSJim Jagielski {
250*b1cdbd2cSJim Jagielski 	// unter OS/2 bekommen wir auch beim Editieren Key-Up/Down
251*b1cdbd2cSJim Jagielski 	if( IsEditingActive() )
252*b1cdbd2cSJim Jagielski 		return;
253*b1cdbd2cSJim Jagielski 
254*b1cdbd2cSJim Jagielski 	nImpFlags |= SVLBOX_IS_TRAVELSELECT;
255*b1cdbd2cSJim Jagielski 	sal_Bool bKeyUsed = pImp->KeyInput( rKEvt );
256*b1cdbd2cSJim Jagielski 	if ( !bKeyUsed )
257*b1cdbd2cSJim Jagielski 		SvLBox::KeyInput( rKEvt );
258*b1cdbd2cSJim Jagielski 	nImpFlags &= ~SVLBOX_IS_TRAVELSELECT;
259*b1cdbd2cSJim Jagielski }
260*b1cdbd2cSJim Jagielski 
Resize()261*b1cdbd2cSJim Jagielski void __EXPORT SvIconView::Resize()
262*b1cdbd2cSJim Jagielski {
263*b1cdbd2cSJim Jagielski 	pImp->Resize();
264*b1cdbd2cSJim Jagielski 	SvLBox::Resize();
265*b1cdbd2cSJim Jagielski }
266*b1cdbd2cSJim Jagielski 
GetFocus()267*b1cdbd2cSJim Jagielski void __EXPORT SvIconView::GetFocus()
268*b1cdbd2cSJim Jagielski {
269*b1cdbd2cSJim Jagielski 	pImp->GetFocus();
270*b1cdbd2cSJim Jagielski 	SvLBox::GetFocus();
271*b1cdbd2cSJim Jagielski }
272*b1cdbd2cSJim Jagielski 
LoseFocus()273*b1cdbd2cSJim Jagielski void __EXPORT SvIconView::LoseFocus()
274*b1cdbd2cSJim Jagielski {
275*b1cdbd2cSJim Jagielski 	pImp->LoseFocus();
276*b1cdbd2cSJim Jagielski 	SvLBox::LoseFocus();
277*b1cdbd2cSJim Jagielski }
278*b1cdbd2cSJim Jagielski 
SetUpdateMode(sal_Bool bUpdate)279*b1cdbd2cSJim Jagielski void SvIconView::SetUpdateMode( sal_Bool bUpdate )
280*b1cdbd2cSJim Jagielski {
281*b1cdbd2cSJim Jagielski 	Control::SetUpdateMode( bUpdate );
282*b1cdbd2cSJim Jagielski 	if ( bUpdate )
283*b1cdbd2cSJim Jagielski 		pImp->UpdateAll();
284*b1cdbd2cSJim Jagielski }
285*b1cdbd2cSJim Jagielski 
SetModel(SvLBoxTreeList *)286*b1cdbd2cSJim Jagielski void SvIconView::SetModel( SvLBoxTreeList* )
287*b1cdbd2cSJim Jagielski {
288*b1cdbd2cSJim Jagielski }
289*b1cdbd2cSJim Jagielski 
SetModel(SvLBoxTreeList * pNewModel,SvLBoxEntry * pParent)290*b1cdbd2cSJim Jagielski void SvIconView::SetModel( SvLBoxTreeList* pNewModel, SvLBoxEntry* pParent )
291*b1cdbd2cSJim Jagielski {
292*b1cdbd2cSJim Jagielski 	nIcnVwFlags |= ICNVW_BLOCK_ENTRYINS;
293*b1cdbd2cSJim Jagielski 	SvLBox::SetModel( pNewModel );
294*b1cdbd2cSJim Jagielski 	nIcnVwFlags &= (~ICNVW_BLOCK_ENTRYINS);
295*b1cdbd2cSJim Jagielski 	if ( pParent && pParent->HasChildsOnDemand() )
296*b1cdbd2cSJim Jagielski 		RequestingChilds( pParent );
297*b1cdbd2cSJim Jagielski 	pImp->SetModel( pNewModel, pParent );
298*b1cdbd2cSJim Jagielski }
299*b1cdbd2cSJim Jagielski 
ModelHasCleared()300*b1cdbd2cSJim Jagielski void __EXPORT SvIconView::ModelHasCleared()
301*b1cdbd2cSJim Jagielski {
302*b1cdbd2cSJim Jagielski 	SvLBox::ModelHasCleared();
303*b1cdbd2cSJim Jagielski 	pImp->Clear();
304*b1cdbd2cSJim Jagielski }
305*b1cdbd2cSJim Jagielski 
ModelHasInserted(SvListEntry * pEntry)306*b1cdbd2cSJim Jagielski void __EXPORT SvIconView::ModelHasInserted( SvListEntry* pEntry )
307*b1cdbd2cSJim Jagielski {
308*b1cdbd2cSJim Jagielski 	if( !(nIcnVwFlags & ICNVW_BLOCK_ENTRYINS ) )
309*b1cdbd2cSJim Jagielski 		pImp->EntryInserted( (SvLBoxEntry*)pEntry );
310*b1cdbd2cSJim Jagielski }
311*b1cdbd2cSJim Jagielski 
ModelHasInsertedTree(SvListEntry * pEntry)312*b1cdbd2cSJim Jagielski void __EXPORT SvIconView::ModelHasInsertedTree( SvListEntry* pEntry )
313*b1cdbd2cSJim Jagielski {
314*b1cdbd2cSJim Jagielski 	pImp->TreeInserted( (SvLBoxEntry*)pEntry );
315*b1cdbd2cSJim Jagielski }
316*b1cdbd2cSJim Jagielski 
ModelIsMoving(SvListEntry * pSource,SvListEntry *,sal_uLong)317*b1cdbd2cSJim Jagielski void __EXPORT SvIconView::ModelIsMoving(SvListEntry* pSource,
318*b1cdbd2cSJim Jagielski 		SvListEntry* /* pTargetParent */ , sal_uLong /* nChildPos */ )
319*b1cdbd2cSJim Jagielski {
320*b1cdbd2cSJim Jagielski 	pImp->MovingEntry( (SvLBoxEntry*)pSource );
321*b1cdbd2cSJim Jagielski }
322*b1cdbd2cSJim Jagielski 
ModelHasMoved(SvListEntry * pSource)323*b1cdbd2cSJim Jagielski void __EXPORT SvIconView::ModelHasMoved(SvListEntry* pSource )
324*b1cdbd2cSJim Jagielski {
325*b1cdbd2cSJim Jagielski 	pImp->EntryMoved( (SvLBoxEntry*)pSource );
326*b1cdbd2cSJim Jagielski }
327*b1cdbd2cSJim Jagielski 
ModelIsRemoving(SvListEntry * pEntry)328*b1cdbd2cSJim Jagielski void __EXPORT SvIconView::ModelIsRemoving( SvListEntry* pEntry )
329*b1cdbd2cSJim Jagielski {
330*b1cdbd2cSJim Jagielski 	pImp->RemovingEntry( (SvLBoxEntry*)pEntry );
331*b1cdbd2cSJim Jagielski 	NotifyRemoving( (SvLBoxEntry*)pEntry );
332*b1cdbd2cSJim Jagielski }
333*b1cdbd2cSJim Jagielski 
ModelHasRemoved(SvListEntry *)334*b1cdbd2cSJim Jagielski void __EXPORT SvIconView::ModelHasRemoved( SvListEntry* /* pEntry */ )
335*b1cdbd2cSJim Jagielski {
336*b1cdbd2cSJim Jagielski 	pImp->EntryRemoved();
337*b1cdbd2cSJim Jagielski }
338*b1cdbd2cSJim Jagielski 
ModelHasEntryInvalidated(SvListEntry * pEntry)339*b1cdbd2cSJim Jagielski void __EXPORT SvIconView::ModelHasEntryInvalidated( SvListEntry* pEntry )
340*b1cdbd2cSJim Jagielski {
341*b1cdbd2cSJim Jagielski 	// die einzelnen Items des Entries reinitialisieren
342*b1cdbd2cSJim Jagielski 	SvLBox::ModelHasEntryInvalidated( pEntry );
343*b1cdbd2cSJim Jagielski 	// painten
344*b1cdbd2cSJim Jagielski 	pImp->ModelHasEntryInvalidated( pEntry );
345*b1cdbd2cSJim Jagielski }
346*b1cdbd2cSJim Jagielski 
ShowTargetEmphasis(SvLBoxEntry * pEntry,sal_Bool bShow)347*b1cdbd2cSJim Jagielski void SvIconView::ShowTargetEmphasis( SvLBoxEntry* pEntry, sal_Bool bShow )
348*b1cdbd2cSJim Jagielski {
349*b1cdbd2cSJim Jagielski 	pImp->ShowTargetEmphasis( pEntry, bShow );
350*b1cdbd2cSJim Jagielski }
351*b1cdbd2cSJim Jagielski 
GetEntryPosition(SvLBoxEntry * pEntry) const352*b1cdbd2cSJim Jagielski Point SvIconView::GetEntryPosition( SvLBoxEntry* pEntry ) const
353*b1cdbd2cSJim Jagielski {
354*b1cdbd2cSJim Jagielski 	return ((SvIconView*)this)->pImp->GetEntryPosition( pEntry );
355*b1cdbd2cSJim Jagielski }
356*b1cdbd2cSJim Jagielski 
SetEntryPosition(SvLBoxEntry * pEntry,const Point & rPos)357*b1cdbd2cSJim Jagielski void SvIconView::SetEntryPosition( SvLBoxEntry* pEntry, const Point& rPos)
358*b1cdbd2cSJim Jagielski {
359*b1cdbd2cSJim Jagielski 	pImp->SetEntryPosition( pEntry, rPos, sal_False, sal_True );
360*b1cdbd2cSJim Jagielski }
361*b1cdbd2cSJim Jagielski 
SetEntryPosition(SvLBoxEntry * pEntry,const Point & rPos,sal_Bool bAdjustAtGrid)362*b1cdbd2cSJim Jagielski void SvIconView::SetEntryPosition( SvLBoxEntry* pEntry, const Point& rPos, sal_Bool bAdjustAtGrid )
363*b1cdbd2cSJim Jagielski {
364*b1cdbd2cSJim Jagielski 	pImp->SetEntryPosition( pEntry, rPos, bAdjustAtGrid );
365*b1cdbd2cSJim Jagielski }
366*b1cdbd2cSJim Jagielski 
SetFont(const Font & rFont)367*b1cdbd2cSJim Jagielski void SvIconView::SetFont( const Font& rFont )
368*b1cdbd2cSJim Jagielski {
369*b1cdbd2cSJim Jagielski 	Font aTempFont( rFont );
370*b1cdbd2cSJim Jagielski 	aTempFont.SetTransparent( sal_True );
371*b1cdbd2cSJim Jagielski 	SvLBox::SetFont( aTempFont );
372*b1cdbd2cSJim Jagielski 	RecalcViewData();
373*b1cdbd2cSJim Jagielski 	pImp->ChangedFont();
374*b1cdbd2cSJim Jagielski }
375*b1cdbd2cSJim Jagielski 
ViewDataInitialized(SvLBoxEntry * pEntry)376*b1cdbd2cSJim Jagielski void SvIconView::ViewDataInitialized( SvLBoxEntry* pEntry )
377*b1cdbd2cSJim Jagielski {
378*b1cdbd2cSJim Jagielski 	pImp->ViewDataInitialized( pEntry );
379*b1cdbd2cSJim Jagielski }
380*b1cdbd2cSJim Jagielski 
GetDropTarget(const Point & rPos)381*b1cdbd2cSJim Jagielski SvLBoxEntry* SvIconView::GetDropTarget( const Point& rPos )
382*b1cdbd2cSJim Jagielski {
383*b1cdbd2cSJim Jagielski 	return pImp->GetDropTarget( rPos );
384*b1cdbd2cSJim Jagielski }
385*b1cdbd2cSJim Jagielski 
GetEntry(const Point & rPixPos,sal_Bool) const386*b1cdbd2cSJim Jagielski SvLBoxEntry* SvIconView::GetEntry( const Point& rPixPos, sal_Bool ) const
387*b1cdbd2cSJim Jagielski {
388*b1cdbd2cSJim Jagielski 	Point aPos( rPixPos );
389*b1cdbd2cSJim Jagielski 	aPos -= GetMapMode().GetOrigin();
390*b1cdbd2cSJim Jagielski 	return ((SvIconView*)this)->pImp->GetEntry( aPos );
391*b1cdbd2cSJim Jagielski }
392*b1cdbd2cSJim Jagielski 
GetEntryFromLogicPos(const Point & rDocPos) const393*b1cdbd2cSJim Jagielski SvLBoxEntry* SvIconView::GetEntryFromLogicPos( const Point& rDocPos ) const
394*b1cdbd2cSJim Jagielski {
395*b1cdbd2cSJim Jagielski 	return ((SvIconView*)this)->pImp->GetEntry( rDocPos );
396*b1cdbd2cSJim Jagielski }
397*b1cdbd2cSJim Jagielski 
398*b1cdbd2cSJim Jagielski 
StateChanged(StateChangedType i_nStateChange)399*b1cdbd2cSJim Jagielski void SvIconView::StateChanged( StateChangedType i_nStateChange )
400*b1cdbd2cSJim Jagielski {
401*b1cdbd2cSJim Jagielski     SvLBox::StateChanged( i_nStateChange );
402*b1cdbd2cSJim Jagielski     if ( i_nStateChange == STATE_CHANGE_STYLE )
403*b1cdbd2cSJim Jagielski 	    pImp->SetStyle( GetStyle() );
404*b1cdbd2cSJim Jagielski }
405*b1cdbd2cSJim Jagielski 
PaintEntry(SvLBoxEntry * pEntry)406*b1cdbd2cSJim Jagielski void SvIconView::PaintEntry( SvLBoxEntry* pEntry )
407*b1cdbd2cSJim Jagielski {
408*b1cdbd2cSJim Jagielski 	pImp->PaintEntry( pEntry );
409*b1cdbd2cSJim Jagielski }
410*b1cdbd2cSJim Jagielski 
411*b1cdbd2cSJim Jagielski 
PaintEntry(SvLBoxEntry * pEntry,const Point & rPos)412*b1cdbd2cSJim Jagielski void SvIconView::PaintEntry( SvLBoxEntry* pEntry, const Point& rPos )
413*b1cdbd2cSJim Jagielski {
414*b1cdbd2cSJim Jagielski 	pImp->PaintEntry( pEntry, rPos );
415*b1cdbd2cSJim Jagielski }
416*b1cdbd2cSJim Jagielski 
GetFocusRect(SvLBoxEntry * pEntry)417*b1cdbd2cSJim Jagielski Rectangle SvIconView::GetFocusRect( SvLBoxEntry* pEntry )
418*b1cdbd2cSJim Jagielski {
419*b1cdbd2cSJim Jagielski 	return pImp->CalcFocusRect( pEntry );
420*b1cdbd2cSJim Jagielski }
421*b1cdbd2cSJim Jagielski 
InvalidateEntry(SvLBoxEntry * pEntry)422*b1cdbd2cSJim Jagielski void SvIconView::InvalidateEntry( SvLBoxEntry* pEntry )
423*b1cdbd2cSJim Jagielski {
424*b1cdbd2cSJim Jagielski 	pImp->InvalidateEntry( pEntry );
425*b1cdbd2cSJim Jagielski }
426*b1cdbd2cSJim Jagielski 
SetDragDropMode(DragDropMode nDDMode)427*b1cdbd2cSJim Jagielski void SvIconView::SetDragDropMode( DragDropMode nDDMode )
428*b1cdbd2cSJim Jagielski {
429*b1cdbd2cSJim Jagielski 	SvLBox::SetDragDropMode( nDDMode );
430*b1cdbd2cSJim Jagielski 	pImp->SetDragDropMode( nDDMode );
431*b1cdbd2cSJim Jagielski }
432*b1cdbd2cSJim Jagielski 
SetSelectionMode(SelectionMode eSelectMode)433*b1cdbd2cSJim Jagielski void SvIconView::SetSelectionMode( SelectionMode eSelectMode )
434*b1cdbd2cSJim Jagielski {
435*b1cdbd2cSJim Jagielski 	SvLBox::SetSelectionMode( eSelectMode );
436*b1cdbd2cSJim Jagielski 	pImp->SetSelectionMode( eSelectMode );
437*b1cdbd2cSJim Jagielski }
438*b1cdbd2cSJim Jagielski 
Select(SvLBoxEntry * pEntry,sal_Bool bSelect)439*b1cdbd2cSJim Jagielski sal_Bool SvIconView::Select( SvLBoxEntry* pEntry, sal_Bool bSelect )
440*b1cdbd2cSJim Jagielski {
441*b1cdbd2cSJim Jagielski 	EndEditing();
442*b1cdbd2cSJim Jagielski 	sal_Bool bRetVal = SvListView::Select( pEntry, bSelect );
443*b1cdbd2cSJim Jagielski 	if( bRetVal )
444*b1cdbd2cSJim Jagielski 	{
445*b1cdbd2cSJim Jagielski 		pImp->EntrySelected( pEntry, bSelect );
446*b1cdbd2cSJim Jagielski 		pHdlEntry = pEntry;
447*b1cdbd2cSJim Jagielski 		SelectHdl();
448*b1cdbd2cSJim Jagielski 	}
449*b1cdbd2cSJim Jagielski 	return bRetVal;
450*b1cdbd2cSJim Jagielski }
451*b1cdbd2cSJim Jagielski 
SelectAll(sal_Bool bSelect,sal_Bool)452*b1cdbd2cSJim Jagielski void SvIconView::SelectAll( sal_Bool bSelect, sal_Bool )
453*b1cdbd2cSJim Jagielski {
454*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry = pImp->GetCurParent();
455*b1cdbd2cSJim Jagielski 	pEntry = FirstChild( pEntry );
456*b1cdbd2cSJim Jagielski 	while( pEntry )
457*b1cdbd2cSJim Jagielski 	{
458*b1cdbd2cSJim Jagielski 		Select( pEntry, bSelect );
459*b1cdbd2cSJim Jagielski 		pEntry = NextSibling( pEntry );
460*b1cdbd2cSJim Jagielski 	}
461*b1cdbd2cSJim Jagielski }
462*b1cdbd2cSJim Jagielski 
SetCurEntry(SvLBoxEntry * _pEntry)463*b1cdbd2cSJim Jagielski void SvIconView::SetCurEntry( SvLBoxEntry* _pEntry )
464*b1cdbd2cSJim Jagielski {
465*b1cdbd2cSJim Jagielski     pImp->SetCursor( _pEntry );
466*b1cdbd2cSJim Jagielski     OnCurrentEntryChanged();
467*b1cdbd2cSJim Jagielski }
468*b1cdbd2cSJim Jagielski 
GetCurEntry() const469*b1cdbd2cSJim Jagielski SvLBoxEntry* SvIconView::GetCurEntry() const
470*b1cdbd2cSJim Jagielski {
471*b1cdbd2cSJim Jagielski 	return pImp->GetCurEntry();
472*b1cdbd2cSJim Jagielski }
473*b1cdbd2cSJim Jagielski 
Arrange()474*b1cdbd2cSJim Jagielski void SvIconView::Arrange()
475*b1cdbd2cSJim Jagielski {
476*b1cdbd2cSJim Jagielski #ifdef DBG_UTIL
477*b1cdbd2cSJim Jagielski 	sal_uInt16 n=1;
478*b1cdbd2cSJim Jagielski 	if( n == 1 && n-1 == 0 )
479*b1cdbd2cSJim Jagielski 	{
480*b1cdbd2cSJim Jagielski 		pImp->Arrange();
481*b1cdbd2cSJim Jagielski 	}
482*b1cdbd2cSJim Jagielski 	else
483*b1cdbd2cSJim Jagielski 	{
484*b1cdbd2cSJim Jagielski 		pImp->AdjustAtGrid();
485*b1cdbd2cSJim Jagielski 	}
486*b1cdbd2cSJim Jagielski #else
487*b1cdbd2cSJim Jagielski 	pImp->Arrange();
488*b1cdbd2cSJim Jagielski #endif
489*b1cdbd2cSJim Jagielski }
490*b1cdbd2cSJim Jagielski 
491*b1cdbd2cSJim Jagielski 
SetSpaceBetweenEntries(long nX,long nY)492*b1cdbd2cSJim Jagielski void SvIconView::SetSpaceBetweenEntries( long nX, long nY )
493*b1cdbd2cSJim Jagielski {
494*b1cdbd2cSJim Jagielski 	pImp->SetSpaceBetweenEntries( nX, nY );
495*b1cdbd2cSJim Jagielski }
496*b1cdbd2cSJim Jagielski 
NotifyMoving(SvLBoxEntry * pTarget,SvLBoxEntry * pEntry,SvLBoxEntry * & rpNewParent,sal_uLong & rNewChildPos)497*b1cdbd2cSJim Jagielski sal_Bool SvIconView::NotifyMoving( SvLBoxEntry* pTarget, SvLBoxEntry* pEntry,
498*b1cdbd2cSJim Jagielski 	SvLBoxEntry*& rpNewParent, sal_uLong& rNewChildPos )
499*b1cdbd2cSJim Jagielski {
500*b1cdbd2cSJim Jagielski 	return pImp->NotifyMoving(pTarget,pEntry,rpNewParent,rNewChildPos);
501*b1cdbd2cSJim Jagielski }
502*b1cdbd2cSJim Jagielski 
NotifyCopying(SvLBoxEntry * pTarget,SvLBoxEntry * pEntry,SvLBoxEntry * & rpNewParent,sal_uLong & rNewChildPos)503*b1cdbd2cSJim Jagielski sal_Bool SvIconView::NotifyCopying( SvLBoxEntry* pTarget, SvLBoxEntry* pEntry,
504*b1cdbd2cSJim Jagielski 	SvLBoxEntry*& rpNewParent, sal_uLong& rNewChildPos )
505*b1cdbd2cSJim Jagielski {
506*b1cdbd2cSJim Jagielski 	return pImp->NotifyCopying(pTarget,pEntry,rpNewParent,rNewChildPos);
507*b1cdbd2cSJim Jagielski }
508*b1cdbd2cSJim Jagielski 
509*b1cdbd2cSJim Jagielski 
EnableInplaceEditing(sal_Bool bEnable)510*b1cdbd2cSJim Jagielski void SvIconView::EnableInplaceEditing( sal_Bool bEnable )
511*b1cdbd2cSJim Jagielski {
512*b1cdbd2cSJim Jagielski 	SvLBox::EnableInplaceEditing( bEnable );
513*b1cdbd2cSJim Jagielski }
514*b1cdbd2cSJim Jagielski 
EditingRequest(SvLBoxEntry * pEntry,SvLBoxItem * pItem,const Point &)515*b1cdbd2cSJim Jagielski void SvIconView::EditingRequest( SvLBoxEntry* pEntry, SvLBoxItem* pItem,
516*b1cdbd2cSJim Jagielski 								 const Point& )
517*b1cdbd2cSJim Jagielski {
518*b1cdbd2cSJim Jagielski 	if ( pItem->IsA() == SV_ITEM_ID_LBOXSTRING )
519*b1cdbd2cSJim Jagielski 	{
520*b1cdbd2cSJim Jagielski 		Selection aSel( SELECTION_MIN, SELECTION_MAX );
521*b1cdbd2cSJim Jagielski 		if ( EditingEntry( pEntry, aSel ) )
522*b1cdbd2cSJim Jagielski 		{
523*b1cdbd2cSJim Jagielski 			SelectAll( sal_False );
524*b1cdbd2cSJim Jagielski 			EditItemText( pEntry, (SvLBoxString*)pItem, aSel );
525*b1cdbd2cSJim Jagielski 		}
526*b1cdbd2cSJim Jagielski 	}
527*b1cdbd2cSJim Jagielski }
528*b1cdbd2cSJim Jagielski 
529*b1cdbd2cSJim Jagielski 
EditItemText(SvLBoxEntry * pEntry,SvLBoxItem * pItem,const Selection & rSel)530*b1cdbd2cSJim Jagielski void SvIconView::EditItemText( SvLBoxEntry* pEntry, SvLBoxItem* pItem,
531*b1cdbd2cSJim Jagielski 	const Selection& rSel )
532*b1cdbd2cSJim Jagielski {
533*b1cdbd2cSJim Jagielski 	DBG_ASSERT(pEntry&&pItem,"EditItemText:Params?");
534*b1cdbd2cSJim Jagielski 	pCurEdEntry = pEntry;
535*b1cdbd2cSJim Jagielski 	pCurEdItem = pItem;
536*b1cdbd2cSJim Jagielski 	Rectangle aRect( pImp->CalcTextRect( pEntry, (SvLBoxString*)pItem,0,sal_True ));
537*b1cdbd2cSJim Jagielski 
538*b1cdbd2cSJim Jagielski 	aRect.Bottom() += 4;
539*b1cdbd2cSJim Jagielski 	pImp->MakeVisible( aRect ); // vor der Umrechnung in Pixel-Koord. rufen!
540*b1cdbd2cSJim Jagielski 	aRect.Bottom() -= 4;
541*b1cdbd2cSJim Jagielski 
542*b1cdbd2cSJim Jagielski 	Point aPos( aRect.TopLeft() );
543*b1cdbd2cSJim Jagielski 	aPos += GetMapMode().GetOrigin(); // Dok-Koord. -> Window-Koord.
544*b1cdbd2cSJim Jagielski 	aRect.SetPos( aPos );
545*b1cdbd2cSJim Jagielski 
546*b1cdbd2cSJim Jagielski 	aRect.Bottom() += 2; // sieht huebscher aus
547*b1cdbd2cSJim Jagielski 
548*b1cdbd2cSJim Jagielski #ifdef OS2
549*b1cdbd2cSJim Jagielski 
550*b1cdbd2cSJim Jagielski #if OS2_SINGLE_LINE_EDIT
551*b1cdbd2cSJim Jagielski 	aRect.Left() -= 3;
552*b1cdbd2cSJim Jagielski 	aRect.Right() += 3;
553*b1cdbd2cSJim Jagielski 	aRect.Top() -= 3;
554*b1cdbd2cSJim Jagielski 	aRect.Bottom() += 3;
555*b1cdbd2cSJim Jagielski #else
556*b1cdbd2cSJim Jagielski 	aRect.Left() -= 10;
557*b1cdbd2cSJim Jagielski 	aRect.Right() += 10;
558*b1cdbd2cSJim Jagielski 	aRect.Top() -= 5;
559*b1cdbd2cSJim Jagielski 	aRect.Bottom() += 5;
560*b1cdbd2cSJim Jagielski #endif
561*b1cdbd2cSJim Jagielski 
562*b1cdbd2cSJim Jagielski #endif // OS2
563*b1cdbd2cSJim Jagielski 	EditText( ((SvLBoxString*)pItem)->GetText(), aRect, rSel, sal_True );
564*b1cdbd2cSJim Jagielski }
565*b1cdbd2cSJim Jagielski 
EditEntry(SvLBoxEntry * pEntry)566*b1cdbd2cSJim Jagielski void SvIconView::EditEntry( SvLBoxEntry* pEntry )
567*b1cdbd2cSJim Jagielski {
568*b1cdbd2cSJim Jagielski 	if( !pEntry )
569*b1cdbd2cSJim Jagielski 		pEntry = pImp->GetCurEntry();
570*b1cdbd2cSJim Jagielski 	if( pEntry )
571*b1cdbd2cSJim Jagielski 	{
572*b1cdbd2cSJim Jagielski 		SvLBoxString* pItem = (SvLBoxString*)(pEntry->GetFirstItem(SV_ITEM_ID_LBOXSTRING));
573*b1cdbd2cSJim Jagielski 		if( pItem )
574*b1cdbd2cSJim Jagielski 		{
575*b1cdbd2cSJim Jagielski 			Selection aSel( SELECTION_MIN, SELECTION_MAX );
576*b1cdbd2cSJim Jagielski 			if( EditingEntry( pEntry, aSel ) )
577*b1cdbd2cSJim Jagielski 			{
578*b1cdbd2cSJim Jagielski 				SelectAll( sal_False );
579*b1cdbd2cSJim Jagielski 				EditItemText( pEntry, pItem, aSel );
580*b1cdbd2cSJim Jagielski 			}
581*b1cdbd2cSJim Jagielski 		}
582*b1cdbd2cSJim Jagielski 	}
583*b1cdbd2cSJim Jagielski }
584*b1cdbd2cSJim Jagielski 
EditedText(const XubString & rStr)585*b1cdbd2cSJim Jagielski void SvIconView::EditedText( const XubString& rStr )
586*b1cdbd2cSJim Jagielski {
587*b1cdbd2cSJim Jagielski 	XubString aRefStr( ((SvLBoxString*)pCurEdItem)->GetText() );
588*b1cdbd2cSJim Jagielski 	if ( EditedEntry( pCurEdEntry, rStr ) )
589*b1cdbd2cSJim Jagielski 	{
590*b1cdbd2cSJim Jagielski 		((SvLBoxString*)pCurEdItem)->SetText( pCurEdEntry, rStr );
591*b1cdbd2cSJim Jagielski 		pModel->InvalidateEntry( pCurEdEntry );
592*b1cdbd2cSJim Jagielski 	}
593*b1cdbd2cSJim Jagielski 	if( GetSelectionMode()==SINGLE_SELECTION && !GetSelectionCount())
594*b1cdbd2cSJim Jagielski 		Select( pCurEdEntry );
595*b1cdbd2cSJim Jagielski }
596*b1cdbd2cSJim Jagielski 
597*b1cdbd2cSJim Jagielski 
EditingEntry(SvLBoxEntry *,Selection &)598*b1cdbd2cSJim Jagielski sal_Bool SvIconView::EditingEntry( SvLBoxEntry*, Selection& )
599*b1cdbd2cSJim Jagielski {
600*b1cdbd2cSJim Jagielski 	return sal_True;
601*b1cdbd2cSJim Jagielski }
602*b1cdbd2cSJim Jagielski 
EditedEntry(SvLBoxEntry *,const XubString &)603*b1cdbd2cSJim Jagielski sal_Bool SvIconView::EditedEntry( SvLBoxEntry*, const XubString& )
604*b1cdbd2cSJim Jagielski {
605*b1cdbd2cSJim Jagielski 	return sal_True;
606*b1cdbd2cSJim Jagielski }
607*b1cdbd2cSJim Jagielski 
608*b1cdbd2cSJim Jagielski 
WriteDragServerInfo(const Point & rPos,SvLBoxDDInfo * pInfo)609*b1cdbd2cSJim Jagielski void SvIconView::WriteDragServerInfo( const Point& rPos, SvLBoxDDInfo* pInfo)
610*b1cdbd2cSJim Jagielski {
611*b1cdbd2cSJim Jagielski 	pImp->WriteDragServerInfo( rPos, pInfo );
612*b1cdbd2cSJim Jagielski }
613*b1cdbd2cSJim Jagielski 
ReadDragServerInfo(const Point & rPos,SvLBoxDDInfo * pInfo)614*b1cdbd2cSJim Jagielski void SvIconView::ReadDragServerInfo( const Point& rPos, SvLBoxDDInfo* pInfo )
615*b1cdbd2cSJim Jagielski {
616*b1cdbd2cSJim Jagielski 	pImp->ReadDragServerInfo( rPos, pInfo );
617*b1cdbd2cSJim Jagielski }
618*b1cdbd2cSJim Jagielski 
Command(const CommandEvent & rCEvt)619*b1cdbd2cSJim Jagielski void SvIconView::Command( const CommandEvent& rCEvt )
620*b1cdbd2cSJim Jagielski {
621*b1cdbd2cSJim Jagielski 	pImp->PrepareCommandEvent( rCEvt.GetMousePosPixel() );
622*b1cdbd2cSJim Jagielski }
623*b1cdbd2cSJim Jagielski 
SetCurParent(SvLBoxEntry * pNewParent)624*b1cdbd2cSJim Jagielski void SvIconView::SetCurParent( SvLBoxEntry* pNewParent )
625*b1cdbd2cSJim Jagielski {
626*b1cdbd2cSJim Jagielski 	if ( pNewParent && pNewParent->HasChildsOnDemand() )
627*b1cdbd2cSJim Jagielski 		RequestingChilds( pNewParent );
628*b1cdbd2cSJim Jagielski 	pImp->SetCurParent( pNewParent );
629*b1cdbd2cSJim Jagielski }
630*b1cdbd2cSJim Jagielski 
GetCurParent() const631*b1cdbd2cSJim Jagielski SvLBoxEntry* SvIconView::GetCurParent() const
632*b1cdbd2cSJim Jagielski {
633*b1cdbd2cSJim Jagielski 	return pImp->GetCurParent();
634*b1cdbd2cSJim Jagielski }
635*b1cdbd2cSJim Jagielski 
CreateViewData(SvListEntry *)636*b1cdbd2cSJim Jagielski SvViewData* SvIconView::CreateViewData( SvListEntry* )
637*b1cdbd2cSJim Jagielski {
638*b1cdbd2cSJim Jagielski 	SvIcnVwDataEntry* pEntryData = new SvIcnVwDataEntry;
639*b1cdbd2cSJim Jagielski 	return (SvViewData*)pEntryData;
640*b1cdbd2cSJim Jagielski }
641*b1cdbd2cSJim Jagielski 
InitViewData(SvViewData * pData,SvListEntry * pEntry)642*b1cdbd2cSJim Jagielski void SvIconView::InitViewData( SvViewData* pData, SvListEntry* pEntry )
643*b1cdbd2cSJim Jagielski {
644*b1cdbd2cSJim Jagielski 	SvLBox::InitViewData( pData, pEntry );
645*b1cdbd2cSJim Jagielski 	pImp->InvalidateBoundingRect( ((SvIcnVwDataEntry*)pData)->aRect );
646*b1cdbd2cSJim Jagielski }
647*b1cdbd2cSJim Jagielski 
GetDragRegion() const648*b1cdbd2cSJim Jagielski Region SvIconView::GetDragRegion() const
649*b1cdbd2cSJim Jagielski {
650*b1cdbd2cSJim Jagielski 	Rectangle aRect;
651*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry = GetCurEntry();
652*b1cdbd2cSJim Jagielski 	if( pEntry )
653*b1cdbd2cSJim Jagielski 		aRect = pImp->GetBoundingRect( pEntry );
654*b1cdbd2cSJim Jagielski 	Region aRegion( aRect );
655*b1cdbd2cSJim Jagielski 	return aRegion;
656*b1cdbd2cSJim Jagielski }
657*b1cdbd2cSJim Jagielski 
GetSelectionCount() const658*b1cdbd2cSJim Jagielski sal_uLong SvIconView::GetSelectionCount() const
659*b1cdbd2cSJim Jagielski {
660*b1cdbd2cSJim Jagielski 	return (sal_uLong)(pImp->GetSelectionCount());
661*b1cdbd2cSJim Jagielski }
662*b1cdbd2cSJim Jagielski 
SetGrid(long nDX,long nDY)663*b1cdbd2cSJim Jagielski void SvIconView::SetGrid( long nDX, long nDY )
664*b1cdbd2cSJim Jagielski {
665*b1cdbd2cSJim Jagielski 	pImp->SetGrid( nDX, nDY );
666*b1cdbd2cSJim Jagielski }
667*b1cdbd2cSJim Jagielski 
ModelNotification(sal_uInt16 nActionId,SvListEntry * pEntry1,SvListEntry * pEntry2,sal_uLong nPos)668*b1cdbd2cSJim Jagielski void SvIconView::ModelNotification( sal_uInt16 nActionId, SvListEntry* pEntry1,
669*b1cdbd2cSJim Jagielski 	SvListEntry* pEntry2, sal_uLong nPos )
670*b1cdbd2cSJim Jagielski {
671*b1cdbd2cSJim Jagielski 	SvLBox::ModelNotification( nActionId, pEntry1, pEntry2, nPos );
672*b1cdbd2cSJim Jagielski 	switch( nActionId )
673*b1cdbd2cSJim Jagielski 	{
674*b1cdbd2cSJim Jagielski 		case LISTACTION_RESORTING:
675*b1cdbd2cSJim Jagielski 			SetUpdateMode( sal_False );
676*b1cdbd2cSJim Jagielski 			break;
677*b1cdbd2cSJim Jagielski 
678*b1cdbd2cSJim Jagielski 		case LISTACTION_RESORTED:
679*b1cdbd2cSJim Jagielski 			SetUpdateMode( sal_True );
680*b1cdbd2cSJim Jagielski 			Arrange();
681*b1cdbd2cSJim Jagielski 			break;
682*b1cdbd2cSJim Jagielski 
683*b1cdbd2cSJim Jagielski 		case LISTACTION_CLEARED:
684*b1cdbd2cSJim Jagielski 			if( IsUpdateMode() )
685*b1cdbd2cSJim Jagielski 				Update();
686*b1cdbd2cSJim Jagielski 			break;
687*b1cdbd2cSJim Jagielski 	}
688*b1cdbd2cSJim Jagielski }
689*b1cdbd2cSJim Jagielski 
690*b1cdbd2cSJim Jagielski 
Scroll(long nDeltaX,long nDeltaY,sal_uInt16)691*b1cdbd2cSJim Jagielski void SvIconView::Scroll( long nDeltaX, long nDeltaY, sal_uInt16 )
692*b1cdbd2cSJim Jagielski {
693*b1cdbd2cSJim Jagielski 	pImp->Scroll( nDeltaX, nDeltaY, sal_False );
694*b1cdbd2cSJim Jagielski }
695*b1cdbd2cSJim Jagielski 
PrepareCommandEvent(const CommandEvent & rCEvt)696*b1cdbd2cSJim Jagielski void SvIconView::PrepareCommandEvent( const CommandEvent& rCEvt )
697*b1cdbd2cSJim Jagielski {
698*b1cdbd2cSJim Jagielski 	pImp->PrepareCommandEvent( rCEvt.GetMousePosPixel() );
699*b1cdbd2cSJim Jagielski }
700*b1cdbd2cSJim Jagielski 
StartDrag(sal_Int8 nAction,const Point & rPos)701*b1cdbd2cSJim Jagielski void SvIconView::StartDrag( sal_Int8 nAction, const Point& rPos )
702*b1cdbd2cSJim Jagielski {
703*b1cdbd2cSJim Jagielski 	pImp->SttDrag( rPos );
704*b1cdbd2cSJim Jagielski 	SvLBoxEntry* pEntry = GetEntry( rPos, sal_True );
705*b1cdbd2cSJim Jagielski 	pImp->mpViewData = pEntry;
706*b1cdbd2cSJim Jagielski 	SvLBox::StartDrag( nAction, rPos );
707*b1cdbd2cSJim Jagielski }
708*b1cdbd2cSJim Jagielski 
DragFinished(sal_Int8)709*b1cdbd2cSJim Jagielski void SvIconView::DragFinished( sal_Int8 )
710*b1cdbd2cSJim Jagielski {
711*b1cdbd2cSJim Jagielski 	pImp->EndDrag();
712*b1cdbd2cSJim Jagielski }
713*b1cdbd2cSJim Jagielski 
AcceptDrop(const AcceptDropEvent & rEvt)714*b1cdbd2cSJim Jagielski sal_Int8 SvIconView::AcceptDrop( const AcceptDropEvent& rEvt )
715*b1cdbd2cSJim Jagielski {
716*b1cdbd2cSJim Jagielski 	if( pImp->mpViewData )
717*b1cdbd2cSJim Jagielski 		pImp->HideDDIcon();
718*b1cdbd2cSJim Jagielski 	sal_Int8 nRet = SvLBox::AcceptDrop( rEvt );
719*b1cdbd2cSJim Jagielski 	if( DND_ACTION_NONE != nRet )
720*b1cdbd2cSJim Jagielski 		pImp->ShowDDIcon( pImp->mpViewData, rEvt.maPosPixel );
721*b1cdbd2cSJim Jagielski 
722*b1cdbd2cSJim Jagielski 	return nRet;
723*b1cdbd2cSJim Jagielski }
724*b1cdbd2cSJim Jagielski 
ExecuteDrop(const ExecuteDropEvent & rEvt)725*b1cdbd2cSJim Jagielski sal_Int8 SvIconView::ExecuteDrop( const ExecuteDropEvent& rEvt )
726*b1cdbd2cSJim Jagielski {
727*b1cdbd2cSJim Jagielski 	if( pImp->mpViewData )
728*b1cdbd2cSJim Jagielski 	{
729*b1cdbd2cSJim Jagielski 		pImp->HideDDIcon();
730*b1cdbd2cSJim Jagielski 		pImp->mpViewData = 0;
731*b1cdbd2cSJim Jagielski 	}
732*b1cdbd2cSJim Jagielski 	return SvLBox::ExecuteDrop( rEvt );
733*b1cdbd2cSJim Jagielski }
734*b1cdbd2cSJim Jagielski 
ShowDDIcon(SvLBoxEntry * pRefEntry,const Point & rPos)735*b1cdbd2cSJim Jagielski void SvIconView::ShowDDIcon( SvLBoxEntry* pRefEntry, const Point& rPos )
736*b1cdbd2cSJim Jagielski {
737*b1cdbd2cSJim Jagielski 	pImp->ShowDDIcon( pRefEntry, rPos );
738*b1cdbd2cSJim Jagielski }
739*b1cdbd2cSJim Jagielski 
HideDDIcon()740*b1cdbd2cSJim Jagielski void SvIconView::HideDDIcon()
741*b1cdbd2cSJim Jagielski {
742*b1cdbd2cSJim Jagielski 	pImp->HideDDIcon();
743*b1cdbd2cSJim Jagielski }
744*b1cdbd2cSJim Jagielski 
HideShowDDIcon(SvLBoxEntry * pRefEntry,const Point & rPos)745*b1cdbd2cSJim Jagielski void SvIconView::HideShowDDIcon( SvLBoxEntry* pRefEntry, const Point& rPos )
746*b1cdbd2cSJim Jagielski {
747*b1cdbd2cSJim Jagielski 	pImp->HideShowDDIcon( pRefEntry, rPos );
748*b1cdbd2cSJim Jagielski }
749*b1cdbd2cSJim Jagielski 
SelectRect(const Rectangle & rRect,sal_Bool bAdd,SvPtrarr * pRects,short nOffs)750*b1cdbd2cSJim Jagielski void SvIconView::SelectRect( const Rectangle& rRect, sal_Bool bAdd,
751*b1cdbd2cSJim Jagielski 	SvPtrarr* pRects, short nOffs )
752*b1cdbd2cSJim Jagielski {
753*b1cdbd2cSJim Jagielski 	pImp->SelectRect( rRect, bAdd, pRects, nOffs );
754*b1cdbd2cSJim Jagielski }
755*b1cdbd2cSJim Jagielski 
CalcScrollOffsets(const Point & rRefPosPixel,long & rX,long & rY,sal_Bool b,sal_uInt16 nBorderWidth)756*b1cdbd2cSJim Jagielski void SvIconView::CalcScrollOffsets( const Point& rRefPosPixel, long& rX, long& rY,
757*b1cdbd2cSJim Jagielski 	sal_Bool b, sal_uInt16 nBorderWidth )
758*b1cdbd2cSJim Jagielski {
759*b1cdbd2cSJim Jagielski 	pImp->CalcScrollOffsets( rRefPosPixel, rX, rY, b, nBorderWidth );
760*b1cdbd2cSJim Jagielski }
761*b1cdbd2cSJim Jagielski 
EndTracking()762*b1cdbd2cSJim Jagielski void SvIconView::EndTracking()
763*b1cdbd2cSJim Jagielski {
764*b1cdbd2cSJim Jagielski 	pImp->EndTracking();
765*b1cdbd2cSJim Jagielski }
766*b1cdbd2cSJim Jagielski 
MakeVisible(SvLBoxEntry * pEntry)767*b1cdbd2cSJim Jagielski void SvIconView::MakeVisible( SvLBoxEntry* pEntry )
768*b1cdbd2cSJim Jagielski {
769*b1cdbd2cSJim Jagielski 	pImp->MakeVisible( pEntry );
770*b1cdbd2cSJim Jagielski }
771*b1cdbd2cSJim Jagielski 
PreparePaint(SvLBoxEntry *)772*b1cdbd2cSJim Jagielski void SvIconView::PreparePaint( SvLBoxEntry* )
773*b1cdbd2cSJim Jagielski {
774*b1cdbd2cSJim Jagielski }
775*b1cdbd2cSJim Jagielski 
AdjustAtGrid(SvLBoxEntry * pEntry)776*b1cdbd2cSJim Jagielski void SvIconView::AdjustAtGrid( SvLBoxEntry* pEntry )
777*b1cdbd2cSJim Jagielski {
778*b1cdbd2cSJim Jagielski 	pImp->AdjustAtGrid( pEntry );
779*b1cdbd2cSJim Jagielski }
780*b1cdbd2cSJim Jagielski 
LockEntryPos(SvLBoxEntry * pEntry,sal_Bool bLock)781*b1cdbd2cSJim Jagielski void SvIconView::LockEntryPos( SvLBoxEntry* pEntry, sal_Bool bLock )
782*b1cdbd2cSJim Jagielski {
783*b1cdbd2cSJim Jagielski 	SvIcnVwDataEntry* pViewData = (SvIcnVwDataEntry*)GetViewData( pEntry );
784*b1cdbd2cSJim Jagielski 	if( bLock )
785*b1cdbd2cSJim Jagielski 		pViewData->SetVwFlags( ICNVW_FLAG_POS_LOCKED );
786*b1cdbd2cSJim Jagielski 	else
787*b1cdbd2cSJim Jagielski 		pViewData->ClearVwFlags( ICNVW_FLAG_POS_LOCKED );
788*b1cdbd2cSJim Jagielski }
789*b1cdbd2cSJim Jagielski 
IsEntryPosLocked(const SvLBoxEntry * pEntry) const790*b1cdbd2cSJim Jagielski sal_Bool SvIconView::IsEntryPosLocked( const SvLBoxEntry* pEntry ) const
791*b1cdbd2cSJim Jagielski {
792*b1cdbd2cSJim Jagielski 	const SvIcnVwDataEntry* pViewData = (const SvIcnVwDataEntry*)GetViewData( (SvListEntry*)pEntry );
793*b1cdbd2cSJim Jagielski 	return pViewData->IsEntryPosLocked();
794*b1cdbd2cSJim Jagielski }
795*b1cdbd2cSJim Jagielski 
SetTextMode(SvIconViewTextMode eMode,SvLBoxEntry * pEntry)796*b1cdbd2cSJim Jagielski void SvIconView::SetTextMode( SvIconViewTextMode eMode, SvLBoxEntry* pEntry )
797*b1cdbd2cSJim Jagielski {
798*b1cdbd2cSJim Jagielski 	pImp->SetTextMode( eMode, pEntry );
799*b1cdbd2cSJim Jagielski }
800*b1cdbd2cSJim Jagielski 
GetTextMode(const SvLBoxEntry * pEntry) const801*b1cdbd2cSJim Jagielski SvIconViewTextMode SvIconView::GetTextMode( const SvLBoxEntry* pEntry ) const
802*b1cdbd2cSJim Jagielski {
803*b1cdbd2cSJim Jagielski 	return pImp->GetTextMode( pEntry );
804*b1cdbd2cSJim Jagielski }
805*b1cdbd2cSJim Jagielski 
GetNextEntry(const Point & rPixPos,SvLBoxEntry * pCurEntry,sal_Bool) const806*b1cdbd2cSJim Jagielski SvLBoxEntry* SvIconView::GetNextEntry( const Point& rPixPos, SvLBoxEntry* pCurEntry, sal_Bool  ) const
807*b1cdbd2cSJim Jagielski {
808*b1cdbd2cSJim Jagielski 	Point aPos( rPixPos );
809*b1cdbd2cSJim Jagielski 	aPos -= GetMapMode().GetOrigin();
810*b1cdbd2cSJim Jagielski 	return ((SvIconView*)this)->pImp->GetNextEntry( aPos, pCurEntry );
811*b1cdbd2cSJim Jagielski }
812*b1cdbd2cSJim Jagielski 
GetPrevEntry(const Point & rPixPos,SvLBoxEntry * pCurEntry,sal_Bool) const813*b1cdbd2cSJim Jagielski SvLBoxEntry* SvIconView::GetPrevEntry( const Point& rPixPos, SvLBoxEntry* pCurEntry, sal_Bool  ) const
814*b1cdbd2cSJim Jagielski {
815*b1cdbd2cSJim Jagielski 	Point aPos( rPixPos );
816*b1cdbd2cSJim Jagielski 	aPos -= GetMapMode().GetOrigin();
817*b1cdbd2cSJim Jagielski 	return ((SvIconView*)this)->pImp->GetPrevEntry( aPos, pCurEntry );
818*b1cdbd2cSJim Jagielski }
819*b1cdbd2cSJim Jagielski 
ShowFocusRect(const SvLBoxEntry * pEntry)820*b1cdbd2cSJim Jagielski void SvIconView::ShowFocusRect( const SvLBoxEntry* pEntry )
821*b1cdbd2cSJim Jagielski {
822*b1cdbd2cSJim Jagielski 	pImp->ShowFocusRect( pEntry );
823*b1cdbd2cSJim Jagielski }
824*b1cdbd2cSJim Jagielski 
825*b1cdbd2cSJim Jagielski 
826