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 10*f6e50924SAndrew Rist * 11*f6e50924SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*f6e50924SAndrew Rist * 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. 19*f6e50924SAndrew Rist * 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 <sot/formats.hxx> 29cdf0e10cSrcweir #include <vcl/msgbox.hxx> 30cdf0e10cSrcweir #include <svtools/valueset.hxx> 31cdf0e10cSrcweir #include <svl/urlbmk.hxx> 32cdf0e10cSrcweir #include <svl/stritem.hxx> 33cdf0e10cSrcweir #include <svl/intitem.hxx> 34cdf0e10cSrcweir #include <svl/eitem.hxx> 35cdf0e10cSrcweir #include <svtools/transfer.hxx> 36cdf0e10cSrcweir #include <sfx2/bindings.hxx> 37cdf0e10cSrcweir #include <sfx2/dispatch.hxx> 38cdf0e10cSrcweir #include <sfx2/viewfrm.hxx> 39cdf0e10cSrcweir #include <sfx2/sfxsids.hrc> 40cdf0e10cSrcweir #include "svtools/filter.hxx" 41cdf0e10cSrcweir #include <editeng/brshitem.hxx> 42cdf0e10cSrcweir #include "helpid.hrc" 43cdf0e10cSrcweir #include "svx/gallery.hxx" 44cdf0e10cSrcweir #include "galobj.hxx" 45cdf0e10cSrcweir #include "svx/gallery1.hxx" 46cdf0e10cSrcweir #include "svx/galtheme.hxx" 47cdf0e10cSrcweir #include "svx/galctrl.hxx" 48cdf0e10cSrcweir #include "svx/galmisc.hxx" 49cdf0e10cSrcweir #include "galbrws2.hxx" 50cdf0e10cSrcweir #include "gallery.hrc" 51cdf0e10cSrcweir #include <vcl/svapp.hxx> 52cdf0e10cSrcweir #include <svx/fmmodel.hxx> 53cdf0e10cSrcweir #include <svx/dialmgr.hxx> 54cdf0e10cSrcweir #include <svx/svxdlg.hxx> 55cdf0e10cSrcweir #include <svx/dialogs.hrc> 56cdf0e10cSrcweir 57cdf0e10cSrcweir // ----------- 58cdf0e10cSrcweir // - Defines - 59cdf0e10cSrcweir // ----------- 60cdf0e10cSrcweir 61cdf0e10cSrcweir #undef GALLERY_USE_CLIPBOARD 62cdf0e10cSrcweir 63cdf0e10cSrcweir #define TBX_ID_ICON 1 64cdf0e10cSrcweir #define TBX_ID_LIST 2 65cdf0e10cSrcweir 66cdf0e10cSrcweir // ----------- 67cdf0e10cSrcweir // - statics - 68cdf0e10cSrcweir // ----------- 69cdf0e10cSrcweir 70cdf0e10cSrcweir GalleryBrowserMode GalleryBrowser2::meInitMode = GALLERYBROWSERMODE_ICON; 71cdf0e10cSrcweir 72cdf0e10cSrcweir // -------------------------- 73cdf0e10cSrcweir // - GalleryBackgroundPopup - 74cdf0e10cSrcweir // -------------------------- 75cdf0e10cSrcweir 76cdf0e10cSrcweir class GalleryBackgroundPopup : public PopupMenu, public SfxControllerItem 77cdf0e10cSrcweir { 78cdf0e10cSrcweir const GalleryTheme* mpTheme; 79cdf0e10cSrcweir sal_uIntPtr mnObjectPos; 80cdf0e10cSrcweir 81cdf0e10cSrcweir virtual void Select(); 82cdf0e10cSrcweir virtual void StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ); 83cdf0e10cSrcweir 84cdf0e10cSrcweir public: 85cdf0e10cSrcweir 86cdf0e10cSrcweir GalleryBackgroundPopup( const GalleryTheme* pTheme, sal_uIntPtr nObjectPos ); 87cdf0e10cSrcweir ~GalleryBackgroundPopup(); 88cdf0e10cSrcweir }; 89cdf0e10cSrcweir 90cdf0e10cSrcweir // ------------------------------------------------------------------------ 91cdf0e10cSrcweir DBG_NAME(GalleryBackgroundPopup) 92cdf0e10cSrcweir 93cdf0e10cSrcweir GalleryBackgroundPopup::GalleryBackgroundPopup( const GalleryTheme* pTheme, sal_uIntPtr nObjectPos ) : 94cdf0e10cSrcweir SfxControllerItem ( SID_GALLERY_BG_BRUSH, SfxViewFrame::Current()->GetBindings() ), 95cdf0e10cSrcweir mpTheme ( pTheme ), 96cdf0e10cSrcweir mnObjectPos ( nObjectPos ) 97cdf0e10cSrcweir { 98cdf0e10cSrcweir DBG_CTOR(GalleryBackgroundPopup,NULL); 99cdf0e10cSrcweir 100cdf0e10cSrcweir SfxViewFrame::Current()->GetBindings().Update( SID_GALLERY_BG_BRUSH ); 101cdf0e10cSrcweir RemoveDisabledEntries(); 102cdf0e10cSrcweir } 103cdf0e10cSrcweir 104cdf0e10cSrcweir // ------------------------------------------------------------------------ 105cdf0e10cSrcweir 106cdf0e10cSrcweir GalleryBackgroundPopup::~GalleryBackgroundPopup() 107cdf0e10cSrcweir { 108cdf0e10cSrcweir 109cdf0e10cSrcweir DBG_DTOR(GalleryBackgroundPopup,NULL); 110cdf0e10cSrcweir } 111cdf0e10cSrcweir 112cdf0e10cSrcweir // ------------------------------------------------------------------------ 113cdf0e10cSrcweir 114cdf0e10cSrcweir void GalleryBackgroundPopup::StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pItem ) 115cdf0e10cSrcweir { 116cdf0e10cSrcweir if ( ( nSID == SID_GALLERY_BG_BRUSH ) && pItem && ( eState != SFX_ITEM_DISABLED ) ) 117cdf0e10cSrcweir { 118cdf0e10cSrcweir SfxStringListItem* pStrLstItem; 119cdf0e10cSrcweir SfxStringItem* pStrItem; 120cdf0e10cSrcweir 121cdf0e10cSrcweir PopupMenu::Clear(); 122cdf0e10cSrcweir 123cdf0e10cSrcweir if( ( pStrLstItem = PTR_CAST( SfxStringListItem, pItem ) ) != NULL ) 124cdf0e10cSrcweir { 125cdf0e10cSrcweir List* pList = pStrLstItem->GetList(); 126cdf0e10cSrcweir 127cdf0e10cSrcweir if( pList ) 128cdf0e10cSrcweir for ( sal_uIntPtr i = 0, nCount = pList->Count(); i < nCount; i++ ) 129cdf0e10cSrcweir InsertItem( (sal_uInt16) i + 1, *(String*) pList->GetObject( i ) ); 130cdf0e10cSrcweir } 131cdf0e10cSrcweir else if( ( pStrItem = PTR_CAST( SfxStringItem, pItem ) ) != NULL ) 132cdf0e10cSrcweir InsertItem( 1, pStrItem->GetValue() ); 133cdf0e10cSrcweir else 134cdf0e10cSrcweir { 135cdf0e10cSrcweir DBG_ERROR( "SgaBGPopup::StateChanged(...): Wrong item type!" ); 136cdf0e10cSrcweir } 137cdf0e10cSrcweir } 138cdf0e10cSrcweir } 139cdf0e10cSrcweir 140cdf0e10cSrcweir // ------------------------------------------------------------------------ 141cdf0e10cSrcweir 142cdf0e10cSrcweir void GalleryBackgroundPopup::Select() 143cdf0e10cSrcweir { 144cdf0e10cSrcweir Menu::Select(); 145cdf0e10cSrcweir 146cdf0e10cSrcweir const INetURLObject aURL( mpTheme->GetObjectURL( mnObjectPos ) ); 147cdf0e10cSrcweir const SvxBrushItem aBrushItem( aURL.GetMainURL( INetURLObject::NO_DECODE ), String(), GPOS_TILED, SID_GALLERY_BG_BRUSH ); 148cdf0e10cSrcweir const SfxUInt16Item aPosItem( SID_GALLERY_BG_POS, GetCurItemId() - 1 ); 149cdf0e10cSrcweir const SfxStringItem aPathItem( SID_FILE_NAME, aURL.GetMainURL( INetURLObject::NO_DECODE ) ); 150cdf0e10cSrcweir 151cdf0e10cSrcweir SfxViewFrame::Current()->GetBindings().GetDispatcher()->Execute( SID_GALLERY_BG_BRUSH, 152cdf0e10cSrcweir SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, 153cdf0e10cSrcweir &aBrushItem, &aPosItem, &aPathItem, 0L ); 154cdf0e10cSrcweir } 155cdf0e10cSrcweir 156cdf0e10cSrcweir // --------------------- 157cdf0e10cSrcweir // - GalleryThemePopup - 158cdf0e10cSrcweir // --------------------- 159cdf0e10cSrcweir 160cdf0e10cSrcweir class GalleryThemePopup : public PopupMenu, public SfxControllerItem 161cdf0e10cSrcweir { 162cdf0e10cSrcweir GalleryBackgroundPopup maBackgroundPopup; 163cdf0e10cSrcweir const GalleryTheme* mpTheme; 164cdf0e10cSrcweir sal_uIntPtr mnObjectPos; 165cdf0e10cSrcweir sal_Bool mbPreview; 166cdf0e10cSrcweir 167cdf0e10cSrcweir virtual void StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ); 168cdf0e10cSrcweir 169cdf0e10cSrcweir public: 170cdf0e10cSrcweir 171cdf0e10cSrcweir GalleryThemePopup( const GalleryTheme* pTheme, sal_uIntPtr nObjectPos, sal_Bool bPreview ); 172cdf0e10cSrcweir ~GalleryThemePopup(); 173cdf0e10cSrcweir }; 174cdf0e10cSrcweir 175cdf0e10cSrcweir // ------------------------------------------------------------------------ 176cdf0e10cSrcweir DBG_NAME(GalleryThemePopup) 177cdf0e10cSrcweir 178cdf0e10cSrcweir GalleryThemePopup::GalleryThemePopup( const GalleryTheme* pTheme, sal_uIntPtr nObjectPos, sal_Bool bPreview ) : 179cdf0e10cSrcweir PopupMenu ( GAL_RESID( RID_SVXMN_GALLERY2 ) ), 180cdf0e10cSrcweir SfxControllerItem ( SID_GALLERY_ENABLE_ADDCOPY, SfxViewFrame::Current()->GetBindings() ), 181cdf0e10cSrcweir maBackgroundPopup ( pTheme, nObjectPos ), 182cdf0e10cSrcweir mpTheme ( pTheme ), 183cdf0e10cSrcweir mnObjectPos ( nObjectPos ), 184cdf0e10cSrcweir mbPreview ( bPreview ) 185cdf0e10cSrcweir { 186cdf0e10cSrcweir DBG_CTOR(GalleryThemePopup,NULL); 187cdf0e10cSrcweir 188cdf0e10cSrcweir const SgaObjKind eObjKind = mpTheme->GetObjectKind( mnObjectPos ); 189cdf0e10cSrcweir PopupMenu* pAddMenu = GetPopupMenu( MN_ADDMENU ); 190cdf0e10cSrcweir SfxBindings& rBindings = SfxViewFrame::Current()->GetBindings(); 191cdf0e10cSrcweir INetURLObject aURL; 192cdf0e10cSrcweir 193cdf0e10cSrcweir const_cast< GalleryTheme* >( mpTheme )->GetURL( mnObjectPos, aURL ); 194cdf0e10cSrcweir const sal_Bool bValidURL = ( aURL.GetProtocol() != INET_PROT_NOT_VALID ); 195cdf0e10cSrcweir 196cdf0e10cSrcweir pAddMenu->EnableItem( MN_ADD, bValidURL && SGA_OBJ_SOUND != eObjKind ); 197cdf0e10cSrcweir pAddMenu->EnableItem( MN_ADD_LINK, bValidURL && SGA_OBJ_SVDRAW != eObjKind ); 198cdf0e10cSrcweir 199cdf0e10cSrcweir EnableItem( MN_ADDMENU, pAddMenu->IsItemEnabled( MN_ADD ) || pAddMenu->IsItemEnabled( MN_ADD_LINK ) ); 200cdf0e10cSrcweir EnableItem( MN_PREVIEW, bValidURL ); 201cdf0e10cSrcweir 202cdf0e10cSrcweir CheckItem( MN_PREVIEW, mbPreview ); 203cdf0e10cSrcweir 204cdf0e10cSrcweir if( mpTheme->IsReadOnly() || !mpTheme->GetObjectCount() ) 205cdf0e10cSrcweir { 206cdf0e10cSrcweir EnableItem( MN_DELETE, sal_False ); 207cdf0e10cSrcweir EnableItem( MN_TITLE, sal_False ); 208cdf0e10cSrcweir 209cdf0e10cSrcweir if( mpTheme->IsReadOnly() ) 210cdf0e10cSrcweir EnableItem( MN_PASTECLIPBOARD, sal_False ); 211cdf0e10cSrcweir 212cdf0e10cSrcweir if( !mpTheme->GetObjectCount() ) 213cdf0e10cSrcweir EnableItem( MN_COPYCLIPBOARD, sal_False ); 214cdf0e10cSrcweir } 215cdf0e10cSrcweir else 216cdf0e10cSrcweir { 217cdf0e10cSrcweir EnableItem( MN_DELETE, !bPreview ); 218cdf0e10cSrcweir EnableItem( MN_TITLE, sal_True ); 219cdf0e10cSrcweir EnableItem( MN_COPYCLIPBOARD, sal_True ); 220cdf0e10cSrcweir EnableItem( MN_PASTECLIPBOARD, sal_True ); 221cdf0e10cSrcweir } 222cdf0e10cSrcweir 223cdf0e10cSrcweir #ifdef GALLERY_USE_CLIPBOARD 224cdf0e10cSrcweir if( IsItemEnabled( MN_PASTECLIPBOARD ) ) 225cdf0e10cSrcweir { 226cdf0e10cSrcweir TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( this ) ); 227cdf0e10cSrcweir sal_Bool bEnable = sal_False; 228cdf0e10cSrcweir 229cdf0e10cSrcweir if( aDataHelper.GetFormatCount() ) 230cdf0e10cSrcweir { 231cdf0e10cSrcweir if( aDataHelper.HasFormat( SOT_FORMATSTR_ID_DRAWING ) || 232cdf0e10cSrcweir aDataHelper.HasFormat( SOT_FORMAT_FILE_LIST ) || 233cdf0e10cSrcweir aDataHelper.HasFormat( FORMAT_FILE ) || 234cdf0e10cSrcweir aDataHelper.HasFormat( SOT_FORMATSTR_ID_SVXB ) || 235cdf0e10cSrcweir aDataHelper.HasFormat( FORMAT_GDIMETAFILE ) || 236cdf0e10cSrcweir aDataHelper.HasFormat( FORMAT_BITMAP ) ) 237cdf0e10cSrcweir { 238cdf0e10cSrcweir bEnable = sal_True; 239cdf0e10cSrcweir } 240cdf0e10cSrcweir } 241cdf0e10cSrcweir 242cdf0e10cSrcweir if( !bEnable ) 243cdf0e10cSrcweir EnableItem( MN_PASTECLIPBOARD, sal_False ); 244cdf0e10cSrcweir } 245cdf0e10cSrcweir #else 246cdf0e10cSrcweir EnableItem( MN_COPYCLIPBOARD, sal_False ); 247cdf0e10cSrcweir EnableItem( MN_PASTECLIPBOARD, sal_False ); 248cdf0e10cSrcweir #endif 249cdf0e10cSrcweir 250cdf0e10cSrcweir if( !maBackgroundPopup.GetItemCount() || ( eObjKind == SGA_OBJ_SVDRAW ) || ( eObjKind == SGA_OBJ_SOUND ) ) 251cdf0e10cSrcweir pAddMenu->EnableItem( MN_BACKGROUND, sal_False ); 252cdf0e10cSrcweir else 253cdf0e10cSrcweir { 254cdf0e10cSrcweir pAddMenu->EnableItem( MN_BACKGROUND, sal_True ); 255cdf0e10cSrcweir pAddMenu->SetPopupMenu( MN_BACKGROUND, &maBackgroundPopup ); 256cdf0e10cSrcweir } 257cdf0e10cSrcweir 258cdf0e10cSrcweir rBindings.Update( SID_GALLERY_ENABLE_ADDCOPY ); 259cdf0e10cSrcweir RemoveDisabledEntries(); 260cdf0e10cSrcweir } 261cdf0e10cSrcweir 262cdf0e10cSrcweir // ------------------------------------------------------------------------ 263cdf0e10cSrcweir 264cdf0e10cSrcweir GalleryThemePopup::~GalleryThemePopup() 265cdf0e10cSrcweir { 266cdf0e10cSrcweir 267cdf0e10cSrcweir DBG_DTOR(GalleryThemePopup,NULL); 268cdf0e10cSrcweir } 269cdf0e10cSrcweir 270cdf0e10cSrcweir // ------------------------------------------------------------------------ 271cdf0e10cSrcweir 272cdf0e10cSrcweir void GalleryThemePopup::StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pItem ) 273cdf0e10cSrcweir { 274cdf0e10cSrcweir if( ( nSID == SID_GALLERY_ENABLE_ADDCOPY ) && pItem && ( eState != SFX_ITEM_DISABLED ) ) 275cdf0e10cSrcweir { 276cdf0e10cSrcweir SfxBoolItem* pBoolItem = PTR_CAST( SfxBoolItem, pItem ); 277cdf0e10cSrcweir const SgaObjKind eObjKind = mpTheme->GetObjectKind( mnObjectPos ); 278cdf0e10cSrcweir 279cdf0e10cSrcweir DBG_ASSERT( pBoolItem || pBoolItem == 0, "SfxBoolItem erwartet!"); 280cdf0e10cSrcweir 281cdf0e10cSrcweir GetPopupMenu( MN_ADDMENU )->EnableItem( MN_ADD, pBoolItem->GetValue() && ( eObjKind != SGA_OBJ_SOUND ) ); 282cdf0e10cSrcweir } 283cdf0e10cSrcweir } 284cdf0e10cSrcweir 285cdf0e10cSrcweir // ------------------ 286cdf0e10cSrcweir // - GalleryToolBox - 287cdf0e10cSrcweir // ------------------ 288cdf0e10cSrcweir DBG_NAME(GalleryToolBox) 289cdf0e10cSrcweir 290cdf0e10cSrcweir GalleryToolBox::GalleryToolBox( GalleryBrowser2* pParent ) : 291cdf0e10cSrcweir ToolBox( pParent, WB_TABSTOP ) 292cdf0e10cSrcweir { 293cdf0e10cSrcweir DBG_CTOR(GalleryToolBox,NULL); 294cdf0e10cSrcweir 295cdf0e10cSrcweir } 296cdf0e10cSrcweir 297cdf0e10cSrcweir // ------------------------------------------------------------------------ 298cdf0e10cSrcweir 299cdf0e10cSrcweir GalleryToolBox::~GalleryToolBox() 300cdf0e10cSrcweir { 301cdf0e10cSrcweir 302cdf0e10cSrcweir DBG_DTOR(GalleryToolBox,NULL); 303cdf0e10cSrcweir } 304cdf0e10cSrcweir 305cdf0e10cSrcweir // ------------------------------------------------------------------------ 306cdf0e10cSrcweir 307cdf0e10cSrcweir void GalleryToolBox::KeyInput( const KeyEvent& rKEvt ) 308cdf0e10cSrcweir { 309cdf0e10cSrcweir if( !static_cast< GalleryBrowser2* >( GetParent() )->KeyInput( rKEvt, this ) ) 310cdf0e10cSrcweir ToolBox::KeyInput( rKEvt ); 311cdf0e10cSrcweir } 312cdf0e10cSrcweir 313cdf0e10cSrcweir // ------------------- 314cdf0e10cSrcweir // - GalleryBrowser2 - 315cdf0e10cSrcweir // ------------------- 316cdf0e10cSrcweir DBG_NAME(GalleryBrowser2) 317cdf0e10cSrcweir 318cdf0e10cSrcweir GalleryBrowser2::GalleryBrowser2( GalleryBrowser* pParent, const ResId& rResId, Gallery* pGallery ) : 319cdf0e10cSrcweir Control ( pParent, rResId ), 320cdf0e10cSrcweir mpGallery ( pGallery ), 321cdf0e10cSrcweir mpCurTheme ( NULL ), 322cdf0e10cSrcweir mpIconView ( new GalleryIconView( this, NULL ) ), 323cdf0e10cSrcweir mpListView ( new GalleryListView( this, NULL ) ), 324cdf0e10cSrcweir mpPreview ( new GalleryPreview( this, NULL ) ), 325cdf0e10cSrcweir maViewBox ( this ), 326cdf0e10cSrcweir maSeparator ( this, WB_VERT ), 327cdf0e10cSrcweir maInfoBar ( this, WB_LEFT | WB_VCENTER ), 328cdf0e10cSrcweir mnCurActionPos ( 0xffffffff ), 329cdf0e10cSrcweir meMode ( GALLERYBROWSERMODE_NONE ), 330cdf0e10cSrcweir meLastMode ( GALLERYBROWSERMODE_NONE ), 331cdf0e10cSrcweir mbCurActionIsLinkage( sal_False ) 332cdf0e10cSrcweir { 333cdf0e10cSrcweir DBG_CTOR(GalleryBrowser2,NULL); 334cdf0e10cSrcweir 335cdf0e10cSrcweir Image aDummyImage; 336cdf0e10cSrcweir const Link aSelectHdl( LINK( this, GalleryBrowser2, SelectObjectHdl ) ); 337cdf0e10cSrcweir Font aInfoFont( maInfoBar.GetControlFont() ); 338cdf0e10cSrcweir 339cdf0e10cSrcweir maMiscOptions.AddListenerLink( LINK( this, GalleryBrowser2, MiscHdl ) ); 340cdf0e10cSrcweir 341cdf0e10cSrcweir maViewBox.InsertItem( TBX_ID_ICON, aDummyImage ); 342cdf0e10cSrcweir maViewBox.SetItemBits( TBX_ID_ICON, TIB_RADIOCHECK | TIB_AUTOCHECK ); 343cdf0e10cSrcweir maViewBox.SetHelpId( TBX_ID_ICON, HID_GALLERY_ICONVIEW ); 344cdf0e10cSrcweir maViewBox.SetQuickHelpText( TBX_ID_ICON, String( GAL_RESID( RID_SVXSTR_GALLERY_ICONVIEW ) ) ); 345cdf0e10cSrcweir 346cdf0e10cSrcweir maViewBox.InsertItem( TBX_ID_LIST, aDummyImage ); 347cdf0e10cSrcweir maViewBox.SetItemBits( TBX_ID_LIST, TIB_RADIOCHECK | TIB_AUTOCHECK ); 348cdf0e10cSrcweir maViewBox.SetHelpId( TBX_ID_LIST, HID_GALLERY_LISTVIEW ); 349cdf0e10cSrcweir maViewBox.SetQuickHelpText( TBX_ID_LIST, String( GAL_RESID( RID_SVXSTR_GALLERY_LISTVIEW ) ) ); 350cdf0e10cSrcweir 351cdf0e10cSrcweir maViewBox.SetBorder( 0, 1 ); 352cdf0e10cSrcweir MiscHdl( NULL ); 353cdf0e10cSrcweir maViewBox.SetSelectHdl( LINK( this, GalleryBrowser2, SelectTbxHdl ) ); 354cdf0e10cSrcweir maViewBox.Show(); 355cdf0e10cSrcweir 356cdf0e10cSrcweir mpIconView->SetAccessibleName(String( SVX_RES( RID_SVXSTR_GALLERY_THEMEITEMS ) )); 357cdf0e10cSrcweir mpListView->SetAccessibleName(String( SVX_RES( RID_SVXSTR_GALLERY_THEMEITEMS ) )); 358cdf0e10cSrcweir 359cdf0e10cSrcweir maInfoBar.Show(); 360cdf0e10cSrcweir maSeparator.Show(); 361cdf0e10cSrcweir 362cdf0e10cSrcweir mpIconView->SetSelectHdl( aSelectHdl ); 363cdf0e10cSrcweir mpListView->SetSelectHdl( aSelectHdl ); 364cdf0e10cSrcweir 365cdf0e10cSrcweir InitSettings(); 366cdf0e10cSrcweir 367cdf0e10cSrcweir SetMode( ( GALLERYBROWSERMODE_PREVIEW != GalleryBrowser2::meInitMode ) ? GalleryBrowser2::meInitMode : GALLERYBROWSERMODE_ICON ); 368cdf0e10cSrcweir 369cdf0e10cSrcweir if(maInfoBar.GetText().Len() == 0) 370cdf0e10cSrcweir mpIconView->SetAccessibleRelationLabeledBy(mpIconView); 371cdf0e10cSrcweir else 372cdf0e10cSrcweir mpIconView->SetAccessibleRelationLabeledBy(&maInfoBar); 373cdf0e10cSrcweir mpIconView->SetAccessibleRelationMemberOf(mpIconView); 374cdf0e10cSrcweir } 375cdf0e10cSrcweir 376cdf0e10cSrcweir // ----------------------------------------------------------------------------- 377cdf0e10cSrcweir 378cdf0e10cSrcweir GalleryBrowser2::~GalleryBrowser2() 379cdf0e10cSrcweir { 380cdf0e10cSrcweir maMiscOptions.RemoveListenerLink( LINK( this, GalleryBrowser2, MiscHdl ) ); 381cdf0e10cSrcweir 382cdf0e10cSrcweir delete mpPreview; 383cdf0e10cSrcweir delete mpListView; 384cdf0e10cSrcweir delete mpIconView; 385cdf0e10cSrcweir 386cdf0e10cSrcweir if( mpCurTheme ) 387cdf0e10cSrcweir mpGallery->ReleaseTheme( mpCurTheme, *this ); 388cdf0e10cSrcweir 389cdf0e10cSrcweir DBG_DTOR(GalleryBrowser2,NULL); 390cdf0e10cSrcweir } 391cdf0e10cSrcweir 392cdf0e10cSrcweir // ----------------------------------------------------------------------------- 393cdf0e10cSrcweir 394cdf0e10cSrcweir void GalleryBrowser2::InitSettings() 395cdf0e10cSrcweir { 396cdf0e10cSrcweir Font aInfoFont( maInfoBar.GetControlFont() ); 397cdf0e10cSrcweir 398cdf0e10cSrcweir aInfoFont.SetWeight( WEIGHT_BOLD ); 399cdf0e10cSrcweir aInfoFont.SetColor( GALLERY_FG_COLOR ); 400cdf0e10cSrcweir maInfoBar.SetControlFont( aInfoFont ); 401cdf0e10cSrcweir 402cdf0e10cSrcweir maInfoBar.SetBackground( Wallpaper( GALLERY_DLG_COLOR ) ); 403cdf0e10cSrcweir maInfoBar.SetControlBackground( GALLERY_DLG_COLOR ); 404cdf0e10cSrcweir 405cdf0e10cSrcweir maSeparator.SetBackground( Wallpaper( GALLERY_BG_COLOR ) ); 406cdf0e10cSrcweir maSeparator.SetControlBackground( GALLERY_BG_COLOR ); 407cdf0e10cSrcweir maSeparator.SetControlForeground( GALLERY_FG_COLOR ); 408cdf0e10cSrcweir } 409cdf0e10cSrcweir 410cdf0e10cSrcweir // ----------------------------------------------------------------------------- 411cdf0e10cSrcweir 412cdf0e10cSrcweir void GalleryBrowser2::DataChanged( const DataChangedEvent& rDCEvt ) 413cdf0e10cSrcweir { 414cdf0e10cSrcweir if ( ( rDCEvt.GetType() == DATACHANGED_SETTINGS ) && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) ) 415cdf0e10cSrcweir InitSettings(); 416cdf0e10cSrcweir else 417cdf0e10cSrcweir Control::DataChanged( rDCEvt ); 418cdf0e10cSrcweir } 419cdf0e10cSrcweir 420cdf0e10cSrcweir // ----------------------------------------------------------------------------- 421cdf0e10cSrcweir 422cdf0e10cSrcweir void GalleryBrowser2::Resize() 423cdf0e10cSrcweir { 424cdf0e10cSrcweir Control::Resize(); 425cdf0e10cSrcweir 426cdf0e10cSrcweir mpIconView->Hide(); 427cdf0e10cSrcweir mpListView->Hide(); 428cdf0e10cSrcweir mpPreview->Hide(); 429cdf0e10cSrcweir 430cdf0e10cSrcweir const Size aOutSize( GetOutputSizePixel() ); 431cdf0e10cSrcweir const Size aBoxSize( maViewBox.GetOutputSizePixel() ); 432cdf0e10cSrcweir const long nOffset = 2, nSepWidth = 2; 433cdf0e10cSrcweir const long nInfoBarX = aBoxSize.Width() + ( nOffset * 3 ) + nSepWidth; 434cdf0e10cSrcweir const Point aPt( 0, aBoxSize.Height() + 3 ); 435cdf0e10cSrcweir const Size aSz( aOutSize.Width(), aOutSize.Height() - aPt.Y() ); 436cdf0e10cSrcweir 437cdf0e10cSrcweir maSeparator.SetPosSizePixel( Point( aBoxSize.Width() + nOffset, 0 ), Size( nSepWidth, aBoxSize.Height() ) ); 438cdf0e10cSrcweir maInfoBar.SetPosSizePixel( Point( nInfoBarX, 0 ), Size( aOutSize.Width() - nInfoBarX, aBoxSize.Height() ) ); 439cdf0e10cSrcweir 440cdf0e10cSrcweir mpIconView->SetPosSizePixel( aPt, aSz ); 441cdf0e10cSrcweir mpListView->SetPosSizePixel( aPt, aSz ); 442cdf0e10cSrcweir mpPreview->SetPosSizePixel( aPt, aSz ); 443cdf0e10cSrcweir 444cdf0e10cSrcweir switch( GetMode() ) 445cdf0e10cSrcweir { 446cdf0e10cSrcweir case( GALLERYBROWSERMODE_ICON ): mpIconView->Show(); break; 447cdf0e10cSrcweir case( GALLERYBROWSERMODE_LIST ): mpListView->Show(); break; 448cdf0e10cSrcweir case( GALLERYBROWSERMODE_PREVIEW ): mpPreview->Show(); break; 449cdf0e10cSrcweir 450cdf0e10cSrcweir default: 451cdf0e10cSrcweir break; 452cdf0e10cSrcweir } 453cdf0e10cSrcweir } 454cdf0e10cSrcweir 455cdf0e10cSrcweir // ----------------------------------------------------------------------------- 456cdf0e10cSrcweir 457cdf0e10cSrcweir void GalleryBrowser2::Notify( SfxBroadcaster&, const SfxHint& rHint ) 458cdf0e10cSrcweir { 459cdf0e10cSrcweir const GalleryHint& rGalleryHint = (const GalleryHint&) rHint; 460cdf0e10cSrcweir 461cdf0e10cSrcweir switch( rGalleryHint.GetType() ) 462cdf0e10cSrcweir { 463cdf0e10cSrcweir case( GALLERY_HINT_THEME_UPDATEVIEW ): 464cdf0e10cSrcweir { 465cdf0e10cSrcweir if( GALLERYBROWSERMODE_PREVIEW == GetMode() ) 466cdf0e10cSrcweir SetMode( meLastMode ); 467cdf0e10cSrcweir 468cdf0e10cSrcweir ImplUpdateViews( (sal_uInt16) rGalleryHint.GetData1() + 1 ); 469cdf0e10cSrcweir } 470cdf0e10cSrcweir break; 471cdf0e10cSrcweir 472cdf0e10cSrcweir default: 473cdf0e10cSrcweir break; 474cdf0e10cSrcweir } 475cdf0e10cSrcweir } 476cdf0e10cSrcweir 477cdf0e10cSrcweir // ----------------------------------------------------------------------------- 478cdf0e10cSrcweir 479cdf0e10cSrcweir sal_Int8 GalleryBrowser2::AcceptDrop( DropTargetHelper& rTarget, const AcceptDropEvent& ) 480cdf0e10cSrcweir { 481cdf0e10cSrcweir sal_Int8 nRet = DND_ACTION_NONE; 482cdf0e10cSrcweir 483cdf0e10cSrcweir if( mpCurTheme && !mpCurTheme->IsReadOnly() && !mpCurTheme ->IsImported() ) 484cdf0e10cSrcweir { 485cdf0e10cSrcweir if( !mpCurTheme->IsDragging() ) 486cdf0e10cSrcweir { 487cdf0e10cSrcweir if( rTarget.IsDropFormatSupported( SOT_FORMATSTR_ID_DRAWING ) || 488cdf0e10cSrcweir rTarget.IsDropFormatSupported( SOT_FORMAT_FILE_LIST ) || 489cdf0e10cSrcweir rTarget.IsDropFormatSupported( FORMAT_FILE ) || 490cdf0e10cSrcweir rTarget.IsDropFormatSupported( SOT_FORMATSTR_ID_SVXB ) || 491cdf0e10cSrcweir rTarget.IsDropFormatSupported( FORMAT_GDIMETAFILE ) || 492cdf0e10cSrcweir rTarget.IsDropFormatSupported( FORMAT_BITMAP ) ) 493cdf0e10cSrcweir { 494cdf0e10cSrcweir nRet = DND_ACTION_COPY; 495cdf0e10cSrcweir } 496cdf0e10cSrcweir } 497cdf0e10cSrcweir else 498cdf0e10cSrcweir nRet = DND_ACTION_COPY; 499cdf0e10cSrcweir } 500cdf0e10cSrcweir 501cdf0e10cSrcweir return nRet; 502cdf0e10cSrcweir } 503cdf0e10cSrcweir 504cdf0e10cSrcweir // ----------------------------------------------------------------------------- 505cdf0e10cSrcweir 506cdf0e10cSrcweir sal_Int8 GalleryBrowser2::ExecuteDrop( DropTargetHelper&, const ExecuteDropEvent& rEvt ) 507cdf0e10cSrcweir { 508cdf0e10cSrcweir sal_Int8 nRet = DND_ACTION_NONE; 509cdf0e10cSrcweir 510cdf0e10cSrcweir if( mpCurTheme ) 511cdf0e10cSrcweir { 512cdf0e10cSrcweir Point aSelPos; 513cdf0e10cSrcweir const sal_uIntPtr nItemId = ImplGetSelectedItemId( &rEvt.maPosPixel, aSelPos ); 514cdf0e10cSrcweir const sal_uIntPtr nInsertPos = ( nItemId ? ( nItemId - 1 ) : LIST_APPEND ); 515cdf0e10cSrcweir 516cdf0e10cSrcweir if( mpCurTheme->IsDragging() ) 517cdf0e10cSrcweir mpCurTheme->ChangeObjectPos( mpCurTheme->GetDragPos(), nInsertPos ); 518cdf0e10cSrcweir else 519cdf0e10cSrcweir nRet = mpCurTheme->InsertTransferable( rEvt.maDropEvent.Transferable, nInsertPos ); 520cdf0e10cSrcweir } 521cdf0e10cSrcweir 522cdf0e10cSrcweir return nRet; 523cdf0e10cSrcweir } 524cdf0e10cSrcweir 525cdf0e10cSrcweir // ----------------------------------------------------------------------------- 526cdf0e10cSrcweir 527cdf0e10cSrcweir void GalleryBrowser2::StartDrag( Window*, const Point* pDragPoint ) 528cdf0e10cSrcweir { 529cdf0e10cSrcweir if( mpCurTheme ) 530cdf0e10cSrcweir { 531cdf0e10cSrcweir Point aSelPos; 532cdf0e10cSrcweir const sal_uIntPtr nItemId = ImplGetSelectedItemId( pDragPoint, aSelPos ); 533cdf0e10cSrcweir 534cdf0e10cSrcweir if( nItemId ) 535cdf0e10cSrcweir mpCurTheme->StartDrag( this, nItemId - 1 ); 536cdf0e10cSrcweir } 537cdf0e10cSrcweir } 538cdf0e10cSrcweir 539cdf0e10cSrcweir // ----------------------------------------------------------------------------- 540cdf0e10cSrcweir 541cdf0e10cSrcweir void GalleryBrowser2::TogglePreview( Window*, const Point* ) 542cdf0e10cSrcweir { 543cdf0e10cSrcweir SetMode( ( GALLERYBROWSERMODE_PREVIEW != GetMode() ) ? GALLERYBROWSERMODE_PREVIEW : meLastMode ); 544cdf0e10cSrcweir GetViewWindow()->GrabFocus(); 545cdf0e10cSrcweir } 546cdf0e10cSrcweir 547cdf0e10cSrcweir // ----------------------------------------------------------------------------- 548cdf0e10cSrcweir 549cdf0e10cSrcweir void GalleryBrowser2::ShowContextMenu( Window*, const Point* pContextPoint ) 550cdf0e10cSrcweir { 551cdf0e10cSrcweir Point aSelPos; 552cdf0e10cSrcweir const sal_uIntPtr nItemId = ImplGetSelectedItemId( pContextPoint, aSelPos ); 553cdf0e10cSrcweir 554cdf0e10cSrcweir if( mpCurTheme && nItemId && ( nItemId <= mpCurTheme->GetObjectCount() ) ) 555cdf0e10cSrcweir { 556cdf0e10cSrcweir ImplSelectItemId( nItemId ); 557cdf0e10cSrcweir 558cdf0e10cSrcweir SfxViewFrame* pCurrentViewFrame = SfxViewFrame::Current(); 559cdf0e10cSrcweir if ( pCurrentViewFrame ) 560cdf0e10cSrcweir { 561cdf0e10cSrcweir SfxBindings& rBindings = pCurrentViewFrame->GetBindings(); 562cdf0e10cSrcweir rBindings.ENTERREGISTRATIONS(); 563cdf0e10cSrcweir GalleryThemePopup aMenu( mpCurTheme, nItemId - 1, GALLERYBROWSERMODE_PREVIEW == GetMode() ); 564cdf0e10cSrcweir rBindings.LEAVEREGISTRATIONS(); 565cdf0e10cSrcweir aMenu.SetSelectHdl( LINK( this, GalleryBrowser2, MenuSelectHdl ) ); 566cdf0e10cSrcweir aMenu.Execute( this, aSelPos ); 567cdf0e10cSrcweir } 568cdf0e10cSrcweir } 569cdf0e10cSrcweir } 570cdf0e10cSrcweir 571cdf0e10cSrcweir // ----------------------------------------------------------------------------- 572cdf0e10cSrcweir 573cdf0e10cSrcweir sal_Bool GalleryBrowser2::KeyInput( const KeyEvent& rKEvt, Window* pWindow ) 574cdf0e10cSrcweir { 575cdf0e10cSrcweir Point aSelPos; 576cdf0e10cSrcweir const sal_uIntPtr nItemId = ImplGetSelectedItemId( NULL, aSelPos ); 577cdf0e10cSrcweir sal_Bool bRet = static_cast< GalleryBrowser* >( GetParent() )->KeyInput( rKEvt, pWindow ); 578cdf0e10cSrcweir 579cdf0e10cSrcweir if( !bRet && !maViewBox.HasFocus() && nItemId && mpCurTheme ) 580cdf0e10cSrcweir { 581cdf0e10cSrcweir sal_uInt16 nExecuteId = 0; 582cdf0e10cSrcweir const SgaObjKind eObjKind = mpCurTheme->GetObjectKind( nItemId - 1 ); 583cdf0e10cSrcweir INetURLObject aURL; 584cdf0e10cSrcweir 585cdf0e10cSrcweir const_cast< GalleryTheme* >( mpCurTheme )->GetURL( nItemId - 1, aURL ); 586cdf0e10cSrcweir 587cdf0e10cSrcweir const sal_Bool bValidURL = ( aURL.GetProtocol() != INET_PROT_NOT_VALID ); 588cdf0e10cSrcweir sal_Bool bPreview = bValidURL; 589cdf0e10cSrcweir sal_Bool bAdd = bValidURL; 590cdf0e10cSrcweir sal_Bool bAddLink = ( bValidURL && SGA_OBJ_SVDRAW != eObjKind ); 591cdf0e10cSrcweir sal_Bool bDelete = sal_False; 592cdf0e10cSrcweir sal_Bool bTitle = sal_False; 593cdf0e10cSrcweir 594cdf0e10cSrcweir if( !mpCurTheme->IsReadOnly() && mpCurTheme->GetObjectCount() ) 595cdf0e10cSrcweir { 596cdf0e10cSrcweir bDelete = ( GALLERYBROWSERMODE_PREVIEW != GetMode() ); 597cdf0e10cSrcweir bTitle = sal_True; 598cdf0e10cSrcweir } 599cdf0e10cSrcweir 600cdf0e10cSrcweir switch( rKEvt.GetKeyCode().GetCode() ) 601cdf0e10cSrcweir { 602cdf0e10cSrcweir case( KEY_SPACE ): 603cdf0e10cSrcweir case( KEY_RETURN ): 604cdf0e10cSrcweir case( KEY_P ): 605cdf0e10cSrcweir { 606cdf0e10cSrcweir if( bPreview ) 607cdf0e10cSrcweir { 608cdf0e10cSrcweir TogglePreview( pWindow ); 609cdf0e10cSrcweir bRet = sal_True; 610cdf0e10cSrcweir } 611cdf0e10cSrcweir } 612cdf0e10cSrcweir break; 613cdf0e10cSrcweir 614cdf0e10cSrcweir case( KEY_INSERT ): 615cdf0e10cSrcweir case( KEY_I ): 616cdf0e10cSrcweir { 617cdf0e10cSrcweir if( bAddLink && rKEvt.GetKeyCode().IsShift() && rKEvt.GetKeyCode().IsMod1() ) 618cdf0e10cSrcweir nExecuteId = MN_ADD_LINK; 619cdf0e10cSrcweir else if( bAdd ) 620cdf0e10cSrcweir nExecuteId = MN_ADD; 621cdf0e10cSrcweir } 622cdf0e10cSrcweir break; 623cdf0e10cSrcweir 624cdf0e10cSrcweir case( KEY_DELETE ): 625cdf0e10cSrcweir case( KEY_D ): 626cdf0e10cSrcweir { 627cdf0e10cSrcweir if( bDelete ) 628cdf0e10cSrcweir nExecuteId = MN_DELETE; 629cdf0e10cSrcweir } 630cdf0e10cSrcweir break; 631cdf0e10cSrcweir 632cdf0e10cSrcweir case( KEY_T ): 633cdf0e10cSrcweir { 634cdf0e10cSrcweir if( bTitle ) 635cdf0e10cSrcweir nExecuteId = MN_TITLE; 636cdf0e10cSrcweir } 637cdf0e10cSrcweir break; 638cdf0e10cSrcweir 639cdf0e10cSrcweir default: 640cdf0e10cSrcweir break; 641cdf0e10cSrcweir } 642cdf0e10cSrcweir 643cdf0e10cSrcweir if( nExecuteId ) 644cdf0e10cSrcweir { 645cdf0e10cSrcweir ImplExecute( nExecuteId ); 646cdf0e10cSrcweir bRet = sal_True; 647cdf0e10cSrcweir } 648cdf0e10cSrcweir } 649cdf0e10cSrcweir 650cdf0e10cSrcweir return bRet; 651cdf0e10cSrcweir } 652cdf0e10cSrcweir 653cdf0e10cSrcweir // ----------------------------------------------------------------------------- 654cdf0e10cSrcweir 655cdf0e10cSrcweir void GalleryBrowser2::SelectTheme( const String& rThemeName ) 656cdf0e10cSrcweir { 657cdf0e10cSrcweir delete mpIconView, mpIconView = NULL; 658cdf0e10cSrcweir delete mpListView, mpListView = NULL; 659cdf0e10cSrcweir delete mpPreview, mpPreview = NULL; 660cdf0e10cSrcweir 661cdf0e10cSrcweir if( mpCurTheme ) 662cdf0e10cSrcweir mpGallery->ReleaseTheme( mpCurTheme, *this ); 663cdf0e10cSrcweir 664cdf0e10cSrcweir mpCurTheme = mpGallery->AcquireTheme( rThemeName, *this ); 665cdf0e10cSrcweir 666cdf0e10cSrcweir mpIconView = new GalleryIconView( this, mpCurTheme ); 667cdf0e10cSrcweir mpListView = new GalleryListView( this, mpCurTheme ); 668cdf0e10cSrcweir mpPreview = new GalleryPreview( this, mpCurTheme ); 669cdf0e10cSrcweir 670cdf0e10cSrcweir mpIconView->SetAccessibleName(String( SVX_RES( RID_SVXSTR_GALLERY_THEMEITEMS ) )); 671cdf0e10cSrcweir mpListView->SetAccessibleName(String( SVX_RES( RID_SVXSTR_GALLERY_THEMEITEMS ) )); 672cdf0e10cSrcweir mpPreview->SetAccessibleName(String( SVX_RES( RID_SVXSTR_GALLERY_PREVIEW ) )); 673cdf0e10cSrcweir 674cdf0e10cSrcweir const Link aSelectHdl( LINK( this, GalleryBrowser2, SelectObjectHdl ) ); 675cdf0e10cSrcweir 676cdf0e10cSrcweir mpIconView->SetSelectHdl( aSelectHdl ); 677cdf0e10cSrcweir mpListView->SetSelectHdl( aSelectHdl ); 678cdf0e10cSrcweir 679cdf0e10cSrcweir if( GALLERYBROWSERMODE_PREVIEW == GetMode() ) 680cdf0e10cSrcweir meMode = meLastMode; 681cdf0e10cSrcweir 682cdf0e10cSrcweir Resize(); 683cdf0e10cSrcweir ImplUpdateViews( 1 ); 684cdf0e10cSrcweir 685cdf0e10cSrcweir maViewBox.EnableItem( TBX_ID_ICON, sal_True ); 686cdf0e10cSrcweir maViewBox.EnableItem( TBX_ID_LIST, sal_True ); 687cdf0e10cSrcweir maViewBox.CheckItem( ( GALLERYBROWSERMODE_ICON == GetMode() ) ? TBX_ID_ICON : TBX_ID_LIST, sal_True ); 688cdf0e10cSrcweir 689cdf0e10cSrcweir if(maInfoBar.GetText().Len() == 0) 690cdf0e10cSrcweir mpIconView->SetAccessibleRelationLabeledBy(mpIconView); 691cdf0e10cSrcweir else 692cdf0e10cSrcweir mpIconView->SetAccessibleRelationLabeledBy(&maInfoBar); 693cdf0e10cSrcweir mpIconView->SetAccessibleRelationMemberOf(mpIconView); 694cdf0e10cSrcweir } 695cdf0e10cSrcweir 696cdf0e10cSrcweir // ----------------------------------------------------------------------------- 697cdf0e10cSrcweir 698cdf0e10cSrcweir void GalleryBrowser2::SetMode( GalleryBrowserMode eMode ) 699cdf0e10cSrcweir { 700cdf0e10cSrcweir if( GetMode() != eMode ) 701cdf0e10cSrcweir { 702cdf0e10cSrcweir meLastMode = GetMode(); 703cdf0e10cSrcweir 704cdf0e10cSrcweir switch( eMode ) 705cdf0e10cSrcweir { 706cdf0e10cSrcweir case( GALLERYBROWSERMODE_ICON ): 707cdf0e10cSrcweir { 708cdf0e10cSrcweir mpListView->Hide(); 709cdf0e10cSrcweir 710cdf0e10cSrcweir mpPreview->Hide(); 711cdf0e10cSrcweir mpPreview->SetGraphic( Graphic() ); 712cdf0e10cSrcweir mpPreview->PreviewMedia( INetURLObject() ); 713cdf0e10cSrcweir 714cdf0e10cSrcweir mpIconView->Show(); 715cdf0e10cSrcweir 716cdf0e10cSrcweir maViewBox.EnableItem( TBX_ID_ICON, sal_True ); 717cdf0e10cSrcweir maViewBox.EnableItem( TBX_ID_LIST, sal_True ); 718cdf0e10cSrcweir 719cdf0e10cSrcweir maViewBox.CheckItem( TBX_ID_ICON, sal_True ); 720cdf0e10cSrcweir maViewBox.CheckItem( TBX_ID_LIST, sal_False ); 721cdf0e10cSrcweir } 722cdf0e10cSrcweir break; 723cdf0e10cSrcweir 724cdf0e10cSrcweir case( GALLERYBROWSERMODE_LIST ): 725cdf0e10cSrcweir { 726cdf0e10cSrcweir mpIconView->Hide(); 727cdf0e10cSrcweir 728cdf0e10cSrcweir mpPreview->Hide(); 729cdf0e10cSrcweir mpPreview->SetGraphic( Graphic() ); 730cdf0e10cSrcweir mpPreview->PreviewMedia( INetURLObject() ); 731cdf0e10cSrcweir 732cdf0e10cSrcweir mpListView->Show(); 733cdf0e10cSrcweir 734cdf0e10cSrcweir maViewBox.EnableItem( TBX_ID_ICON, sal_True ); 735cdf0e10cSrcweir maViewBox.EnableItem( TBX_ID_LIST, sal_True ); 736cdf0e10cSrcweir 737cdf0e10cSrcweir maViewBox.CheckItem( TBX_ID_ICON, sal_False ); 738cdf0e10cSrcweir maViewBox.CheckItem( TBX_ID_LIST, sal_True ); 739cdf0e10cSrcweir } 740cdf0e10cSrcweir break; 741cdf0e10cSrcweir 742cdf0e10cSrcweir case( GALLERYBROWSERMODE_PREVIEW ): 743cdf0e10cSrcweir { 744cdf0e10cSrcweir Graphic aGraphic; 745cdf0e10cSrcweir Point aSelPos; 746cdf0e10cSrcweir const sal_uIntPtr nItemId = ImplGetSelectedItemId( NULL, aSelPos ); 747cdf0e10cSrcweir 748cdf0e10cSrcweir if( nItemId ) 749cdf0e10cSrcweir { 750cdf0e10cSrcweir const sal_uIntPtr nPos = nItemId - 1; 751cdf0e10cSrcweir 752cdf0e10cSrcweir mpIconView->Hide(); 753cdf0e10cSrcweir mpListView->Hide(); 754cdf0e10cSrcweir 755cdf0e10cSrcweir if( mpCurTheme ) 756cdf0e10cSrcweir mpCurTheme->GetGraphic( nPos, aGraphic ); 757cdf0e10cSrcweir 758cdf0e10cSrcweir mpPreview->SetGraphic( aGraphic ); 759cdf0e10cSrcweir mpPreview->Show(); 760cdf0e10cSrcweir 761cdf0e10cSrcweir if( mpCurTheme && mpCurTheme->GetObjectKind( nPos ) == SGA_OBJ_SOUND ) 762cdf0e10cSrcweir mpPreview->PreviewMedia( mpCurTheme->GetObjectURL( nPos ) ); 763cdf0e10cSrcweir 764cdf0e10cSrcweir maViewBox.EnableItem( TBX_ID_ICON, sal_False ); 765cdf0e10cSrcweir maViewBox.EnableItem( TBX_ID_LIST, sal_False ); 766cdf0e10cSrcweir } 767cdf0e10cSrcweir } 768cdf0e10cSrcweir break; 769cdf0e10cSrcweir 770cdf0e10cSrcweir default: 771cdf0e10cSrcweir break; 772cdf0e10cSrcweir } 773cdf0e10cSrcweir 774cdf0e10cSrcweir GalleryBrowser2::meInitMode = meMode = eMode; 775cdf0e10cSrcweir } 776cdf0e10cSrcweir } 777cdf0e10cSrcweir 778cdf0e10cSrcweir // ----------------------------------------------------------------------------- 779cdf0e10cSrcweir 780cdf0e10cSrcweir Window* GalleryBrowser2::GetViewWindow() const 781cdf0e10cSrcweir { 782cdf0e10cSrcweir Window* pRet; 783cdf0e10cSrcweir 784cdf0e10cSrcweir switch( GetMode() ) 785cdf0e10cSrcweir { 786cdf0e10cSrcweir case( GALLERYBROWSERMODE_LIST ): pRet = mpListView; break; 787cdf0e10cSrcweir case( GALLERYBROWSERMODE_PREVIEW ): pRet = mpPreview; break; 788cdf0e10cSrcweir 789cdf0e10cSrcweir default: 790cdf0e10cSrcweir pRet = mpIconView; 791cdf0e10cSrcweir break; 792cdf0e10cSrcweir } 793cdf0e10cSrcweir 794cdf0e10cSrcweir return pRet; 795cdf0e10cSrcweir } 796cdf0e10cSrcweir 797cdf0e10cSrcweir // ----------------------------------------------------------------------------- 798cdf0e10cSrcweir 799cdf0e10cSrcweir void GalleryBrowser2::Travel( GalleryBrowserTravel eTravel ) 800cdf0e10cSrcweir { 801cdf0e10cSrcweir if( mpCurTheme ) 802cdf0e10cSrcweir { 803cdf0e10cSrcweir Point aSelPos; 804cdf0e10cSrcweir const sal_uIntPtr nItemId = ImplGetSelectedItemId( NULL, aSelPos ); 805cdf0e10cSrcweir 806cdf0e10cSrcweir if( nItemId ) 807cdf0e10cSrcweir { 808cdf0e10cSrcweir sal_uIntPtr nNewItemId = nItemId; 809cdf0e10cSrcweir 810cdf0e10cSrcweir switch( eTravel ) 811cdf0e10cSrcweir { 812cdf0e10cSrcweir case( GALLERYBROWSERTRAVEL_FIRST ): nNewItemId = 1; break; 813cdf0e10cSrcweir case( GALLERYBROWSERTRAVEL_LAST ): nNewItemId = mpCurTheme->GetObjectCount(); break; 814cdf0e10cSrcweir case( GALLERYBROWSERTRAVEL_PREVIOUS ): nNewItemId--; break; 815cdf0e10cSrcweir case( GALLERYBROWSERTRAVEL_NEXT ): nNewItemId++; break; 816cdf0e10cSrcweir default: 817cdf0e10cSrcweir break; 818cdf0e10cSrcweir } 819cdf0e10cSrcweir 820cdf0e10cSrcweir if( nNewItemId < 1 ) 821cdf0e10cSrcweir nNewItemId = 1; 822cdf0e10cSrcweir else if( nNewItemId > mpCurTheme->GetObjectCount() ) 823cdf0e10cSrcweir nNewItemId = mpCurTheme->GetObjectCount(); 824cdf0e10cSrcweir 825cdf0e10cSrcweir if( nNewItemId != nItemId ) 826cdf0e10cSrcweir { 827cdf0e10cSrcweir ImplSelectItemId( nNewItemId ); 828cdf0e10cSrcweir ImplUpdateInfoBar(); 829cdf0e10cSrcweir 830cdf0e10cSrcweir if( GALLERYBROWSERMODE_PREVIEW == GetMode() ) 831cdf0e10cSrcweir { 832cdf0e10cSrcweir Graphic aGraphic; 833cdf0e10cSrcweir const sal_uIntPtr nPos = nNewItemId - 1; 834cdf0e10cSrcweir 835cdf0e10cSrcweir mpCurTheme->GetGraphic( nPos, aGraphic ); 836cdf0e10cSrcweir mpPreview->SetGraphic( aGraphic ); 837cdf0e10cSrcweir 838cdf0e10cSrcweir if( SGA_OBJ_SOUND == mpCurTheme->GetObjectKind( nPos ) ) 839cdf0e10cSrcweir mpPreview->PreviewMedia( mpCurTheme->GetObjectURL( nPos ) ); 840cdf0e10cSrcweir 841cdf0e10cSrcweir mpPreview->Invalidate(); 842cdf0e10cSrcweir } 843cdf0e10cSrcweir } 844cdf0e10cSrcweir } 845cdf0e10cSrcweir } 846cdf0e10cSrcweir } 847cdf0e10cSrcweir 848cdf0e10cSrcweir // ----------------------------------------------------------------------------- 849cdf0e10cSrcweir 850cdf0e10cSrcweir void GalleryBrowser2::ImplUpdateViews( sal_uInt16 nSelectionId ) 851cdf0e10cSrcweir { 852cdf0e10cSrcweir mpIconView->Hide(); 853cdf0e10cSrcweir mpListView->Hide(); 854cdf0e10cSrcweir mpPreview->Hide(); 855cdf0e10cSrcweir 856cdf0e10cSrcweir mpIconView->Clear(); 857cdf0e10cSrcweir mpListView->Clear(); 858cdf0e10cSrcweir 859cdf0e10cSrcweir if( mpCurTheme ) 860cdf0e10cSrcweir { 861cdf0e10cSrcweir for( sal_uIntPtr i = 0, nCount = mpCurTheme->GetObjectCount(); i < nCount; ) 862cdf0e10cSrcweir { 863cdf0e10cSrcweir mpListView->RowInserted( i++ ); 864cdf0e10cSrcweir mpIconView->InsertItem( (sal_uInt16) i ); 865cdf0e10cSrcweir } 866cdf0e10cSrcweir 867cdf0e10cSrcweir ImplSelectItemId( ( ( nSelectionId > mpCurTheme->GetObjectCount() ) ? mpCurTheme->GetObjectCount() : nSelectionId ) ); 868cdf0e10cSrcweir } 869cdf0e10cSrcweir 870cdf0e10cSrcweir switch( GetMode() ) 871cdf0e10cSrcweir { 872cdf0e10cSrcweir case( GALLERYBROWSERMODE_ICON ): mpIconView->Show(); break; 873cdf0e10cSrcweir case( GALLERYBROWSERMODE_LIST ): mpListView->Show(); break; 874cdf0e10cSrcweir case( GALLERYBROWSERMODE_PREVIEW ): mpPreview->Show(); break; 875cdf0e10cSrcweir 876cdf0e10cSrcweir default: 877cdf0e10cSrcweir break; 878cdf0e10cSrcweir } 879cdf0e10cSrcweir 880cdf0e10cSrcweir ImplUpdateInfoBar(); 881cdf0e10cSrcweir } 882cdf0e10cSrcweir 883cdf0e10cSrcweir // ----------------------------------------------------------------------------- 884cdf0e10cSrcweir 885cdf0e10cSrcweir void GalleryBrowser2::ImplUpdateInfoBar() 886cdf0e10cSrcweir { 887cdf0e10cSrcweir String aInfoText; 888cdf0e10cSrcweir 889cdf0e10cSrcweir if( mpCurTheme ) 890cdf0e10cSrcweir { 891cdf0e10cSrcweir Point aSelPos; 892cdf0e10cSrcweir const sal_uIntPtr nItemId = ImplGetSelectedItemId( NULL, aSelPos ); 893cdf0e10cSrcweir 894cdf0e10cSrcweir if( nItemId ) 895cdf0e10cSrcweir { 896cdf0e10cSrcweir const sal_uIntPtr nPos = nItemId - 1; 897cdf0e10cSrcweir 898cdf0e10cSrcweir aInfoText = mpCurTheme->GetName(); 899cdf0e10cSrcweir 900cdf0e10cSrcweir if( nPos < mpCurTheme->GetObjectCount() ) 901cdf0e10cSrcweir { 902cdf0e10cSrcweir SgaObject* pObj = mpCurTheme->AcquireObject( nPos ); 903cdf0e10cSrcweir 904cdf0e10cSrcweir if( pObj ) 905cdf0e10cSrcweir { 906cdf0e10cSrcweir aInfoText = GetItemText( *mpCurTheme, *pObj, GALLERY_ITEM_THEMENAME | GALLERY_ITEM_TITLE | GALLERY_ITEM_PATH ); 907cdf0e10cSrcweir mpCurTheme->ReleaseObject( pObj ); 908cdf0e10cSrcweir } 909cdf0e10cSrcweir } 910cdf0e10cSrcweir } 911cdf0e10cSrcweir } 912cdf0e10cSrcweir 913cdf0e10cSrcweir maInfoBar.SetText( aInfoText ); 914cdf0e10cSrcweir } 915cdf0e10cSrcweir 916cdf0e10cSrcweir // ----------------------------------------------------------------------------- 917cdf0e10cSrcweir 918cdf0e10cSrcweir sal_uIntPtr GalleryBrowser2::ImplGetSelectedItemId( const Point* pSelPos, Point& rSelPos ) 919cdf0e10cSrcweir { 920cdf0e10cSrcweir const Size aOutputSizePixel( GetOutputSizePixel() ); 921cdf0e10cSrcweir sal_uIntPtr nRet = 0; 922cdf0e10cSrcweir 923cdf0e10cSrcweir if( GALLERYBROWSERMODE_PREVIEW == GetMode() ) 924cdf0e10cSrcweir { 925cdf0e10cSrcweir nRet = ( ( GALLERYBROWSERMODE_ICON == meLastMode ) ? mpIconView->GetSelectItemId() : ( mpListView->FirstSelectedRow() + 1 ) ); 926cdf0e10cSrcweir 927cdf0e10cSrcweir if( pSelPos ) 928cdf0e10cSrcweir rSelPos = GetPointerPosPixel(); 929cdf0e10cSrcweir else 930cdf0e10cSrcweir rSelPos = Point( aOutputSizePixel.Width() >> 1, aOutputSizePixel.Height() >> 1 ); 931cdf0e10cSrcweir } 932cdf0e10cSrcweir else if( GALLERYBROWSERMODE_ICON == GetMode() ) 933cdf0e10cSrcweir { 934cdf0e10cSrcweir if( pSelPos ) 935cdf0e10cSrcweir { 936cdf0e10cSrcweir nRet = mpIconView->GetItemId( *pSelPos ); 937cdf0e10cSrcweir rSelPos = GetPointerPosPixel(); 938cdf0e10cSrcweir } 939cdf0e10cSrcweir else 940cdf0e10cSrcweir { 941cdf0e10cSrcweir nRet = mpIconView->GetSelectItemId(); 942cdf0e10cSrcweir rSelPos = mpIconView->GetItemRect( (sal_uInt16) nRet ).Center(); 943cdf0e10cSrcweir } 944cdf0e10cSrcweir } 945cdf0e10cSrcweir else 946cdf0e10cSrcweir { 947cdf0e10cSrcweir if( pSelPos ) 948cdf0e10cSrcweir { 949cdf0e10cSrcweir nRet = mpListView->GetRowAtYPosPixel( pSelPos->Y() ) + 1; 950cdf0e10cSrcweir rSelPos = GetPointerPosPixel(); 951cdf0e10cSrcweir } 952cdf0e10cSrcweir else 953cdf0e10cSrcweir { 954cdf0e10cSrcweir nRet = mpListView->FirstSelectedRow() + 1; 955cdf0e10cSrcweir rSelPos = mpListView->GetFieldRectPixel( (sal_uInt16) nRet, 1 ).Center(); 956cdf0e10cSrcweir } 957cdf0e10cSrcweir } 958cdf0e10cSrcweir 959cdf0e10cSrcweir rSelPos.X() = Max( Min( rSelPos.X(), aOutputSizePixel.Width() - 1L ), 0L ); 960cdf0e10cSrcweir rSelPos.Y() = Max( Min( rSelPos.Y(), aOutputSizePixel.Height() - 1L ), 0L ); 961cdf0e10cSrcweir 962cdf0e10cSrcweir if( nRet && ( !mpCurTheme || ( nRet > mpCurTheme->GetObjectCount() ) ) ) 963cdf0e10cSrcweir { 964cdf0e10cSrcweir nRet = 0; 965cdf0e10cSrcweir } 966cdf0e10cSrcweir 967cdf0e10cSrcweir return nRet; 968cdf0e10cSrcweir } 969cdf0e10cSrcweir 970cdf0e10cSrcweir // ----------------------------------------------------------------------------- 971cdf0e10cSrcweir 972cdf0e10cSrcweir void GalleryBrowser2::ImplSelectItemId( sal_uIntPtr nItemId ) 973cdf0e10cSrcweir { 974cdf0e10cSrcweir if( nItemId ) 975cdf0e10cSrcweir { 976cdf0e10cSrcweir 977cdf0e10cSrcweir mpIconView->SelectItem( (sal_uInt16) nItemId ); 978cdf0e10cSrcweir mpListView->SelectRow( nItemId - 1 ); 979cdf0e10cSrcweir } 980cdf0e10cSrcweir } 981cdf0e10cSrcweir 982cdf0e10cSrcweir // ----------------------------------------------------------------------------- 983cdf0e10cSrcweir 984cdf0e10cSrcweir void GalleryBrowser2::ImplExecute( sal_uInt16 nId ) 985cdf0e10cSrcweir { 986cdf0e10cSrcweir Point aSelPos; 987cdf0e10cSrcweir const sal_uIntPtr nItemId = ImplGetSelectedItemId( NULL, aSelPos ); 988cdf0e10cSrcweir 989cdf0e10cSrcweir if( mpCurTheme && nItemId ) 990cdf0e10cSrcweir { 991cdf0e10cSrcweir mnCurActionPos = nItemId - 1; 992cdf0e10cSrcweir 993cdf0e10cSrcweir switch( nId ) 994cdf0e10cSrcweir { 995cdf0e10cSrcweir case( MN_ADD ): 996cdf0e10cSrcweir case( MN_ADD_LINK ): 997cdf0e10cSrcweir { 998cdf0e10cSrcweir sal_uInt32 nFormat = 0; 999cdf0e10cSrcweir 1000cdf0e10cSrcweir mbCurActionIsLinkage = ( MN_ADD_LINK == nId ); 1001cdf0e10cSrcweir 1002cdf0e10cSrcweir switch( mpCurTheme->GetObjectKind( mnCurActionPos ) ) 1003cdf0e10cSrcweir { 1004cdf0e10cSrcweir case( SGA_OBJ_BMP ): 1005cdf0e10cSrcweir case( SGA_OBJ_ANIM ): 1006cdf0e10cSrcweir case( SGA_OBJ_INET ): 1007cdf0e10cSrcweir nFormat = SGA_FORMAT_GRAPHIC | SGA_FORMAT_STRING; 1008cdf0e10cSrcweir break; 1009cdf0e10cSrcweir 1010cdf0e10cSrcweir case ( SGA_OBJ_SOUND ) : 1011cdf0e10cSrcweir nFormat = SGA_FORMAT_SOUND | SGA_FORMAT_STRING; 1012cdf0e10cSrcweir break; 1013cdf0e10cSrcweir 1014cdf0e10cSrcweir case( SGA_OBJ_SVDRAW ): 1015cdf0e10cSrcweir nFormat = SGA_FORMAT_GRAPHIC | SGA_FORMAT_SVDRAW | SGA_FORMAT_STRING; 1016cdf0e10cSrcweir break; 1017cdf0e10cSrcweir 1018cdf0e10cSrcweir default : 1019cdf0e10cSrcweir break; 1020cdf0e10cSrcweir } 1021cdf0e10cSrcweir 1022cdf0e10cSrcweir const SfxUInt32Item aItem( SID_GALLERY_FORMATS, nFormat ); 1023cdf0e10cSrcweir SfxViewFrame::Current()->GetBindings().GetDispatcher()->Execute( 1024cdf0e10cSrcweir SID_GALLERY_FORMATS, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L ); 1025cdf0e10cSrcweir } 1026cdf0e10cSrcweir break; 1027cdf0e10cSrcweir 1028cdf0e10cSrcweir case( MN_PREVIEW ): 1029cdf0e10cSrcweir SetMode( ( GALLERYBROWSERMODE_PREVIEW != GetMode() ) ? GALLERYBROWSERMODE_PREVIEW : meLastMode ); 1030cdf0e10cSrcweir break; 1031cdf0e10cSrcweir 1032cdf0e10cSrcweir case( MN_DELETE ): 1033cdf0e10cSrcweir { 1034cdf0e10cSrcweir if( !mpCurTheme->IsReadOnly() && 1035cdf0e10cSrcweir QueryBox( NULL, WB_YES_NO, String( GAL_RESID( RID_SVXSTR_GALLERY_DELETEOBJ ) ) ).Execute() == RET_YES ) 1036cdf0e10cSrcweir { 1037cdf0e10cSrcweir mpCurTheme->RemoveObject( mnCurActionPos ); 1038cdf0e10cSrcweir } 1039cdf0e10cSrcweir } 1040cdf0e10cSrcweir break; 1041cdf0e10cSrcweir 1042cdf0e10cSrcweir case( MN_TITLE ): 1043cdf0e10cSrcweir { 1044cdf0e10cSrcweir SgaObject* pObj = mpCurTheme->AcquireObject( mnCurActionPos ); 1045cdf0e10cSrcweir 1046cdf0e10cSrcweir if( pObj ) 1047cdf0e10cSrcweir { 1048cdf0e10cSrcweir const String aOldTitle( GetItemText( *mpCurTheme, *pObj, GALLERY_ITEM_TITLE ) ); 1049cdf0e10cSrcweir //CHINA001 TitleDialog aDlg( this, aOldTitle ); 1050cdf0e10cSrcweir SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); 1051cdf0e10cSrcweir if(pFact) 1052cdf0e10cSrcweir { 1053cdf0e10cSrcweir AbstractTitleDialog* aDlg = pFact->CreateTitleDialog( this, aOldTitle ); 1054cdf0e10cSrcweir DBG_ASSERT(aDlg, "Dialogdiet fail!");//CHINA001 1055cdf0e10cSrcweir if( aDlg->Execute() == RET_OK )//CHINA001 if( aDlg.Execute() == RET_OK ) 1056cdf0e10cSrcweir { 1057cdf0e10cSrcweir String aNewTitle( aDlg->GetTitle() );//CHINA001 String aNewTitle( aDlg.GetTitle() ); 1058cdf0e10cSrcweir 1059cdf0e10cSrcweir if( ( !aNewTitle.Len() && pObj->GetTitle().Len() ) || ( aNewTitle != aOldTitle ) ) 1060cdf0e10cSrcweir { 1061cdf0e10cSrcweir if( !aNewTitle.Len() ) 1062cdf0e10cSrcweir aNewTitle = String( RTL_CONSTASCII_USTRINGPARAM( "__<empty>__" ) ); 1063cdf0e10cSrcweir 1064cdf0e10cSrcweir pObj->SetTitle( aNewTitle ); 1065cdf0e10cSrcweir mpCurTheme->InsertObject( *pObj ); 1066cdf0e10cSrcweir } 1067cdf0e10cSrcweir } 1068cdf0e10cSrcweir 1069cdf0e10cSrcweir mpCurTheme->ReleaseObject( pObj ); 1070cdf0e10cSrcweir delete aDlg; //add CHINA001 1071cdf0e10cSrcweir } 1072cdf0e10cSrcweir } 1073cdf0e10cSrcweir } 1074cdf0e10cSrcweir break; 1075cdf0e10cSrcweir 1076cdf0e10cSrcweir case( MN_COPYCLIPBOARD ): 1077cdf0e10cSrcweir { 1078cdf0e10cSrcweir Window* pWindow; 1079cdf0e10cSrcweir 1080cdf0e10cSrcweir switch( GetMode() ) 1081cdf0e10cSrcweir { 1082cdf0e10cSrcweir case( GALLERYBROWSERMODE_ICON ): pWindow = (Window*) mpIconView; break; 1083cdf0e10cSrcweir case( GALLERYBROWSERMODE_LIST ): pWindow = (Window*) mpListView; break; 1084cdf0e10cSrcweir case( GALLERYBROWSERMODE_PREVIEW ): pWindow = (Window*) mpPreview; break; 1085cdf0e10cSrcweir 1086cdf0e10cSrcweir default: 1087cdf0e10cSrcweir pWindow = NULL; 1088cdf0e10cSrcweir break; 1089cdf0e10cSrcweir } 1090cdf0e10cSrcweir 1091cdf0e10cSrcweir mpCurTheme->CopyToClipboard( pWindow, mnCurActionPos ); 1092cdf0e10cSrcweir } 1093cdf0e10cSrcweir break; 1094cdf0e10cSrcweir 1095cdf0e10cSrcweir case( MN_PASTECLIPBOARD ): 1096cdf0e10cSrcweir { 1097cdf0e10cSrcweir if( !mpCurTheme->IsReadOnly() ) 1098cdf0e10cSrcweir { 1099cdf0e10cSrcweir TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( this ) ); 1100cdf0e10cSrcweir mpCurTheme->InsertTransferable( aDataHelper.GetTransferable(), mnCurActionPos ); 1101cdf0e10cSrcweir } 1102cdf0e10cSrcweir } 1103cdf0e10cSrcweir break; 1104cdf0e10cSrcweir 1105cdf0e10cSrcweir default: 1106cdf0e10cSrcweir break; 1107cdf0e10cSrcweir } 1108cdf0e10cSrcweir } 1109cdf0e10cSrcweir } 1110cdf0e10cSrcweir 1111cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1112cdf0e10cSrcweir 1113cdf0e10cSrcweir String GalleryBrowser2::GetItemText( const GalleryTheme& rTheme, const SgaObject& rObj, sal_uIntPtr nItemTextFlags ) 1114cdf0e10cSrcweir { 1115cdf0e10cSrcweir INetURLObject aURL; 1116cdf0e10cSrcweir String aRet; 1117cdf0e10cSrcweir 1118cdf0e10cSrcweir if( rTheme.IsImported() ) 1119cdf0e10cSrcweir { 1120cdf0e10cSrcweir aURL = rTheme.GetParent()->GetImportURL( rTheme.GetName() ); 1121cdf0e10cSrcweir 1122cdf0e10cSrcweir aURL.removeSegment(); 1123cdf0e10cSrcweir aURL.Append( rObj.GetURL().GetName() ); 1124cdf0e10cSrcweir } 1125cdf0e10cSrcweir else 1126cdf0e10cSrcweir aURL = rObj.GetURL(); 1127cdf0e10cSrcweir 1128cdf0e10cSrcweir if( nItemTextFlags & GALLERY_ITEM_THEMENAME ) 1129cdf0e10cSrcweir { 1130cdf0e10cSrcweir aRet += rTheme.GetName(); 1131cdf0e10cSrcweir aRet += String( RTL_CONSTASCII_USTRINGPARAM( " - " ) ); 1132cdf0e10cSrcweir } 1133cdf0e10cSrcweir 1134cdf0e10cSrcweir if( nItemTextFlags & GALLERY_ITEM_TITLE ) 1135cdf0e10cSrcweir { 1136cdf0e10cSrcweir String aTitle( rObj.GetTitle() ); 1137cdf0e10cSrcweir 1138cdf0e10cSrcweir if( !aTitle.Len() ) 1139cdf0e10cSrcweir aTitle = aURL.getBase( INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_UNAMBIGUOUS ); 1140cdf0e10cSrcweir 1141cdf0e10cSrcweir if( !aTitle.Len() ) 1142cdf0e10cSrcweir { 1143cdf0e10cSrcweir aTitle = aURL.GetMainURL( INetURLObject::DECODE_UNAMBIGUOUS ); 1144cdf0e10cSrcweir aTitle = aTitle.GetToken( aTitle.GetTokenCount( '/' ) - 1, '/' ); 1145cdf0e10cSrcweir } 1146cdf0e10cSrcweir 1147cdf0e10cSrcweir aRet += aTitle; 1148cdf0e10cSrcweir } 1149cdf0e10cSrcweir 1150cdf0e10cSrcweir if( nItemTextFlags & GALLERY_ITEM_PATH ) 1151cdf0e10cSrcweir { 1152cdf0e10cSrcweir const String aPath( aURL.getFSysPath( INetURLObject::FSYS_DETECT ) ); 1153cdf0e10cSrcweir 1154cdf0e10cSrcweir if( aPath.Len() && ( nItemTextFlags & GALLERY_ITEM_TITLE ) ) 1155cdf0e10cSrcweir aRet += String( RTL_CONSTASCII_USTRINGPARAM( " (" ) ); 1156cdf0e10cSrcweir 1157cdf0e10cSrcweir aRet += String(aURL.getFSysPath( INetURLObject::FSYS_DETECT )); 1158cdf0e10cSrcweir 1159cdf0e10cSrcweir if( aPath.Len() && ( nItemTextFlags & GALLERY_ITEM_TITLE ) ) 1160cdf0e10cSrcweir aRet += ')'; 1161cdf0e10cSrcweir } 1162cdf0e10cSrcweir 1163cdf0e10cSrcweir return aRet; 1164cdf0e10cSrcweir } 1165cdf0e10cSrcweir 1166cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1167cdf0e10cSrcweir 1168cdf0e10cSrcweir INetURLObject GalleryBrowser2::GetURL() const 1169cdf0e10cSrcweir { 1170cdf0e10cSrcweir INetURLObject aURL; 1171cdf0e10cSrcweir 1172cdf0e10cSrcweir if( mpCurTheme && mnCurActionPos != 0xffffffff ) 1173cdf0e10cSrcweir aURL = mpCurTheme->GetObjectURL( mnCurActionPos ); 1174cdf0e10cSrcweir 1175cdf0e10cSrcweir return aURL; 1176cdf0e10cSrcweir } 1177cdf0e10cSrcweir 1178cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1179cdf0e10cSrcweir 1180cdf0e10cSrcweir String GalleryBrowser2::GetFilterName() const 1181cdf0e10cSrcweir { 1182cdf0e10cSrcweir String aFilterName; 1183cdf0e10cSrcweir 1184cdf0e10cSrcweir if( mpCurTheme && mnCurActionPos != 0xffffffff ) 1185cdf0e10cSrcweir { 1186cdf0e10cSrcweir const SgaObjKind eObjKind = mpCurTheme->GetObjectKind( mnCurActionPos ); 1187cdf0e10cSrcweir 1188cdf0e10cSrcweir if( ( SGA_OBJ_BMP == eObjKind ) || ( SGA_OBJ_ANIM == eObjKind ) ) 1189cdf0e10cSrcweir { 1190cdf0e10cSrcweir GraphicFilter* pFilter = GraphicFilter::GetGraphicFilter(); 1191cdf0e10cSrcweir INetURLObject aURL; mpCurTheme->GetURL( mnCurActionPos, aURL ); 1192cdf0e10cSrcweir sal_uInt16 nFilter = pFilter->GetImportFormatNumberForShortName( aURL.GetExtension() ); 1193cdf0e10cSrcweir 1194cdf0e10cSrcweir if( GRFILTER_FORMAT_DONTKNOW != nFilter ) 1195cdf0e10cSrcweir aFilterName = pFilter->GetImportFormatName( nFilter ); 1196cdf0e10cSrcweir } 1197cdf0e10cSrcweir } 1198cdf0e10cSrcweir 1199cdf0e10cSrcweir return aFilterName; 1200cdf0e10cSrcweir } 1201cdf0e10cSrcweir 1202cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1203cdf0e10cSrcweir 1204cdf0e10cSrcweir Graphic GalleryBrowser2::GetGraphic() const 1205cdf0e10cSrcweir { 1206cdf0e10cSrcweir Graphic aGraphic; 1207cdf0e10cSrcweir 1208cdf0e10cSrcweir if( mpCurTheme && mnCurActionPos != 0xffffffff ) 1209cdf0e10cSrcweir mpCurTheme->GetGraphic( mnCurActionPos, aGraphic ); 1210cdf0e10cSrcweir 1211cdf0e10cSrcweir return aGraphic; 1212cdf0e10cSrcweir } 1213cdf0e10cSrcweir 1214cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1215cdf0e10cSrcweir 1216cdf0e10cSrcweir sal_Bool GalleryBrowser2::GetVCDrawModel( FmFormModel& rModel ) const 1217cdf0e10cSrcweir { 1218cdf0e10cSrcweir sal_Bool bRet = sal_False; 1219cdf0e10cSrcweir 1220cdf0e10cSrcweir if( mpCurTheme && mnCurActionPos != 0xffffffff ) 1221cdf0e10cSrcweir bRet = mpCurTheme->GetModel( mnCurActionPos, rModel ); 1222cdf0e10cSrcweir 1223cdf0e10cSrcweir return bRet; 1224cdf0e10cSrcweir } 1225cdf0e10cSrcweir 1226cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1227cdf0e10cSrcweir 1228cdf0e10cSrcweir sal_Bool GalleryBrowser2::IsLinkage() const 1229cdf0e10cSrcweir { 1230cdf0e10cSrcweir return mbCurActionIsLinkage; 1231cdf0e10cSrcweir } 1232cdf0e10cSrcweir 1233cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1234cdf0e10cSrcweir 1235cdf0e10cSrcweir IMPL_LINK( GalleryBrowser2, MenuSelectHdl, Menu*, pMenu ) 1236cdf0e10cSrcweir { 1237cdf0e10cSrcweir if( pMenu ) 1238cdf0e10cSrcweir ImplExecute( pMenu->GetCurItemId() ); 1239cdf0e10cSrcweir 1240cdf0e10cSrcweir return 0; 1241cdf0e10cSrcweir } 1242cdf0e10cSrcweir 1243cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1244cdf0e10cSrcweir 1245cdf0e10cSrcweir IMPL_LINK( GalleryBrowser2, SelectObjectHdl, void*, EMPTYARG ) 1246cdf0e10cSrcweir { 1247cdf0e10cSrcweir ImplUpdateInfoBar(); 1248cdf0e10cSrcweir return 0L; 1249cdf0e10cSrcweir } 1250cdf0e10cSrcweir 1251cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1252cdf0e10cSrcweir 1253cdf0e10cSrcweir IMPL_LINK( GalleryBrowser2, SelectTbxHdl, ToolBox*, pBox ) 1254cdf0e10cSrcweir { 1255cdf0e10cSrcweir if( pBox->GetCurItemId() == TBX_ID_ICON ) 1256cdf0e10cSrcweir SetMode( GALLERYBROWSERMODE_ICON ); 1257cdf0e10cSrcweir else if( pBox->GetCurItemId() == TBX_ID_LIST ) 1258cdf0e10cSrcweir SetMode( GALLERYBROWSERMODE_LIST ); 1259cdf0e10cSrcweir 1260cdf0e10cSrcweir return 0L; 1261cdf0e10cSrcweir } 1262cdf0e10cSrcweir 1263cdf0e10cSrcweir // ----------------------------------------------------------------------------- 1264cdf0e10cSrcweir 1265cdf0e10cSrcweir IMPL_LINK( GalleryBrowser2, MiscHdl, void*, EMPTYARG ) 1266cdf0e10cSrcweir { 1267cdf0e10cSrcweir const sal_Bool bHC = maViewBox.GetSettings().GetStyleSettings().GetHighContrastMode(); 1268cdf0e10cSrcweir 1269cdf0e10cSrcweir maViewBox.SetOutStyle( maMiscOptions.GetToolboxStyle() ); 1270cdf0e10cSrcweir 1271cdf0e10cSrcweir BitmapEx aIconBmpEx = BitmapEx( Image( GAL_RESID( bHC? RID_SVXIMG_GALLERY_VIEW_ICON_HC : RID_SVXIMG_GALLERY_VIEW_ICON ) ).GetBitmapEx() ); 1272cdf0e10cSrcweir BitmapEx aListBmpEx = BitmapEx( Image( GAL_RESID( bHC? RID_SVXIMG_GALLERY_VIEW_LIST_HC : RID_SVXIMG_GALLERY_VIEW_LIST ) ).GetBitmapEx() ); 1273cdf0e10cSrcweir 1274cdf0e10cSrcweir if( maMiscOptions.AreCurrentSymbolsLarge() ) 1275cdf0e10cSrcweir { 1276cdf0e10cSrcweir const Size aLargeSize( 24, 24); 1277cdf0e10cSrcweir 1278cdf0e10cSrcweir aIconBmpEx.Scale( aLargeSize ); 1279cdf0e10cSrcweir aListBmpEx.Scale( aLargeSize ); 1280cdf0e10cSrcweir } 1281cdf0e10cSrcweir 1282cdf0e10cSrcweir maViewBox.SetItemImage( TBX_ID_ICON, aIconBmpEx ); 1283cdf0e10cSrcweir maViewBox.SetItemImage( TBX_ID_LIST, aListBmpEx ); 1284cdf0e10cSrcweir maViewBox.SetSizePixel( maViewBox.CalcWindowSizePixel() ); 1285cdf0e10cSrcweir 1286cdf0e10cSrcweir Resize(); 1287cdf0e10cSrcweir 1288cdf0e10cSrcweir return 0L; 1289cdf0e10cSrcweir } 1290