haiku/headers/os/locale/DurationFormat.h
Akshay Agarwal f5c544b59a Fix style formatting issue in BTimeUnitFormat, update BDurationFormat accordingly.
* Issue: BTimeUnitFormat doesn't incorporate style formatting while
formatting a time unit. Format() does take style as an argument but the
style is not used anywhere. So currently the abbreviated style doesn't
work and by default the time unit is formatted to the full style.

* Fix: Move the style flag from BTimeUnitFormat::Format() to the
BTimeUnitFormat constructors and call the relevant icu::TimeUnitFormat
constructor. Map the Haiku defined style unit to the corresponding ICU
unit. Move the style flag from BDurationFormat::Format() to the
BDurationFormat constructors to map the changes in BTimeUnitFormat.

Signed-off-by: Adrien Destugues <pulkomandy@pulkomandy.tk>

Fixes #13508
2017-05-17 19:53:46 +02:00

54 lines
1.2 KiB
C++

/*
* Copyright 2010-2011, Haiku, Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef _B_DURATION_FORMAT_H_
#define _B_DURATION_FORMAT_H_
#include <Format.h>
#include <Locale.h>
#include <String.h>
#include <TimeUnitFormat.h>
class BTimeZone;
#ifndef U_ICU_NAMESPACE
#define U_ICU_NAMESPACE icu
#endif
namespace U_ICU_NAMESPACE {
class GregorianCalendar;
}
class BDurationFormat : public BFormat {
typedef BFormat Inherited;
public:
BDurationFormat(const BLanguage& language,
const BFormattingConventions& conventions,
const BString& separator = ", ",
const time_unit_style style = B_TIME_UNIT_FULL);
BDurationFormat(const BString& separator = ", ",
const time_unit_style style = B_TIME_UNIT_FULL);
BDurationFormat(const BDurationFormat& other);
virtual ~BDurationFormat();
void SetSeparator(const BString& separator);
status_t SetTimeZone(const BTimeZone* timeZone);
status_t Format(BString& buffer,
const bigtime_t startValue,
const bigtime_t stopValue
) const;
private:
BString fSeparator;
BTimeUnitFormat fTimeUnitFormat;
U_ICU_NAMESPACE::GregorianCalendar* fCalendar;
};
#endif