summaryrefslogtreecommitdiff
path: root/vcl/source
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@suse.cz>2013-01-01 22:30:18 +0100
committerJan Holesovsky <kendy@suse.cz>2013-03-04 16:19:32 +0100
commit8d98580ec89a014721b64a952cc1c68def76f581 (patch)
tree0247910c55988687a83db0c5576ddbf637055917 /vcl/source
parent95951c4b9d83952b6b8f8c0969b801d70091cb52 (diff)
Personas: Read the bitmaps in StyleSettings.
Conflicts: cui/source/options/personalization.cxx vcl/inc/vcl/settings.hxx vcl/source/app/settings.cxx Change-Id: I52b67c82f69059a7d2babf1b49e59f27062cc02c
Diffstat (limited to 'vcl/source')
-rw-r--r--vcl/source/app/settings.cxx82
1 files changed, 77 insertions, 5 deletions
diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
index dfdfa9554d3c..936818c59633 100644
--- a/vcl/source/app/settings.cxx
+++ b/vcl/source/app/settings.cxx
@@ -26,8 +26,13 @@
*
************************************************************************/
+#include <officecfg/Office/Common.hxx>
+
#include <svsys.h>
+#include "comphelper/processfactory.hxx"
+#include <rtl/bootstrap.hxx>
#include "tools/debug.hxx"
+#include <vcl/graphicfilter.hxx>
#include "i18npool/mslangid.hxx"
@@ -46,7 +51,7 @@
#include "unotools/confignode.hxx"
#include "unotools/syslocaleoptions.hxx"
-using ::rtl::OUString;
+using namespace ::com::sun::star;
#include "svdata.hxx"
#include "impimagetree.hxx"
@@ -206,7 +211,10 @@ sal_Bool MouseSettings::operator ==( const MouseSettings& rSet ) const
// =======================================================================
-ImplStyleData::ImplStyleData()
+ImplStyleData::ImplStyleData() :
+ maPersonaHeaderFooter(),
+ mpPersonaHeaderBitmap( NULL ),
+ mpPersonaFooterBitmap( NULL )
{
mnRefCount = 1;
mnScrollBarSize = 16;
@@ -302,7 +310,10 @@ ImplStyleData::ImplStyleData( const ImplStyleData& rData ) :
maFieldFont( rData.maFieldFont ),
maIconFont( rData.maIconFont ),
maGroupFont( rData.maGroupFont ),
- maWorkspaceGradient( rData.maWorkspaceGradient )
+ maWorkspaceGradient( rData.maWorkspaceGradient ),
+ maPersonaHeaderFooter( rData.maPersonaHeaderFooter ),
+ mpPersonaHeaderBitmap( NULL ),
+ mpPersonaFooterBitmap( NULL )
{
mnRefCount = 1;
mnBorderSize = rData.mnBorderSize;
@@ -678,6 +689,67 @@ sal_Bool StyleSettings::GetUseImagesInMenus() const
// -----------------------------------------------------------------------
+static BitmapEx* readBitmapEx( const rtl::OUString& rPath )
+{
+ rtl::OUString aPath( rPath );
+ rtl::Bootstrap::expandMacros( aPath );
+
+ // import the image
+ Graphic aGraphic;
+ if ( GraphicFilter::LoadGraphic( aPath, String(), aGraphic ) != GRFILTER_OK )
+ return NULL;
+
+ const BitmapEx& rBitmap( aGraphic.GetBitmapEx() );
+ if ( rBitmap.IsEmpty() )
+ return NULL;
+
+ return new BitmapEx( rBitmap );
+}
+
+enum WhichPersona { PERSONA_HEADER, PERSONA_FOOTER };
+
+/** Update the setting of the Persona header / footer in ImplStyleData */
+static void setupPersonaHeaderFooter( WhichPersona eWhich, rtl::OUString& /*rHeaderFooter*/, BitmapEx*& pHeaderFooterBitmap )
+{
+ rtl::OUString aName;
+ switch ( eWhich ) {
+ case PERSONA_HEADER: aName = "header.jpg"; break;
+ case PERSONA_FOOTER: aName = "footer.jpg"; break;
+ }
+
+ delete pHeaderFooterBitmap;
+ pHeaderFooterBitmap = NULL;
+
+ if ( !aName.isEmpty() )
+ {
+ // try the gallery first, then edition, and the program path if
+ // everything else fails
+ rtl::OUString gallery = "${$BRAND_BASE_DIR/program/" SAL_CONFIGFILE( "bootstrap") "::UserInstallation}";
+ rtl::Bootstrap::expandMacros( gallery );
+ gallery += "/user/gallery/personas/";
+
+ if ( !pHeaderFooterBitmap )
+ pHeaderFooterBitmap = readBitmapEx( "$BRAND_BASE_DIR/program/edition/" + aName );
+
+ if ( !pHeaderFooterBitmap )
+ pHeaderFooterBitmap = readBitmapEx( "$BRAND_BASE_DIR/program/" + aName );
+ }
+}
+
+const BitmapEx* StyleSettings::GetPersonaHeader() const
+{
+ setupPersonaHeaderFooter( PERSONA_HEADER, mpData->maPersonaHeaderFooter, mpData->mpPersonaHeaderBitmap );
+ return mpData->mpPersonaHeaderBitmap;
+}
+
+const BitmapEx* StyleSettings::GetPersonaFooter() const
+{
+ setupPersonaHeaderFooter( PERSONA_FOOTER, mpData->maPersonaHeaderFooter, mpData->mpPersonaFooterBitmap );
+ return mpData->mpPersonaFooterBitmap;
+}
+
+// -----------------------------------------------------------------------
+
void StyleSettings::SetStandardStyles()
{
CopyData();
@@ -1508,11 +1580,11 @@ bool AllSettings::GetLayoutRTL() const
nUIMirroring = 0; // ask configuration only once
utl::OConfigurationNode aNode = utl::OConfigurationTreeRoot::tryCreateWithServiceFactory(
vcl::unohelper::GetMultiServiceFactory(),
- OUString("org.openoffice.Office.Common/I18N/CTL") ); // note: case sensisitive !
+ rtl::OUString("org.openoffice.Office.Common/I18N/CTL") ); // note: case sensisitive !
if ( aNode.isValid() )
{
sal_Bool bTmp = sal_Bool();
- ::com::sun::star::uno::Any aValue = aNode.getNodeValue( OUString("UIMirroring") );
+ ::com::sun::star::uno::Any aValue = aNode.getNodeValue( rtl::OUString("UIMirroring") );
if( aValue >>= bTmp )
{
// found true or false; if it was nil, nothing is changed