LCOV - code coverage report
Current view: top level - libreoffice/svx/source/gallery2 - galctrl.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 308 0.0 %
Date: 2012-12-27 Functions: 0 45 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : 
      21             : #include <vcl/svapp.hxx>
      22             : #include <sfx2/viewfrm.hxx>
      23             : #include <sfx2/dispatch.hxx>
      24             : #include <avmedia/mediaplayer.hxx>
      25             : #include "helpid.hrc"
      26             : #include "galbrws2.hxx"
      27             : #include "svx/galtheme.hxx"
      28             : #include "svx/galmisc.hxx"
      29             : #include "svx/galctrl.hxx"
      30             : #include "editeng/AccessibleStringWrap.hxx"
      31             : #include <editeng/svxfont.hxx>
      32             : #include "galobj.hxx"
      33             : #include <avmedia/mediawindow.hxx>
      34             : #include "gallery.hrc"
      35             : #include <svtools/filter.hxx>
      36             : 
      37             : // -----------
      38             : // - Defines -
      39             : // -----------
      40             : 
      41             : #define GALLERY_BRWBOX_TITLE    1
      42             : #define GALLERY_BRWBOX_PATH     2
      43             : 
      44             : // ------------------
      45             : // - GalleryPreview -
      46             : // ------------------
      47             : DBG_NAME(GalleryPreview)
      48             : 
      49           0 : GalleryPreview::GalleryPreview( GalleryBrowser2* pParent, GalleryTheme* pTheme ) :
      50             :     Window( pParent, WB_TABSTOP | WB_BORDER ),
      51             :     DropTargetHelper( this ),
      52             :     DragSourceHelper( this ),
      53           0 :     mpTheme( pTheme )
      54             : {
      55             :     DBG_CTOR(GalleryPreview,NULL);
      56             : 
      57           0 :     SetHelpId( HID_GALLERY_WINDOW );
      58           0 :     InitSettings();
      59           0 : }
      60             : 
      61             : // ------------------------------------------------------------------------
      62             : 
      63           0 : GalleryPreview::GalleryPreview( Window* pParent, const ResId & rResId  ) :
      64             :     Window( pParent, rResId ),
      65             :     DropTargetHelper( this ),
      66             :     DragSourceHelper( this ),
      67           0 :     mpTheme( NULL )
      68             : {
      69             :     DBG_CTOR(GalleryPreview,NULL);
      70             : 
      71           0 :     SetHelpId( HID_GALLERY_PREVIEW );
      72           0 :     InitSettings();
      73           0 : }
      74             : 
      75             : // ------------------------------------------------------------------------
      76             : 
      77           0 : GalleryPreview::~GalleryPreview()
      78             : {
      79             :     DBG_DTOR(GalleryPreview,NULL);
      80           0 : }
      81             : 
      82             : 
      83           0 : bool GalleryPreview::SetGraphic( const INetURLObject& _aURL )
      84             : {
      85           0 :     bool bRet = true;
      86           0 :     Graphic aGraphic;
      87           0 :     if( ::avmedia::MediaWindow::isMediaURL( _aURL.GetMainURL( INetURLObject::DECODE_UNAMBIGUOUS ) ) )
      88             :     {
      89           0 :         aGraphic = BitmapEx( GAL_RES( RID_SVXBMP_GALLERY_MEDIA ) );
      90             :     }
      91             :     else
      92             :     {
      93           0 :         GraphicFilter& rFilter = GraphicFilter::GetGraphicFilter();
      94           0 :         GalleryProgress aProgress( &rFilter );
      95           0 :         if( rFilter.ImportGraphic( aGraphic, _aURL, GRFILTER_FORMAT_DONTKNOW ) )
      96           0 :             bRet = false;
      97             :     }
      98             : 
      99           0 :     SetGraphic( aGraphic );
     100           0 :     Invalidate();
     101           0 :     return bRet;
     102             : }
     103             : 
     104             : // ------------------------------------------------------------------------
     105             : 
     106           0 : void GalleryPreview::InitSettings()
     107             : {
     108           0 :     SetBackground( Wallpaper( GALLERY_BG_COLOR ) );
     109           0 :     SetControlBackground( GALLERY_BG_COLOR );
     110           0 :     SetControlForeground( GALLERY_FG_COLOR );
     111           0 : }
     112             : 
     113             : // -----------------------------------------------------------------------
     114             : 
     115           0 : void GalleryPreview::DataChanged( const DataChangedEvent& rDCEvt )
     116             : {
     117           0 :     if ( ( rDCEvt.GetType() == DATACHANGED_SETTINGS ) && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
     118           0 :         InitSettings();
     119             :     else
     120           0 :         Window::DataChanged( rDCEvt );
     121           0 : }
     122             : 
     123             : // ------------------------------------------------------------------------
     124             : 
     125           0 : sal_Bool GalleryPreview::ImplGetGraphicCenterRect( const Graphic& rGraphic, Rectangle& rResultRect ) const
     126             : {
     127           0 :     const Size  aWinSize( GetOutputSizePixel() );
     128           0 :     Size        aNewSize( LogicToPixel( rGraphic.GetPrefSize(), rGraphic.GetPrefMapMode() ) );
     129           0 :     sal_Bool        bRet = sal_False;
     130             : 
     131           0 :     if( aNewSize.Width() && aNewSize.Height() )
     132             :     {
     133             :         // scale to fit window
     134           0 :         const double fGrfWH = (double) aNewSize.Width() / aNewSize.Height();
     135           0 :         const double fWinWH = (double) aWinSize.Width() / aWinSize.Height();
     136             : 
     137           0 :         if ( fGrfWH < fWinWH )
     138             :         {
     139           0 :             aNewSize.Width() = (long) ( aWinSize.Height() * fGrfWH );
     140           0 :             aNewSize.Height()= aWinSize.Height();
     141             :         }
     142             :         else
     143             :         {
     144           0 :             aNewSize.Width() = aWinSize.Width();
     145           0 :             aNewSize.Height()= (long) ( aWinSize.Width() / fGrfWH);
     146             :         }
     147             : 
     148           0 :         const Point aNewPos( ( aWinSize.Width()  - aNewSize.Width() ) >> 1,
     149           0 :                              ( aWinSize.Height() - aNewSize.Height() ) >> 1 );
     150             : 
     151           0 :         rResultRect = Rectangle( aNewPos, aNewSize );
     152           0 :         bRet = sal_True;
     153             :     }
     154             : 
     155           0 :     return bRet;
     156             : }
     157             : 
     158             : // ------------------------------------------------------------------------
     159             : 
     160           0 : void GalleryPreview::Paint( const Rectangle& rRect )
     161             : {
     162           0 :     Window::Paint( rRect );
     163             : 
     164           0 :     if( ImplGetGraphicCenterRect( aGraphicObj.GetGraphic(), aPreviewRect ) )
     165             :     {
     166           0 :         const Point aPos( aPreviewRect.TopLeft() );
     167           0 :         const Size  aSize( aPreviewRect.GetSize() );
     168             : 
     169           0 :         if( aGraphicObj.IsAnimated() )
     170           0 :             aGraphicObj.StartAnimation( this, aPos, aSize );
     171             :         else
     172           0 :             aGraphicObj.Draw( this, aPos, aSize );
     173             :     }
     174           0 : }
     175             : 
     176             : // ------------------------------------------------------------------------
     177             : 
     178           0 : void GalleryPreview::MouseButtonDown( const MouseEvent& rMEvt )
     179             : {
     180           0 :     if( mpTheme && ( rMEvt.GetClicks() == 2 ) )
     181           0 :         ( (GalleryBrowser2*) GetParent() )->TogglePreview( this );
     182           0 : }
     183             : 
     184             : // ------------------------------------------------------------------------
     185             : 
     186           0 : void GalleryPreview::Command(const CommandEvent& rCEvt )
     187             : {
     188           0 :     Window::Command( rCEvt );
     189             : 
     190           0 :     if( mpTheme && ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU ) )
     191           0 :         ( (GalleryBrowser2*) GetParent() )->ShowContextMenu( this,
     192           0 :             ( rCEvt.IsMouseEvent() ? &rCEvt.GetMousePosPixel() : NULL ) );
     193           0 : }
     194             : 
     195             : // ------------------------------------------------------------------------
     196             : 
     197           0 : void GalleryPreview::KeyInput( const KeyEvent& rKEvt )
     198             : {
     199           0 :     if( mpTheme )
     200             :     {
     201           0 :         GalleryBrowser2* pBrowser = static_cast< GalleryBrowser2* >( GetParent() );
     202             : 
     203           0 :         switch( rKEvt.GetKeyCode().GetCode() )
     204             :         {
     205             :             case( KEY_BACKSPACE ):
     206           0 :                 pBrowser->TogglePreview( this );
     207           0 :             break;
     208             : 
     209             :             case( KEY_HOME ):
     210           0 :                 pBrowser->Travel( GALLERYBROWSERTRAVEL_FIRST );
     211           0 :             break;
     212             : 
     213             :             case( KEY_END ):
     214           0 :                 pBrowser->Travel( GALLERYBROWSERTRAVEL_LAST );
     215           0 :             break;
     216             : 
     217             :             case( KEY_LEFT ):
     218             :             case( KEY_UP ):
     219           0 :                 pBrowser->Travel( GALLERYBROWSERTRAVEL_PREVIOUS );
     220           0 :             break;
     221             : 
     222             :             case( KEY_RIGHT ):
     223             :             case( KEY_DOWN ):
     224           0 :                 pBrowser->Travel( GALLERYBROWSERTRAVEL_NEXT );
     225           0 :             break;
     226             : 
     227             :             default:
     228             :             {
     229           0 :                 if( !pBrowser->KeyInput( rKEvt, this ) )
     230           0 :                     Window::KeyInput( rKEvt );
     231             :             }
     232           0 :             break;
     233             :         }
     234             :     }
     235             :     else
     236           0 :         Window::KeyInput( rKEvt );
     237           0 : }
     238             : 
     239             : // ------------------------------------------------------------------------
     240             : 
     241           0 : sal_Int8 GalleryPreview::AcceptDrop( const AcceptDropEvent& rEvt )
     242             : {
     243             :     sal_Int8 nRet;
     244             : 
     245           0 :     if( mpTheme )
     246           0 :         nRet = ( (GalleryBrowser2*) GetParent() )->AcceptDrop( *this, rEvt );
     247             :     else
     248           0 :         nRet = DND_ACTION_NONE;
     249             : 
     250           0 :     return nRet;
     251             : }
     252             : 
     253             : // ------------------------------------------------------------------------
     254             : 
     255           0 : sal_Int8 GalleryPreview::ExecuteDrop( const ExecuteDropEvent& rEvt )
     256             : {
     257             :     sal_Int8 nRet;
     258             : 
     259           0 :     if( mpTheme )
     260           0 :         nRet = ( (GalleryBrowser2*) GetParent() )->ExecuteDrop( *this, rEvt );
     261             :     else
     262           0 :         nRet = DND_ACTION_NONE;
     263             : 
     264           0 :     return nRet;
     265             : }
     266             : 
     267             : // ------------------------------------------------------------------------
     268             : 
     269           0 : void GalleryPreview::StartDrag( sal_Int8, const Point& )
     270             : {
     271           0 :     if( mpTheme )
     272           0 :         ( (GalleryBrowser2*) GetParent() )->StartDrag( this );
     273           0 : }
     274             : 
     275             : // ------------------------------------------------------------------------
     276             : 
     277           0 : void GalleryPreview::PreviewMedia( const INetURLObject& rURL )
     278             : {
     279           0 :     if( rURL.GetProtocol() != INET_PROT_NOT_VALID )
     280             :     {
     281           0 :         ::avmedia::MediaFloater* pFloater = AVMEDIA_MEDIAWINDOW();
     282             : 
     283           0 :         if( !pFloater )
     284             :         {
     285           0 :             SfxViewFrame::Current()->GetBindings().GetDispatcher()->Execute( SID_AVMEDIA_PLAYER, SFX_CALLMODE_SYNCHRON );
     286           0 :             pFloater = AVMEDIA_MEDIAWINDOW();
     287             :         }
     288             : 
     289           0 :         if( pFloater )
     290           0 :             pFloater->setURL( rURL.GetMainURL( INetURLObject::DECODE_UNAMBIGUOUS ), true );
     291             :     }
     292           0 : }
     293             : 
     294             : // ------------------------------------------------------------------------
     295             : 
     296             : // -------------------
     297             : // - GalleryIconView -
     298             : // -------------------
     299             : DBG_NAME(GalleryIconView)
     300             : 
     301           0 : GalleryIconView::GalleryIconView( GalleryBrowser2* pParent, GalleryTheme* pTheme ) :
     302             :         ValueSet( pParent, WB_TABSTOP | WB_3DLOOK | WB_BORDER | WB_ITEMBORDER | WB_DOUBLEBORDER | WB_VSCROLL | WB_FLATVALUESET ),
     303             :         DropTargetHelper( this ),
     304             :         DragSourceHelper( this ),
     305           0 :         mpTheme ( pTheme )
     306             : {
     307             :     DBG_CTOR(GalleryIconView,NULL);
     308             : 
     309           0 :     EnableFullItemMode( sal_False );
     310             : 
     311           0 :     SetHelpId( HID_GALLERY_WINDOW );
     312           0 :     InitSettings();
     313           0 :     SetExtraSpacing( 2 );
     314           0 :     SetItemWidth( S_THUMB + 6 );
     315           0 :     SetItemHeight( S_THUMB + 6 );
     316           0 : }
     317             : 
     318             : // ------------------------------------------------------------------------
     319             : 
     320           0 : GalleryIconView::~GalleryIconView()
     321             : {
     322             :     DBG_DTOR(GalleryIconView,NULL);
     323           0 : }
     324             : 
     325             : // ------------------------------------------------------------------------
     326             : 
     327           0 : void GalleryIconView::InitSettings()
     328             : {
     329           0 :     SetBackground( Wallpaper( GALLERY_BG_COLOR ) );
     330           0 :     SetControlBackground( GALLERY_BG_COLOR );
     331           0 :     SetControlForeground( GALLERY_FG_COLOR );
     332           0 :     SetColor( GALLERY_BG_COLOR );
     333           0 : }
     334             : 
     335             : // -----------------------------------------------------------------------
     336             : 
     337           0 : void GalleryIconView::DataChanged( const DataChangedEvent& rDCEvt )
     338             : {
     339           0 :     if ( ( rDCEvt.GetType() == DATACHANGED_SETTINGS ) && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
     340           0 :         InitSettings();
     341             :     else
     342           0 :         ValueSet::DataChanged( rDCEvt );
     343           0 : }
     344             : 
     345             : // ------------------------------------------------------------------------
     346             : 
     347           0 : void GalleryIconView::UserDraw( const UserDrawEvent& rUDEvt )
     348             : {
     349           0 :     const sal_uInt16 nId = rUDEvt.GetItemId();
     350             : 
     351           0 :     if( nId && mpTheme )
     352             :     {
     353           0 :         SgaObject* pObj = mpTheme->AcquireObject( nId - 1 );
     354             : 
     355           0 :         if( pObj )
     356             :         {
     357           0 :             const Rectangle&    rRect = rUDEvt.GetRect();
     358           0 :             OutputDevice*       pDev = rUDEvt.GetDevice();
     359           0 :             Graphic             aGraphic;
     360             : 
     361           0 :             if( pObj->IsThumbBitmap() )
     362             :             {
     363           0 :                 Bitmap aBmp( pObj->GetThumbBmp() );
     364             : 
     365           0 :                 if( pObj->GetObjKind() == SGA_OBJ_SOUND )
     366           0 :                     aBmp.Replace( COL_LIGHTMAGENTA, COL_WHITE );
     367             : 
     368           0 :                 if( ( pDev->GetBitCount() <= 8 ) && ( aBmp.GetBitCount() >= 8 ) )
     369           0 :                     aBmp.Dither( BMP_DITHER_FLOYD );
     370             : 
     371           0 :                 aGraphic = aBmp;
     372             :             }
     373             :             else
     374           0 :                 aGraphic = pObj->GetThumbMtf();
     375             : 
     376           0 :             Size aSize( aGraphic.GetSizePixel( pDev ) );
     377             : 
     378           0 :             if ( aSize.Width() && aSize.Height() )
     379             :             {
     380           0 :                 if( ( aSize.Width() > rRect.GetWidth() ) || ( aSize.Height() > rRect.GetHeight() ) )
     381             :                 {
     382           0 :                     Point           aNewPos;
     383           0 :                     const double    fBmpWH  = (double) aSize.Width() / aSize.Height();
     384           0 :                     const double    fThmpWH = (double) rRect.GetWidth() / rRect.GetHeight();
     385             : 
     386             :                     // Bitmap an Thumbgroesse anpassen
     387           0 :                     if ( fBmpWH < fThmpWH )
     388             :                     {
     389           0 :                         aSize.Width() = (long) ( rRect.GetHeight() * fBmpWH );
     390           0 :                         aSize.Height()= rRect.GetHeight();
     391             :                     }
     392             :                     else
     393             :                     {
     394           0 :                         aSize.Width() = rRect.GetWidth();
     395           0 :                         aSize.Height()= (long) ( rRect.GetWidth() / fBmpWH );
     396             :                     }
     397             :                 }
     398             : 
     399           0 :                 const Point aPos( ( ( rRect.GetWidth() - aSize.Width() ) >> 1 ) + rRect.Left(),
     400           0 :                                   ( ( rRect.GetHeight() - aSize.Height() ) >> 1 ) + rRect.Top() );
     401             : 
     402           0 :                 aGraphic.Draw( pDev, aPos, aSize );
     403             :             }
     404             : 
     405           0 :             SetItemText( nId, GalleryBrowser2::GetItemText( *mpTheme, *pObj, GALLERY_ITEM_TITLE) );
     406           0 :             mpTheme->ReleaseObject( pObj );
     407             :         }
     408             :     }
     409           0 : }
     410             : 
     411             : // ------------------------------------------------------------------------
     412             : 
     413           0 : void GalleryIconView::MouseButtonDown( const MouseEvent& rMEvt )
     414             : {
     415           0 :     ValueSet::MouseButtonDown( rMEvt );
     416             : 
     417           0 :     if( rMEvt.GetClicks() == 2 )
     418           0 :         ( (GalleryBrowser2*) GetParent() )->TogglePreview( this, &rMEvt.GetPosPixel() );
     419           0 : }
     420             : 
     421             : // ------------------------------------------------------------------------
     422             : 
     423           0 : void GalleryIconView::Command( const CommandEvent& rCEvt )
     424             : {
     425           0 :     ValueSet::Command( rCEvt );
     426             : 
     427           0 :     if( rCEvt.GetCommand() == COMMAND_CONTEXTMENU )
     428             :     {
     429           0 :         ( (GalleryBrowser2*) GetParent() )->ShowContextMenu( this,
     430           0 :             ( rCEvt.IsMouseEvent() ? &rCEvt.GetMousePosPixel() : NULL ) );
     431             :     }
     432           0 : }
     433             : 
     434             : // ------------------------------------------------------------------------
     435             : 
     436           0 : void GalleryIconView::KeyInput( const KeyEvent& rKEvt )
     437             : {
     438           0 :     if( !mpTheme || !static_cast< GalleryBrowser2* >( GetParent() )->KeyInput( rKEvt, this ) )
     439           0 :         ValueSet::KeyInput( rKEvt );
     440           0 : }
     441             : 
     442             : // ------------------------------------------------------------------------
     443             : 
     444           0 : sal_Int8 GalleryIconView::AcceptDrop( const AcceptDropEvent& rEvt )
     445             : {
     446           0 :     return( static_cast< GalleryBrowser2* >( GetParent() )->AcceptDrop( *this, rEvt ) );
     447             : }
     448             : 
     449             : // ------------------------------------------------------------------------
     450             : 
     451           0 : sal_Int8 GalleryIconView::ExecuteDrop( const ExecuteDropEvent& rEvt )
     452             : {
     453           0 :     return( static_cast< GalleryBrowser2* >( GetParent() )->ExecuteDrop( *this, rEvt ) );
     454             : }
     455             : 
     456             : // ------------------------------------------------------------------------
     457             : 
     458           0 : void GalleryIconView::StartDrag( sal_Int8, const Point& )
     459             : {
     460           0 :     const CommandEvent  aEvt( GetPointerPosPixel(), COMMAND_STARTDRAG, sal_True );
     461           0 :     Region              aRegion;
     462             : 
     463             :     // call this to initiate dragging for ValueSet
     464           0 :     ValueSet::StartDrag( aEvt, aRegion );
     465           0 :     static_cast< GalleryBrowser2* >( GetParent() )->StartDrag( this );
     466           0 : }
     467             : 
     468             : // -------------------
     469             : // - GalleryListView -
     470             : // -------------------
     471             : DBG_NAME(GalleryListView)
     472             : 
     473           0 : GalleryListView::GalleryListView( GalleryBrowser2* pParent, GalleryTheme* pTheme ) :
     474             :     BrowseBox( pParent, WB_TABSTOP | WB_3DLOOK | WB_BORDER ),
     475             :     mpTheme( pTheme ),
     476           0 :     mnCurRow( 0 )
     477             : {
     478             :     DBG_CTOR(GalleryListView,NULL);
     479             : 
     480           0 :     SetHelpId( HID_GALLERY_WINDOW );
     481             : 
     482           0 :     InitSettings();
     483             : 
     484           0 :     SetMode( BROWSER_AUTO_VSCROLL | BROWSER_AUTOSIZE_LASTCOL );
     485           0 :     SetDataRowHeight( 28 );
     486           0 :     InsertDataColumn( GALLERY_BRWBOX_TITLE, GAL_RESSTR(RID_SVXSTR_GALLERY_TITLE), 256  );
     487           0 :     InsertDataColumn( GALLERY_BRWBOX_PATH, GAL_RESSTR(RID_SVXSTR_GALLERY_PATH), 256 );
     488           0 : }
     489             : 
     490             : // ------------------------------------------------------------------------
     491             : 
     492           0 : GalleryListView::~GalleryListView()
     493             : {
     494             :     DBG_DTOR(GalleryListView,NULL);
     495           0 : }
     496             : 
     497             : // ------------------------------------------------------------------------
     498             : 
     499           0 : void GalleryListView::InitSettings()
     500             : {
     501           0 :     SetBackground( Wallpaper( GALLERY_BG_COLOR ) );
     502           0 :     SetControlBackground( GALLERY_BG_COLOR );
     503           0 :     SetControlForeground( GALLERY_FG_COLOR );
     504           0 : }
     505             : 
     506             : // -----------------------------------------------------------------------
     507             : 
     508           0 : void GalleryListView::DataChanged( const DataChangedEvent& rDCEvt )
     509             : {
     510           0 :     if ( ( rDCEvt.GetType() == DATACHANGED_SETTINGS ) && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
     511           0 :         InitSettings();
     512             :     else
     513           0 :         BrowseBox::DataChanged( rDCEvt );
     514           0 : }
     515             : 
     516             : // ------------------------------------------------------------------------
     517             : 
     518           0 : sal_Bool GalleryListView::SeekRow( long nRow )
     519             : {
     520           0 :     mnCurRow = nRow;
     521           0 :     return sal_True;
     522             : }
     523             : 
     524             : // -----------------------------------------------------------------------------
     525             : 
     526           0 : String GalleryListView::GetCellText(long _nRow, sal_uInt16 nColumnId) const
     527             : {
     528           0 :     String sRet;
     529           0 :     if( mpTheme && ( _nRow < static_cast< long >( mpTheme->GetObjectCount() ) ) )
     530             :     {
     531           0 :         SgaObject* pObj = mpTheme->AcquireObject( _nRow );
     532             : 
     533           0 :         if( pObj )
     534             :         {
     535             :             sRet = GalleryBrowser2::GetItemText( *mpTheme, *pObj,
     536           0 :                 ( GALLERY_BRWBOX_TITLE == nColumnId ) ? GALLERY_ITEM_TITLE : GALLERY_ITEM_PATH );
     537             : 
     538           0 :             mpTheme->ReleaseObject( pObj );
     539             :         }
     540             :     }
     541             : 
     542           0 :     return sRet;
     543             : }
     544             : 
     545             : // -----------------------------------------------------------------------------
     546             : 
     547           0 : Rectangle GalleryListView::GetFieldCharacterBounds(sal_Int32 _nRow,sal_Int32 _nColumnPos,sal_Int32 nIndex)
     548             : {
     549             :     DBG_ASSERT(_nColumnPos >= 0 && _nColumnPos <= USHRT_MAX, "GalleryListView::GetFieldCharacterBounds: _nColumnId overflow");
     550           0 :     Rectangle aRect;
     551           0 :     if ( SeekRow(_nRow) )
     552             :     {
     553           0 :         SvxFont aFont( GetFont() );
     554           0 :         AccessibleStringWrap aStringWrap( *this, aFont, GetCellText(_nRow, sal::static_int_cast<sal_uInt16>( GetColumnId( sal::static_int_cast<sal_uInt16>(_nColumnPos) ) ) ) );
     555             : 
     556             :         // get the bounds inside the string
     557           0 :         aStringWrap.GetCharacterBounds(nIndex, aRect);
     558             : 
     559             :         // offset to
     560             :     }
     561           0 :     return aRect;
     562             : }
     563             : 
     564             : // -----------------------------------------------------------------------------
     565             : 
     566           0 : sal_Int32 GalleryListView::GetFieldIndexAtPoint(sal_Int32 _nRow,sal_Int32 _nColumnPos,const Point& _rPoint)
     567             : {
     568             :     DBG_ASSERT(_nColumnPos >= 0 && _nColumnPos <= USHRT_MAX, "GalleryListView::GetFieldIndexAtPoint: _nColumnId overflow");
     569           0 :     sal_Int32 nRet = -1;
     570           0 :     if ( SeekRow(_nRow) )
     571             :     {
     572           0 :         SvxFont aFont( GetFont() );
     573           0 :         AccessibleStringWrap aStringWrap( *this, aFont, GetCellText(_nRow, sal::static_int_cast<sal_uInt16>(GetColumnId(sal::static_int_cast<sal_uInt16>(_nColumnPos)))) );
     574           0 :         nRet = aStringWrap.GetIndexAtPoint(_rPoint);
     575             :     }
     576           0 :     return nRet;
     577             : }
     578             : 
     579             : // ------------------------------------------------------------------------
     580             : 
     581           0 : void GalleryListView::PaintField( OutputDevice& rDev, const Rectangle& rRect, sal_uInt16 nColumnId ) const
     582             : {
     583           0 :     rDev.Push( PUSH_CLIPREGION );
     584           0 :     rDev.IntersectClipRegion( rRect );
     585             : 
     586           0 :     if( mpTheme && ( mnCurRow < mpTheme->GetObjectCount() ) )
     587             :     {
     588           0 :         SgaObject* pObj = mpTheme->AcquireObject( mnCurRow );
     589             : 
     590           0 :         if( pObj )
     591             :         {
     592           0 :             const long nTextPosY = rRect.Top() + ( ( rRect.GetHeight() - rDev.GetTextHeight() ) >> 1 );
     593             : 
     594           0 :             if( GALLERY_BRWBOX_TITLE == nColumnId )
     595             :             {
     596           0 :                 Rectangle       aOutputRect( rRect.TopLeft(), Size( rRect.GetHeight(), rRect.GetHeight() ) );
     597           0 :                 GraphicObject   aGrfObj;
     598             : 
     599           0 :                 if( pObj->GetObjKind() == SGA_OBJ_SOUND )
     600           0 :                     aGrfObj = Graphic( BitmapEx( GAL_RES( RID_SVXBMP_GALLERY_MEDIA ) ) );
     601           0 :                 else if( pObj->IsThumbBitmap() )
     602           0 :                     aGrfObj = Graphic( pObj->GetThumbBmp() );
     603             :                 else
     604           0 :                     aGrfObj = Graphic( pObj->GetThumbMtf() );
     605             : 
     606           0 :                 Size aSize( rDev.LogicToPixel( aGrfObj.GetPrefSize(), aGrfObj.GetPrefMapMode() ) );
     607             : 
     608           0 :                 if( aSize.Width() && aSize.Height() )
     609             :                 {
     610           0 :                     if( ( aSize.Width() > aOutputRect.GetWidth() ) || ( aSize.Height() > aOutputRect.GetHeight() ) )
     611             :                     {
     612           0 :                         Point           aNewPos;
     613           0 :                         const double    fBmpWH  = (double) aSize.Width() / aSize.Height();
     614           0 :                         const double    fThmpWH = (double) aOutputRect.GetWidth() / aOutputRect.GetHeight();
     615             : 
     616             :                         // Bitmap an Thumbgroesse anpassen
     617           0 :                         if ( fBmpWH < fThmpWH )
     618             :                         {
     619           0 :                             aSize.Width() = (long) ( aOutputRect.GetHeight() * fBmpWH );
     620           0 :                             aSize.Height()= aOutputRect.GetHeight();
     621             :                         }
     622             :                         else
     623             :                         {
     624           0 :                             aSize.Width() = aOutputRect.GetWidth();
     625           0 :                             aSize.Height()= (long) ( aOutputRect.GetWidth() / fBmpWH );
     626             :                         }
     627             :                     }
     628             : 
     629           0 :                     aSize.Width() = Max( aSize.Width(), 4L );
     630           0 :                     aSize.Height() = Max( aSize.Height(), 4L );
     631             : 
     632           0 :                     const Point aPos( ( ( aOutputRect.GetWidth() - aSize.Width() ) >> 1 ) + aOutputRect.Left(),
     633           0 :                                       ( ( aOutputRect.GetHeight() - aSize.Height() ) >> 1 ) + aOutputRect.Top() );
     634             : 
     635           0 :                     aGrfObj.Draw( &rDev, aPos, aSize );
     636             :                 }
     637             : 
     638           0 :                 rDev.DrawText( Point( aOutputRect.Right() + 6, nTextPosY ), GalleryBrowser2::GetItemText( *mpTheme, *pObj, GALLERY_ITEM_TITLE ) );
     639             :             }
     640           0 :             else if( GALLERY_BRWBOX_PATH == nColumnId )
     641           0 :                 rDev.DrawText( Point( rRect.Left(), nTextPosY ), GalleryBrowser2::GetItemText( *mpTheme, *pObj, GALLERY_ITEM_PATH ) );
     642             : 
     643           0 :             mpTheme->ReleaseObject( pObj );
     644             :         }
     645             :     }
     646             : 
     647           0 :     rDev.Pop();
     648           0 : }
     649             : 
     650             : // ------------------------------------------------------------------------
     651             : 
     652           0 : void GalleryListView::Command( const CommandEvent& rCEvt )
     653             : {
     654           0 :     BrowseBox::Command( rCEvt );
     655             : 
     656           0 :     if( rCEvt.GetCommand() == COMMAND_CONTEXTMENU )
     657             :     {
     658           0 :         const Point* pPos = NULL;
     659             : 
     660           0 :         if( rCEvt.IsMouseEvent() && ( GetRowAtYPosPixel( rCEvt.GetMousePosPixel().Y() ) != BROWSER_ENDOFSELECTION ) )
     661           0 :             pPos = &rCEvt.GetMousePosPixel();
     662             : 
     663           0 :         ( (GalleryBrowser2*) GetParent() )->ShowContextMenu( this, pPos );
     664             :     }
     665           0 : }
     666             : 
     667             : // ------------------------------------------------------------------------
     668             : 
     669           0 : void GalleryListView::KeyInput( const KeyEvent& rKEvt )
     670             : {
     671           0 :     if( !mpTheme || !static_cast< GalleryBrowser2* >( GetParent() )->KeyInput( rKEvt, this ) )
     672           0 :         BrowseBox::KeyInput( rKEvt );
     673           0 : }
     674             : 
     675             : // ------------------------------------------------------------------------
     676             : 
     677           0 : void GalleryListView::DoubleClick( const BrowserMouseEvent& rEvt )
     678             : {
     679           0 :     BrowseBox::DoubleClick( rEvt );
     680             : 
     681           0 :     if( rEvt.GetRow() != BROWSER_ENDOFSELECTION )
     682           0 :         ( (GalleryBrowser2*) GetParent() )->TogglePreview( this, &rEvt.GetPosPixel() );
     683           0 : }
     684             : 
     685             : // ------------------------------------------------------------------------
     686             : 
     687           0 : void GalleryListView::Select()
     688             : {
     689           0 :     if( maSelectHdl.IsSet() )
     690           0 :         maSelectHdl.Call( this );
     691           0 : }
     692             : 
     693             : // ------------------------------------------------------------------------
     694             : 
     695           0 : sal_Int8 GalleryListView::AcceptDrop( const BrowserAcceptDropEvent& )
     696             : {
     697           0 :     sal_Int8 nRet = DND_ACTION_NONE;
     698             : 
     699           0 :     if( mpTheme && !mpTheme->IsReadOnly() )
     700           0 :         nRet = DND_ACTION_COPY;
     701             : 
     702           0 :     return nRet;
     703             : }
     704             : 
     705             : // ------------------------------------------------------------------------
     706             : 
     707           0 : sal_Int8 GalleryListView::ExecuteDrop( const BrowserExecuteDropEvent& rEvt )
     708             : {
     709           0 :     ExecuteDropEvent aEvt( rEvt );
     710             : 
     711           0 :     aEvt.maPosPixel.Y() += GetTitleHeight();
     712             : 
     713           0 :     return( ( (GalleryBrowser2*) GetParent() )->ExecuteDrop( *this, aEvt ) );
     714             : }
     715             : 
     716             : // ------------------------------------------------------------------------
     717             : 
     718           0 : void GalleryListView::StartDrag( sal_Int8, const Point& rPosPixel )
     719             : {
     720           0 :     ( (GalleryBrowser2*) GetParent() )->StartDrag( this, &rPosPixel );
     721           0 : }
     722             : 
     723             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10