summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vcl/brand.cxx78
-rw-r--r--vcl/inc/vcl/svapp.hxx2
-rw-r--r--vcl/source/app/makefile.mk1
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 \