| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_svtools.hxx" |
| |
| #include <svtools/svlbox.hxx> |
| #include <svtools/svicnvw.hxx> |
| #include <svimpicn.hxx> |
| #include <svtools/svlbitm.hxx> |
| |
| #ifndef GCC |
| #endif |
| |
| #define ICNVW_BLOCK_ENTRYINS 0x0001 |
| |
| SvIcnVwDataEntry::SvIcnVwDataEntry() |
| : nIcnVwFlags(0),eTextMode(ShowTextDontKnow) |
| { |
| } |
| |
| SvIcnVwDataEntry::~SvIcnVwDataEntry() |
| { |
| } |
| |
| SvIconView::SvIconView( Window* pParent, WinBits nWinStyle ) : |
| SvLBox( pParent, nWinStyle | WB_BORDER ) |
| { |
| nIcnVwFlags = 0; |
| pImp = new SvImpIconView( this, GetModel(), nWinStyle | WB_ICON ); |
| pImp->mpViewData = 0; |
| SetSelectionMode( SINGLE_SELECTION ); |
| SetLineColor(); |
| const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); |
| SetBackground( Wallpaper( rStyleSettings.GetFieldColor() ) ); |
| SetDefaultFont(); |
| } |
| |
| SvIconView::SvIconView( Window* pParent , const ResId& rResId ) : |
| SvLBox( pParent, rResId ) |
| { |
| pImp = new SvImpIconView( this, GetModel(), WB_BORDER | WB_ICON ); |
| nIcnVwFlags = 0; |
| pImp->mpViewData = 0; |
| SetLineColor(); |
| const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings(); |
| SetBackground( Wallpaper( rStyleSettings.GetFieldColor() ) ); |
| SetDefaultFont(); |
| pImp->SetSelectionMode( GetSelectionMode() ); |
| } |
| |
| SvIconView::~SvIconView() |
| { |
| delete pImp; |
| } |
| |
| void SvIconView::SetDefaultFont() |
| { |
| SetFont( GetFont() ); |
| } |
| |
| SvLBoxEntry* SvIconView::CreateEntry( const XubString& rStr, |
| const Image& rCollEntryBmp, const Image& rExpEntryBmp ) |
| { |
| SvLBoxEntry* pEntry = new SvLBoxEntry; |
| |
| SvLBoxContextBmp* pContextBmp = |
| new SvLBoxContextBmp( pEntry,0, rCollEntryBmp,rExpEntryBmp, 0xffff ); |
| pEntry->AddItem( pContextBmp ); |
| |
| SvLBoxString* pString = new SvLBoxString( pEntry, 0, rStr ); |
| pEntry->AddItem( pString ); |
| |
| return pEntry; |
| } |
| |
| void SvIconView::DisconnectFromModel() |
| { |
| SvLBox::DisconnectFromModel(); |
| pImp->SetModel( GetModel(), 0 ); |
| } |
| |
| |
| SvLBoxEntry* SvIconView::InsertEntry( const XubString& rText, |
| SvLBoxEntry* pParent, sal_Bool bChildsOnDemand, sal_uLong nPos ) |
| { |
| SvLBoxEntry* pEntry = CreateEntry( |
| rText, aCollapsedEntryBmp, aExpandedEntryBmp ); |
| pEntry->EnableChildsOnDemand( bChildsOnDemand ); |
| |
| if ( !pParent ) |
| SvLBox::Insert( pEntry, nPos ); |
| else |
| SvLBox::Insert( pEntry, pParent, nPos ); |
| return pEntry; |
| } |
| |
| SvLBoxEntry* SvIconView::InsertEntry( const XubString& rText, |
| const Image& rExpEntryBmp, |
| const Image& rCollEntryBmp, |
| SvLBoxEntry* pParent, sal_Bool bChildsOnDemand, sal_uLong nPos) |
| { |
| SvLBoxEntry* pEntry = CreateEntry( |
| rText, rCollEntryBmp, rExpEntryBmp ); |
| |
| pEntry->EnableChildsOnDemand( bChildsOnDemand ); |
| if ( !pParent ) |
| SvLBox::Insert( pEntry, nPos ); |
| else |
| SvLBox::Insert( pEntry, pParent, nPos ); |
| return pEntry; |
| } |
| |
| |
| void SvIconView::SetEntryText(SvLBoxEntry* pEntry, const XubString& rStr) |
| { |
| SvLBoxString* pItem = (SvLBoxString*)(pEntry->GetFirstItem(SV_ITEM_ID_LBOXSTRING)); |
| if ( pItem ) |
| { |
| pItem->SetText( pEntry, rStr ); |
| GetModel()->InvalidateEntry( pEntry ); |
| } |
| } |
| |
| void SvIconView::SetExpandedEntryBmp(SvLBoxEntry* pEntry, const Image& rBmp) |
| { |
| SvLBoxContextBmp* pItem = (SvLBoxContextBmp*)(pEntry->GetFirstItem(SV_ITEM_ID_LBOXCONTEXTBMP)); |
| if ( pItem ) |
| { |
| pItem->SetBitmap2( rBmp ); |
| GetModel()->InvalidateEntry( pEntry ); |
| } |
| } |
| |
| void SvIconView::SetCollapsedEntryBmp(SvLBoxEntry* pEntry, |
| const Image& rBmp ) |
| { |
| SvLBoxContextBmp* pItem = (SvLBoxContextBmp*)(pEntry->GetFirstItem(SV_ITEM_ID_LBOXCONTEXTBMP)); |
| if ( pItem ) |
| { |
| pItem->SetBitmap1( rBmp ); |
| GetModel()->InvalidateEntry( pEntry ); |
| } |
| } |
| |
| XubString SvIconView::GetEntryText(SvLBoxEntry* pEntry ) const |
| { |
| XubString aStr; |
| SvLBoxString* pItem = (SvLBoxString*)(pEntry->GetFirstItem(SV_ITEM_ID_LBOXSTRING)); |
| if ( pItem ) |
| aStr = pItem->GetText(); |
| return aStr; |
| } |
| |
| Image SvIconView::GetExpandedEntryBmp(SvLBoxEntry* pEntry) const |
| { |
| Image aBmp; |
| SvLBoxContextBmp* pItem = (SvLBoxContextBmp*)(pEntry->GetFirstItem(SV_ITEM_ID_LBOXCONTEXTBMP)); |
| if ( pItem ) |
| aBmp = pItem->GetBitmap2(); |
| return aBmp; |
| } |
| |
| Image SvIconView::GetCollapsedEntryBmp(SvLBoxEntry* pEntry) const |
| { |
| Image aBmp; |
| SvLBoxContextBmp* pItem = (SvLBoxContextBmp*)(pEntry->GetFirstItem(SV_ITEM_ID_LBOXCONTEXTBMP)); |
| if ( pItem ) |
| aBmp = pItem->GetBitmap1(); |
| return aBmp; |
| } |
| |
| |
| SvLBoxEntry* SvIconView::CloneEntry( SvLBoxEntry* pSource ) |
| { |
| XubString aStr; |
| Image aCollEntryBmp; |
| Image aExpEntryBmp; |
| |
| SvLBoxString* pStringItem = (SvLBoxString*)(pSource->GetFirstItem(SV_ITEM_ID_LBOXSTRING)); |
| if ( pStringItem ) |
| aStr = pStringItem->GetText(); |
| SvLBoxContextBmp* pBmpItem =(SvLBoxContextBmp*)(pSource->GetFirstItem(SV_ITEM_ID_LBOXCONTEXTBMP)); |
| if ( pBmpItem ) |
| { |
| aCollEntryBmp = pBmpItem->GetBitmap1(); |
| aExpEntryBmp = pBmpItem->GetBitmap2(); |
| } |
| SvLBoxEntry* pEntry = CreateEntry( aStr, aCollEntryBmp, aExpEntryBmp ); |
| pEntry->SvListEntry::Clone( pSource ); |
| pEntry->EnableChildsOnDemand( pSource->HasChildsOnDemand() ); |
| pEntry->SetUserData( pSource->GetUserData() ); |
| return pEntry; |
| } |
| |
| |
| sal_uInt16 SvIconView::IsA() |
| { |
| return SV_LISTBOX_ID_ICONVIEW; |
| } |
| |
| void SvIconView::RequestingChilds( SvLBoxEntry* pParent ) |
| { |
| if ( !pParent->HasChilds() ) |
| InsertEntry( String::CreateFromAscii("<dummy>"), pParent, sal_False, LIST_APPEND ); |
| } |
| |
| void __EXPORT SvIconView::Paint( const Rectangle& rRect ) |
| { |
| pImp->Paint( rRect ); |
| } |
| |
| void __EXPORT SvIconView::MouseButtonDown( const MouseEvent& rMEvt ) |
| { |
| pImp->MouseButtonDown( rMEvt ); |
| } |
| |
| void __EXPORT SvIconView::MouseButtonUp( const MouseEvent& rMEvt ) |
| { |
| pImp->MouseButtonUp( rMEvt ); |
| } |
| |
| void __EXPORT SvIconView::MouseMove( const MouseEvent& rMEvt ) |
| { |
| pImp->MouseMove( rMEvt ); |
| } |
| |
| void __EXPORT SvIconView::KeyInput( const KeyEvent& rKEvt ) |
| { |
| // unter OS/2 bekommen wir auch beim Editieren Key-Up/Down |
| if( IsEditingActive() ) |
| return; |
| |
| nImpFlags |= SVLBOX_IS_TRAVELSELECT; |
| sal_Bool bKeyUsed = pImp->KeyInput( rKEvt ); |
| if ( !bKeyUsed ) |
| SvLBox::KeyInput( rKEvt ); |
| nImpFlags &= ~SVLBOX_IS_TRAVELSELECT; |
| } |
| |
| void __EXPORT SvIconView::Resize() |
| { |
| pImp->Resize(); |
| SvLBox::Resize(); |
| } |
| |
| void __EXPORT SvIconView::GetFocus() |
| { |
| pImp->GetFocus(); |
| SvLBox::GetFocus(); |
| } |
| |
| void __EXPORT SvIconView::LoseFocus() |
| { |
| pImp->LoseFocus(); |
| SvLBox::LoseFocus(); |
| } |
| |
| void SvIconView::SetUpdateMode( sal_Bool bUpdate ) |
| { |
| Control::SetUpdateMode( bUpdate ); |
| if ( bUpdate ) |
| pImp->UpdateAll(); |
| } |
| |
| void SvIconView::SetModel( SvLBoxTreeList* ) |
| { |
| } |
| |
| void SvIconView::SetModel( SvLBoxTreeList* pNewModel, SvLBoxEntry* pParent ) |
| { |
| nIcnVwFlags |= ICNVW_BLOCK_ENTRYINS; |
| SvLBox::SetModel( pNewModel ); |
| nIcnVwFlags &= (~ICNVW_BLOCK_ENTRYINS); |
| if ( pParent && pParent->HasChildsOnDemand() ) |
| RequestingChilds( pParent ); |
| pImp->SetModel( pNewModel, pParent ); |
| } |
| |
| void __EXPORT SvIconView::ModelHasCleared() |
| { |
| SvLBox::ModelHasCleared(); |
| pImp->Clear(); |
| } |
| |
| void __EXPORT SvIconView::ModelHasInserted( SvListEntry* pEntry ) |
| { |
| if( !(nIcnVwFlags & ICNVW_BLOCK_ENTRYINS ) ) |
| pImp->EntryInserted( (SvLBoxEntry*)pEntry ); |
| } |
| |
| void __EXPORT SvIconView::ModelHasInsertedTree( SvListEntry* pEntry ) |
| { |
| pImp->TreeInserted( (SvLBoxEntry*)pEntry ); |
| } |
| |
| void __EXPORT SvIconView::ModelIsMoving(SvListEntry* pSource, |
| SvListEntry* /* pTargetParent */ , sal_uLong /* nChildPos */ ) |
| { |
| pImp->MovingEntry( (SvLBoxEntry*)pSource ); |
| } |
| |
| void __EXPORT SvIconView::ModelHasMoved(SvListEntry* pSource ) |
| { |
| pImp->EntryMoved( (SvLBoxEntry*)pSource ); |
| } |
| |
| void __EXPORT SvIconView::ModelIsRemoving( SvListEntry* pEntry ) |
| { |
| pImp->RemovingEntry( (SvLBoxEntry*)pEntry ); |
| NotifyRemoving( (SvLBoxEntry*)pEntry ); |
| } |
| |
| void __EXPORT SvIconView::ModelHasRemoved( SvListEntry* /* pEntry */ ) |
| { |
| pImp->EntryRemoved(); |
| } |
| |
| void __EXPORT SvIconView::ModelHasEntryInvalidated( SvListEntry* pEntry ) |
| { |
| // die einzelnen Items des Entries reinitialisieren |
| SvLBox::ModelHasEntryInvalidated( pEntry ); |
| // painten |
| pImp->ModelHasEntryInvalidated( pEntry ); |
| } |
| |
| void SvIconView::ShowTargetEmphasis( SvLBoxEntry* pEntry, sal_Bool bShow ) |
| { |
| pImp->ShowTargetEmphasis( pEntry, bShow ); |
| } |
| |
| Point SvIconView::GetEntryPosition( SvLBoxEntry* pEntry ) const |
| { |
| return ((SvIconView*)this)->pImp->GetEntryPosition( pEntry ); |
| } |
| |
| void SvIconView::SetEntryPosition( SvLBoxEntry* pEntry, const Point& rPos) |
| { |
| pImp->SetEntryPosition( pEntry, rPos, sal_False, sal_True ); |
| } |
| |
| void SvIconView::SetEntryPosition( SvLBoxEntry* pEntry, const Point& rPos, sal_Bool bAdjustAtGrid ) |
| { |
| pImp->SetEntryPosition( pEntry, rPos, bAdjustAtGrid ); |
| } |
| |
| void SvIconView::SetFont( const Font& rFont ) |
| { |
| Font aTempFont( rFont ); |
| aTempFont.SetTransparent( sal_True ); |
| SvLBox::SetFont( aTempFont ); |
| RecalcViewData(); |
| pImp->ChangedFont(); |
| } |
| |
| void SvIconView::ViewDataInitialized( SvLBoxEntry* pEntry ) |
| { |
| pImp->ViewDataInitialized( pEntry ); |
| } |
| |
| SvLBoxEntry* SvIconView::GetDropTarget( const Point& rPos ) |
| { |
| return pImp->GetDropTarget( rPos ); |
| } |
| |
| SvLBoxEntry* SvIconView::GetEntry( const Point& rPixPos, sal_Bool ) const |
| { |
| Point aPos( rPixPos ); |
| aPos -= GetMapMode().GetOrigin(); |
| return ((SvIconView*)this)->pImp->GetEntry( aPos ); |
| } |
| |
| SvLBoxEntry* SvIconView::GetEntryFromLogicPos( const Point& rDocPos ) const |
| { |
| return ((SvIconView*)this)->pImp->GetEntry( rDocPos ); |
| } |
| |
| |
| void SvIconView::StateChanged( StateChangedType i_nStateChange ) |
| { |
| SvLBox::StateChanged( i_nStateChange ); |
| if ( i_nStateChange == STATE_CHANGE_STYLE ) |
| pImp->SetStyle( GetStyle() ); |
| } |
| |
| void SvIconView::PaintEntry( SvLBoxEntry* pEntry ) |
| { |
| pImp->PaintEntry( pEntry ); |
| } |
| |
| |
| void SvIconView::PaintEntry( SvLBoxEntry* pEntry, const Point& rPos ) |
| { |
| pImp->PaintEntry( pEntry, rPos ); |
| } |
| |
| Rectangle SvIconView::GetFocusRect( SvLBoxEntry* pEntry ) |
| { |
| return pImp->CalcFocusRect( pEntry ); |
| } |
| |
| void SvIconView::InvalidateEntry( SvLBoxEntry* pEntry ) |
| { |
| pImp->InvalidateEntry( pEntry ); |
| } |
| |
| void SvIconView::SetDragDropMode( DragDropMode nDDMode ) |
| { |
| SvLBox::SetDragDropMode( nDDMode ); |
| pImp->SetDragDropMode( nDDMode ); |
| } |
| |
| void SvIconView::SetSelectionMode( SelectionMode eSelectMode ) |
| { |
| SvLBox::SetSelectionMode( eSelectMode ); |
| pImp->SetSelectionMode( eSelectMode ); |
| } |
| |
| sal_Bool SvIconView::Select( SvLBoxEntry* pEntry, sal_Bool bSelect ) |
| { |
| EndEditing(); |
| sal_Bool bRetVal = SvListView::Select( pEntry, bSelect ); |
| if( bRetVal ) |
| { |
| pImp->EntrySelected( pEntry, bSelect ); |
| pHdlEntry = pEntry; |
| SelectHdl(); |
| } |
| return bRetVal; |
| } |
| |
| void SvIconView::SelectAll( sal_Bool bSelect, sal_Bool ) |
| { |
| SvLBoxEntry* pEntry = pImp->GetCurParent(); |
| pEntry = FirstChild( pEntry ); |
| while( pEntry ) |
| { |
| Select( pEntry, bSelect ); |
| pEntry = NextSibling( pEntry ); |
| } |
| } |
| |
| void SvIconView::SetCurEntry( SvLBoxEntry* _pEntry ) |
| { |
| pImp->SetCursor( _pEntry ); |
| OnCurrentEntryChanged(); |
| } |
| |
| SvLBoxEntry* SvIconView::GetCurEntry() const |
| { |
| return pImp->GetCurEntry(); |
| } |
| |
| void SvIconView::Arrange() |
| { |
| #ifdef DBG_UTIL |
| sal_uInt16 n=1; |
| if( n == 1 && n-1 == 0 ) |
| { |
| pImp->Arrange(); |
| } |
| else |
| { |
| pImp->AdjustAtGrid(); |
| } |
| #else |
| pImp->Arrange(); |
| #endif |
| } |
| |
| |
| void SvIconView::SetSpaceBetweenEntries( long nX, long nY ) |
| { |
| pImp->SetSpaceBetweenEntries( nX, nY ); |
| } |
| |
| sal_Bool SvIconView::NotifyMoving( SvLBoxEntry* pTarget, SvLBoxEntry* pEntry, |
| SvLBoxEntry*& rpNewParent, sal_uLong& rNewChildPos ) |
| { |
| return pImp->NotifyMoving(pTarget,pEntry,rpNewParent,rNewChildPos); |
| } |
| |
| sal_Bool SvIconView::NotifyCopying( SvLBoxEntry* pTarget, SvLBoxEntry* pEntry, |
| SvLBoxEntry*& rpNewParent, sal_uLong& rNewChildPos ) |
| { |
| return pImp->NotifyCopying(pTarget,pEntry,rpNewParent,rNewChildPos); |
| } |
| |
| |
| void SvIconView::EnableInplaceEditing( sal_Bool bEnable ) |
| { |
| SvLBox::EnableInplaceEditing( bEnable ); |
| } |
| |
| void SvIconView::EditingRequest( SvLBoxEntry* pEntry, SvLBoxItem* pItem, |
| const Point& ) |
| { |
| if ( pItem->IsA() == SV_ITEM_ID_LBOXSTRING ) |
| { |
| Selection aSel( SELECTION_MIN, SELECTION_MAX ); |
| if ( EditingEntry( pEntry, aSel ) ) |
| { |
| SelectAll( sal_False ); |
| EditItemText( pEntry, (SvLBoxString*)pItem, aSel ); |
| } |
| } |
| } |
| |
| |
| void SvIconView::EditItemText( SvLBoxEntry* pEntry, SvLBoxItem* pItem, |
| const Selection& rSel ) |
| { |
| DBG_ASSERT(pEntry&&pItem,"EditItemText:Params?"); |
| pCurEdEntry = pEntry; |
| pCurEdItem = pItem; |
| Rectangle aRect( pImp->CalcTextRect( pEntry, (SvLBoxString*)pItem,0,sal_True )); |
| |
| aRect.Bottom() += 4; |
| pImp->MakeVisible( aRect ); // vor der Umrechnung in Pixel-Koord. rufen! |
| aRect.Bottom() -= 4; |
| |
| Point aPos( aRect.TopLeft() ); |
| aPos += GetMapMode().GetOrigin(); // Dok-Koord. -> Window-Koord. |
| aRect.SetPos( aPos ); |
| |
| aRect.Bottom() += 2; // sieht huebscher aus |
| |
| #ifdef OS2 |
| |
| #if OS2_SINGLE_LINE_EDIT |
| aRect.Left() -= 3; |
| aRect.Right() += 3; |
| aRect.Top() -= 3; |
| aRect.Bottom() += 3; |
| #else |
| aRect.Left() -= 10; |
| aRect.Right() += 10; |
| aRect.Top() -= 5; |
| aRect.Bottom() += 5; |
| #endif |
| |
| #endif // OS2 |
| EditText( ((SvLBoxString*)pItem)->GetText(), aRect, rSel, sal_True ); |
| } |
| |
| void SvIconView::EditEntry( SvLBoxEntry* pEntry ) |
| { |
| if( !pEntry ) |
| pEntry = pImp->GetCurEntry(); |
| if( pEntry ) |
| { |
| SvLBoxString* pItem = (SvLBoxString*)(pEntry->GetFirstItem(SV_ITEM_ID_LBOXSTRING)); |
| if( pItem ) |
| { |
| Selection aSel( SELECTION_MIN, SELECTION_MAX ); |
| if( EditingEntry( pEntry, aSel ) ) |
| { |
| SelectAll( sal_False ); |
| EditItemText( pEntry, pItem, aSel ); |
| } |
| } |
| } |
| } |
| |
| void SvIconView::EditedText( const XubString& rStr ) |
| { |
| XubString aRefStr( ((SvLBoxString*)pCurEdItem)->GetText() ); |
| if ( EditedEntry( pCurEdEntry, rStr ) ) |
| { |
| ((SvLBoxString*)pCurEdItem)->SetText( pCurEdEntry, rStr ); |
| pModel->InvalidateEntry( pCurEdEntry ); |
| } |
| if( GetSelectionMode()==SINGLE_SELECTION && !GetSelectionCount()) |
| Select( pCurEdEntry ); |
| } |
| |
| |
| sal_Bool SvIconView::EditingEntry( SvLBoxEntry*, Selection& ) |
| { |
| return sal_True; |
| } |
| |
| sal_Bool SvIconView::EditedEntry( SvLBoxEntry*, const XubString& ) |
| { |
| return sal_True; |
| } |
| |
| |
| void SvIconView::WriteDragServerInfo( const Point& rPos, SvLBoxDDInfo* pInfo) |
| { |
| pImp->WriteDragServerInfo( rPos, pInfo ); |
| } |
| |
| void SvIconView::ReadDragServerInfo( const Point& rPos, SvLBoxDDInfo* pInfo ) |
| { |
| pImp->ReadDragServerInfo( rPos, pInfo ); |
| } |
| |
| void SvIconView::Command( const CommandEvent& rCEvt ) |
| { |
| pImp->PrepareCommandEvent( rCEvt.GetMousePosPixel() ); |
| } |
| |
| void SvIconView::SetCurParent( SvLBoxEntry* pNewParent ) |
| { |
| if ( pNewParent && pNewParent->HasChildsOnDemand() ) |
| RequestingChilds( pNewParent ); |
| pImp->SetCurParent( pNewParent ); |
| } |
| |
| SvLBoxEntry* SvIconView::GetCurParent() const |
| { |
| return pImp->GetCurParent(); |
| } |
| |
| SvViewData* SvIconView::CreateViewData( SvListEntry* ) |
| { |
| SvIcnVwDataEntry* pEntryData = new SvIcnVwDataEntry; |
| return (SvViewData*)pEntryData; |
| } |
| |
| void SvIconView::InitViewData( SvViewData* pData, SvListEntry* pEntry ) |
| { |
| SvLBox::InitViewData( pData, pEntry ); |
| pImp->InvalidateBoundingRect( ((SvIcnVwDataEntry*)pData)->aRect ); |
| } |
| |
| Region SvIconView::GetDragRegion() const |
| { |
| Rectangle aRect; |
| SvLBoxEntry* pEntry = GetCurEntry(); |
| if( pEntry ) |
| aRect = pImp->GetBoundingRect( pEntry ); |
| Region aRegion( aRect ); |
| return aRegion; |
| } |
| |
| sal_uLong SvIconView::GetSelectionCount() const |
| { |
| return (sal_uLong)(pImp->GetSelectionCount()); |
| } |
| |
| void SvIconView::SetGrid( long nDX, long nDY ) |
| { |
| pImp->SetGrid( nDX, nDY ); |
| } |
| |
| void SvIconView::ModelNotification( sal_uInt16 nActionId, SvListEntry* pEntry1, |
| SvListEntry* pEntry2, sal_uLong nPos ) |
| { |
| SvLBox::ModelNotification( nActionId, pEntry1, pEntry2, nPos ); |
| switch( nActionId ) |
| { |
| case LISTACTION_RESORTING: |
| SetUpdateMode( sal_False ); |
| break; |
| |
| case LISTACTION_RESORTED: |
| SetUpdateMode( sal_True ); |
| Arrange(); |
| break; |
| |
| case LISTACTION_CLEARED: |
| if( IsUpdateMode() ) |
| Update(); |
| break; |
| } |
| } |
| |
| |
| void SvIconView::Scroll( long nDeltaX, long nDeltaY, sal_uInt16 ) |
| { |
| pImp->Scroll( nDeltaX, nDeltaY, sal_False ); |
| } |
| |
| void SvIconView::PrepareCommandEvent( const CommandEvent& rCEvt ) |
| { |
| pImp->PrepareCommandEvent( rCEvt.GetMousePosPixel() ); |
| } |
| |
| void SvIconView::StartDrag( sal_Int8 nAction, const Point& rPos ) |
| { |
| pImp->SttDrag( rPos ); |
| SvLBoxEntry* pEntry = GetEntry( rPos, sal_True ); |
| pImp->mpViewData = pEntry; |
| SvLBox::StartDrag( nAction, rPos ); |
| } |
| |
| void SvIconView::DragFinished( sal_Int8 ) |
| { |
| pImp->EndDrag(); |
| } |
| |
| sal_Int8 SvIconView::AcceptDrop( const AcceptDropEvent& rEvt ) |
| { |
| if( pImp->mpViewData ) |
| pImp->HideDDIcon(); |
| sal_Int8 nRet = SvLBox::AcceptDrop( rEvt ); |
| if( DND_ACTION_NONE != nRet ) |
| pImp->ShowDDIcon( pImp->mpViewData, rEvt.maPosPixel ); |
| |
| return nRet; |
| } |
| |
| sal_Int8 SvIconView::ExecuteDrop( const ExecuteDropEvent& rEvt ) |
| { |
| if( pImp->mpViewData ) |
| { |
| pImp->HideDDIcon(); |
| pImp->mpViewData = 0; |
| } |
| return SvLBox::ExecuteDrop( rEvt ); |
| } |
| |
| void SvIconView::ShowDDIcon( SvLBoxEntry* pRefEntry, const Point& rPos ) |
| { |
| pImp->ShowDDIcon( pRefEntry, rPos ); |
| } |
| |
| void SvIconView::HideDDIcon() |
| { |
| pImp->HideDDIcon(); |
| } |
| |
| void SvIconView::HideShowDDIcon( SvLBoxEntry* pRefEntry, const Point& rPos ) |
| { |
| pImp->HideShowDDIcon( pRefEntry, rPos ); |
| } |
| |
| void SvIconView::SelectRect( const Rectangle& rRect, sal_Bool bAdd, |
| SvPtrarr* pRects, short nOffs ) |
| { |
| pImp->SelectRect( rRect, bAdd, pRects, nOffs ); |
| } |
| |
| void SvIconView::CalcScrollOffsets( const Point& rRefPosPixel, long& rX, long& rY, |
| sal_Bool b, sal_uInt16 nBorderWidth ) |
| { |
| pImp->CalcScrollOffsets( rRefPosPixel, rX, rY, b, nBorderWidth ); |
| } |
| |
| void SvIconView::EndTracking() |
| { |
| pImp->EndTracking(); |
| } |
| |
| void SvIconView::MakeVisible( SvLBoxEntry* pEntry ) |
| { |
| pImp->MakeVisible( pEntry ); |
| } |
| |
| void SvIconView::PreparePaint( SvLBoxEntry* ) |
| { |
| } |
| |
| void SvIconView::AdjustAtGrid( SvLBoxEntry* pEntry ) |
| { |
| pImp->AdjustAtGrid( pEntry ); |
| } |
| |
| void SvIconView::LockEntryPos( SvLBoxEntry* pEntry, sal_Bool bLock ) |
| { |
| SvIcnVwDataEntry* pViewData = (SvIcnVwDataEntry*)GetViewData( pEntry ); |
| if( bLock ) |
| pViewData->SetVwFlags( ICNVW_FLAG_POS_LOCKED ); |
| else |
| pViewData->ClearVwFlags( ICNVW_FLAG_POS_LOCKED ); |
| } |
| |
| sal_Bool SvIconView::IsEntryPosLocked( const SvLBoxEntry* pEntry ) const |
| { |
| const SvIcnVwDataEntry* pViewData = (const SvIcnVwDataEntry*)GetViewData( (SvListEntry*)pEntry ); |
| return pViewData->IsEntryPosLocked(); |
| } |
| |
| void SvIconView::SetTextMode( SvIconViewTextMode eMode, SvLBoxEntry* pEntry ) |
| { |
| pImp->SetTextMode( eMode, pEntry ); |
| } |
| |
| SvIconViewTextMode SvIconView::GetTextMode( const SvLBoxEntry* pEntry ) const |
| { |
| return pImp->GetTextMode( pEntry ); |
| } |
| |
| SvLBoxEntry* SvIconView::GetNextEntry( const Point& rPixPos, SvLBoxEntry* pCurEntry, sal_Bool ) const |
| { |
| Point aPos( rPixPos ); |
| aPos -= GetMapMode().GetOrigin(); |
| return ((SvIconView*)this)->pImp->GetNextEntry( aPos, pCurEntry ); |
| } |
| |
| SvLBoxEntry* SvIconView::GetPrevEntry( const Point& rPixPos, SvLBoxEntry* pCurEntry, sal_Bool ) const |
| { |
| Point aPos( rPixPos ); |
| aPos -= GetMapMode().GetOrigin(); |
| return ((SvIconView*)this)->pImp->GetPrevEntry( aPos, pCurEntry ); |
| } |
| |
| void SvIconView::ShowFocusRect( const SvLBoxEntry* pEntry ) |
| { |
| pImp->ShowFocusRect( pEntry ); |
| } |
| |
| |