diff options
Diffstat (limited to 'dbaccess/source/ui/misc/ToolBoxHelper.cxx')
-rw-r--r-- | dbaccess/source/ui/misc/ToolBoxHelper.cxx | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/dbaccess/source/ui/misc/ToolBoxHelper.cxx b/dbaccess/source/ui/misc/ToolBoxHelper.cxx new file mode 100644 index 000000000000..ac5b5a957d4d --- /dev/null +++ b/dbaccess/source/ui/misc/ToolBoxHelper.cxx @@ -0,0 +1,140 @@ +/************************************************************************* + * + * 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_dbaccess.hxx" +#ifndef DBAUI_TOOLBOXHELPER_HXX +#include "ToolBoxHelper.hxx" +#endif +#ifndef _SV_TOOLBOX_HXX +#include <vcl/toolbox.hxx> +#endif +#ifndef _SV_SVAPP_HXX +#include <vcl/svapp.hxx> +#endif +#ifndef INCLUDED_SVTOOLS_MISCOPT_HXX +#include <svtools/miscopt.hxx> +#endif +#ifndef DBAUI_TOOLS_HXX +#include "UITools.hxx" +#endif +#ifndef _SVTOOLS_IMGDEF_HXX +#include <svtools/imgdef.hxx> +#endif +#include <vcl/event.hxx> + +namespace dbaui +{ + DBG_NAME(OToolBoxHelper) + OToolBoxHelper::OToolBoxHelper() + : m_bIsHiContrast(sal_False) + ,m_nSymbolsSize(-1 ) + ,m_pToolBox(NULL) + { + DBG_CTOR(OToolBoxHelper,NULL); + + OSL_ENSURE(m_nSymbolsSize != SvtMiscOptions().GetCurrentSymbolsSize(),"SymbolsSize should not be identical"); + SvtMiscOptions().AddListenerLink( LINK( this, OToolBoxHelper, ConfigOptionsChanged ) ); + Application::AddEventListener( LINK( this, OToolBoxHelper, SettingsChanged ) ); + } + // ----------------------------------------------------------------------------- + OToolBoxHelper::~OToolBoxHelper() + { + SvtMiscOptions().RemoveListenerLink( LINK( this, OToolBoxHelper, ConfigOptionsChanged ) ); + Application::RemoveEventListener( LINK( this, OToolBoxHelper, SettingsChanged ) ); + DBG_DTOR(OToolBoxHelper,NULL); + } + + // ----------------------------------------------------------------------------- + void OToolBoxHelper::checkImageList() + { + if ( m_pToolBox ) + { + sal_Int16 nCurSymbolsSize = SvtMiscOptions().GetCurrentSymbolsSize(); + if ( nCurSymbolsSize != m_nSymbolsSize || + m_bIsHiContrast != m_pToolBox->GetSettings().GetStyleSettings().GetHighContrastMode() ) + { + m_nSymbolsSize = nCurSymbolsSize; + m_bIsHiContrast = m_pToolBox->GetSettings().GetStyleSettings().GetHighContrastMode(); + + + m_pToolBox->SetImageList( getImageList(m_nSymbolsSize,m_bIsHiContrast) ); + Size aTbOldSize = m_pToolBox->GetSizePixel(); + adjustToolBoxSize(m_pToolBox); + Size aTbNewSize = m_pToolBox->GetSizePixel(); + resizeControls(Size(aTbNewSize.Width() - aTbOldSize.Width(), + aTbNewSize.Height() - aTbOldSize.Height()) + ); + } + } + } + // ----------------------------------------------------------------------------- + IMPL_LINK(OToolBoxHelper, ConfigOptionsChanged, SvtMiscOptions*, /*_pOptions*/) + { + if ( m_pToolBox ) + { + SvtMiscOptions aOptions; + // check if imagelist changed + checkImageList(); + if ( aOptions.GetToolboxStyle() != m_pToolBox->GetOutStyle() ) + m_pToolBox->SetOutStyle(aOptions.GetToolboxStyle()); + } + + return 0L; + } + // ----------------------------------------------------------------------------- + IMPL_LINK(OToolBoxHelper, SettingsChanged, VclWindowEvent*, _pEvt) + { + if ( m_pToolBox && _pEvt && _pEvt->GetId() == VCLEVENT_APPLICATION_DATACHANGED ) + { + DataChangedEvent* pData = reinterpret_cast<DataChangedEvent*>(_pEvt->GetData()); + if ( pData && ((( pData->GetType() == DATACHANGED_SETTINGS ) || + ( pData->GetType() == DATACHANGED_DISPLAY )) && + ( pData->GetFlags() & SETTINGS_STYLE ))) + // check if imagelist changed + checkImageList(); + } + + return 0L; + } + // ----------------------------------------------------------------------------- + void OToolBoxHelper::setToolBox(ToolBox* _pTB) + { + sal_Bool bFirstTime = (m_pToolBox == NULL); + m_pToolBox = _pTB; + if ( m_pToolBox ) + { + // m_bIsHiContrast = m_pToolBox->GetSettings().GetStyleSettings().GetHighContrastMode(); + ConfigOptionsChanged(NULL); + if ( bFirstTime ) + adjustToolBoxSize(m_pToolBox); + } + } +// ----------------------------------------------------------------------------- +} // namespace +// ----------------------------------------------------------------------------- + |