diff options
author | Eike Rathke <erack@redhat.com> | 2013-02-18 18:29:48 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2013-02-18 20:07:05 +0100 |
commit | ab6ebe247005d78cbd816269ab76a8d4d6ea11cd (patch) | |
tree | 6d73d01c2a9d428010007ca727663f9904ebfb67 /vcl | |
parent | 7caa680335c2cd89c4fbd1ab621ac9e40e0ec803 (diff) |
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.cxx | 58 |
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: */ |