ac315db012
Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com> Fixes #12575. I checked with PulkoMandy on IRC before merging this, and fixed some whitespace violations of the coding style.
149 lines
3.8 KiB
C++
149 lines
3.8 KiB
C++
/*
|
|
* Copyright 2003-2011, Haiku, Inc.
|
|
* Distributed under the terms of the MIT Licence.
|
|
*/
|
|
#ifndef _FORMATTING_CONVENTIONS_H_
|
|
#define _FORMATTING_CONVENTIONS_H_
|
|
|
|
|
|
#include <Archivable.h>
|
|
#include <List.h>
|
|
#include <LocaleStrings.h>
|
|
#include <String.h>
|
|
#include <SupportDefs.h>
|
|
|
|
|
|
class BBitmap;
|
|
class BLanguage;
|
|
class BMessage;
|
|
|
|
#ifndef U_ICU_NAMESPACE
|
|
#define U_ICU_NAMESPACE icu
|
|
#endif
|
|
namespace U_ICU_NAMESPACE {
|
|
class DateFormat;
|
|
class Locale;
|
|
}
|
|
|
|
|
|
enum BMeasurementKind {
|
|
B_METRIC = 0,
|
|
B_US
|
|
};
|
|
|
|
|
|
enum BDateFormatStyle {
|
|
B_FULL_DATE_FORMAT = 0,
|
|
B_LONG_DATE_FORMAT,
|
|
B_MEDIUM_DATE_FORMAT,
|
|
B_SHORT_DATE_FORMAT,
|
|
|
|
B_DATE_FORMAT_STYLE_COUNT
|
|
};
|
|
|
|
|
|
enum BTimeFormatStyle {
|
|
B_FULL_TIME_FORMAT = 0,
|
|
B_LONG_TIME_FORMAT,
|
|
B_MEDIUM_TIME_FORMAT,
|
|
B_SHORT_TIME_FORMAT,
|
|
|
|
B_TIME_FORMAT_STYLE_COUNT
|
|
};
|
|
|
|
|
|
class BFormattingConventions : public BArchivable {
|
|
public:
|
|
BFormattingConventions(const char* id = NULL);
|
|
BFormattingConventions(
|
|
const BFormattingConventions& other);
|
|
BFormattingConventions(const BMessage* archive);
|
|
|
|
BFormattingConventions& operator=(
|
|
const BFormattingConventions& other);
|
|
|
|
~BFormattingConventions();
|
|
|
|
bool operator==(
|
|
const BFormattingConventions& other) const;
|
|
bool operator!=(
|
|
const BFormattingConventions& other) const;
|
|
|
|
const char* ID() const;
|
|
const char* LanguageCode() const;
|
|
const char* CountryCode() const;
|
|
|
|
bool AreCountrySpecific() const;
|
|
|
|
status_t GetNativeName(BString& name) const;
|
|
status_t GetName(BString& name,
|
|
const BLanguage* displayLanguage = NULL
|
|
) const;
|
|
|
|
const char* GetString(uint32 id) const;
|
|
|
|
status_t GetDateFormat(BDateFormatStyle style,
|
|
BString& outFormat) const;
|
|
status_t GetTimeFormat(BTimeFormatStyle style,
|
|
BString& outFormat) const;
|
|
status_t GetDateTimeFormat(BDateFormatStyle dateStyle,
|
|
BTimeFormatStyle timeStyle,
|
|
BString& outFormat) const;
|
|
status_t GetNumericFormat(BString& outFormat) const;
|
|
status_t GetMonetaryFormat(BString& outFormat) const;
|
|
|
|
void SetExplicitDateFormat(BDateFormatStyle style,
|
|
const BString& format);
|
|
void SetExplicitTimeFormat(BTimeFormatStyle style,
|
|
const BString& format);
|
|
void SetExplicitDateTimeFormat(
|
|
BDateFormatStyle dateStyle,
|
|
BTimeFormatStyle timeStyle,
|
|
const BString& format);
|
|
void SetExplicitNumericFormat(const BString& format);
|
|
void SetExplicitMonetaryFormat(
|
|
const BString& format);
|
|
|
|
BMeasurementKind MeasurementKind() const;
|
|
|
|
bool UseStringsFromPreferredLanguage() const;
|
|
void SetUseStringsFromPreferredLanguage(bool value);
|
|
|
|
bool Use24HourClock() const;
|
|
void SetExplicitUse24HourClock(bool value);
|
|
void UnsetExplicitUse24HourClock();
|
|
|
|
virtual status_t Archive(BMessage* archive,
|
|
bool deep = true) const;
|
|
|
|
class Private;
|
|
private:
|
|
friend class Private;
|
|
|
|
mutable BString fCachedDateFormats[B_DATE_FORMAT_STYLE_COUNT];
|
|
mutable BString fCachedTimeFormats[B_TIME_FORMAT_STYLE_COUNT];
|
|
mutable BString fCachedDateTimeFormats
|
|
[B_DATE_FORMAT_STYLE_COUNT]
|
|
[B_TIME_FORMAT_STYLE_COUNT];
|
|
mutable BString fCachedNumericFormat;
|
|
mutable BString fCachedMonetaryFormat;
|
|
mutable int8 fCachedUse24HourClock;
|
|
|
|
BString fExplicitDateFormats[B_DATE_FORMAT_STYLE_COUNT];
|
|
BString fExplicitTimeFormats[B_TIME_FORMAT_STYLE_COUNT];
|
|
BString fExplicitDateTimeFormats
|
|
[B_DATE_FORMAT_STYLE_COUNT]
|
|
[B_TIME_FORMAT_STYLE_COUNT];
|
|
BString fExplicitNumericFormat;
|
|
BString fExplicitMonetaryFormat;
|
|
int8 fExplicitUse24HourClock;
|
|
|
|
bool fUseStringsFromPreferredLanguage;
|
|
|
|
U_ICU_NAMESPACE::Locale* fICULocale;
|
|
void CoerceFormatForClock(BString& outFormat) const;
|
|
};
|
|
|
|
|
|
#endif /* _FORMATTING_CONVENTIONS_H_ */
|