diff options
author | Michael Meeks <michael.meeks@novell.com> | 2010-10-11 12:22:12 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@novell.com> | 2010-10-11 12:22:12 +0100 |
commit | 63148a8bf7292c1aed0189784e5fd6422cb82b1d (patch) | |
tree | 85917ac3ab55d678782372d18b2a59757460a23b /vcl | |
parent | 6f21189b2578d8b899132226e5a8b0d2e7246089 (diff) |
move the branded bitmap locator down the stack - for framework use
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/brand.cxx | 78 | ||||
-rw-r--r-- | vcl/inc/vcl/svapp.hxx | 2 | ||||
-rw-r--r-- | vcl/source/app/makefile.mk | 1 |
3 files changed, 81 insertions, 0 deletions
diff --git a/vcl/brand.cxx b/vcl/brand.cxx new file mode 100644 index 000000000000..e009e7375bff --- /dev/null +++ b/vcl/brand.cxx @@ -0,0 +1,78 @@ +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Initial Developer of the Original Code is + * Novell, Inc. + * Portions created by the Initial Developer are Copyright (C) 2010 the + * Initial Developer. All Rights Reserved. + * + * Contributor(s): Michael Meeks <michael.meeks@novell.com> + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_vcl.hxx" + +#include <rtl/ustring.hxx> +#include <rtl/bootstrap.hxx> +#include <rtl/locale.hxx> +#include <osl/process.h> +#include <tools/urlobj.hxx> +#include <tools/stream.hxx> +#include <vcl/pngread.hxx> +#include <vcl/svapp.hxx> + +namespace { + static bool loadPng(const char *pPath, const rtl::OUString &rName, BitmapEx &rBitmap) + { + rtl::OUString uri = rtl::OUString::createFromAscii( pPath ) + rName; + rtl::Bootstrap::expandMacros( uri ); + INetURLObject aObj( uri ); + SvFileStream aStrm( aObj.PathToFileName(), STREAM_STD_READ ); + if ( !aStrm.GetError() ) { + vcl::PNGReader aReader( aStrm ); + rBitmap = aReader.Read(); + return !rBitmap.IsEmpty(); + } + else + return false; + } +} + +bool Application::LoadBrandBitmap (const char* pName, BitmapEx &rBitmap) +{ + // TODO - if we want more flexibility we could add a branding path + // in an rc file perhaps fallback to "about.bmp" + rtl::OUString aBaseName = ( rtl::OUString::createFromAscii( "/" ) + + rtl::OUString::createFromAscii( pName ) ); + rtl::OUString aPng( RTL_CONSTASCII_USTRINGPARAM(".png") ); + + rtl_Locale *pLoc = NULL; + osl_getProcessLocale (&pLoc); + rtl::OLocale aLoc( pLoc ); + + rtl::OUString aName = aBaseName + aPng; + rtl::OUString aLocaleName = ( aBaseName + rtl::OUString::createFromAscii ("-") + + aLoc.getLanguage() + + rtl::OUString::createFromAscii ("_") + + aLoc.getCountry() + aPng ); + + return ( loadPng ("$BRAND_BASE_DIR/program/edition", aLocaleName, rBitmap) || + loadPng ("$BRAND_BASE_DIR/program", aLocaleName, rBitmap) || + loadPng ("$BRAND_BASE_DIR/program/edition", aName, rBitmap) || + loadPng ("$BRAND_BASE_DIR/program", aName, rBitmap) ); +} diff --git a/vcl/inc/vcl/svapp.hxx b/vcl/inc/vcl/svapp.hxx index 953646be7197..bcfa489ca1de 100644 --- a/vcl/inc/vcl/svapp.hxx +++ b/vcl/inc/vcl/svapp.hxx @@ -38,6 +38,7 @@ #include <vcl/apptypes.hxx> #include <vcl/settings.hxx> #include <vcl/vclevent.hxx> +class BitmapEx; class Link; class AllSettings; class DataChangedEvent; @@ -360,6 +361,7 @@ public: static void SetAppName( const String& rUniqueName ); static String GetAppName(); + static bool LoadBrandBitmap (const char* pName, BitmapEx &rBitmap); static void SetDisplayName( const UniString& rDisplayName ); static UniString GetDisplayName(); diff --git a/vcl/source/app/makefile.mk b/vcl/source/app/makefile.mk index 5d14f0032b4a..f0884a96a3ee 100644 --- a/vcl/source/app/makefile.mk +++ b/vcl/source/app/makefile.mk @@ -43,6 +43,7 @@ CDEFS+=-DDLLPOSTFIX=$(DLLPOSTFIX) # --- Files -------------------------------------------------------- SLOFILES= $(SLO)$/dbggui.obj \ + $(SLO)$/brand.obj \ $(SLO)$/help.obj \ $(SLO)$/idlemgr.obj \ $(SLO)$/settings.obj \ |