fdo#74697 Add Bluez 5 support for impress remote.
[LibreOffice.git] / svx / source / gallery2 / galini.cxx
blobdce5ce397012f527984083629245b787b87ca35a
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 */
11 * The world's quickest and lamest .desktop / .ini file parser.
12 * Ideally the .thm file would move to a .desktop file in
13 * future.
16 #include <sal/config.h>
18 #include <unotools/streamwrap.hxx>
19 #include <unotools/ucbstreamhelper.hxx>
20 #include <unotools/tempfile.hxx>
21 #include <svx/gallery1.hxx>
22 #include <i18nlangtag/languagetag.hxx>
23 #include <unotools/syslocale.hxx>
24 #include <vcl/svapp.hxx>
26 OUString GalleryThemeEntry::ReadStrFromIni(const OUString &aKeyName )
28 SvStream *pStrm = ::utl::UcbStreamHelper::CreateStream(
29 GetStrURL().GetMainURL( INetURLObject::NO_DECODE ),
30 STREAM_READ );
32 const LanguageTag &rLangTag = Application::GetSettings().GetUILanguageTag();
34 ::std::vector< OUString > aFallbacks = rLangTag.getFallbackStrings();
36 OUString aResult;
37 sal_Int32 nRank = 42;
39 if( pStrm )
41 OString aLine;
42 while( pStrm->ReadLine( aLine ) )
44 OUString aKey;
45 OUString aLocale;
46 OUString aValue;
47 sal_Int32 n;
49 // comments
50 if( aLine.indexOf( '#' ) == 0 )
51 continue;
53 // a[en_US] = Bob
54 if( ( n = aLine.indexOf( '=' ) ) >= 1)
56 aKey = OStringToOUString(
57 aLine.copy( 0, n ).trim(), RTL_TEXTENCODING_ASCII_US );
58 aValue = OStringToOUString(
59 aLine.copy( n + 1 ).trim(), RTL_TEXTENCODING_UTF8 );
61 if( ( n = aKey.indexOf( '[' ) ) >= 1 )
63 aLocale = aKey.copy( n + 1 ).trim();
64 aKey = aKey.copy( 0, n ).trim();
65 if( (n = aLocale.indexOf( ']' ) ) >= 1 )
66 aLocale = aLocale.copy( 0, n ).trim();
69 SAL_INFO("svx", "ini file has '" << aKey << "' [ '" << aLocale << "' ] = '" << aValue << "'");
71 // grisly language matching, is this not available somewhere else?
72 if( aKey == aKeyName )
74 n = 0;
75 OUString aLang = aLocale.replace('_','-');
76 for( std::vector< OUString >::const_iterator i = aFallbacks.begin();
77 i != aFallbacks.end(); ++i, ++n )
79 SAL_INFO( "svx", "compare '" << aLang << "' with '" << *i << "' rank " << nRank << " vs. " << n );
80 if( *i == aLang && n < nRank ) {
81 nRank = n; // try to get the most accurate match
82 aResult = aValue;
87 delete pStrm;
90 SAL_INFO( "svx", "readStrFromIni returns '" << aResult << "'");
91 return aResult;
94 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */