xref: /haiku/headers/os/locale/LocaleRoster.h (revision 45bd7bb3db9d9e4dcb02b89a3e7c2bf382c0a88c)
1 /*
2  * Copyright 2003-2010, Haiku. All rights reserved.
3  * Distributed under the terms of the MIT license.
4  */
5 #ifndef _LOCALE_ROSTER_H_
6 #define _LOCALE_ROSTER_H_
7 
8 
9 #include <String.h>
10 
11 
12 class BLanguage;
13 class BLocale;
14 class BCollator;
15 class BCountry;
16 class BCatalog;
17 class BCatalogAddOn;
18 class BMessage;
19 
20 struct entry_ref;
21 
22 namespace BPrivate {
23 	class EditableCatalog;
24 }
25 
26 enum {
27 	B_LOCALE_CHANGED	= '_LCC',
28 };
29 
30 
31 class BLocaleRoster {
32 	public:
33 		BLocaleRoster();
34 		~BLocaleRoster();
35 
36 //		status_t GetCatalog(BLocale *,const char *mimeType, BCatalog *catalog);
37 //		status_t GetCatalog(const char *mimeType, BCatalog *catalog);
38 //		status_t SetCatalog(BLocale *,const char *mimeType, BCatalog *catalog);
39 
40 //		status_t GetLocaleFor(const char *langCode, const char *countryCode);
41 
42 		status_t GetSystemCatalog(BCatalogAddOn **) const;
43 		status_t GetDefaultCollator(BCollator **) const;
44 		status_t GetDefaultLanguage(BLanguage **) const;
45 		status_t GetDefaultCountry(BCountry **) const;
46 		void SetDefaultCountry(BCountry *) const;
47 
48 			status_t			GetLanguage(const char* languageCode,
49 									BLanguage** _language) const;
50 
51 		status_t GetPreferredLanguages(BMessage *) const;
52 		status_t SetPreferredLanguages(BMessage *);
53 			// the message contains one or more 'language'-string-fields
54 			// which contain the language-name(s)
55 
56 		status_t GetInstalledLanguages(BMessage *) const;
57 			// the message contains one or more 'language'-string-fields
58 			// which contain the language-name(s)
59 
60 		status_t GetInstalledCatalogs(BMessage *, const char* sigPattern = NULL,
61 			const char* langPattern = NULL,	int32 fingerprint = 0) const;
62 			// the message contains...
63 
64 		static const char *kCatLangAttr;
65 		static const char *kCatSigAttr;
66 		static const char *kCatFingerprintAttr;
67 
68 		static const char *kCatManagerMimeType;
69 		static const char *kCatEditorMimeType;
70 
71 		static const char *kEmbeddedCatAttr;
72 		static int32 kEmbeddedCatResId;
73 
74 	private:
75 
76 		BCatalogAddOn* LoadCatalog(const char *signature,
77 			const char *language = NULL, int32 fingerprint = 0);
78 		BCatalogAddOn* LoadEmbeddedCatalog(entry_ref *appOrAddOnRef);
79 		status_t UnloadCatalog(BCatalogAddOn *addOn);
80 
81 		BCatalogAddOn* CreateCatalog(const char *type,
82 			const char *signature, const char *language);
83 
84 		friend class BCatalog;
85 		friend class BPrivate::EditableCatalog;
86 		friend status_t get_add_on_catalog(BCatalog*, const char *);
87 };
88 
89 #endif	/* _LOCALE_ROSTER_H_ */
90