summaryrefslogtreecommitdiffstats
path: root/vcl
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2013-02-18 18:29:48 +0100
committerEike Rathke <erack@redhat.com>2013-02-18 20:07:05 +0100
commitab6ebe247005d78cbd816269ab76a8d4d6ea11cd (patch)
tree6d73d01c2a9d428010007ca727663f9904ebfb67 /vcl
parentFix the Ignore system input language label truncated in translations (diff)
downloadcore-ab6ebe247005d78cbd816269ab76a8d4d6ea11cd.tar.gz
core-ab6ebe247005d78cbd816269ab76a8d4d6ea11cd.zip
consistent fall-back chain for (branded) about
Make Application::LoadBrandBitmap() and LoadBrandSVG() use the same and consistent fall-back chain to obtain localized files, if any. Change-Id: I396f59ec5ffe7ee323b798c6c66241bd76a4b30a
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/app/brand.cxx58
1 files changed, 38 insertions, 20 deletions
diff --git a/vcl/source/app/brand.cxx b/vcl/source/app/brand.cxx
index 904c24ab7c32..99517d1bbefb 100644
--- a/vcl/source/app/brand.cxx
+++ b/vcl/source/app/brand.cxx
@@ -51,46 +51,64 @@ namespace {
}
}
+static bool lcl_loadPng( const OUString& rName, BitmapEx& rBitmap )
+{
+ return
+ loadPng( "$BRAND_BASE_DIR/program/edition", rName, rBitmap) ||
+ loadPng( "$BRAND_BASE_DIR/program", rName, rBitmap);
+}
+
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("/") +
- rtl::OUString::createFromAscii( pName ) );
- rtl::OUString aPng( ".png" );
+ OUString aBaseName( "/" + OUString::createFromAscii( pName ) );
+ OUString aPng( ".png" );
rtl_Locale *pLoc = NULL;
osl_getProcessLocale (&pLoc);
LanguageTag aLanguageTag( *pLoc);
- rtl::OUString aName = aBaseName + aPng;
- rtl::OUString aLocaleName = ( aBaseName + rtl::OUString("-") +
- aLanguageTag.getBcp47() +
- aPng );
+ ::std::vector< OUString > aFallbacks( aLanguageTag.getFallbackStrings());
+ for (size_t i=0; i < aFallbacks.size(); ++i)
+ {
+ if (lcl_loadPng( aBaseName + "-" + aFallbacks[i] + aPng, rBitmap))
+ return true;
+ }
+
+ if (lcl_loadPng( aBaseName + aPng, rBitmap))
+ return true;
- 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) );
+ return false;
+}
+
+static bool lcl_loadSvg( const OUString& rName, BitmapEx& rBitmap )
+{
+ return
+ loadSvg( "$BRAND_BASE_DIR/program/edition" + rName, rBitmap) ||
+ loadSvg( "$BRAND_BASE_DIR/program" + rName, rBitmap);
}
bool Application::LoadBrandSVG (const char *pName, BitmapEx &rBitmap)
{
- rtl::OUString aBaseName = ( rtl::OUString("/") +
- rtl::OUString::createFromAscii( pName ) );
+ rtl::OUString aBaseName( "/" + rtl::OUString::createFromAscii( pName ) );
rtl::OUString aSvg( ".svg" );
rtl_Locale *pLoc = NULL;
osl_getProcessLocale (&pLoc);
LanguageTag aLanguageTag( *pLoc);
- rtl::OUString aName = aBaseName + aSvg;
- rtl::OUString aLocaleName = ( aBaseName + rtl::OUString("-") +
- aLanguageTag.getBcp47() +
- aSvg );
- rtl::OUString uriOpt = rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program/edition" ) + aLocaleName;
- rtl::OUString uri = rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ) + aBaseName+aSvg;
- return ( loadSvg( uriOpt, rBitmap ) || loadSvg( uri, rBitmap ) );
+ ::std::vector< OUString > aFallbacks( aLanguageTag.getFallbackStrings());
+ for (size_t i=0; i < aFallbacks.size(); ++i)
+ {
+ if (lcl_loadSvg( aBaseName + "-" + aFallbacks[i] + aSvg, rBitmap))
+ return true;
+ }
+
+ if (lcl_loadSvg( aBaseName + aSvg, rBitmap))
+ return true;
+
+ return false;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */