xref: /haiku/headers/os/locale/LocaleRoster.h (revision 2a5e33a98056c2b92d46a6c9aae6da808c8524b1)
196eaa02eSAxel Dörfler /*
2702526b1SAxel Dörfler  * Copyright 2003-2011, Haiku. All rights reserved.
396eaa02eSAxel Dörfler  * Distributed under the terms of the MIT license.
496eaa02eSAxel Dörfler  */
5c3ac87e8SOliver Tappe #ifndef _LOCALE_ROSTER_H_
6c3ac87e8SOliver Tappe #define _LOCALE_ROSTER_H_
7c3ac87e8SOliver Tappe 
875f15221SOliver Tappe 
9fed5e612SAdrien Destugues #include <pthread.h>
10fed5e612SAdrien Destugues 
1185366cb5SJonas Sundström #include <Entry.h>
12c3ac87e8SOliver Tappe #include <String.h>
13c3ac87e8SOliver Tappe 
1475f15221SOliver Tappe 
15d1d8fda6SOliver Tappe class BBitmap;
1638ac8defSOliver Tappe class BCatalog;
17c3ac87e8SOliver Tappe class BCollator;
18c3ac87e8SOliver Tappe class BCountry;
19*2a5e33a9SAdrien Destugues class BDateFormat;
206fd2f4a0SOliver Tappe class BFormattingConventions;
2138ac8defSOliver Tappe class BLanguage;
2238ac8defSOliver Tappe class BLocale;
23f9a80fecSAxel Dörfler class BMessage;
244ae5a452SAdrien Destugues class BTimeZone;
25c3ac87e8SOliver Tappe 
264b37c7f8SAdrien Destugues 
2752cdfde0SOliver Tappe namespace BPrivate {
2852cdfde0SOliver Tappe 	class LocaleRosterData;
2952cdfde0SOliver Tappe }
3052cdfde0SOliver Tappe 
3152cdfde0SOliver Tappe 
32c3ac87e8SOliver Tappe enum {
33c3ac87e8SOliver Tappe 	B_LOCALE_CHANGED = '_LCC',
34c3ac87e8SOliver Tappe };
35c3ac87e8SOliver Tappe 
3675f15221SOliver Tappe 
37723383c0SOliver Tappe class BLocaleRoster {
3852cdfde0SOliver Tappe 
39c3ac87e8SOliver Tappe public:
40c3ac87e8SOliver Tappe 								~BLocaleRoster();
41c3ac87e8SOliver Tappe 
4225dc253dSIngo Weinhold 	static	BLocaleRoster*		Default();
4325dc253dSIngo Weinhold 
4438ac8defSOliver Tappe 			status_t			GetDefaultTimeZone(BTimeZone* timezone) const;
454ae5a452SAdrien Destugues 
4638ac8defSOliver Tappe 			status_t			GetLanguage(const char* languageCode,
4738ac8defSOliver Tappe 									BLanguage** _language) const;
48c3ac87e8SOliver Tappe 
4938ac8defSOliver Tappe 			status_t			GetPreferredLanguages(BMessage* message) const;
505570fd11SAdrien Destugues 
516f43fabaSOliver Tappe 			status_t			GetAvailableLanguages(BMessage* message) const;
52c91aa9f4SOliver Tappe 			status_t			GetAvailableCountries(
53c91aa9f4SOliver Tappe 									BMessage* timeZones) const;
54c91aa9f4SOliver Tappe 			status_t			GetAvailableTimeZones(
55c91aa9f4SOliver Tappe 									BMessage* timeZones) const;
56635df643SOliver Tappe 			status_t			GetAvailableTimeZonesWithRegionInfo(
57635df643SOliver Tappe 									BMessage* timeZonesWithRegonInfo) const;
58c91aa9f4SOliver Tappe 			status_t			GetAvailableTimeZonesForCountry(
59c91aa9f4SOliver Tappe 									BMessage* message,
60c91aa9f4SOliver Tappe 									const char* countryCode) const;
61c3ac87e8SOliver Tappe 
62d1d8fda6SOliver Tappe 			status_t			GetFlagIconForCountry(BBitmap* flagIcon,
63d1d8fda6SOliver Tappe 									const char* countryCode);
64702526b1SAxel Dörfler 			status_t			GetFlagIconForLanguage(BBitmap* flagIcon,
65702526b1SAxel Dörfler 									const char* languageCode);
66d1d8fda6SOliver Tappe 
676fd2f4a0SOliver Tappe 			status_t			GetAvailableCatalogs(BMessage* message,
6838ac8defSOliver Tappe 									const char* sigPattern = NULL,
6938ac8defSOliver Tappe 									const char* langPattern = NULL,
7038ac8defSOliver Tappe 									int32 fingerprint = 0) const;
71c3ac87e8SOliver Tappe 									// the message contains...
72c3ac87e8SOliver Tappe 
7338ac8defSOliver Tappe 			status_t			Refresh();
7438ac8defSOliver Tappe 									// Refresh the internal data from the
7538ac8defSOliver Tappe 									// settings file(s)
7638ac8defSOliver Tappe 
77fe8d7c02SAdrien Destugues 			BCatalog*			GetCatalog();
7838ac8defSOliver Tappe 									// Get the catalog for the calling image
7938ac8defSOliver Tappe 									// (that needs to link with liblocalestub.a)
80fe8d7c02SAdrien Destugues 
8152cdfde0SOliver Tappe 			const BLocale*		GetDefaultLocale() const;
82*2a5e33a9SAdrien Destugues 			const BDateFormat*	GetDefaultDateFormat() const;
8352cdfde0SOliver Tappe 
8407cffb47SJonas Sundström 			bool				IsFilesystemTranslationPreferred() const;
8507cffb47SJonas Sundström 
86ee6a2e55SJonas Sundström 			status_t			GetLocalizedFileName(BString& localizedFileName,
87ee6a2e55SJonas Sundström 									const entry_ref& ref,
8885366cb5SJonas Sundström 									bool traverse = false);
8985366cb5SJonas Sundström 
90c3ac87e8SOliver Tappe 	static	const char*			kCatLangAttr;
91c3ac87e8SOliver Tappe 	static	const char*			kCatSigAttr;
92c3ac87e8SOliver Tappe 	static	const char*			kCatFingerprintAttr;
9375f15221SOliver Tappe 
94c3ac87e8SOliver Tappe 	static	const char*			kEmbeddedCatAttr;
95c3ac87e8SOliver Tappe 	static	int32				kEmbeddedCatResId;
96c3ac87e8SOliver Tappe 
9752cdfde0SOliver Tappe protected:
9852cdfde0SOliver Tappe 								BLocaleRoster();
9952cdfde0SOliver Tappe 
10052cdfde0SOliver Tappe protected:
10152cdfde0SOliver Tappe 			BPrivate::LocaleRosterData*	fData;
10252cdfde0SOliver Tappe 
103c3ac87e8SOliver Tappe private:
10438ac8defSOliver Tappe 	static	BCatalog*			_GetCatalog(BCatalog* catalog,
105fed5e612SAdrien Destugues 									int32* catalogInitStatus);
106ee6a2e55SJonas Sundström 
107ee6a2e55SJonas Sundström 			status_t			_PrepareCatalogEntry(const entry_ref& ref,
108ee6a2e55SJonas Sundström 									BString& signature, BString& context,
109ee6a2e55SJonas Sundström 									BString& string, bool traverse);
11052cdfde0SOliver Tappe 
111c3ac87e8SOliver Tappe };
112c3ac87e8SOliver Tappe 
11338ac8defSOliver Tappe 
11438ac8defSOliver Tappe #endif	// _LOCALE_ROSTER_H_
115