summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Driesner <cd@openoffice.org>2002-04-11 10:49:39 +0000
committerCarsten Driesner <cd@openoffice.org>2002-04-11 10:49:39 +0000
commit2508692afb68a0f3422ad133c47958d3f19357f1 (patch)
tree95cee2bd1081ac5d52d404a0b9263fa8e92fe8f8
parenta634d777571206e74df606041cd2cef6c978daa7 (diff)
#98598# High contrast support for toolboxes and menus
-rw-r--r--framework/inc/classes/imagesconfiguration.hxx16
-rw-r--r--framework/inc/classes/imagesdocumenthandler.hxx6
-rw-r--r--framework/inc/classes/menuconfiguration.hxx5
-rw-r--r--framework/inc/classes/menumanager.hxx6
-rw-r--r--framework/inc/helper/imageproducer.hxx8
-rw-r--r--framework/source/classes/bmkmenu.cxx15
-rw-r--r--framework/source/classes/menumanager.cxx69
-rw-r--r--framework/source/helper/imageproducer.cxx8
-rw-r--r--sfx2/inc/imagemgr.hxx6
-rw-r--r--sfx2/inc/imgmgr.hxx28
-rw-r--r--sfx2/source/appl/imagemgr.cxx12
-rw-r--r--sfx2/source/appl/module.cxx34
-rw-r--r--sfx2/source/inc/virtmenu.hxx7
-rw-r--r--sfx2/source/menu/mnuitem.cxx83
-rw-r--r--sfx2/source/menu/virtmenu.cxx76
-rw-r--r--sfx2/source/toolbox/imgmgr.cxx540
-rw-r--r--sfx2/source/toolbox/tbxitem.cxx80
-rw-r--r--svx/source/tbxctrls/tbcontrl.cxx23
-rw-r--r--svx/source/tbxctrls/tbxdrctl.cxx9
19 files changed, 744 insertions, 287 deletions
diff --git a/framework/inc/classes/imagesconfiguration.hxx b/framework/inc/classes/imagesconfiguration.hxx
index 278ca053c6..48df36c413 100644
--- a/framework/inc/classes/imagesconfiguration.hxx
+++ b/framework/inc/classes/imagesconfiguration.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: imagesconfiguration.hxx,v $
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
- * last change: $Author: mba $ $Date: 2001-11-27 09:48:59 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:44:26 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -110,11 +110,13 @@ struct ImageListItemDescriptor
, nMaskMode( ImageMaskMode_Color ) {}
~ImageListItemDescriptor() { delete pImageItemList; }
- String aURL; // a URL to a bitmap with several images inside
- Color aMaskColor; // a color used as transparent
- String aMaskURL; // a URL to an optional bitmap used as a mask
- ImageMaskMode nMaskMode; // a enum to describe the current mask mode
- ImageItemListDescriptor* pImageItemList; // an array of ImageItemDescriptors that describes every image
+ String aURL; // an URL to a bitmap with several images inside
+ Color aMaskColor; // a color used as transparent
+ String aMaskURL; // an URL to an optional bitmap used as a mask
+ ImageMaskMode nMaskMode; // an enum to describe the current mask mode
+ ImageItemListDescriptor* pImageItemList; // an array of ImageItemDescriptors that describes every image
+ String aHighContrastURL; // an URL to an optional high contrast bitmap with serveral images inside
+ String aHighContrastMaskURL; // an URL to an optional high contrast bitmap as a mask
};
typedef ImageListItemDescriptor* ImageListItemDescriptorPtr;
diff --git a/framework/inc/classes/imagesdocumenthandler.hxx b/framework/inc/classes/imagesdocumenthandler.hxx
index ceca80185d..214f2766b5 100644
--- a/framework/inc/classes/imagesdocumenthandler.hxx
+++ b/framework/inc/classes/imagesdocumenthandler.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: imagesdocumenthandler.hxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: mba $ $Date: 2001-11-27 09:48:59 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:44:26 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -125,6 +125,8 @@ class OReadImagesDocumentHandler : public ::com::sun::star::xml::sax::XDocumentH
IMG_ATTRIBUTE_BITMAPINDEX,
IMG_ATTRIBUTE_MASKURL,
IMG_ATTRIBUTE_MASKMODE,
+ IMG_ATTRIBUTE_HIGHCONTRASTURL,
+ IMG_ATTRIBUTE_HIGHCONTRASTMASKURL,
IMG_XML_ENTRY_COUNT
};
diff --git a/framework/inc/classes/menuconfiguration.hxx b/framework/inc/classes/menuconfiguration.hxx
index 22341976b0..d1ad2a9d62 100644
--- a/framework/inc/classes/menuconfiguration.hxx
+++ b/framework/inc/classes/menuconfiguration.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: menuconfiguration.hxx,v $
*
- * $Revision: 1.6 $
+ * $Revision: 1.7 $
*
- * last change: $Author: cd $ $Date: 2001-08-16 07:51:55 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:44:26 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -111,6 +111,7 @@ class MenuConfiguration
struct Attributes
{
::rtl::OUString aTargetFrame;
+ ::rtl::OUString aImageId;
};
MenuConfiguration(
diff --git a/framework/inc/classes/menumanager.hxx b/framework/inc/classes/menumanager.hxx
index dc304408e0..aa1558cc90 100644
--- a/framework/inc/classes/menumanager.hxx
+++ b/framework/inc/classes/menumanager.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: menumanager.hxx,v $
*
- * $Revision: 1.10 $
+ * $Revision: 1.11 $
*
- * last change: $Author: hr $ $Date: 2001-10-09 18:28:09 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:44:26 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -197,6 +197,8 @@ class MenuManager : public XSTATUSLISTENER ,
sal_Bool m_bDeleteChildren;
sal_Bool m_bActive;
sal_Bool m_bIsBookmarkMenu;
+ sal_Bool m_bWasHiContrast;
+ sal_Bool m_bShowMenuImages;
::rtl::OUString m_aMenuItemCommand;
Menu* m_pVCLMenu;
REFERENCE< XFRAME > m_xFrame;
diff --git a/framework/inc/helper/imageproducer.hxx b/framework/inc/helper/imageproducer.hxx
index 44b215e846..5114b1c177 100644
--- a/framework/inc/helper/imageproducer.hxx
+++ b/framework/inc/helper/imageproducer.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: imageproducer.hxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: mba $ $Date: 2001-05-03 17:03:56 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:45:06 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -82,11 +82,11 @@
namespace framework
{
-typedef Image ( *pfunc_getImage)( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& aURL, BOOL bBig );
+typedef Image ( *pfunc_getImage)( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& aURL, BOOL bBig, BOOL bHiContrast );
pfunc_getImage SAL_CALL SetImageProducer( pfunc_getImage pGetImageFunc );
-Image SAL_CALL GetImageFromURL( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& aURL, BOOL bBig );
+Image SAL_CALL GetImageFromURL( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& aURL, BOOL bBig, BOOL bHiContrast );
};
diff --git a/framework/source/classes/bmkmenu.cxx b/framework/source/classes/bmkmenu.cxx
index acd4a14810..89f3cf5f47 100644
--- a/framework/source/classes/bmkmenu.cxx
+++ b/framework/source/classes/bmkmenu.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: bmkmenu.cxx,v $
*
- * $Revision: 1.7 $
+ * $Revision: 1.8 $
*
- * last change: $Author: cd $ $Date: 2001-08-16 07:54:09 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:45:40 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -115,6 +115,7 @@
//_________________________________________________________________________________________________________________
#include <vcl/config.hxx>
+#include <vcl/svapp.hxx>
#include <svtools/dynamicmenuoptions.hxx>
//_________________________________________________________________________________________________________________
@@ -232,6 +233,9 @@ void BmkMenu::Initialize()
::rtl::OUString aTargetFrame;
::rtl::OUString aImageId;
+ const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings();
+ BOOL bIsHiContrastMode = rSettings.GetMenuColor().IsDark();
+
UINT32 i, nCount = aDynamicMenuEntries.getLength();
for ( i = 0; i < nCount; ++i )
{
@@ -249,7 +253,7 @@ void BmkMenu::Initialize()
if ( aImageId.getLength() > 0 )
{
- Image aImage = GetImageFromURL( m_xFrame, aImageId, FALSE );
+ Image aImage = GetImageFromURL( m_xFrame, aImageId, FALSE, bIsHiContrastMode );
if ( !!aImage )
{
bImageSet = sal_True;
@@ -259,15 +263,18 @@ void BmkMenu::Initialize()
if ( !bImageSet )
{
- Image aImage = GetImageFromURL( m_xFrame, aURL, FALSE );
+ Image aImage = GetImageFromURL( m_xFrame, aURL, FALSE, bIsHiContrastMode );
if ( !aImage )
InsertItem( nId, aTitle );
else
InsertItem( nId, aTitle, aImage );
}
+ // Store values from configuration to the New and Wizard menu entries to enable
+ // sfx2 based code to support high contrast mode correctly!
MenuConfiguration::Attributes* pUserAttributes = new MenuConfiguration::Attributes;
pUserAttributes->aTargetFrame = aTargetFrame;
+ pUserAttributes->aImageId = aImageId;
SetUserValue( nId, (ULONG)pUserAttributes );
SetItemCommand( nId, aURL );
diff --git a/framework/source/classes/menumanager.cxx b/framework/source/classes/menumanager.cxx
index 588ef91b41..75fa1fd836 100644
--- a/framework/source/classes/menumanager.cxx
+++ b/framework/source/classes/menumanager.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: menumanager.cxx,v $
*
- * $Revision: 1.24 $
+ * $Revision: 1.25 $
*
- * last change: $Author: cd $ $Date: 2002-04-09 12:58:04 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:45:40 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -231,7 +231,10 @@ MenuManager::MenuManager( REFERENCE< XFRAME >& rFrame, Menu* pMenu, sal_Bool bDe
m_bIsBookmarkMenu = sal_False;
SAL_STATIC_CAST( ::com::sun::star::uno::XInterface*, (OWeakObject*)this )->acquire();
- SvtMenuOptions aOptions;
+ const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings();
+ m_bWasHiContrast = rSettings.GetMenuColor().IsDark();
+ m_bShowMenuImages = SvtMenuOptions().IsMenuIconsEnabled();
+
::std::vector< USHORT > aQueryLabelItemIdVector;
int nItemCount = pMenu->GetItemCount();
@@ -302,9 +305,9 @@ MenuManager::MenuManager( REFERENCE< XFRAME >& rFrame, Menu* pMenu, sal_Bool bDe
}
else if ( pMenu->GetItemType( i ) != MENUITEM_SEPARATOR )
{
- if ( aOptions.IsMenuIconsEnabled() )
+ if ( m_bShowMenuImages )
{
- Image aImage = GetImageFromURL( rFrame, aItemCommand, FALSE );
+ Image aImage = GetImageFromURL( rFrame, aItemCommand, FALSE, m_bWasHiContrast );
if ( !!aImage )
pMenu->SetItemImage( nItemId, aImage );
}
@@ -357,6 +360,10 @@ MenuManager::MenuManager( REFERENCE< XFRAME >& rFrame, BmkMenu* pBmkMenu, sal_Bo
m_xFrame = rFrame;
m_bInitialized = sal_False;
m_bIsBookmarkMenu = sal_True;
+
+ const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings();
+ m_bWasHiContrast = rSettings.GetMenuColor().IsDark();
+
SAL_STATIC_CAST( ::com::sun::star::uno::XInterface*, (OWeakObject*)this )->acquire();
int nItemCount = pBmkMenu->GetItemCount();
@@ -397,10 +404,8 @@ MenuManager::MenuManager( REFERENCE< XFRAME >& rFrame, BmkMenu* pBmkMenu, sal_Bo
if ( pBmkAttributes )
{
- // read additional attributes from attributes struct and delete it afterwards
+ // read additional attributes from attributes struct and BmkMenu implementation will delete all attributes itself!!
pMenuItemHandler->aTargetFrame = pBmkAttributes->aTargetFrame;
- delete pBmkAttributes;
- pBmkMenu->SetUserValue( nItemId, 0 );
}
m_aMenuItemHandlerVector.push_back( pMenuItemHandler );
@@ -874,7 +879,8 @@ IMPL_LINK( MenuManager, Activate, Menu *, pMenu )
if ( pMenu == m_pVCLMenu )
{
// set/unset hiding disabled menu entries
- sal_Bool bDontHide = SvtMenuOptions().IsEntryHidingEnabled();
+ sal_Bool bDontHide = SvtMenuOptions().IsEntryHidingEnabled();
+ sal_Bool bShowMenuImages = SvtMenuOptions().IsMenuIconsEnabled();
sal_uInt16 nFlag = pMenu->GetMenuFlags();
if ( bDontHide )
@@ -895,6 +901,51 @@ IMPL_LINK( MenuManager, Activate, Menu *, pMenu )
m_aMenuItemCommand == aSlotSpecialWindowMenu )
UpdateSpecialWindowMenu( pMenu );
+ // Check if some modes have changed so we have to update our menu images
+ const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings();
+ sal_Bool bIsHiContrast = rSettings.GetMenuColor().IsDark();
+
+ if ( m_bWasHiContrast != bIsHiContrast || bShowMenuImages != m_bShowMenuImages )
+ {
+ // The mode changed so we have to replace all images
+ m_bWasHiContrast = bIsHiContrast;
+ m_bShowMenuImages = bShowMenuImages;
+
+ for ( USHORT nPos = 0; nPos < pMenu->GetItemCount(); nPos++ )
+ {
+ USHORT nId = pMenu->GetItemId( nPos );
+ if ( pMenu->GetItemType( nPos ) != MENUITEM_SEPARATOR )
+ {
+ if ( bShowMenuImages )
+ {
+ sal_Bool bImageSet = sal_False;
+ ::rtl::OUString aImageId;
+
+ ::framework::MenuConfiguration::Attributes* pMenuAttributes =
+ (::framework::MenuConfiguration::Attributes*)pMenu->GetUserValue( nId );
+
+ if ( pMenuAttributes )
+ aImageId = pMenuAttributes->aImageId; // Retrieve image id from menu attributes
+
+ if ( aImageId.getLength() > 0 )
+ {
+ Image aImage = GetImageFromURL( m_xFrame, aImageId, FALSE, bIsHiContrast );
+ if ( !!aImage )
+ {
+ bImageSet = sal_True;
+ pMenu->SetItemImage( nId, aImage );
+ }
+ }
+
+ if ( !bImageSet )
+ pMenu->SetItemImage( nId, GetImageFromURL( m_xFrame, pMenu->GetItemCommand( nId ), FALSE, bIsHiContrast ) );
+ }
+ else
+ pMenu->SetItemImage( nId, Image() );
+ }
+ }
+ }
+
if ( m_bInitialized )
return 0;
else
diff --git a/framework/source/helper/imageproducer.cxx b/framework/source/helper/imageproducer.cxx
index bd5deb4912..f69630361c 100644
--- a/framework/source/helper/imageproducer.cxx
+++ b/framework/source/helper/imageproducer.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: imageproducer.cxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: mba $ $Date: 2001-05-03 17:04:14 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:46:17 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -75,10 +75,10 @@ pfunc_getImage SAL_CALL SetImageProducer( pfunc_getImage pNewGetImageFunc )
}
-Image SAL_CALL GetImageFromURL( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& aURL, BOOL bBig )
+Image SAL_CALL GetImageFromURL( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& aURL, BOOL bBig, BOOL bHiContrast )
{
if ( _pGetImageFunc )
- return _pGetImageFunc( rFrame, aURL, bBig );
+ return _pGetImageFunc( rFrame, aURL, bBig, bHiContrast );
else
return Image();
}
diff --git a/sfx2/inc/imagemgr.hxx b/sfx2/inc/imagemgr.hxx
index c92d829e7c..760da31b5a 100644
--- a/sfx2/inc/imagemgr.hxx
+++ b/sfx2/inc/imagemgr.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: imagemgr.hxx,v $
*
- * $Revision: 1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: cd $ $Date: 2001-07-16 13:19:17 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:38:10 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -70,4 +70,4 @@
#include <rtl/ustring.hxx>
#include <vcl/image.hxx>
-Image SAL_CALL GetImage( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& aURL, BOOL bBig );
+Image SAL_CALL GetImage( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& aURL, BOOL bBig, BOOL bHiContrast );
diff --git a/sfx2/inc/imgmgr.hxx b/sfx2/inc/imgmgr.hxx
index af250dbbdb..74ffee8083 100644
--- a/sfx2/inc/imgmgr.hxx
+++ b/sfx2/inc/imgmgr.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: imgmgr.hxx,v $
*
- * $Revision: 1.6 $
+ * $Revision: 1.7 $
*
- * last change: $Author: cd $ $Date: 2002-03-04 16:57:58 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:38:10 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -83,9 +83,9 @@ class SfxImageManager_Impl;
struct SfxImageManagerData_Impl;
class SfxImageManager
{
- SfxImageManager_Impl* pImp;
- SfxImageManagerData_Impl* pData;
- SfxImageManagerData_Impl* pHCData; // internal instance for high contrast mode
+ SfxImageManager_Impl* pImp;
+ SfxImageManagerData_Impl* pData;
+ void* pHCImp; // internal use
void SetSymbolSet_Impl( sal_Int16 );
void SetOutStyle_Impl( sal_Int16 );
@@ -98,6 +98,7 @@ public:
static BOOL Export( SotStorage& rInStorage, SvStream& rOutStream );
static BOOL Copy( SotStorage& rIn, SotStorage& rOut );
static Image GetGlobalImage( USHORT nId, BOOL bBig );
+ static Image GetGlobalImage( USHORT nId, BOOL bBig, BOOL bHiContrast );
// each document may have its own imagemanager, but all documents without an own
// image configuration share the same instance
@@ -108,11 +109,15 @@ public:
Color GetMaskColor() const;
// get images from resources
- Image GetImage(USHORT nId, SfxModule* pMod = 0) const;
+ Image GetImage(USHORT nId, SfxModule* pMod = 0 ) const;
+ Image GetImage(USHORT nId, BOOL bHiContrast, SfxModule* pMod = 0 ) const;
void SetImages( ToolBox& rToolBox, SfxModule* );
- void LockImage(USHORT nNewId, ToolBox *pBox);
- Image MakeUserImage(USHORT nNewId, Image& aSourceImage );
+ void SetImages( ToolBox& rToolBox, SfxModule*, BOOL bHiContrast );
+ void LockImage(USHORT nNewId, ToolBox *pBox );
+ void LockImage(USHORT nNewId, ToolBox *pBox, BOOL bHiContrast );
+ Image MakeUserImage(USHORT nNewId, Image& aSourceImage, BOOL bHiContrast = FALSE );
Image GetImage(USHORT nId, SfxModule* pMod, BOOL bBig ) const;
+ Image GetImage(USHORT nId, SfxModule* pMod, BOOL bBig, BOOL bHiContrast ) const;
// add images to configurable user list
void ReplaceImage(USHORT nId, Bitmap* pBmp=0);
@@ -121,7 +126,8 @@ public:
// reconfigure user list
void StartCustomize();
void EndCustomize();
- Image SeekImage(USHORT nId, SfxModule* pModule = 0) const;
+ Image SeekImage(USHORT nId, SfxModule* pModule = 0 ) const;
+ Image SeekImage(USHORT nId, BOOL bHiContrast, SfxModule* pModule = 0 ) const;
// register/release toolboxes
void RegisterToolBox(ToolBox*, USHORT nFlags=0xFFFF );
@@ -133,8 +139,10 @@ public:
#if _SOLAR__PRIVATE
BOOL IsUserDef_Impl(USHORT nId) const;
const Bitmap& GetUserDefBitmap_Impl(USHORT nId) const;
- Image GetAndLockImage_Impl(USHORT nId, SfxModule* pMod = 0);
+ Image GetAndLockImage_Impl(USHORT nId, SfxModule* pMod = 0 );
+ Image GetAndLockImage_Impl(USHORT nId, BOOL bHiContrast, SfxModule* pMod = 0 );
Image GetImageFromModule_Impl( USHORT nId, SfxModule *pMod );
+ Image GetImageFromModule_Impl( USHORT nId, SfxModule *pMod, BOOL bHiContrast );
static BOOL CopyConfiguration_Impl( SfxConfigManager& rSource, SfxConfigManager& rDest );
#endif
};
diff --git a/sfx2/source/appl/imagemgr.cxx b/sfx2/source/appl/imagemgr.cxx
index e48d4c38e3..88e704e189 100644
--- a/sfx2/source/appl/imagemgr.cxx
+++ b/sfx2/source/appl/imagemgr.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: imagemgr.cxx,v $
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
- * last change: $Author: mba $ $Date: 2001-09-18 15:45:56 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:39:44 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -89,7 +89,7 @@ using namespace ::com::sun::star::frame;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::util;
-Image SAL_CALL GetImage( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& aURL, BOOL bBig )
+Image SAL_CALL GetImage( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& aURL, BOOL bBig, BOOL bHiContrast )
{
INetURLObject aObj( aURL );
INetProtocol nProtocol = aObj.GetProtocol();
@@ -142,10 +142,10 @@ Image SAL_CALL GetImage( ::com::sun::star::uno::Reference< ::com::sun::star::fra
if ( nId )
{
if ( pViewFrame )
- return pViewFrame->GetImageManager()->GetImage( nId, pModule, bBig );
+ return pViewFrame->GetImageManager()->GetImage( nId, pModule, bBig, bHiContrast );
else
{
- return SFX_APP()->GetImageManager_Impl()->GetImage( nId, NULL, bBig );
+ return SFX_APP()->GetImageManager_Impl()->GetImage( nId, NULL, bBig, bHiContrast );
}
}
break;
@@ -158,6 +158,6 @@ Image SAL_CALL GetImage( ::com::sun::star::uno::Reference< ::com::sun::star::fra
}
}
- return SvFileInformationManager::GetImageNoDefault( aObj, bBig );
+ return SvFileInformationManager::GetImageNoDefault( aObj, bBig, bHiContrast );
}
diff --git a/sfx2/source/appl/module.cxx b/sfx2/source/appl/module.cxx
index e854d69f00..61f8213880 100644
--- a/sfx2/source/appl/module.cxx
+++ b/sfx2/source/appl/module.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: module.cxx,v $
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
- * last change: $Author: dv $ $Date: 2001-07-12 07:42:35 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:40:06 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -61,6 +61,7 @@
#pragma hdrstop
+#include <stdio.h>
#include <tools/rcid.h>
#include <cstdarg>
@@ -95,10 +96,12 @@ public:
SfxChildWinFactArr_Impl* pFactArr;
ImageList* pImgListSmall;
ImageList* pImgListBig;
+ ImageList* pImgListHiSmall;
+ ImageList* pImgListHiBig;
SfxModule_Impl();
~SfxModule_Impl();
- ImageList* GetImageList( ResMgr*, BOOL );
+ ImageList* GetImageList( ResMgr*, BOOL, BOOL bHiContrast = FALSE );
};
SfxModule_Impl::SfxModule_Impl()
@@ -115,14 +118,18 @@ SfxModule_Impl::~SfxModule_Impl()
delete pFactArr;
delete pImgListSmall;
delete pImgListBig;
+ delete pImgListHiSmall;
+ delete pImgListHiBig;
}
-ImageList* SfxModule_Impl::GetImageList( ResMgr* pResMgr, BOOL bBig )
+ImageList* SfxModule_Impl::GetImageList( ResMgr* pResMgr, BOOL bBig, BOOL bHiContrast )
{
- ImageList*& rpList = bBig ? pImgListBig : pImgListSmall;
+ ImageList*& rpList = bBig ? ( bHiContrast ? pImgListHiBig: pImgListBig ) :
+ ( bHiContrast ? pImgListHiSmall : pImgListSmall );
if ( !rpList )
{
- ResId aResId( bBig ? RID_DEFAULTIMAGELIST_LC : RID_DEFAULTIMAGELIST_SC, pResMgr );
+ ResId aResId( bBig ? ( bHiContrast ? RID_DEFAULTIMAGELIST_LCH : RID_DEFAULTIMAGELIST_LC ) :
+ ( bHiContrast ? RID_DEFAULTIMAGELIST_SCH : RID_DEFAULTIMAGELIST_SC ), pResMgr );
aResId.SetRT( RSC_IMAGELIST );
DBG_ASSERT( pResMgr->IsAvailable(aResId), "No default ImageList!" );
@@ -131,6 +138,12 @@ ImageList* SfxModule_Impl::GetImageList( ResMgr* pResMgr, BOOL bBig )
rpList = new ImageList( aResId );
else
rpList = new ImageList();
+
+ // Testcode!!!
+ char temp[128];
+ sprintf( temp, "g:\\imagelist_m%d%d.bmp", bBig ? 1 : 0, bHiContrast ? 1: 0 );
+ SvFileStream aBitmapStream( String::CreateFromAscii( temp ), STREAM_STD_WRITE);
+ aBitmapStream << rpList->GetBitmap();
}
return rpList;
@@ -259,6 +272,8 @@ void SfxModule::Construct_Impl()
pImpl->pFactArr=0;
pImpl->pImgListSmall=0;
pImpl->pImgListBig=0;
+ pImpl->pImgListHiSmall=0;
+ pImpl->pImgListHiBig=0;
SetPool( &pApp->GetPool() );
}
@@ -441,7 +456,12 @@ SfxChildWinFactArr_Impl* SfxModule::GetChildWinFactories_Impl() const
ImageList* SfxModule::GetImageList_Impl( BOOL bBig )
{
- return pImpl->GetImageList( pResMgr, bBig );
+ return pImpl->GetImageList( pResMgr, bBig, FALSE );
+}
+
+ImageList* SfxModule::GetImageList_Impl( BOOL bBig, BOOL bHiContrast )
+{
+ return pImpl->GetImageList( pResMgr, bBig, bHiContrast );
}
SfxTabPage* SfxModule::CreateTabPage( USHORT nId, Window* pParent, const SfxItemSet& rSet )
diff --git a/sfx2/source/inc/virtmenu.hxx b/sfx2/source/inc/virtmenu.hxx
index 9d021cdd09..904e6a8639 100644
--- a/sfx2/source/inc/virtmenu.hxx
+++ b/sfx2/source/inc/virtmenu.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: virtmenu.hxx,v $
*
- * $Revision: 1.4 $
+ * $Revision: 1.5 $
*
- * last change: $Author: mba $ $Date: 2001-07-02 15:35:52 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:40:58 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -101,6 +101,7 @@ private:
BOOL bHelpInitialized : 1;
BOOL bIsActive : 1;
BOOL bControllersUnBound : 1;
+ BOOL bWasHighContrast : 1;
private:
void Construct_Impl();
@@ -155,6 +156,8 @@ public:
void SetResMgr(ResMgr* pMgr) {pResMgr = pMgr; }
ResMgr* GetResMgr() { return pResMgr; }
void SetHelpIds( ResMgr* );
+ BOOL IsHiContrastMode() const;
+ void UpdateImages();
DECL_LINK( Select, Menu * );
};
diff --git a/sfx2/source/menu/mnuitem.cxx b/sfx2/source/menu/mnuitem.cxx
index aff6064abe..3da7c17e72 100644
--- a/sfx2/source/menu/mnuitem.cxx
+++ b/sfx2/source/menu/mnuitem.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: mnuitem.cxx,v $
*
- * $Revision: 1.7 $
+ * $Revision: 1.8 $
*
- * last change: $Author: mba $ $Date: 2002-03-19 17:18:36 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:41:29 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -89,12 +89,21 @@
#include <comphelper/processfactory.hxx>
#endif
+#ifndef _URLOBJ_HXX
+#include <tools/urlobj.hxx>
+#endif
#ifndef _SFXENUMITEM_HXX //autogen
#include <svtools/eitem.hxx>
#endif
#ifndef _SFXSTRITEM_HXX //autogen
#include <svtools/stritem.hxx>
#endif
+#ifndef _SVTOOLS_IMAGEMGR_HXX
+#include <svtools/imagemgr.hxx>
+#endif
+#ifndef INCLUDED_SVTOOLS_MENUOPTIONS_HXX
+#include <svtools/menuoptions.hxx>
+#endif
#include <framework/menuconfiguration.hxx>
#pragma hdrstop
@@ -115,13 +124,14 @@
#include "module.hxx"
#include "unoctitm.hxx"
#include "viewfrm.hxx"
+#include "imgmgr.hxx"
+#include "imagemgr.hxx"
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::frame;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::util;
-
//====================================================================
class SfxEnumMenu: public PopupMenu
@@ -490,6 +500,12 @@ SfxAppMenuControl_Impl::SfxAppMenuControl_Impl(
String aText = rMenu.GetItemText( nPos );
SfxApplication* pApp = SFX_APP();
SfxAppData_Impl* pImpl = pApp->Get_Impl();
+
+ // Determine the current background color setting for menus
+ const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings();
+ BOOL bIsHiContrastMode = rSettings.GetMenuColor().IsDark();
+ m_bWasHiContrastMode = bIsHiContrastMode;
+ m_bShowMenuImages = SvtMenuOptions().IsMenuIconsEnabled();
Reference<com::sun::star::lang::XMultiServiceFactory> aXMultiServiceFactory(::comphelper::getProcessServiceFactory());
::framework::MenuConfiguration aConf( aXMultiServiceFactory );
@@ -498,6 +514,7 @@ SfxAppMenuControl_Impl::SfxAppMenuControl_Impl(
if( pMenu )
{
pMenu->SetSelectHdl( Link( this, Select_Impl ) );
+ pMenu->SetActivateHdl( LINK(this, SfxAppMenuControl_Impl, Activate) );
rMenu.SetPopupMenu( nPos, pMenu );
}
}
@@ -507,6 +524,66 @@ SfxAppMenuControl_Impl::~SfxAppMenuControl_Impl()
delete pMenu;
}
+IMPL_LINK( SfxAppMenuControl_Impl, Activate, Menu *, pMenu )
+{
+ if ( pMenu )
+ {
+ BOOL bShowMenuImages = SvtMenuOptions().IsMenuIconsEnabled();
+ const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings();
+ BOOL bIsHiContrastMode = rSettings.GetMenuColor().IsDark();
+
+ if (( bIsHiContrastMode != m_bWasHiContrastMode ) ||
+ ( bShowMenuImages != m_bShowMenuImages ) )
+ {
+ m_bWasHiContrastMode = bIsHiContrastMode;
+ m_bShowMenuImages = bShowMenuImages;
+
+ USHORT nCount = pMenu->GetItemCount();
+ for ( USHORT nSVPos = 0; nSVPos < nCount; nSVPos++ )
+ {
+ USHORT nId = pMenu->GetItemId( nSVPos );
+ if ( pMenu->GetItemType( nSVPos ) != MENUITEM_SEPARATOR )
+ {
+ if ( bShowMenuImages )
+ {
+ sal_Bool bImageSet = sal_False;
+ ::rtl::OUString aImageId;
+ ::framework::MenuConfiguration::Attributes* pMenuAttributes =
+ (::framework::MenuConfiguration::Attributes*)pMenu->GetUserValue( nId );
+
+ if ( pMenuAttributes )
+ aImageId = pMenuAttributes->aImageId; // Retrieve image id from menu attributes
+
+ if ( aImageId.getLength() > 0 )
+ {
+ Image aImage = GetImage( Reference< ::com::sun::star::frame::XFrame >(), aImageId, FALSE, bIsHiContrastMode );
+ if ( !!aImage )
+ {
+ bImageSet = sal_True;
+ pMenu->SetItemImage( nId, aImage );
+ }
+ }
+
+ String aCmd( pMenu->GetItemCommand( nId ) );
+ if ( !bImageSet && aCmd.Len() )
+ {
+ Image aImage = SvFileInformationManager::GetImage( aCmd, FALSE, bIsHiContrastMode );
+ if ( !!aImage )
+ pMenu->SetItemImage( nId, aImage );
+ }
+ }
+ else
+ pMenu->SetItemImage( nId, Image() );
+ }
+ }
+ }
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
SfxUnoMenuControl* SfxMenuControl::CreateControl( const String& rCmd,
USHORT nId, Menu& rMenu, SfxBindings &rBindings, SfxVirtualMenu* pVirt )
{
diff --git a/sfx2/source/menu/virtmenu.cxx b/sfx2/source/menu/virtmenu.cxx
index 4995910ba6..73340eb237 100644
--- a/sfx2/source/menu/virtmenu.cxx
+++ b/sfx2/source/menu/virtmenu.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: virtmenu.cxx,v $
*
- * $Revision: 1.16 $
+ * $Revision: 1.17 $
*
- * last change: $Author: mba $ $Date: 2001-09-19 07:58:19 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:41:46 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -84,6 +84,9 @@
#ifndef _TOOLKIT_HELPER_VCLUNOHELPER_HXX_
#include <toolkit/unohlp.hxx>
#endif
+#ifndef _URLOBJ_HXX
+#include <tools/urlobj.hxx>
+#endif
#pragma hdrstop
@@ -172,7 +175,8 @@ SfxVirtualMenu::SfxVirtualMenu( USHORT nOwnId,
pItems(0),
pBindings(&rBindings),
pResMgr(0),
- nLocks(0), pAutoDeactivate(0), bHelpInitialized( bWithHelp )
+ nLocks(0), pAutoDeactivate(0), bHelpInitialized( bWithHelp ),
+ bWasHighContrast( FALSE )
{
DBG_MEMTEST();
DBG_CTOR(SfxVirtualMenu, 0);
@@ -198,7 +202,8 @@ SfxVirtualMenu::SfxVirtualMenu( Menu *pStarViewMenu, BOOL bWithHelp,
pItems(0),
pBindings(&rBindings),
pResMgr(0),
- nLocks(0), pAutoDeactivate(0), bHelpInitialized( bWithHelp )
+ nLocks(0), pAutoDeactivate(0), bHelpInitialized( bWithHelp ),
+ bWasHighContrast( FALSE )
{
DBG_MEMTEST();
DBG_CTOR(SfxVirtualMenu, 0);
@@ -283,6 +288,17 @@ SfxVirtualMenu::~SfxVirtualMenu()
}
//--------------------------------------------------------------------
+BOOL SfxVirtualMenu::IsHiContrastMode() const
+{
+ const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings();
+ Color aMenuColor = rSettings.GetMenuColor();
+ if ( aMenuColor.IsDark() )
+ return TRUE;
+ else
+ return FALSE;
+}
+
+//--------------------------------------------------------------------
// internal: creates the virtual menu from the pSVMenu
void SfxVirtualMenu::CreateFromSVMenu()
@@ -310,6 +326,10 @@ void SfxVirtualMenu::CreateFromSVMenu()
// iterate through the items
pBindings->ENTERREGISTRATIONS(); ++nLocks;
+
+ // Update high contrast state
+ bWasHighContrast = IsHiContrastMode();
+
USHORT nSVPos = 0;
for ( USHORT nPos = 0; nPos < nCount; ++nPos, ++nSVPos )
{
@@ -347,7 +367,7 @@ void SfxVirtualMenu::CreateFromSVMenu()
pSVMenu->GetHelpText(nId), *pBindings);
if ( aOptions.IsMenuIconsEnabled() )
- pSVMenu->SetItemImage( nId, pBindings->GetImageManager()->GetImage( nId, pModule, FALSE ) );
+ pSVMenu->SetItemImage( nId, pBindings->GetImageManager()->GetImage( nId, pModule, FALSE, bWasHighContrast ) );
}
else
{
@@ -401,7 +421,7 @@ void SfxVirtualMenu::CreateFromSVMenu()
if ( aCmd.Len() )
{
if ( aOptions.IsMenuIconsEnabled() )
- pSVMenu->SetItemImage( nId, SvFileInformationManager::GetImage( aCmd, FALSE ) );
+ pSVMenu->SetItemImage( nId, SvFileInformationManager::GetImage( aCmd, FALSE, bWasHighContrast ) );
pMnuCtrl = SfxMenuControl::CreateControl( aCmd, nId,
*pSVMenu, *pBindings, this );
if ( pMnuCtrl )
@@ -440,7 +460,7 @@ void SfxVirtualMenu::CreateFromSVMenu()
// if ( !pSVMenu->GetPopupMenu( nId ) && aOptions.IsMenuIconsEnabled() )
if ( aOptions.IsMenuIconsEnabled() )
- pSVMenu->SetItemImage( nId, pBindings->GetImageManager()->GetImage( nId, pModule, FALSE ) );
+ pSVMenu->SetItemImage( nId, pBindings->GetImageManager()->GetImage( nId, pModule, FALSE, bWasHighContrast ) );
}
if ( !IsItemHidden_Impl(nId, bOleServer, bMac) )
@@ -491,6 +511,7 @@ IMPL_LINK( SfxVirtualMenu, SettingsChanged, void*, pVoid )
SfxViewFrame *pViewFrame = pBindings->GetDispatcher()->GetFrame();
SfxModule* pModule = pViewFrame->GetObjectShell()->GetModule();
BOOL bIcons = aOptions.IsMenuIconsEnabled();
+ BOOL bIsHiContrastMode = IsHiContrastMode();
for ( USHORT nSVPos=0; nSVPos<nCount; ++nSVPos )
{
@@ -500,9 +521,9 @@ IMPL_LINK( SfxVirtualMenu, SettingsChanged, void*, pVoid )
{
String aCmd( pSVMenu->GetItemCommand( nId ) );
if ( aCmd.Len() )
- pSVMenu->SetItemImage( nId, SvFileInformationManager::GetImage( aCmd, FALSE ) );
+ pSVMenu->SetItemImage( nId, SvFileInformationManager::GetImage( aCmd, FALSE, bIsHiContrastMode ) );
else
- pSVMenu->SetItemImage( nId, pBindings->GetImageManager()->GetImage( nId, pModule, FALSE ) );
+ pSVMenu->SetItemImage( nId, pBindings->GetImageManager()->GetImage( nId, pModule, FALSE, bIsHiContrastMode ) );
}
else if( pSVMenu->GetItemType( nSVPos ) == MENUITEM_STRINGIMAGE && !bIcons )
{
@@ -515,6 +536,36 @@ IMPL_LINK( SfxVirtualMenu, SettingsChanged, void*, pVoid )
//--------------------------------------------------------------------
+void SfxVirtualMenu::UpdateImages()
+{
+ SvtMenuOptions aOptions;
+ BOOL bIcons = aOptions.IsMenuIconsEnabled();
+
+ if ( bIcons )
+ {
+ BOOL bIsHiContrastMode = IsHiContrastMode();
+ USHORT nCount = pSVMenu->GetItemCount();
+ SfxViewFrame * pViewFrame = pBindings->GetDispatcher()->GetFrame();
+ SfxModule* pModule = pViewFrame->GetObjectShell()->GetModule();
+
+ for ( USHORT nSVPos=0; nSVPos < nCount; ++nSVPos )
+ {
+ USHORT nId = pSVMenu->GetItemId( nSVPos );
+ PopupMenu* pPopup = pSVMenu->GetPopupMenu( nId );
+ if ( pSVMenu->GetItemType( nSVPos ) == MENUITEM_STRINGIMAGE )
+ {
+ String aCmd( pSVMenu->GetItemCommand( nId ) );
+ if ( aCmd.Len() )
+ pSVMenu->SetItemImage( nId, SvFileInformationManager::GetImage( aCmd, FALSE, bIsHiContrastMode ) );
+ else
+ pSVMenu->SetItemImage( nId, pBindings->GetImageManager()->GetImage( nId, pModule, FALSE, bIsHiContrastMode ) );
+ }
+ }
+ }
+}
+
+//--------------------------------------------------------------------
+
FASTBOOL SfxVirtualMenu::Bind_Impl( Menu *pMenu )
{
// Selber suchen, da SV mit 'USHORT nSID = pSVMenu->GetCurItemId();' immer
@@ -756,6 +807,13 @@ IMPL_LINK( SfxVirtualMenu, Activate, Menu *, pMenu )
if ( pAutoDeactivate ) // QAP-Hack
pAutoDeactivate->Start();
+ if ( IsHiContrastMode() != bWasHighContrast )
+ {
+ // Refresh images as our background color changed and remember it!!
+ bWasHighContrast = IsHiContrastMode();
+ UpdateImages();
+ }
+
// erledigt
return TRUE;
}
diff --git a/sfx2/source/toolbox/imgmgr.cxx b/sfx2/source/toolbox/imgmgr.cxx
index f8aa196221..7f47067de3 100644
--- a/sfx2/source/toolbox/imgmgr.cxx
+++ b/sfx2/source/toolbox/imgmgr.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: imgmgr.cxx,v $
*
- * $Revision: 1.6 $
+ * $Revision: 1.7 $
*
- * last change: $Author: cd $ $Date: 2002-02-22 08:09:54 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:42:18 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -59,6 +59,8 @@
*
************************************************************************/
+#include <stdio.h>
+
#ifndef _STREAM_HXX //autogen
#include <tools/stream.hxx>
#endif
@@ -108,16 +110,18 @@ class SfxBitmapList_Impl;
class SfxImageManager_Impl : public SfxConfigItem
{
public:
- LinkList aList;
- SvtMiscOptions aOpt;
- SfxBitmapList_Impl* pUserDefList;
- ImageList* pUserImageList;
-
- void MakeDefaultImageList();
+ LinkList m_aList;
+ SvtMiscOptions m_aOpt;
+ SfxBitmapList_Impl* m_pUserDefList;
+ ImageList* m_pUserImageList;
+ ImageList* m_pHCUserImageList;
+ int m_nUserRef;
+
+ void MakeDefaultImageList( BOOL bHiContrast = FALSE );
void MakeUserList();
void RebuildUserList();
- Image GetImage( USHORT nId, SfxModule*, BOOL ) const;
- Image SeekImage(USHORT nId, SfxModule* pModule ) const;
+ Image GetImage( USHORT nId, SfxModule*, BOOL bBig, BOOL bHiContrast ) const;
+ Image SeekImage(USHORT nId, SfxModule* pModule, BOOL bHiContrast ) const;
virtual BOOL ReInitialize();
int Load( SvStream& );
@@ -137,8 +141,12 @@ public:
// elements common to all ImageManager instances
static ImageList* pImageListSmall=0;
static ImageList* pImageListBig=0;
-static ImageList* pOffImageList;
+static ImageList* pImageListHiSmall=0;
+static ImageList* pImageListHiBig=0;
+//static ImageList* pOffImageList;
+//static ImageList* pOffHiImageList;
static ImageList* pImageList;
+static ImageList* pHiImageList;
static SfxImageManager_Impl* pGlobalConfig=NULL;
static nRef=0;
static nGlobalRef=0;
@@ -146,13 +154,17 @@ static nGlobalRef=0;
// we need a static list of all pImp instances, so all operations that should change all instances can be performed
// which operations ?!
-ImageList* GetImageList( BOOL bBig )
+ImageList* GetImageList( BOOL bBig, BOOL bHiContrast = FALSE )
{
- ImageList*& rpList = bBig ? pImageListBig : pImageListSmall;
+ // Has to be changed if we know how the IDs are named!!!
+ ImageList*& rpList = bBig ? ( bHiContrast ? pImageListHiBig : pImageListBig ) :
+ ( bHiContrast ? pImageListHiSmall : pImageListSmall );
if ( !rpList )
{
ResMgr *pResMgr = Resource::GetResManager();
- ResId aResId( bBig ? RID_DEFAULTIMAGELIST_LC : RID_DEFAULTIMAGELIST_SC );
+ ResId aResId( bBig ? ( bHiContrast ? RID_DEFAULTIMAGELIST_LCH : RID_DEFAULTIMAGELIST_LC ) :
+ ( bHiContrast ? RID_DEFAULTIMAGELIST_SCH : RID_DEFAULTIMAGELIST_SC ));
+
aResId.SetRT( RSC_IMAGELIST );
DBG_ASSERT( pResMgr->IsAvailable(aResId), "No default ImageList!" );
@@ -161,6 +173,12 @@ ImageList* GetImageList( BOOL bBig )
rpList = new ImageList( aResId );
else
rpList = new ImageList();
+
+ // Testcode!!!
+ char temp[128];
+ sprintf( temp, "g:\\imagelist%d%d.bmp", bBig ? 1 : 0, bHiContrast ? 1: 0 );
+ SvFileStream aBitmapStream( String::CreateFromAscii( temp ), STREAM_STD_WRITE);
+ aBitmapStream << rpList->GetBitmap();
}
return rpList;
@@ -367,8 +385,9 @@ SvStream& operator << (SvStream& rStream, const SfxBitmapList_Impl& rList)
SfxImageManager_Impl::SfxImageManager_Impl( SfxConfigManager* pCfgMgr )
: SfxConfigItem( SFX_ITEMTYPE_IMAGELIST, pCfgMgr )
- , pUserImageList( 0 )
- , pUserDefList( 0 )
+ , m_pUserDefList( 0 )
+ , m_pUserImageList( 0 )
+ , m_pHCUserImageList( 0 )
{
// SetInternal( TRUE );
Initialize();
@@ -376,24 +395,26 @@ SfxImageManager_Impl::SfxImageManager_Impl( SfxConfigManager* pCfgMgr )
SfxImageManager_Impl::~SfxImageManager_Impl()
{
- delete pUserDefList;
- delete pUserImageList;
+ delete m_pUserDefList;
+ delete m_pUserImageList;
+ delete m_pHCUserImageList;
+
if ( this == pGlobalConfig )
pGlobalConfig = NULL;
}
void SfxImageManager_Impl::AddLink( const Link& rLink )
{
- aList.Insert( new Link( rLink ) );
+ m_aList.Insert( new Link( rLink ) );
}
void SfxImageManager_Impl::RemoveLink( const Link& rLink )
{
- for ( USHORT n=0; n<aList.Count(); n++ )
+ for ( USHORT n=0; n<m_aList.Count(); n++ )
{
- if ( (*aList.GetObject(n) ) == rLink )
+ if ( (*m_aList.GetObject(n) ) == rLink )
{
- delete aList.Remove(n);
+ delete m_aList.Remove(n);
break;
}
}
@@ -458,7 +479,9 @@ int SfxImageManager_Impl::Load( SotStorage& rStorage )
return ERR_READ;
Bitmap aBmp;
+ Bitmap aHCBmp;
LoadBitmap( aBmp, rStorage, pList->aURL );
+ LoadBitmap( aHCBmp, rStorage, pList->aHighContrastURL );
// get the Ids of the ImageList
USHORT* pIds = new USHORT[nCount];
@@ -477,18 +500,25 @@ int SfxImageManager_Impl::Load( SotStorage& rStorage )
}
}
- delete pUserImageList;
+ delete m_pUserImageList;
+ delete m_pHCUserImageList;
+
if ( pList->nMaskMode = ::framework::ImageMaskMode_Color )
- pUserImageList = new ImageList( aBmp, pList->aMaskColor, nCount, pIds );
+ {
+ m_pUserImageList = new ImageList( aBmp, pList->aMaskColor, nCount, pIds );
+ m_pHCUserImageList = new ImageList( aHCBmp, pList->aMaskColor, nCount, pIds );
+ }
else
{
Bitmap aMask;
LoadBitmap( aMask, rStorage, pList->aMaskURL );
- pUserImageList = new ImageList( aBmp, aMask, nCount, pIds );
+ m_pUserImageList = new ImageList( aBmp, aMask, nCount, pIds );
+ LoadBitmap( aMask, rStorage, pList->aHighContrastMaskURL );
+ m_pHCUserImageList = new ImageList( aHCBmp, aMask, nCount, pIds );
}
DELETEZ( pIds );
- pUserDefList = new SfxBitmapList_Impl;
+ m_pUserDefList = new SfxBitmapList_Impl;
nCount = aDescriptor.pExternalImageList ? aDescriptor.pExternalImageList->Count() : 0;
for ( USHORT n=0; n<nCount; n++ )
@@ -508,7 +538,7 @@ int SfxImageManager_Impl::Load( SotStorage& rStorage )
Bitmap aBmp;
LoadBitmap( aBmp, rStorage, pItem->aURL );
- pUserDefList->AddBitmap( nId, aBmp );
+ m_pUserDefList->AddBitmap( nId, aBmp );
}
}
@@ -536,11 +566,11 @@ BOOL SfxImageManager_Impl::Store( SotStorage& rStorage )
// bitmaps are stored in an internal bitmap directory
SotStorageRef xBitmapStorage = rStorage.OpenSotStorage( String::CreateFromAscii("Bitmaps"), STREAM_STD_READWRITE );
- if ( pUserImageList->HasMaskColor() )
+ if ( m_pUserImageList->HasMaskColor() )
{
// mask color
pList->nMaskMode = ::framework::ImageMaskMode_Color;
- pList->aMaskColor = pUserImageList->GetMaskColor();
+ pList->aMaskColor = m_pUserImageList->GetMaskColor();
}
else
{
@@ -553,17 +583,25 @@ BOOL SfxImageManager_Impl::Store( SotStorage& rStorage )
// store bitmap
SotStorageStreamRef xBitmapStream = xBitmapStorage->OpenSotStream( aStreamName, STREAM_STD_READWRITE | STREAM_TRUNC );
- *xBitmapStream << pUserImageList->GetMaskBitmap();
+ *xBitmapStream << m_pUserImageList->GetMaskBitmap();
+
+ pList->aHighContrastMaskURL = String::CreateFromAscii( "Bitmaps/" );
+ aStreamName = String::CreateFromAscii( "hcuserimagesmask.bmp" );
+ pList->aHighContrastMaskURL += aStreamName;
+
+ // store bitmap
+ xBitmapStream = xBitmapStorage->OpenSotStream( aStreamName, STREAM_STD_READWRITE | STREAM_TRUNC );
+ *xBitmapStream << m_pHCUserImageList->GetMaskBitmap();
}
// a modified list always contains a userlist
pList->pImageItemList = new ::framework::ImageItemListDescriptor;
- for ( USHORT i=0; i<pUserImageList->GetImageCount(); i++ )
+ for ( USHORT i=0; i<m_pUserImageList->GetImageCount(); i++ )
{
::framework::ImageItemDescriptor* pItem = new ::framework::ImageItemDescriptor;
pItem->nIndex = i;
- USHORT nId = pUserImageList->GetImageId(i);
+ USHORT nId = m_pUserImageList->GetImageId(i);
if ( SfxMacroConfig::IsMacroSlot( nId ) )
{
const SfxMacroInfo* pInfo = pCfg->GetMacroInfo( nId );
@@ -585,17 +623,26 @@ BOOL SfxImageManager_Impl::Store( SotStorage& rStorage )
// store bitmap
SotStorageStreamRef xBitmapStream = xBitmapStorage->OpenSotStream( aStreamName, STREAM_STD_READWRITE | STREAM_TRUNC );
- *xBitmapStream << pUserImageList->GetBitmap();
+ *xBitmapStream << m_pUserImageList->GetBitmap();
+
+ // store high contrast URL of bitmap relative to configuration storage; name is "BitmapXXX.bmp", where XXX is an index
+ pList->aHighContrastURL = String::CreateFromAscii("Bitmaps/");
+ aStreamName = String::CreateFromAscii("hcuserimages.bmp");
+ pList->aHighContrastURL += aStreamName;
+
+ // store high contrast bitmap
+ xBitmapStream = xBitmapStorage->OpenSotStream( aStreamName, STREAM_STD_READWRITE | STREAM_TRUNC );
+ *xBitmapStream << m_pHCUserImageList->GetBitmap();
// collect all external bitmaps
- USHORT nCount = pUserDefList->GetBitmapCount();
+ USHORT nCount = m_pUserDefList->GetBitmapCount();
if ( nCount )
{
aDescriptor.pExternalImageList = new ::framework::ExternalImageItemListDescriptor;
for ( USHORT i=0; i<nCount; i++ )
{
::framework::ExternalImageItemDescriptor* pItem = new ::framework::ExternalImageItemDescriptor;
- USHORT nId = pUserDefList->GetBitmapId(i);
+ USHORT nId = m_pUserDefList->GetBitmapId(i);
if ( SfxMacroConfig::IsMacroSlot( nId ) )
{
const SfxMacroInfo* pInfo = pCfg->GetMacroInfo( nId );
@@ -618,7 +665,7 @@ BOOL SfxImageManager_Impl::Store( SotStorage& rStorage )
// store bitmap
SotStorageStreamRef xBitmapStream = xBitmapStorage->OpenSotStream( aStreamName, STREAM_STD_READWRITE | STREAM_TRUNC );
- *xBitmapStream << *pUserDefList->GetBitmap( nId );
+ *xBitmapStream << *m_pUserDefList->GetBitmap( nId );
}
}
@@ -644,8 +691,8 @@ int SfxImageManager_Impl::Load(SvStream& rStream)
MakeUserList();
// Userdef-Listen einlesen
- rStream >> *pUserImageList;
- rStream >> *pUserDefList;
+ rStream >> *m_pUserImageList;
+ rStream >> *m_pUserDefList;
if ( nColorCount != Application::GetDefaultDevice()->GetColorCount() )
RebuildUserList();
@@ -661,8 +708,8 @@ BOOL SfxImageManager_Impl::ReInitialize()
{
BOOL bRet = SfxConfigItem::ReInitialize();
if ( bRet )
- for ( USHORT n=0; n<aList.Count(); n++ )
- aList.GetObject(n)->Call( this );
+ for ( USHORT n=0; n<m_aList.Count(); n++ )
+ m_aList.GetObject(n)->Call( this );
return bRet;
}
@@ -675,11 +722,11 @@ BOOL SfxImageManager_Impl::Store(SvStream& rStream)
// aBitmapStream << pUserImageList->GetBitmap();
rStream << nVersion
- << aOpt.GetSymbolSet()
+ << m_aOpt.GetSymbolSet()
<< Application::GetDefaultDevice()->GetColorCount();
- rStream << *pUserImageList;
- rStream << *pUserDefList;
+ rStream << *m_pUserImageList;
+ rStream << *m_pUserDefList;
return TRUE;
}
@@ -704,32 +751,42 @@ String SfxImageManager_Impl::GetStreamName() const
void SfxImageManager_Impl::MakeUserList()
{
- if ( pUserImageList )
+ if ( m_pUserImageList )
{
- DELETEZ( pUserImageList );
- DELETEZ( pUserDefList );
+ DELETEZ( m_pUserImageList );
+ DELETEZ( m_pHCUserImageList );
+ DELETEZ( m_pUserDefList );
}
- pUserDefList = new SfxBitmapList_Impl;
- pUserImageList = new ImageList;
+ m_pUserDefList = new SfxBitmapList_Impl;
+ m_pUserImageList = new ImageList;
+ m_pHCUserImageList = new ImageList;
}
//-------------------------------------------------------------------------
-void SfxImageManager_Impl::MakeDefaultImageList()
+void SfxImageManager_Impl::MakeDefaultImageList( BOOL bHiContrast )
{
USHORT nType=0;
- switch ( aOpt.GetSymbolSet() )
{
- case SFX_SYMBOLS_SMALL:
- pImageList = GetImageList( FALSE );
- break;
- case SFX_SYMBOLS_LARGE:
- pImageList = GetImageList( TRUE );
- break;
- default:
- DBG_ERROR("Unknown Symboltype!");
- break;
+ switch ( m_aOpt.GetSymbolSet() )
+ {
+ case SFX_SYMBOLS_SMALL:
+ if ( bHiContrast )
+ pHiImageList = GetImageList( FALSE, TRUE );
+ else
+ pImageList = GetImageList( FALSE, FALSE );
+ break;
+ case SFX_SYMBOLS_LARGE:
+ if ( bHiContrast )
+ pHiImageList = GetImageList( TRUE, TRUE );
+ else
+ pImageList = GetImageList( TRUE, FALSE );
+ break;
+ default:
+ DBG_ERROR("Unknown Symboltype!");
+ break;
+ }
}
}
@@ -751,18 +808,21 @@ void SfxImageManager_Impl::RebuildUserList()
VirtualDevice aDev;
Size aNewSize = pImageList->GetImageSize();
aDev.SetOutputSizePixel(aNewSize);
-
- ImageList *pOldList = pUserImageList;
- pUserImageList = new ImageList( pOldList->GetImageCount() );
+
+ ImageList *pOldList = m_pUserImageList;
+ ImageList *pOldHCList = m_pHCUserImageList;
+ m_pUserImageList = new ImageList( pOldList->GetImageCount() );
+ m_pHCUserImageList = new ImageList( pOldHCList->GetImageCount() );
+
for ( USHORT i=0; i<pOldList->GetImageCount(); i++ )
{
USHORT nId = pOldList->GetImageId( i );
Image aImage;
// Image benutzerdefiniert ?
- if ( pUserDefList->GetBitmapPos(nId) != USHRT_MAX )
+ if ( m_pUserDefList->GetBitmapPos(nId) != USHRT_MAX )
{
- Bitmap *pBmp = pUserDefList->GetBitmap( nId );
+ Bitmap *pBmp = m_pUserDefList->GetBitmap( nId );
if ( pBmp->GetSizePixel() != aNewSize )
{
aDev.DrawBitmap( Point(), aNewSize, *pBmp );
@@ -770,51 +830,82 @@ void SfxImageManager_Impl::RebuildUserList()
}
else
aImage = Image( *pBmp, aColor );
+
+ if ( aImage.GetSizePixel() == aNewSize )
+ {
+ m_pUserImageList->AddImage( nId, aImage );
+ m_pHCUserImageList->AddImage( nId, aImage ); // user images are always used as non high contrast
+ }
}
else
- aImage = SeekImage( nId, NULL );
-
- if ( aImage.GetSizePixel() == aNewSize )
- pUserImageList->AddImage( nId, aImage );
+ {
+ aImage = SeekImage( nId, NULL, FALSE ); // look for non high contrast mode image
+ m_pUserImageList->AddImage( nId, aImage );
+ aImage = SeekImage( nId, NULL, TRUE ); // look for high contrast mode image
+ m_pHCUserImageList->AddImage( nId, aImage );
+ }
}
delete pOldList;
+ delete pOldHCList;
}
-Image SfxImageManager_Impl::GetImage( USHORT nId, SfxModule *pModule, BOOL bBig ) const
+Image SfxImageManager_Impl::GetImage( USHORT nId, SfxModule *pModule, BOOL bBig, BOOL bHiContrast ) const
{
if ( !pModule )
pModule = SFX_APP()->GetActiveModule();
ImageList *pList=0;
if ( pModule )
- pList = pModule->GetImageList_Impl( bBig );
+ pList = pModule->GetImageList_Impl( bBig, bHiContrast );
- if ( pUserImageList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
- return pUserImageList->GetImage( nId );
- else if ( pList && pList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
- return pList->GetImage( nId );
+ if ( bHiContrast )
+ {
+ if ( m_pHCUserImageList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
+ return m_pHCUserImageList->GetImage( nId );
+ else if ( pList && pList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
+ return pList->GetImage( nId );
+ else
+ return GetImageList( bBig, bHiContrast )->GetImage( nId );
+ }
else
- return GetImageList( bBig )->GetImage( nId );
+ {
+ if ( m_pUserImageList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
+ return m_pUserImageList->GetImage( nId );
+ else if ( pList && pList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
+ return pList->GetImage( nId );
+ else
+ return GetImageList( bBig, bHiContrast )->GetImage( nId );
+ }
}
-Image SfxImageManager_Impl::SeekImage( USHORT nId, SfxModule *pModule ) const
+Image SfxImageManager_Impl::SeekImage( USHORT nId, SfxModule *pModule, BOOL bHiContrast ) const
{
+ BOOL bBig = ( m_aOpt.GetSymbolSet() == SFX_SYMBOLS_LARGE );
+
if ( !pModule )
pModule = SFX_APP()->GetActiveModule();
ImageList *pList=0;
if ( pModule )
- pList = pModule->GetImageList_Impl( aOpt.GetSymbolSet() == SFX_SYMBOLS_LARGE );
-
- if ( pUserImageList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
- return pUserImageList->GetImage( nId );
- else if ( pList && pList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
- return pList->GetImage( nId );
- else if ( pImageList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
- return pImageList->GetImage( nId );
- else if ( pOffImageList )
- return pOffImageList->GetImage( nId );
+ pList = pModule->GetImageList_Impl( bBig, bHiContrast );
+
+ if ( bHiContrast )
+ {
+ if ( m_pHCUserImageList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
+ return m_pHCUserImageList->GetImage( nId );
+ else if ( pList && pList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
+ return pList->GetImage( nId );
+ else
+ return GetImageList( bBig, bHiContrast )->GetImage( nId );
+ }
else
- return pImageList->GetImage(nId); // leeres Image zur"uckgeben
+ {
+ if ( m_pUserImageList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
+ return m_pUserImageList->GetImage( nId );
+ else if ( pList && pList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
+ return pList->GetImage( nId );
+ else
+ return GetImageList( bBig, bHiContrast )->GetImage( nId );
+ }
}
//-------------------------------------------------------------------------
@@ -842,11 +933,11 @@ SfxImageManager::SfxImageManager( SfxObjectShell* pDoc )
}
// internal cached data for comparision in callback
- pData->nSet = pImp->aOpt.GetSymbolSet();
- pData->nOutStyle = pImp->aOpt.GetToolboxStyle();
+ pData->nSet = pImp->m_aOpt.GetSymbolSet();
+ pData->nOutStyle = pImp->m_aOpt.GetToolboxStyle();
// register callback for changes of SymbolSet or ToolboxStyle
- pImp->aOpt.AddListener( LINK( this, SfxImageManager, OptionsChanged_Impl ) );
+ pImp->m_aOpt.AddListener( LINK( this, SfxImageManager, OptionsChanged_Impl ) );
// SetInternal( TRUE );
nRef++;
@@ -861,13 +952,14 @@ SfxImageManager::~SfxImageManager()
if ( !--nRef )
{
- DELETEZ( pOffImageList );
DELETEZ( pImageListSmall );
DELETEZ( pImageListBig );
+ DELETEZ( pImageListHiSmall );
+ DELETEZ( pImageListHiBig );
}
DELETEZ( pData->pToolBoxList );
- pImp->aOpt.RemoveListener( LINK( this, SfxImageManager, OptionsChanged_Impl ) );
+ pImp->m_aOpt.RemoveListener( LINK( this, SfxImageManager, OptionsChanged_Impl ) );
if ( pImp != pGlobalConfig || !--nGlobalRef )
delete pImp;
delete pData;
@@ -901,57 +993,67 @@ BOOL SfxImageManager::Export( SotStorage& rInStorage, SvStream& rOutStream )
void SfxImageManager::LockImage( USHORT nId, ToolBox *pBox )
{
- // Neue Images kommen aus der Office-Liste
- if ( !pOffImageList || pOffImageList->GetImagePos( nId ) == IMAGELIST_IMAGE_NOTFOUND )
- return;
+ LockImage( nId, pBox, FALSE );
+}
+void SfxImageManager::LockImage( USHORT nId, ToolBox *pBox, BOOL bHiContrast )
+{
// Das Image mu\s die richtige Gr"o\e haben
if ( pBox->GetItemImage(nId).GetSizePixel() == pImageList->GetImageSize() )
{
// Ist das Image schon vorhanden ?
- ImageList *pUserImageList = pImp->pUserImageList;
+ ImageList *pUserImageList = pImp->m_pUserImageList;
+ ImageList *pHCUserImageList = pImp->m_pHCUserImageList;
if ( pUserImageList->GetImagePos( nId ) == IMAGELIST_IMAGE_NOTFOUND )
{
- // Eine physikalische Kopie des Images in der User-Liste machen
+ // Eine physikalische Kopie des Images in der User-Listen machen
pUserImageList->AddImage( nId, pBox->GetItemImage( nId ) );
+ pHCUserImageList->AddImage( nId, pBox->GetItemImage( nId ) );
+
if ( SfxMacroConfig::IsMacroSlot(nId) )
SfxMacroConfig::GetOrCreate()->RegisterSlotId( nId );
pImp->SetDefault( FALSE );
}
- // In der Toolbox dieses neue Image benutzen, so da\s die Referenz
- // auf die Quellliste wieder entfernt wird.
- pBox->SetItemImage( nId, pUserImageList->GetImage( nId ) );
+ // Toolbox should use image from the user image list so that the reference to
+ // the source image list will be released!
+ if ( bHiContrast )
+ pBox->SetItemImage( nId, pHCUserImageList->GetImage( nId ) );
+ else
+ pBox->SetItemImage( nId, pUserImageList->GetImage( nId ) );
}
}
//-------------------------------------------------------------------------
-Image SfxImageManager::MakeUserImage( USHORT nId, Image& aImage )
+Image SfxImageManager::MakeUserImage( USHORT nId, Image& aImage, BOOL bHiContrast )
{
- // Neue Images kommen aus der Office-Liste
- if ( !pOffImageList || pOffImageList->GetImagePos( nId ) == IMAGELIST_IMAGE_NOTFOUND )
- return Image();
-
// Das Image mu\s die richtige Gr"o\e haben
if ( aImage.GetSizePixel() == pImageList->GetImageSize() )
{
// Ist das Image schon vorhanden ?
- ImageList *pUserImageList = pImp->pUserImageList;
+ ImageList *pUserImageList = pImp->m_pUserImageList;
+ ImageList *pHCUserImageList = pImp->m_pHCUserImageList;
+
if ( pUserImageList->GetImagePos( nId ) == IMAGELIST_IMAGE_NOTFOUND )
{
- // Eine physikalische Kopie des Images in der User-Liste machen
+ // Eine physikalische Kopie des Images in den User-Listen machen
pUserImageList->AddImage( nId, aImage );
+ pHCUserImageList->AddImage( nId, aImage );
+
if ( SfxMacroConfig::IsMacroSlot(nId) )
SfxMacroConfig::GetOrCreate()->RegisterSlotId( nId );
pImp->SetDefault( FALSE );
}
- // In der Toolbox dieses neue Image benutzen, so da\s die Referenz
- // auf die Quellliste wieder entfernt wird.
- return pUserImageList->GetImage( nId );
+ // Return image from the user image list so that the reference to
+ // the source image list will be released!
+ if ( bHiContrast )
+ return pHCUserImageList->GetImage( nId );
+ else
+ return pUserImageList->GetImage( nId );
}
return Image();
@@ -971,21 +1073,9 @@ void SfxImageManager::SetSymbolSet_Impl( sal_Int16 nNewSet )
pImp->MakeDefaultImageList();
Size aNewSize = pImageList->GetImageSize();
- ImageList *pOld = pOffImageList;
- if ( pOld || !pImp->IsDefault() )
- {
- // Auch die Officeliste neu erzeugen bzw. neu anlegen
- DELETEZ( pOffImageList );
- StartCustomize();
- }
-
if ( !pImp->IsDefault() )
pImp->RebuildUserList();
- // Wenn es die Officeliste vorher nicht gab, muss sie jetzt wieder entfernt werden
- if ( !pOld )
- EndCustomize();
-
for ( USHORT n=0; n<pData->pToolBoxList->Count(); n++ )
{
ToolBoxInf_Impl *pInf = (*pData->pToolBoxList)[n];
@@ -1042,7 +1132,12 @@ void SfxImageManager::SetSymbolSet_Impl( sal_Int16 nNewSet )
Image SfxImageManager::SeekImage( USHORT nId, SfxModule *pModule ) const
{
- return pImp->SeekImage( nId, pModule );
+ return SeekImage( nId, FALSE, pModule );
+}
+
+Image SfxImageManager::SeekImage( USHORT nId, BOOL bHiContrast, SfxModule *pModule ) const
+{
+ return pImp->SeekImage( nId, pModule, bHiContrast );
}
//-------------------------------------------------------------------------
@@ -1055,28 +1150,43 @@ Image SfxImageManager::SeekImage( USHORT nId, SfxModule *pModule ) const
*/
Image SfxImageManager::GetImage( USHORT nId, SfxModule *pModule ) const
{
- return pImp->GetImage( nId, pModule, ( pImp->aOpt.GetSymbolSet() == SFX_SYMBOLS_LARGE ) );
+ return GetImage( nId, FALSE, pModule );
+}
+
+Image SfxImageManager::GetImage( USHORT nId, BOOL bHiContrast, SfxModule *pModule ) const
+{
+ return pImp->GetImage( nId, pModule, ( pImp->m_aOpt.GetSymbolSet() == SFX_SYMBOLS_LARGE ), bHiContrast );
+}
+
+Image SfxImageManager::GetImage(USHORT nId, SfxModule* pMod, BOOL bBig ) const
+{
+ return GetImage( nId, pMod, bBig, FALSE );
}
-Image SfxImageManager::GetImage( USHORT nId, SfxModule *pModule, BOOL bBig ) const
+Image SfxImageManager::GetImage( USHORT nId, SfxModule *pModule, BOOL bBig, BOOL bHiContrast ) const
{
- return pImp->GetImage( nId, pModule, bBig );
+ return pImp->GetImage( nId, pModule, bBig, bHiContrast );
}
Image SfxImageManager::GetImageFromModule_Impl( USHORT nId, SfxModule *pModule )
{
+ return GetImageFromModule_Impl( nId, pModule, FALSE );
+}
+
+Image SfxImageManager::GetImageFromModule_Impl( USHORT nId, SfxModule *pModule, BOOL bHiContrast )
+{
if ( pModule )
{
- ImageList *pList = pModule->GetImageList_Impl( pImp->aOpt.GetSymbolSet() == SFX_SYMBOLS_LARGE );
+ ImageList *pList = pModule->GetImageList_Impl(( pImp->m_aOpt.GetSymbolSet() == SFX_SYMBOLS_LARGE ), bHiContrast );
if ( pList )
return pList->GetImage( nId );
}
else
{
- if ( pOffImageList )
- return pOffImageList->GetImage( nId );
- else
+ if ( bHiContrast )
return pImageList->GetImage( nId );
+ else
+ return pHiImageList->GetImage( nId );
}
return Image();
@@ -1084,13 +1194,29 @@ Image SfxImageManager::GetImageFromModule_Impl( USHORT nId, SfxModule *pModule )
Image SfxImageManager::GetAndLockImage_Impl( USHORT nId, SfxModule *pModule )
{
- ImageList *pUserImageList = pImp->pUserImageList;
+ return GetAndLockImage_Impl( nId, FALSE, pModule );
+}
+
+Image SfxImageManager::GetAndLockImage_Impl( USHORT nId, BOOL bHiContrast, SfxModule *pModule )
+{
+ BOOL bBig = ( pImp->m_aOpt.GetSymbolSet() == SFX_SYMBOLS_LARGE );
+ ImageList *pUserImageList = pImp->m_pUserImageList;
+ ImageList *pHCUserImageList = pImp->m_pHCUserImageList;
// Zuerst in der UserImagelist suchen
- if ( pUserImageList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
- return pUserImageList->GetImage( nId );
- else if ( pModule )
- return GetImage( nId, pModule );
+ if ( bHiContrast )
+ {
+ if ( pHCUserImageList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
+ return pHCUserImageList->GetImage( nId );
+ }
+ else
+ {
+ if ( pUserImageList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
+ return pUserImageList->GetImage( nId );
+ }
+
+ if ( pModule )
+ return GetImage( nId, pModule, bBig, bHiContrast );
else
{
pModule = SFX_APP()->GetActiveModule();
@@ -1100,15 +1226,39 @@ Image SfxImageManager::GetAndLockImage_Impl( USHORT nId, SfxModule *pModule )
if ( pModule && pImageList->GetImagePos( nId ) == IMAGELIST_IMAGE_NOTFOUND )
{
// Dann in der Liste des aktiven Moduls suchen
- ImageList *pList = pModule->GetImageList_Impl( pImp->aOpt.GetSymbolSet() == SFX_SYMBOLS_LARGE );
+ ImageList *pList = pModule->GetImageList_Impl( bBig, bHiContrast );
if ( pList && pList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
{
// Das Image in die UserImageList "ubertragen
- pUserImageList->AddImage( nId, pList->GetImage( nId ) );
+ if ( bHiContrast )
+ {
+ // Add it to the high contrast user image list
+ pHCUserImageList->AddImage( nId, pList->GetImage( nId ) );
+
+ // Do it for the NON high contrast user image list, too!!
+ ImageList *pNonList = pModule->GetImageList_Impl( bBig, FALSE );
+ if ( pNonList )
+ pUserImageList->AddImage( nId, pNonList->GetImage( nId ) );
+ }
+ else
+ {
+ // Add it to the user image list
+ pUserImageList->AddImage( nId, pList->GetImage( nId ) );
+
+ // Do it for the high contrast user image list, too!!
+ ImageList *pHiList = pModule->GetImageList_Impl( bBig, TRUE );
+ if ( pHiList )
+ pHCUserImageList->AddImage( nId, pHiList->GetImage( nId ) );
+ }
+
if ( SfxMacroConfig::IsMacroSlot(nId) )
SfxMacroConfig::GetOrCreate()->RegisterSlotId( nId );
pImp->SetDefault( FALSE );
- return pUserImageList->GetImage( nId );
+
+ if ( bHiContrast )
+ return pHCUserImageList->GetImage( nId );
+ else
+ return pUserImageList->GetImage( nId );
}
}
@@ -1125,36 +1275,7 @@ Image SfxImageManager::GetAndLockImage_Impl( USHORT nId, SfxModule *pModule )
void SfxImageManager::StartCustomize()
{
- // Officeliste schon angelegt ?
- if ( pOffImageList )
- return;
-
- USHORT nType=0;
- switch ( pImp->aOpt.GetSymbolSet() )
- {
- case SFX_SYMBOLS_SMALL:
- nType = RID_OFFICEIMAGELIST_SC;
- break;
- case SFX_SYMBOLS_LARGE:
- nType = RID_OFFICEIMAGELIST_LC;
- break;
- default:
- DBG_ERROR("Unbekannter Symboltyp!");
- break;
- }
-
- // Die Office-Imagelist wird vom default-ResMgr bereitgestellt
- ResMgr *pResMgr = Resource::GetResManager();
- ResId aResId( nType );
- aResId.SetRT( RSC_IMAGELIST );
-
- DBG_ASSERT( pResMgr->IsAvailable(aResId),
- "Keine default ImageList vorhanden!" );
-
- if ( pResMgr->IsAvailable(aResId) )
- pOffImageList = new ImageList( aResId );
- else
- pOffImageList = new ImageList();
+ // no more office list
}
//-------------------------------------------------------------------------
@@ -1166,7 +1287,7 @@ void SfxImageManager::StartCustomize()
void SfxImageManager::EndCustomize()
{
- DELETEZ( pOffImageList);
+ // no more office list
}
//-------------------------------------------------------------------------
@@ -1179,13 +1300,16 @@ void SfxImageManager::EndCustomize()
void SfxImageManager::ReplaceImage( USHORT nId, Bitmap* pBmp )
{
- ImageList *pUserImageList = pImp->pUserImageList;
- SfxBitmapList_Impl* pUserDefList = pImp->pUserDefList;
+ ImageList *pUserImageList = pImp->m_pUserImageList;
+ ImageList *pHCUserImageList = pImp->m_pHCUserImageList;
+
+ SfxBitmapList_Impl* pUserDefList = pImp->m_pUserDefList;
BOOL bReplaced = FALSE;
if ( !pBmp && GetImage( nId ).GetSizePixel().Width() )
{
// Auf default zuruecksetzen; zuerst das Userdef-Image entfernen
pUserImageList->RemoveImage( nId );
+ pHCUserImageList->RemoveImage( nId );
// Falls zu der "ubergebenen Id eine UserBitmap vorliegt, wird sie
// jetzt wieder entfernt
@@ -1194,19 +1318,6 @@ void SfxImageManager::ReplaceImage( USHORT nId, Bitmap* pBmp )
pUserDefList->RemoveBitmap( nId );
Image aImage = GetImage( nId );
- if ( !aImage.GetSizePixel().Width() )
- {
- // Kein default-Image vorhanden, vielleicht eines in Officeliste?
- ImageList *pOldOffImageList = pOffImageList;
- if ( !pOldOffImageList )
- StartCustomize();
- aImage = pOffImageList->GetImage( nId );
-
- // Wenn es die OfficeListe vorher nicht gab, mu\s sie jetzt wieder
- // entfernt werden
- if ( !pOldOffImageList )
- EndCustomize();
- }
if ( aImage.GetSizePixel().Width() )
{
@@ -1253,9 +1364,15 @@ void SfxImageManager::ReplaceImage( USHORT nId, Bitmap* pBmp )
// In die User-Liste aufnehmen
if ( pUserImageList->GetImagePos( nId ) == IMAGELIST_IMAGE_NOTFOUND )
+ {
pUserImageList->AddImage( nId, aImage );
+ pHCUserImageList->AddImage( nId, aImage );
+ }
else
+ {
pUserImageList->ReplaceImage( nId, aImage );
+ pHCUserImageList->ReplaceImage( nId, aImage );
+ }
if ( SfxMacroConfig::IsMacroSlot(nId) )
SfxMacroConfig::GetOrCreate()->RegisterSlotId( nId );
@@ -1291,7 +1408,7 @@ void SfxImageManager::RegisterToolBox( ToolBox *pBox, USHORT nFlags )
pInf->nFlags = nFlags;
pInf->pModule = NULL;
pData->pToolBoxList->Append( pInf );
- pBox->SetOutStyle( pImp->aOpt.GetToolboxStyle() );
+ pBox->SetOutStyle( pImp->m_aOpt.GetToolboxStyle() );
}
void SfxImageManager::RegisterToolBox( ToolBox *pBox, SfxModule* pModule, USHORT nFlags )
@@ -1302,7 +1419,7 @@ void SfxImageManager::RegisterToolBox( ToolBox *pBox, SfxModule* pModule, USHORT
pInf->nFlags = nFlags;
pInf->pModule = pModule;
pData->pToolBoxList->Append( pInf );
- pBox->SetOutStyle( pImp->aOpt.GetToolboxStyle() );
+ pBox->SetOutStyle( pImp->m_aOpt.GetToolboxStyle() );
}
//-------------------------------------------------------------------------
@@ -1332,7 +1449,7 @@ void SfxImageManager::RegisterToolBoxManager( SfxToolBoxManager *pMgr, USHORT nF
pInf->pMgr = pMgr;
pInf->nFlags = nFlags;
pData->pToolBoxList->Append( pInf );
- pInf->pToolBox->SetOutStyle( pImp->aOpt.GetToolboxStyle() );
+ pInf->pToolBox->SetOutStyle( pImp->m_aOpt.GetToolboxStyle() );
}
//-------------------------------------------------------------------------
@@ -1381,13 +1498,21 @@ Color SfxImageManager::GetMaskColor() const
void SfxImageManager::SetImages( ToolBox& rToolBox, SfxModule *pModule )
{
+ SetImages( rToolBox, pModule, FALSE );
+}
+
+void SfxImageManager::SetImages( ToolBox& rToolBox, SfxModule *pModule, BOOL bHiContrast )
+{
+ BOOL bBig = pImp->m_aOpt.GetSymbolSet() == SFX_SYMBOLS_LARGE;
+
if ( !pModule )
pModule = SFX_APP()->GetActiveModule();
ImageList *pList=0;
if ( pModule )
- pList = pModule->GetImageList_Impl( pImp->aOpt.GetSymbolSet() == SFX_SYMBOLS_LARGE );
+ pList = pModule->GetImageList_Impl( bBig, bHiContrast );
- ImageList *pUserImageList = pImp->pUserImageList;
+ ImageList *pUserImageList = bHiContrast ? pImp->m_pHCUserImageList : pImp->m_pUserImageList;
+ ImageList *pWorkImageList = GetImageList( bBig, bHiContrast );
USHORT nCount = rToolBox.GetItemCount();
for (USHORT n=0; n<nCount; n++)
{
@@ -1400,8 +1525,8 @@ void SfxImageManager::SetImages( ToolBox& rToolBox, SfxModule *pModule )
rToolBox.SetItemImage(nId, pUserImageList->GetImage(nId));
else if ( pList && pList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
rToolBox.SetItemImage(nId, pList->GetImage(nId));
- else if ( pImageList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
- rToolBox.SetItemImage(nId, pImageList->GetImage(nId));
+ else if ( pWorkImageList->GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND )
+ rToolBox.SetItemImage(nId, pWorkImageList->GetImage(nId));
}
case TOOLBOXITEM_SEPARATOR:
@@ -1424,7 +1549,7 @@ void SfxImageManager::SetImages( ToolBox& rToolBox, SfxModule *pModule )
BOOL SfxImageManager::IsUserDef_Impl(USHORT nId) const
{
- return ( pImp->pUserDefList->GetBitmapPos(nId) != USHRT_MAX );
+ return ( pImp->m_pUserDefList->GetBitmapPos(nId) != USHRT_MAX );
}
//-------------------------------------------------------------------------
@@ -1437,7 +1562,7 @@ BOOL SfxImageManager::IsUserDef_Impl(USHORT nId) const
const Bitmap& SfxImageManager::GetUserDefBitmap_Impl( USHORT nId ) const
{
- SfxBitmapList_Impl* pUserDefList = pImp->pUserDefList;
+ SfxBitmapList_Impl* pUserDefList = pImp->m_pUserDefList;
USHORT nPos = pUserDefList->GetBitmapPos( nId );
DBG_ASSERT( nPos != USHRT_MAX, "Bitmap nicht vorhanden!" );
return ( *pUserDefList->GetBitmap(nId) );
@@ -1479,8 +1604,8 @@ Size SfxImageManager::GetImageSize() const
IMPL_LINK( SfxImageManager, OptionsChanged_Impl, void*, pVoid )
{
- SetOutStyle_Impl( pImp->aOpt.GetToolboxStyle() );
- SetSymbolSet_Impl( pImp->aOpt.GetSymbolSet() );
+ SetOutStyle_Impl( pImp->m_aOpt.GetToolboxStyle() );
+ SetSymbolSet_Impl( pImp->m_aOpt.GetSymbolSet() );
return 0L;
}
@@ -1489,15 +1614,36 @@ Image SfxImageManager::GetGlobalImage( USHORT nId, BOOL bBig )
{
if ( !pGlobalConfig )
return Image();
- return pGlobalConfig->GetImage( nId, NULL, bBig );
+ return pGlobalConfig->GetImage( nId, NULL, bBig, FALSE );
+}
+
+Image SfxImageManager::GetGlobalImage( USHORT nId, BOOL bBig, BOOL bHiContrast )
+{
+ if ( !pGlobalConfig )
+ return Image();
+ return pGlobalConfig->GetImage( nId, NULL, bBig, bHiContrast );
}
IMPL_LINK( SfxImageManager, ConfigChanged_Impl, void*, pVoid )
{
+ BOOL bHiContrast = FALSE;
+
+ if ( pData->pToolBoxList->Count() > 0 )
+ {
+ // Check whether toolbox is in high contrast mode or not!
+ ToolBox *pBox = (*pData->pToolBoxList)[0]->pToolBox;
+ Color aBackColor = pBox->GetBackground().GetColor();
+ if ( aBackColor.IsDark() )
+ bHiContrast = TRUE;
+ }
+
for ( USHORT i=0; i<pImageList->GetImageCount(); i++ )
{
USHORT nId = pImageList->GetImageId(i);
- ExchangeItemImage_Impl( nId, pImp->GetImage( nId, pData->pDoc->GetModule(), ( pData->nSet == SFX_SYMBOLS_LARGE ) ) );
+ ExchangeItemImage_Impl( nId, pImp->GetImage( nId,
+ pData->pDoc->GetModule(),
+ ( pData->nSet == SFX_SYMBOLS_LARGE ),
+ bHiContrast ) );
}
return TRUE;
diff --git a/sfx2/source/toolbox/tbxitem.cxx b/sfx2/source/toolbox/tbxitem.cxx
index 94a0f22b23..e1fbdd1bbb 100644
--- a/sfx2/source/toolbox/tbxitem.cxx
+++ b/sfx2/source/toolbox/tbxitem.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: tbxitem.cxx,v $
*
- * $Revision: 1.19 $
+ * $Revision: 1.20 $
*
- * last change: $Author: mba $ $Date: 2002-04-05 12:23:06 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:43:35 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -86,6 +86,10 @@
#include <framework/menuconfiguration.hxx>
#include <vcl/taskpanelist.hxx>
+#ifndef INCLUDED_SVTOOLS_MENUOPTIONS_HXX
+#include <svtools/menuoptions.hxx>
+#endif
+
#pragma hdrstop
#include "tbxctrl.hxx"
@@ -113,6 +117,7 @@
#include "app.hxx"
#include "unoctitm.hxx"
#include "helpid.hrc"
+#include "imagemgr.hxx"
#include "workwin.hxx"
using namespace ::com::sun::star::uno;
@@ -644,6 +649,11 @@ SfxAppToolBoxControl_Impl::SfxAppToolBoxControl_Impl
rBox.SetHelpId( nId, HID_TBXCONTROL_FILENEW );
rBox.SetItemBits( nId, rBox.GetItemBits( nId ) | TIB_DROPDOWN);
SetImage( String() );
+
+ // Determine the current background color of the menus
+ const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings();
+ m_bWasHiContrastMode = rSettings.GetMenuColor().IsDark();
+ m_bShowMenuImages = SvtMenuOptions().IsMenuIconsEnabled();
}
SfxAppToolBoxControl_Impl::~SfxAppToolBoxControl_Impl()
@@ -660,7 +670,7 @@ void SfxAppToolBoxControl_Impl::SetImage( const String &rURL )
aURL += String::CreateFromAscii(SfxObjectFactory::GetDefaultFactory().GetShortName());
}
- GetToolBox().SetItemImage( GetId(), SvFileInformationManager::GetImage( INetURLObject( aURL ), FALSE ) );
+ GetToolBox().SetItemImage( GetId(), SvFileInformationManager::GetImage( INetURLObject( aURL ), FALSE, m_bWasHiContrastMode ) );
}
void SfxAppToolBoxControl_Impl::StateChanged
@@ -714,6 +724,69 @@ void SfxAppToolBoxControl_Impl::Select( BOOL bMod1 )
//--------------------------------------------------------------------
long Select_Impl( void* pHdl, void* pVoid );
+
+IMPL_LINK( SfxAppToolBoxControl_Impl, Activate, Menu *, pMenu )
+{
+ if ( pMenu )
+ {
+ const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings();
+ BOOL bIsHiContrastMode = rSettings.GetMenuColor().IsDark();
+ BOOL bShowMenuImages = SvtMenuOptions().IsMenuIconsEnabled();
+
+ if (( bIsHiContrastMode != m_bWasHiContrastMode ) ||
+ ( bShowMenuImages != m_bShowMenuImages ) )
+ {
+ m_bWasHiContrastMode = bIsHiContrastMode;
+ m_bShowMenuImages = bShowMenuImages;
+
+ USHORT nCount = pMenu->GetItemCount();
+ for ( USHORT nSVPos = 0; nSVPos < nCount; nSVPos++ )
+ {
+ USHORT nId = pMenu->GetItemId( nSVPos );
+ if ( pMenu->GetItemType( nSVPos ) != MENUITEM_SEPARATOR )
+ {
+ if ( bShowMenuImages )
+ {
+ sal_Bool bImageSet = sal_False;
+ ::rtl::OUString aImageId;
+ ::framework::MenuConfiguration::Attributes* pMenuAttributes =
+ (::framework::MenuConfiguration::Attributes*)pMenu->GetUserValue( nId );
+
+ if ( pMenuAttributes )
+ aImageId = pMenuAttributes->aImageId; // Retrieve image id from menu attributes
+
+ if ( aImageId.getLength() > 0 )
+ {
+ Image aImage = GetImage( Reference< ::com::sun::star::frame::XFrame >(), aImageId, FALSE, bIsHiContrastMode );
+ if ( !!aImage )
+ {
+ bImageSet = sal_True;
+ pMenu->SetItemImage( nId, aImage );
+ }
+ }
+
+ String aCmd( pMenu->GetItemCommand( nId ) );
+ if ( !bImageSet && aCmd.Len() )
+ {
+ Image aImage = SvFileInformationManager::GetImage( aCmd, FALSE, bIsHiContrastMode );
+ if ( !!aImage )
+ pMenu->SetItemImage( nId, aImage );
+ }
+ }
+ else
+ pMenu->SetItemImage( nId, Image() );
+ }
+ }
+ }
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+//--------------------------------------------------------------------
+
IMPL_LINK( SfxAppToolBoxControl_Impl, Timeout, Timer *, pTimer )
{
SfxApplication* pApp = SFX_APP();
@@ -734,6 +807,7 @@ IMPL_LINK( SfxAppToolBoxControl_Impl, Timeout, Timer *, pTimer )
if( pMenu )
{
pMenu->SetSelectHdl( Link( this, Select_Impl ) );
+ pMenu->SetActivateHdl( LINK( this, SfxAppToolBoxControl_Impl, Activate ));
rBox.SetItemDown( GetId(), TRUE );
USHORT nSelected = pMenu->Execute( &rBox, aRect, POPUPMENU_EXECUTE_UP );
if ( nSelected )
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index 7f0cd1d571..e3c19e22c5 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: tbcontrl.cxx,v $
*
- * $Revision: 1.21 $
+ * $Revision: 1.22 $
*
- * last change: $Author: os $ $Date: 2002-04-02 13:51:10 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:49:39 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -402,6 +402,7 @@ private:
Color aCurColor;
Rectangle theUpdRect;
Size theBmpSize;
+ BOOL bWasHiContrastMode;
};
//========================================================================
@@ -1658,14 +1659,14 @@ BOOL SvxLineWindow::Close()
SvxTbxButtonColorUpdater::SvxTbxButtonColorUpdater( USHORT nTbxBtnId,
ToolBox* ptrTbx,
USHORT nMode ) :
- nDrawMode ( nMode ),
- nBtnId ( nTbxBtnId ),
- pTbx ( ptrTbx ),
- pBtnBmp ( NULL ),
- aCurColor ( COL_TRANSPARENT )
-
+ nDrawMode ( nMode ),
+ nBtnId ( nTbxBtnId ),
+ pTbx ( ptrTbx ),
+ pBtnBmp ( NULL ),
+ aCurColor ( COL_TRANSPARENT )
{
DBG_ASSERT( pTbx, "ToolBox not found :-(" );
+ bWasHiContrastMode = pTbx ? ( pTbx->GetBackground().GetColor().IsDark() ) : FALSE;
Update(nTbxBtnId == SID_ATTR_CHAR_COLOR2 ? COL_BLACK : COL_GRAY);
return;
}
@@ -1683,15 +1684,17 @@ void SvxTbxButtonColorUpdater::Update( const Color& rColor )
{
Image aImage( pTbx->GetItemImage( nBtnId ) );
BOOL bSizeChanged = ( theBmpSize != aImage.GetSizePixel() );
+ BOOL bDisplayModeChanged = ( bWasHiContrastMode != pTbx->GetBackground().GetColor().IsDark() );
- if ( aCurColor == rColor && !bSizeChanged )
+ if ( aCurColor == rColor && !bSizeChanged && !bDisplayModeChanged )
return;
VirtualDevice aVirDev( *pTbx );
Point aNullPnt;
- if ( bSizeChanged )
+ if ( bSizeChanged || bDisplayModeChanged )
{
+ bWasHiContrastMode = pTbx->GetBackground().GetColor().IsDark();
theBmpSize = aImage.GetSizePixel();
if ( theBmpSize.Width() <= 16 )
diff --git a/svx/source/tbxctrls/tbxdrctl.cxx b/svx/source/tbxctrls/tbxdrctl.cxx
index 8f27a1934a..36046019a9 100644
--- a/svx/source/tbxctrls/tbxdrctl.cxx
+++ b/svx/source/tbxctrls/tbxdrctl.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: tbxdrctl.cxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: nn $ $Date: 2002-03-14 15:15:13 $
+ * last change: $Author: cd $ $Date: 2002-04-11 11:49:39 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -117,10 +117,13 @@ void SvxTbxCtlDraw::StateChanged( USHORT nSID, SfxItemState eState,
if( GetId() == SID_INSERT_DRAW && nTemp != USHRT_MAX )
{
+ // Check whether we are in high contrast mode or not!
+ BOOL bHiContrast = GetToolBox().GetBackground().GetColor().IsDark();
+
nLastAction = nTemp;
USHORT nImage = nLastAction ? nLastAction : GetId();
SfxViewFrame* pFrame = GetBindings().GetDispatcher()->GetFrame();
- Image aImage = pFrame->GetImageManager()->GetImage( nImage );
+ Image aImage = pFrame->GetImageManager()->GetImage( nImage, bHiContrast );
GetToolBox().SetItemImage( GetId(), aImage );
}
}