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