diff options
Diffstat (limited to 'sc/source/ui/cctrl/tbinsert.cxx')
-rw-r--r-- | sc/source/ui/cctrl/tbinsert.cxx | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/sc/source/ui/cctrl/tbinsert.cxx b/sc/source/ui/cctrl/tbinsert.cxx new file mode 100644 index 000000000000..e27baecec115 --- /dev/null +++ b/sc/source/ui/cctrl/tbinsert.cxx @@ -0,0 +1,232 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sc.hxx" + +// System - Includes ----------------------------------------------------- + +#include <string> // HACK: prevent conflict between STLPORT and Workshop headers + + + +// INCLUDE --------------------------------------------------------------- + +#include <tools/shl.hxx> +#include <svl/intitem.hxx> +#include <sfx2/dispatch.hxx> +#include <sfx2/dispatch.hxx> +#include <sfx2/viewsh.hxx> +#include <sfx2/viewfrm.hxx> +#include <sfx2/imagemgr.hxx> +#include <vcl/toolbox.hxx> + +#include "tbinsert.hxx" +#include "tbinsert.hrc" +#include "global.hxx" +#include "scmod.hxx" +#include "scresid.hxx" +#include "sc.hrc" + +// ----------------------------------------------------------------------- + +SFX_IMPL_TOOLBOX_CONTROL( ScTbxInsertCtrl, SfxUInt16Item); + +//------------------------------------------------------------------ +// +// ToolBox - Controller +// +//------------------------------------------------------------------ + +ScTbxInsertCtrl::ScTbxInsertCtrl( USHORT nSlotId, USHORT nId, ToolBox& rTbx ) : + SfxToolBoxControl( nSlotId, nId, rTbx ), + nLastSlotId(0) +{ + rTbx.SetItemBits( nId, TIB_DROPDOWN | rTbx.GetItemBits( nId ) ); +} + +__EXPORT ScTbxInsertCtrl::~ScTbxInsertCtrl() +{ +} + +void __EXPORT ScTbxInsertCtrl::StateChanged( USHORT /* nSID */, SfxItemState eState, + const SfxPoolItem* pState ) +{ + GetToolBox().EnableItem( GetId(), (GetItemState(pState) != SFX_ITEM_DISABLED) ); + + if( eState == SFX_ITEM_AVAILABLE ) + { + + const SfxUInt16Item* pItem = PTR_CAST( SfxUInt16Item, pState ); + if(pItem) + { + nLastSlotId = pItem->GetValue(); + USHORT nImageId = nLastSlotId ? nLastSlotId : GetSlotId(); + rtl::OUString aSlotURL( RTL_CONSTASCII_USTRINGPARAM( "slot:" )); + aSlotURL += rtl::OUString::valueOf( sal_Int32( nImageId )); + Image aImage = GetImage( m_xFrame, + aSlotURL, + hasBigImages(), + GetToolBox().GetSettings().GetStyleSettings().GetHighContrastMode() ); + GetToolBox().SetItemImage(GetId(), aImage); + } + } +} + +SfxPopupWindow* __EXPORT ScTbxInsertCtrl::CreatePopupWindow() +{ +// USHORT nWinResId, nTbxResId; + USHORT nSlotId = GetSlotId(); + if (nSlotId == SID_TBXCTL_INSERT) + { + rtl::OUString aInsertBarResStr( RTL_CONSTASCII_USTRINGPARAM( "private:resource/toolbar/insertbar" )); + createAndPositionSubToolBar( aInsertBarResStr ); +// nWinResId = RID_TBXCTL_INSERT; +// nTbxResId = RID_TOOLBOX_INSERT; + } + else if (nSlotId == SID_TBXCTL_INSCELLS) + { + rtl::OUString aInsertCellsBarResStr( RTL_CONSTASCII_USTRINGPARAM( "private:resource/toolbar/insertcellsbar" )); + createAndPositionSubToolBar( aInsertCellsBarResStr ); +// nWinResId = RID_TBXCTL_INSCELLS; +// nTbxResId = RID_TOOLBOX_INSCELLS; + } + else /* SID_TBXCTL_INSOBJ */ + { + rtl::OUString aInsertObjectBarResStr( RTL_CONSTASCII_USTRINGPARAM( "private:resource/toolbar/insertobjectbar" )); + createAndPositionSubToolBar( aInsertObjectBarResStr ); +// nWinResId = RID_TBXCTL_INSOBJ; +// nTbxResId = RID_TOOLBOX_INSOBJ; + } +/* + WindowAlign eNewAlign = ( GetToolBox().IsHorizontal() ) ? WINDOWALIGN_LEFT : WINDOWALIGN_TOP; + ScTbxInsertPopup *pWin = new ScTbxInsertPopup( nSlotId, eNewAlign, + ScResId(nWinResId), ScResId(nTbxResId), GetBindings() ); + pWin->StartPopupMode(&GetToolBox(), TRUE); + pWin->StartSelection(); + pWin->Show(); + return pWin; +*/ + return NULL; +} + +SfxPopupWindowType __EXPORT ScTbxInsertCtrl::GetPopupWindowType() const +{ + return nLastSlotId ? SFX_POPUPWINDOW_ONTIMEOUT : SFX_POPUPWINDOW_ONCLICK; +} + +void __EXPORT ScTbxInsertCtrl::Select( BOOL /* bMod1 */ ) +{ + SfxViewShell* pCurSh( SfxViewShell::Current() ); + SfxDispatcher* pDispatch( 0 ); + + if ( pCurSh ) + { + SfxViewFrame* pViewFrame = pCurSh->GetViewFrame(); + if ( pViewFrame ) + pDispatch = pViewFrame->GetDispatcher(); + } + + if ( pDispatch ) + pDispatch->Execute(nLastSlotId); +} +/* +//------------------------------------------------------------------ +// +// Popup - Window +// +//------------------------------------------------------------------ + +ScTbxInsertPopup::ScTbxInsertPopup( USHORT nId, WindowAlign eNewAlign, + const ResId& rRIdWin, const ResId& rRIdTbx, + SfxBindings& rBindings ) : + SfxPopupWindow ( nId, rRIdWin, rBindings), + aTbx ( this, GetBindings(), rRIdTbx ), + aRIdWinTemp(rRIdWin), + aRIdTbxTemp(rRIdTbx) +{ + aTbx.UseDefault(); + FreeResource(); + + aTbx.GetToolBox().SetAlign( eNewAlign ); + if (eNewAlign == WINDOWALIGN_LEFT || eNewAlign == WINDOWALIGN_RIGHT) + SetText( EMPTY_STRING ); + + Size aSize = aTbx.CalcWindowSizePixel(); + aTbx.SetPosSizePixel( Point(), aSize ); + SetOutputSizePixel( aSize ); + aTbx.GetToolBox().SetSelectHdl( LINK(this, ScTbxInsertPopup, TbxSelectHdl)); + aTbxClickHdl = aTbx.GetToolBox().GetClickHdl(); + aTbx.GetToolBox().SetClickHdl( LINK(this, ScTbxInsertPopup, TbxClickHdl)); +} + +ScTbxInsertPopup::~ScTbxInsertPopup() +{ +} + +SfxPopupWindow* __EXPORT ScTbxInsertPopup::Clone() const +{ + return new ScTbxInsertPopup( GetId(), aTbx.GetToolBox().GetAlign(), + aRIdWinTemp, aRIdTbxTemp, + (SfxBindings&) GetBindings() ); +} + +void ScTbxInsertPopup::StartSelection() +{ + aTbx.GetToolBox().StartSelection(); +} + +IMPL_LINK(ScTbxInsertPopup, TbxSelectHdl, ToolBox*, pBox) +{ + EndPopupMode(); + + USHORT nLastSlotId = pBox->GetCurItemId(); + SfxUInt16Item aItem( GetId(), nLastSlotId ); + SfxDispatcher* pDisp = GetBindings().GetDispatcher(); + pDisp->Execute( GetId(), SFX_CALLMODE_SYNCHRON, &aItem, 0L ); + pDisp->Execute( nLastSlotId, SFX_CALLMODE_ASYNCHRON ); + return 0; +} + +IMPL_LINK(ScTbxInsertPopup, TbxClickHdl, ToolBox*, pBox) +{ + USHORT nLastSlotId = pBox->GetCurItemId(); + SfxUInt16Item aItem( GetId(), nLastSlotId ); + GetBindings().GetDispatcher()->Execute( GetId(), SFX_CALLMODE_SYNCHRON, &aItem, 0L ); + if(aTbxClickHdl.IsSet()) + aTbxClickHdl.Call(pBox); + return 0; +} + +void __EXPORT ScTbxInsertPopup::PopupModeEnd() +{ + aTbx.GetToolBox().EndSelection(); + SfxPopupWindow::PopupModeEnd(); +} +*/ + + |