diff options
author | Kai Ahrens <ka@openoffice.org> | 2002-02-07 14:41:38 +0000 |
---|---|---|
committer | Kai Ahrens <ka@openoffice.org> | 2002-02-07 14:41:38 +0000 |
commit | 4801fd703ffa8e651ae96029dd0e590c13447770 (patch) | |
tree | 5ef2af49b2cd79a8c45b928700589990e917f067 /svx/source/gallery2/galbrws2.cxx | |
parent | 82e233e1920da0e9a35a1478c9845cbe1fafd5ca (diff) |
#96960#: accessibility for Gallery
Diffstat (limited to 'svx/source/gallery2/galbrws2.cxx')
-rw-r--r-- | svx/source/gallery2/galbrws2.cxx | 417 |
1 files changed, 296 insertions, 121 deletions
diff --git a/svx/source/gallery2/galbrws2.cxx b/svx/source/gallery2/galbrws2.cxx index 680ca765b139..93b01aeb962a 100644 --- a/svx/source/gallery2/galbrws2.cxx +++ b/svx/source/gallery2/galbrws2.cxx @@ -2,9 +2,9 @@ * * $RCSfile: galbrws2.cxx,v $ * - * $Revision: 1.26 $ + * $Revision: 1.27 $ * - * last change: $Author: ka $ $Date: 2001-10-25 10:32:00 $ + * last change: $Author: ka $ $Date: 2002-02-07 15:41:38 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -296,6 +296,29 @@ void GalleryThemePopup::StateChanged( USHORT nSID, SfxItemState eState, const Sf } } +// ------------------ +// - GalleryToolBox - +// ------------------ + +GalleryToolBox::GalleryToolBox( GalleryBrowser2* pParent ) : + ToolBox( pParent ) +{ +} + +// ------------------------------------------------------------------------ + +GalleryToolBox::~GalleryToolBox() +{ +} + +// ------------------------------------------------------------------------ + +void GalleryToolBox::KeyInput( const KeyEvent& rKEvt ) +{ + if( !static_cast< GalleryBrowser2* >( GetParent() )->KeyInput( rKEvt, this ) ) + ToolBox::KeyInput( rKEvt ); +} + // ------------------- // - GalleryBrowser2 - // ------------------- @@ -503,6 +526,87 @@ void GalleryBrowser2::ShowContextMenu( Window* pWindow, const Point* pContextPoi // ----------------------------------------------------------------------------- +BOOL GalleryBrowser2::KeyInput( const KeyEvent& rKEvt, Window* pWindow ) +{ + const ULONG nItemId = ImplGetSelectedItemId( NULL ); + BOOL bRet = static_cast< GalleryBrowser* >( GetParent() )->KeyInput( rKEvt, pWindow ); + + if( !bRet && nItemId && mpCurTheme ) + { + USHORT nExecuteId = 0; + const SgaObjKind eObjKind = mpCurTheme->GetObjectKind( nItemId - 1 ); + INetURLObject aURL; + + const_cast< GalleryTheme* >( mpCurTheme )->GetURL( nItemId - 1, aURL ); + + const BOOL bValidURL = ( aURL.GetProtocol() != INET_PROT_NOT_VALID ); + BOOL bPreview = bValidURL; + BOOL bAdd = ( bValidURL && SGA_OBJ_SOUND != eObjKind ); + BOOL bAddLink = ( bValidURL && SGA_OBJ_SVDRAW != eObjKind && SGA_OBJ_SOUND != eObjKind ); + BOOL bDelete = FALSE; + BOOL bTitle = FALSE; + + if( !mpCurTheme->IsReadOnly() && mpCurTheme->GetObjectCount() ) + { + bDelete = ( GALLERYBROWSERMODE_PREVIEW != GetMode() ); + bTitle = TRUE; + } + + switch( rKEvt.GetKeyCode().GetCode() ) + { + case( KEY_SPACE ): + case( KEY_RETURN ): + case( KEY_P ): + { + if( bPreview ) + { + TogglePreview( pWindow ); + bRet = TRUE; + } + } + break; + + case( KEY_INSERT ): + case( KEY_I ): + { + if( bAddLink && rKEvt.GetKeyCode().IsShift() && rKEvt.GetKeyCode().IsMod1() ) + nExecuteId = MN_ADD_LINK; + else if( bAdd ) + nExecuteId = MN_ADD; + } + break; + + case( KEY_DELETE ): + case( KEY_D ): + { + if( bDelete ) + nExecuteId = MN_DELETE; + } + break; + + case( KEY_T ): + { + if( bTitle ) + nExecuteId = MN_TITLE; + } + break; + + default: + break; + } + + if( nExecuteId ) + { + ImplExecute( nExecuteId ); + bRet = TRUE; + } + } + + return bRet; +} + +// ----------------------------------------------------------------------------- + void GalleryBrowser2::SelectTheme( const String& rThemeName ) { delete mpIconView, mpIconView = NULL; @@ -617,6 +721,73 @@ void GalleryBrowser2::SetMode( GalleryBrowserMode eMode ) // ----------------------------------------------------------------------------- +Window* GalleryBrowser2::GetViewWindow() const +{ + Window* pRet; + + switch( GetMode() ) + { + case( GALLERYBROWSERMODE_LIST ): pRet = mpListView; break; + case( GALLERYBROWSERMODE_PREVIEW ): pRet = mpPreview; break; + + default: + pRet = mpIconView; + break; + } + + return pRet; +} + +// ----------------------------------------------------------------------------- + +void GalleryBrowser2::Travel( GalleryBrowserTravel eTravel ) +{ + if( mpCurTheme ) + { + const ULONG nItemId = ImplGetSelectedItemId( NULL ); + + if( nItemId ) + { + ULONG nNewItemId = nItemId; + + switch( eTravel ) + { + case( GALLERYBROWSERTRAVEL_FIRST ): nNewItemId = 1; break; + case( GALLERYBROWSERTRAVEL_LAST ): nNewItemId = mpCurTheme->GetObjectCount(); break; + case( GALLERYBROWSERTRAVEL_PREVIOUS ): nNewItemId--; break; + case( GALLERYBROWSERTRAVEL_NEXT ): nNewItemId++; break; + } + + if( nNewItemId < 1 ) + nNewItemId = 1; + else if( nNewItemId > mpCurTheme->GetObjectCount() ) + nNewItemId = mpCurTheme->GetObjectCount(); + + if( nNewItemId != nItemId ) + { + ImplSelectItemId( nNewItemId ); + ImplUpdateInfoBar(); + + if( GALLERYBROWSERMODE_PREVIEW == GetMode() ) + { + Graphic aGraphic; + const ULONG nPos = nNewItemId - 1; + + mpCurTheme->GetGraphic( nPos, aGraphic ); + mpPreview->SetGraphic( aGraphic ); + + if( SGA_OBJ_SOUND == mpCurTheme->GetObjectKind( nPos ) ) + mpPreview->PreviewSound( mpCurTheme->GetObjectURL( nPos ) ); + + mpPreview->Invalidate(); + } + } + } + } +} + +// ----------------------------------------------------------------------------- + void GalleryBrowser2::ImplUpdateViews( USHORT nSelectionId ) { mpIconView->Hide(); @@ -710,6 +881,128 @@ void GalleryBrowser2::ImplSelectItemId( ULONG nItemId ) // ----------------------------------------------------------------------------- +void GalleryBrowser2::ImplExecute( USHORT nId ) +{ + const ULONG nItemId = ImplGetSelectedItemId( NULL ); + + if( mpCurTheme && nItemId ) + { + mnCurActionPos = nItemId - 1; + + switch( nId ) + { + case( MN_ADD ): + case( MN_ADD_LINK ): + { + sal_uInt32 nFormat; + + mbCurActionIsLinkage = ( MN_ADD_LINK == nId ); + + switch( mpCurTheme->GetObjectKind( mnCurActionPos ) ) + { + case( SGA_OBJ_BMP ): + case( SGA_OBJ_ANIM ): + case( SGA_OBJ_INET ): + nFormat = SGA_FORMAT_GRAPHIC | SGA_FORMAT_STRING; + break; + + case ( SGA_OBJ_SOUND ) : + nFormat = SGA_FORMAT_SOUND | SGA_FORMAT_STRING; + break; + + case( SGA_OBJ_SVDRAW ): + nFormat = SGA_FORMAT_GRAPHIC | SGA_FORMAT_SVDRAW | SGA_FORMAT_STRING; + break; + + default : + break; + } + + const SfxUInt32Item aItem( SID_GALLERY_FORMATS, nFormat ); + SfxViewFrame::Current()->GetBindings().GetDispatcher()->Execute( + SID_GALLERY_FORMATS, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L ); + } + break; + + case( MN_PREVIEW ): + SetMode( ( GALLERYBROWSERMODE_PREVIEW != GetMode() ) ? GALLERYBROWSERMODE_PREVIEW : meLastMode ); + break; + + case( MN_DELETE ): + { + if( !mpCurTheme->IsReadOnly() && + QueryBox( NULL, WB_YES_NO, String( GAL_RESID( RID_SVXSTR_GALLERY_DELETEOBJ ) ) ).Execute() == RET_YES ) + { + mpCurTheme->RemoveObject( mnCurActionPos ); + } + } + break; + + case( MN_TITLE ): + { + SgaObject* pObj = mpCurTheme->AcquireObject( mnCurActionPos ); + + if( pObj ) + { + const String aOldTitle( GetItemText( *mpCurTheme, *pObj, GALLERY_ITEM_TITLE ) ); + TitleDialog aDlg( this, aOldTitle ); + + if( aDlg.Execute() == RET_OK ) + { + String aNewTitle( aDlg.GetTitle() ); + + if( ( !aNewTitle.Len() && pObj->GetTitle().Len() ) || ( aNewTitle != aOldTitle ) ) + { + if( !aNewTitle.Len() ) + aNewTitle = String( RTL_CONSTASCII_USTRINGPARAM( "__<empty>__" ) ); + + pObj->SetTitle( aNewTitle ); + mpCurTheme->InsertObject( *pObj ); + } + } + + mpCurTheme->ReleaseObject( pObj ); + } + } + break; + + case( MN_COPYCLIPBOARD ): + { + Window* pWindow; + + switch( GetMode() ) + { + case( GALLERYBROWSERMODE_ICON ): pWindow = (Window*) mpIconView; break; + case( GALLERYBROWSERMODE_LIST ): pWindow = (Window*) mpListView; break; + case( GALLERYBROWSERMODE_PREVIEW ): pWindow = (Window*) mpPreview; break; + + default: + pWindow = NULL; + break; + } + + mpCurTheme->CopyToClipboard( pWindow, mnCurActionPos ); + } + break; + + case( MN_PASTECLIPBOARD ): + { + if( !mpCurTheme->IsReadOnly() ) + { + TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( this ) ); + mpCurTheme->InsertTransferable( aDataHelper.GetTransferable(), mnCurActionPos ); + } + } + break; + + default: + break; + } + } +} + +// ----------------------------------------------------------------------------- + String GalleryBrowser2::GetItemText( const GalleryTheme& rTheme, const SgaObject& rObj, ULONG nItemTextFlags ) { INetURLObject aURL; @@ -835,125 +1128,7 @@ BOOL GalleryBrowser2::IsLinkage() const IMPL_LINK( GalleryBrowser2, MenuSelectHdl, Menu*, pMenu ) { if( pMenu ) - { - const USHORT nId = pMenu->GetCurItemId(); - const ULONG nItemId = ImplGetSelectedItemId( NULL ); - - if( mpCurTheme && nItemId ) - { - mnCurActionPos = nItemId - 1; - - switch( nId ) - { - case( MN_ADD ): - case( MN_ADD_LINK ): - { - sal_uInt32 nFormat; - - mbCurActionIsLinkage = ( MN_ADD_LINK == nId ); - - switch( mpCurTheme->GetObjectKind( mnCurActionPos ) ) - { - case( SGA_OBJ_BMP ): - case( SGA_OBJ_ANIM ): - case( SGA_OBJ_INET ): - nFormat = SGA_FORMAT_GRAPHIC | SGA_FORMAT_STRING; - break; - - case ( SGA_OBJ_SOUND ) : - nFormat = SGA_FORMAT_SOUND | SGA_FORMAT_STRING; - break; - - case( SGA_OBJ_SVDRAW ): - nFormat = SGA_FORMAT_GRAPHIC | SGA_FORMAT_SVDRAW | SGA_FORMAT_STRING; - break; - - default : - break; - } - - const SfxUInt32Item aItem( SID_GALLERY_FORMATS, nFormat ); - SfxViewFrame::Current()->GetBindings().GetDispatcher()->Execute( - SID_GALLERY_FORMATS, SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, &aItem, 0L ); - } - break; - - case( MN_PREVIEW ): - SetMode( ( GALLERYBROWSERMODE_PREVIEW != GetMode() ) ? GALLERYBROWSERMODE_PREVIEW : meLastMode ); - break; - - case( MN_DELETE ): - { - if( !mpCurTheme->IsReadOnly() && - QueryBox( NULL, WB_YES_NO, String( GAL_RESID( RID_SVXSTR_GALLERY_DELETEOBJ ) ) ).Execute() == RET_YES ) - { - mpCurTheme->RemoveObject( mnCurActionPos ); - } - } - break; - - case( MN_TITLE ): - { - SgaObject* pObj = mpCurTheme->AcquireObject( mnCurActionPos ); - - if( pObj ) - { - const String aOldTitle( GetItemText( *mpCurTheme, *pObj, GALLERY_ITEM_TITLE ) ); - TitleDialog aDlg( this, aOldTitle ); - - if( aDlg.Execute() == RET_OK ) - { - String aNewTitle( aDlg.GetTitle() ); - - if( ( !aNewTitle.Len() && pObj->GetTitle().Len() ) || ( aNewTitle != aOldTitle ) ) - { - if( !aNewTitle.Len() ) - aNewTitle = String( RTL_CONSTASCII_USTRINGPARAM( "__<empty>__" ) ); - - pObj->SetTitle( aNewTitle ); - mpCurTheme->InsertObject( *pObj ); - } - } - - mpCurTheme->ReleaseObject( pObj ); - } - } - break; - - case( MN_COPYCLIPBOARD ): - { - Window* pWindow; - - switch( GetMode() ) - { - case( GALLERYBROWSERMODE_ICON ): pWindow = (Window*) mpIconView; break; - case( GALLERYBROWSERMODE_LIST ): pWindow = (Window*) mpListView; break; - case( GALLERYBROWSERMODE_PREVIEW ): pWindow = (Window*) mpPreview; break; - - default: - pWindow = NULL; - break; - } - - mpCurTheme->CopyToClipboard( pWindow, mnCurActionPos ); - } - break; - - case( MN_PASTECLIPBOARD ): - { - if( !mpCurTheme->IsReadOnly() ) - { - TransferableDataHelper aDataHelper( TransferableDataHelper::CreateFromSystemClipboard( this ) ); - mpCurTheme->InsertTransferable( aDataHelper.GetTransferable(), mnCurActionPos ); - } - } - break; - - default: - break; - } - } - } + ImplExecute( pMenu->GetCurItemId() ); return 0; } |