*
* @return An error code
* @param[in] ticks The time ticks value @n
- * The value is GMT time.
+ * The value is GMT time from starting day (Jan 1, 1.).
* @param[out] offset The offset between the local standard time and GMT, taking into consideration DST
* @exception E_SUCCESS The method is successful.
- * @exception E_INVALID_ARG The specified @c ticks is invalid.
+ * @exception E_INVALID_ARG The specified @c ticks is invalid.
+ * @see Base::DateTime::GetTicks(), System::SystemTime::GetTicks()
*/
result GetOffset(long long ticks, int& offset) const;
#include <aul/aul.h>
#include <bundle.h>
#include <content/mime_type.h>
+#include <appinfo.h>
#include <FBaseInteger.h>
#include <FBaseObject.h>
using namespace Tizen::Base::Utility;
using namespace Tizen::Io;
-namespace Tizen { namespace App
-{
-
-const wchar_t TIZEN_OPERATION_PICK[] = L"http://tizen.org/appcontrol/operation/pick";
-const wchar_t SELECTOR_NOTI_KEY[] = L"__APP_SVC_CALLER_NOTI__";
-const int _MAX_PACKAGE_ID_LENGTH = 10;
-
-_InProcessInfo::~_InProcessInfo(void)
+namespace
{
- delete pLib;
+const char SELECTOR_NOTI_KEY[] = "__APP_SVC_CALLER_NOTI__";
}
-_LaunchInfo::~_LaunchInfo(void)
+namespace Tizen { namespace App
{
- delete pArg;
-}
+const wchar_t TIZEN_OPERATION_PICK[] = L"http://tizen.org/appcontrol/operation/pick";
_AppControlManager::_AppControlManager(void)
SysTryReturnVoidResult(NID_APP, pInfo != null, E_OBJ_NOT_FOUND, "[E_OBJ_NOT_FOUND] request Id %d not found with args 0x%x", reqId,
pArgs);
- if (pInfo->pListener)
+ if (pInfo->pListener && (!__listenerList.Contains(pInfo->pListener)))
{
String aId = pInfo->providerId;
String oId = pInfo->operationId;
else
{
IAppControlResponseListener* pListener = dynamic_cast<IAppControlResponseListener*>(pInfo->pListener);
- if (pListener && (!__listenerList.Contains(pInfo->pListener)))
+ if (pListener)
{
_AppControlResponseEvent* pResponseEvent = null;
int responseEventRequestId = RESPONSE_EVENT_REQID_MAGIC + reqId;
if (req >= 0)
{
pArg->UpdateRequestId(req);
- _AppMessageImpl::AddData(kb, SELECTOR_NOTI_KEY, _AppInfo::GetApplicationId());
+ appsvc_add_data(kb, SELECTOR_NOTI_KEY, appinfo_get_appid());
}
if (_AppImpl::GetInstance() != null)
}
// clear outstanding ongoing notification
- const AppId& appId = _AppInfo::GetApplicationId();
- std::unique_ptr<char[]> pAppId(_StringConverter::CopyToCharArrayN(appId));
- notification_delete_all_by_type(pAppId.get(), NOTIFICATION_TYPE_ONGOING);
+ notification_delete_all_by_type(appinfo_get_appid(), NOTIFICATION_TYPE_ONGOING);
return r;
}
return;
}
- const String& appId = _AppInfo::GetApplicationId();
+ const char* pAppId = appinfo_get_appid();
const char* p = appsvc_get_operation(arg.GetBundle());
String operationId = (p) ? String(p) : TIZEN_OPERATION_MAIN;
operationId = TIZEN_OPERATION_MAIN;
}
- SysLog(NID_APP, "AppControl (%ls, %ls).", appId.GetPointer(), operationId.GetPointer());
+ SysLog(NID_APP, "AppControl (%s, %ls).", pAppId, operationId.GetPointer());
String uri;
String mime;
pAppControlProviderEventListener->OnAppControlRequestReceived(reqId, operationId, pUri, pMime, pMap.get());
- SysLog(NID_APP, "AppControl (%ls, %ls) invocation finished.", appId.GetPointer(), operationId.GetPointer());
+ SysLog(NID_APP, "AppControl (%s, %ls) invocation finished.", pAppId, operationId.GetPointer());
}
#include <notification/notification.h>
#include <appfw/app.h>
#include <appfw/app_ui_notification.h>
+#include <appinfo.h>
#include <FBaseSysLog.h>
#include <FAppNotificationManager.h>
{
unsigned int count = 0;
- const AppId appId = _AppInfo::GetApplicationId();
-
- std::unique_ptr<char[]> pAppId(_StringConverter::CopyToCharArrayN(appId));
-
- badge_error_e badgeError = badge_get_count(pAppId.get(), &count);
+ badge_error_e badgeError = badge_get_count(appinfo_get_appid(), &count);
if (badgeError == BADGE_ERROR_NONE)
{
if (badgeNumber >= 0)
{
- const AppId appId = _AppInfo::GetApplicationId();
- std::unique_ptr<char[]> pAppId(_StringConverter::CopyToCharArrayN(appId));
- badge_error_e badgeError = badge_set_count(pAppId.get(), badgeNumber);
+ badge_error_e badgeError = badge_set_count(appinfo_get_appid(), badgeNumber);
SysTryLog(NID_APP, badgeError == BADGE_ERROR_NONE, "badge_set_count failed(%d).", badgeError);
}
#include <limits.h>
+#include <FBaseRt_LibraryImpl.h>
+
#include "FApp_RequestManagerT.h"
#include "FApp_LaunchInfo.h"
#include "FApp_AppArg.h"
+using namespace Tizen::Base::Runtime;
+
namespace Tizen { namespace App
{
delete pArg;
}
+_InProcessInfo::~_InProcessInfo(void)
+{
+ delete pLib;
+}
+
+_LaunchInfo::~_LaunchInfo(void)
+{
+ delete pArg;
+}
+
template<typename T>
_RequestManagerT<T>::_RequestManagerT(void)
NumberFormatter::ApplyPattern(const Tizen::Base::String& pattern, bool localized)
{
SysTryReturnResult(NID_LCL, pattern.GetLength() > 0, E_INVALID_ARG, "Invalid argument is used. Length of the pattern is 0");
- return __pNumberFormatterImpl->ApplyPattern(pattern, localized); // Try to set pattern to ICU number formatter
+ return __pNumberFormatterImpl->ApplyPattern(pattern, localized);
}
namespace Tizen { namespace Locales
{
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////
-// Public Method
-
NumberSymbols::NumberSymbols(void)
: __pNumberSymbolsImpl(null)
{
result
NumberSymbols::Construct(const Locale& locale)
{
- // Object is not allowed to construct twice
SysAssertf(__pNumberSymbolsImpl == null,
"Already constructed! Calling Construct() twice or more on a same instance is not allowed for this class");
{
r = E_UNSUPPORTED_OPERATION;
}
- // validating locale
SysTryReturnResult(NID_LCL, _LocaleImpl::IsSupported(locale), r, "Given locale is not supported");
__pNumberSymbolsImpl = new (std::nothrow) _NumberSymbolsImpl;
SysTryReturnResult(NID_LCL, pIcuCal, E_SYSTEM, "It is failed to get icu calendar.");
IcuFieldPosition icuFp;
- IcuUnicodeString icuStr;
-
- _LocaleData::GetIcuString(strBuf,icuStr);
+ IcuUnicodeString icuStr = _LocaleData::GetIcuString(strBuf);
icuStr = __pIcuDateFormatter->format(*pIcuCal, icuStr, icuFp);
strBuf = _LocaleData::GetOspString(icuStr);
delete pIcuCal;
_DateTimeFormatterImpl::ApplyPattern(const String& pattern)
{
SysAssertf(__pIcuDateFormatter != null, "Not yet constructed! Construct() should be called before use.");
- U_ICU_NAMESPACE::UnicodeString icuStr;
- _LocaleData::GetIcuString(pattern, icuStr);
+ U_ICU_NAMESPACE::UnicodeString icuStr = _LocaleData::GetIcuString(pattern);
__pIcuDateFormatter->applyPattern(icuStr);
return E_SUCCESS;
}
// Includes
#include <locale.h>
-#include <memory>
-#include <stdlib.h>
#include <unistd.h>
-#include <limits.h>
-#include <runtime_info.h>
#include <unique_ptr.h>
#include <FBaseSysLog.h>
-#include <FSysSettingInfo.h>
-#include <FLclNumberSymbols.h>
-#include <FApp_AppInfo.h>
+#include <FBaseUtilStringUtil.h>
#include "FBase_StringConverter.h"
-#include "FLcl_CalendarImpl.h"
-#include "FLcl_IcuCalendarImpl.h"
#include "FLcl_LocaleData.h"
-#include "FLcl_LocaleImpl.h"
// Other defines
namespace Tizen { namespace Locales
{
-/////////////////////////////////////////////////////////////////////////////////////////////////////
-// Public Method
-
-// this function is to convert ICU FieldPosition from OSP _FieldPosition
IcuFieldPosition
_LocaleData::GetIcuFieldPosition(_FieldPosition pos)
{
return icuPos;
}
+
U_ICU_NAMESPACE::UnicodeString
_LocaleData::GetIcuString(const String& ospStr)
{
return icuStr;
}
-// This function convert ICU string to OSP string
+
String
_LocaleData::GetOspString(const IcuUnicodeString& icuStr)
{
return String("");
}
-// This convert OSP string to ICU strings
-void
-_LocaleData::GetIcuString(const String& ospStr, IcuUnicodeString& icuStr)
-{
- if (!ospStr.IsEmpty()) // if ospStr is not empty
- {
- ByteBuffer* pBuff = null;
- pBuff = StringUtil::StringToUtf8N(ospStr); // Convert unicode value to UTF8
- if (pBuff)
- {
- icuStr = IcuUnicodeString((const char*) pBuff->GetPointer()); // Create ICU string using UTF8 array
- icuStr.setCharAt(0, icuStr.charAt(0)); // This is to handle ICU copy on write design
- delete pBuff; // delete temporary buffer
- }
- }
-
-// return icuStr;
-}
-// This function return OSP array list of OSP string from ICU string list
ArrayList*
_LocaleData::ConvertIcuStringArrayToOspArrayN(const IcuUnicodeString* pIcuStrList, int count)
{
pObj = static_cast< String* >(pEnum->GetCurrent());
if (pObj)
{
- GetIcuString(*pObj, pIcuStrArray[i]);
+ pIcuStrArray[i] = GetIcuString(*pObj);
i++;
}
}
}
-const IcuLocale&
-_LocaleData::GetIcuLocale(void)
-{
- return __icuLocale;
-}
-
-bool
-_LocaleData::IsLocaleSupported(void)
-{
- return !__icuLocale.isBogus();
-}
-
-result
-_LocaleData::SetLocale(const Locale& ospLocale)
-{
- if (_LocaleImpl::IsSupported(ospLocale))
- {
- __icuLocale = GetIcuLocale(ospLocale);
- return E_SUCCESS;
- }
-
- __icuLocale.setToBogus();
- return (Tizen::App::_AppInfo::GetApiVersion() == _API_VERSION_2_0 && Tizen::App::_AppInfo::IsOspCompat()) ? E_UNSUPPORTED_OPERATION : E_INVALID_ARG;
-}
-
-result
-_LocaleData::GetNumberSymbols(const Locale& locale, String symbols[])
-{
- UErrorCode status = U_ZERO_ERROR;
- ;
- SetLocale(locale);
-
- SysTryReturnResult(NID_LCL, IsLocaleSupported(), E_SYSTEM, "A System error has been occurred. Locale is not supported");
-
- IcuDecimalFormatSymbols sym(__icuLocale, status);
- SysTryReturnResult(NID_LCL, U_SUCCESS(status), E_SYSTEM, "A System error has been occurred. Unable to get ICU Decimal Format Symbols");
-
- symbols[NUMBER_SYMBOL_DECIMAL_SEPARATOR] = _LocaleData::GetOspString(sym.getSymbol(IcuDecimalFormatSymbols::kDecimalSeparatorSymbol));
- symbols[NUMBER_SYMBOL_GROUPING_SEPARATOR] = _LocaleData::GetOspString(sym.getSymbol(IcuDecimalFormatSymbols::kGroupingSeparatorSymbol));
- symbols[NUMBER_SYMBOL_PATTERN_SEPARATOR] = _LocaleData::GetOspString(sym.getSymbol(IcuDecimalFormatSymbols::kPatternSeparatorSymbol));
- symbols[NUMBER_SYMBOL_PERCENT] = _LocaleData::GetOspString(sym.getSymbol(IcuDecimalFormatSymbols::kPercentSymbol));
- symbols[NUMBER_SYMBOL_ZERO_DIGIT] = _LocaleData::GetOspString(sym.getSymbol(IcuDecimalFormatSymbols::kZeroDigitSymbol));
- symbols[NUMBER_SYMBOL_DIGIT] = _LocaleData::GetOspString(sym.getSymbol(IcuDecimalFormatSymbols::kDigitSymbol));
- symbols[NUMBER_SYMBOL_CURRENCY] = _LocaleData::GetOspString(sym.getSymbol(IcuDecimalFormatSymbols::kCurrencySymbol));
- symbols[NUMBER_SYMBOL_INTL_CURRENCY] = _LocaleData::GetOspString(sym.getSymbol(IcuDecimalFormatSymbols::kIntlCurrencySymbol));
- symbols[NUMBER_SYMBOL_MONETARY_SEPARATOR] = _LocaleData::GetOspString(sym.getSymbol(IcuDecimalFormatSymbols::kMonetarySeparatorSymbol));
- symbols[NUMBER_SYMBOL_PER_MILL] = _LocaleData::GetOspString(sym.getSymbol(IcuDecimalFormatSymbols::kPerMillSymbol));
- symbols[NUMBER_SYMBOL_EXPONENTIAL] = _LocaleData::GetOspString(sym.getSymbol(IcuDecimalFormatSymbols::kExponentialSymbol));
- symbols[NUMBER_SYMBOL_PLUS_SIGN] = _LocaleData::GetOspString(sym.getSymbol(IcuDecimalFormatSymbols::kPlusSignSymbol));
- symbols[NUMBER_SYMBOL_MINUS_SIGN] = _LocaleData::GetOspString(sym.getSymbol(IcuDecimalFormatSymbols::kMinusSignSymbol));
-
- return E_SUCCESS;
-}
-
-result
-_LocaleData::SetNumberFormatter(const Locale& locale, NumberFormatterStyle style)
-{
- if (__pIcuNumberFormatter)
- {
- delete __pIcuNumberFormatter;
- __pIcuNumberFormatter = null;
- }
-
- IcuNumberFormat* pNumFmt = null;
- UErrorCode ec = U_ZERO_ERROR;
- result r = SetLocale(locale);
-
- if (!IsFailed(r))
- {
- switch (style)
- {
- case NUM_FORMATTER_STYLE_NUMBER:
- {
- pNumFmt = IcuNumberFormat::createInstance(__icuLocale, ec);
- break;
- }
-
- case NUM_FORMATTER_STYLE_CURRENCY:
- {
- pNumFmt = IcuNumberFormat::createCurrencyInstance(__icuLocale, ec);
- break;
- }
-
- case NUM_FORMATTER_STYLE_PERCENT:
- {
- pNumFmt = IcuNumberFormat::createPercentInstance(__icuLocale, ec);
- break;
- }
-
- default:
- {
- r = E_UNSUPPORTED_OPERATION;
- break;
- }
- }
-
- if (IsFailed(r))
- {
- return r;
- }
-
- if (U_SUCCESS(ec))
- {
- if (pNumFmt && (pNumFmt->getDynamicClassID() == IcuDecimalFormat::getStaticClassID()))
- {
- __pIcuNumberFormatter = dynamic_cast< IcuDecimalFormat* >(pNumFmt);
- if (__pIcuNumberFormatter)
- {
- return E_SUCCESS;
- }
- }
- }
- }
-
- return E_UNSUPPORTED_OPERATION;
-}
-
-result
-_LocaleData::FormatNumber(long number, _FieldPosition& pos, Tizen::Base::String& str)
-{
- str = "";
-
- if (__pIcuNumberFormatter)
- {
- IcuUnicodeString icuStr;
- IcuFieldPosition icuPos = GetIcuFieldPosition(pos);
- icuStr = __pIcuNumberFormatter->format(static_cast< int32_t >(number), icuStr, icuPos);
-
- str = _LocaleData::GetOspString(icuStr);
- return E_SUCCESS;
- }
-
- return E_SYSTEM;
-}
-
-result
-_LocaleData::FormatNumber(double number, _FieldPosition& pos, Tizen::Base::String& str)
-{
- str = "";
-
- if (__pIcuNumberFormatter)
- {
- IcuUnicodeString icuStr;
- IcuFieldPosition icuPos = GetIcuFieldPosition(pos);
- icuStr = __pIcuNumberFormatter->format(number, icuStr, icuPos);
-
- str = _LocaleData::GetOspString(icuStr);
- return E_SUCCESS;
- }
-
- return E_SYSTEM;
-}
-
-result
-_LocaleData::ApplyNumberPattern(const Tizen::Base::String& pattern, bool localized)
-{
- if (__pIcuNumberFormatter)
- {
- IcuUnicodeString icuPattern;
- icuPattern = __pIcuNumberFormatter->toPattern(icuPattern);
-
- UErrorCode ec = U_ZERO_ERROR;
- IcuUParseError parseError = {0,};
- IcuUnicodeString icuNewPatter;
- GetIcuString(pattern, icuNewPatter);
-
- if (localized)
- {
- __pIcuNumberFormatter->applyLocalizedPattern(icuNewPatter, parseError, ec);
- }
- else
- {
- __pIcuNumberFormatter->applyPattern(icuNewPatter, parseError, ec);
- }
-
- if (U_SUCCESS(ec))
- {
- return E_SUCCESS;
- }
- else
- {
- SysLog(NID_LCL, "Error [%d -> %s] in setting pattern to %ls at %d:%d",
- ec, u_errorName(ec), pattern.GetPointer(), parseError.line, parseError.offset);
-
- __pIcuNumberFormatter->applyPattern(icuPattern, ec);
- }
- }
-
- return E_INVALID_ARG;
-}
-
-String
-_LocaleData::GetNumberFormatterStringAttributes(NumberFormatterAttributes attrName)
-{
- IcuUnicodeString icuRetValue;
-
- if (__pIcuNumberFormatter)
- {
- switch (attrName)
- {
- case NUM_FORMATTER_FIELD_CURRENCY:
- {
- icuRetValue = __pIcuNumberFormatter->getCurrency();
- break;
- }
-
- case NUM_FORMATTER_FIELD_POSITIVE_PREFIX:
- {
- icuRetValue = __pIcuNumberFormatter->getPositivePrefix(icuRetValue);
- break;
- }
-
- case NUM_FORMATTER_FIELD_NEGATIVE_PREFIX:
- {
- icuRetValue = __pIcuNumberFormatter->getNegativePrefix(icuRetValue);
- break;
- }
-
- case NUM_FORMATTER_FIELD_POSITIVE_SUFFIX:
- {
- icuRetValue = __pIcuNumberFormatter->getPositiveSuffix(icuRetValue);
- break;
- }
-
- case NUM_FORMATTER_FIELD_NEGATIVE_SUFFIX:
- {
- icuRetValue = __pIcuNumberFormatter->getNegativeSuffix(icuRetValue);
- break;
- }
-
- case NUM_FORMATTER_FIELD_PATTERN:
- {
- icuRetValue = __pIcuNumberFormatter->toPattern(icuRetValue);
- break;
- }
-
- case NUM_FORMATTER_FIELD_LOCALIZED_PATTERN:
- {
- icuRetValue = __pIcuNumberFormatter->toLocalizedPattern(icuRetValue);
- break;
- }
-
- default:
- {
- break;
- }
- }
-
- return _LocaleData::GetOspString(icuRetValue);
- }
-
- return Tizen::Base::String("");
-}
-
-void
-_LocaleData::SetNumberFormatterAttributes(const String& newValue, NumberFormatterAttributes attrName)
-{
- if (__pIcuNumberFormatter)
- {
- IcuUnicodeString icuNewValue;
- GetIcuString(newValue, icuNewValue);
-
- switch (attrName)
- {
- case NUM_FORMATTER_FIELD_CURRENCY:
- {
- __pIcuNumberFormatter->setCurrency(icuNewValue.getTerminatedBuffer());
- break;
- }
-
- case NUM_FORMATTER_FIELD_POSITIVE_PREFIX:
- {
- __pIcuNumberFormatter->setPositivePrefix(icuNewValue);
- break;
- }
-
- case NUM_FORMATTER_FIELD_NEGATIVE_PREFIX:
- {
- __pIcuNumberFormatter->setNegativePrefix(icuNewValue);
- break;
- }
-
- case NUM_FORMATTER_FIELD_POSITIVE_SUFFIX:
- {
- __pIcuNumberFormatter->setPositiveSuffix(icuNewValue);
- break;
- }
-
- case NUM_FORMATTER_FIELD_NEGATIVE_SUFFIX:
- {
- __pIcuNumberFormatter->setNegativeSuffix(icuNewValue);
- break;
- }
-
- default:
- {
- break;
- }
- }
- }
-}
-
-int
-_LocaleData::GetNumberFormatterIntAttributes(NumberFormatterAttributes attrName)
-{
- int res = 0;
- if (__pIcuNumberFormatter)
- {
- switch (attrName)
- {
- case NUM_FORMATTER_FIELD_MAX_INTEGER_DIGITS:
- {
- res = __pIcuNumberFormatter->getMaximumIntegerDigits();
- break;
- }
-
- case NUM_FORMATTER_FIELD_MIN_INTEGER_DIGITS:
- {
- res = __pIcuNumberFormatter->getMinimumIntegerDigits();
- break;
- }
-
- case NUM_FORMATTER_FIELD_MAX_FRACTION_DIGITS:
- {
- res = __pIcuNumberFormatter->getMaximumFractionDigits();
- break;
- }
-
- case NUM_FORMATTER_FIELD_MIN_FRACTION_DIGITS:
- {
- res = __pIcuNumberFormatter->getMinimumFractionDigits();
- break;
- }
-
- case NUM_FORMATTER_FIELD_MIN_EXPONENT_DIGITS:
- {
- res = __pIcuNumberFormatter->getMinimumExponentDigits();
- break;
- }
-
- case NUM_FORMATTER_FIELD_MULTIPLIER:
- {
- res = __pIcuNumberFormatter->getMultiplier();
- break;
- }
-
- case NUM_FORMATTER_FIELD_GROUPING_SIZE:
- {
- res = __pIcuNumberFormatter->getGroupingSize();
- break;
- }
-
- default:
- {
- res = 0;
- break;
- }
- }
- }
-
- return res;
-}
-
-void
-_LocaleData::SetNumberFormatterAttributes(const int newValue, NumberFormatterAttributes attrName)
-{
- if (__pIcuNumberFormatter)
- {
- switch (attrName)
- {
- case NUM_FORMATTER_FIELD_MAX_INTEGER_DIGITS:
- {
- __pIcuNumberFormatter->setMaximumIntegerDigits(newValue);
- break;
- }
-
- case NUM_FORMATTER_FIELD_MIN_INTEGER_DIGITS:
- {
- __pIcuNumberFormatter->setMinimumIntegerDigits(newValue);
- break;
- }
-
- case NUM_FORMATTER_FIELD_MAX_FRACTION_DIGITS:
- {
- __pIcuNumberFormatter->setMaximumFractionDigits(newValue);
- break;
- }
-
- case NUM_FORMATTER_FIELD_MIN_FRACTION_DIGITS:
- {
- __pIcuNumberFormatter->setMinimumFractionDigits(newValue);
- break;
- }
-
- case NUM_FORMATTER_FIELD_MIN_EXPONENT_DIGITS:
- {
- __pIcuNumberFormatter->setMinimumExponentDigits(newValue);
- break;
- }
-
- case NUM_FORMATTER_FIELD_MULTIPLIER:
- {
- __pIcuNumberFormatter->setMultiplier(newValue);
- break;
- }
-
- case NUM_FORMATTER_FIELD_GROUPING_SIZE:
- {
- __pIcuNumberFormatter->setGroupingSize(newValue);
- break;
- }
-
- default:
- {
- break;
- }
- }
- }
-}
-
-bool
-_LocaleData::GetNumberFormatterBoolAttributes(NumberFormatterAttributes attrName)
-{
- bool res = false;
- if (__pIcuNumberFormatter)
- {
- switch (attrName)
- {
- case NUM_FORMATTER_FIELD_IS_GROUPING_USED:
- {
- res = __pIcuNumberFormatter->isGroupingUsed();
- break;
- }
-
- case NUM_FORMATTER_FIELD_IS_DECIMAL_SEPARATOR_ALWAYS_SHOWN:
- {
- res = __pIcuNumberFormatter->isDecimalSeparatorAlwaysShown();
- break;
- }
-
- case NUM_FORMATTER_FIELD_IS_POSITIVE_SIGN_ALWAYS_SHOWN:
- {
- IcuUnicodeString ps("+");
- IcuUnicodeString pp;
- pp = __pIcuNumberFormatter->getPositivePrefix(pp);
-
- res = (pp == ps);
- break;
- }
-
- default:
- {
- res = false;
- break;
- }
- }
- }
-
- return res;
-}
-
-void
-_LocaleData::SetNumberFormatterAttributes(const bool newValue, NumberFormatterAttributes attrName)
-{
- if (__pIcuNumberFormatter)
- {
- switch (attrName)
- {
- case NUM_FORMATTER_FIELD_IS_GROUPING_USED:
- {
- __pIcuNumberFormatter->setGroupingUsed(newValue);
- break;
- }
-
- case NUM_FORMATTER_FIELD_IS_DECIMAL_SEPARATOR_ALWAYS_SHOWN:
- {
- __pIcuNumberFormatter->setDecimalSeparatorAlwaysShown(newValue);
- break;
- }
-
- case NUM_FORMATTER_FIELD_IS_POSITIVE_SIGN_ALWAYS_SHOWN:
- {
- IcuUnicodeString ps("+");
- IcuUnicodeString pp;
- pp = __pIcuNumberFormatter->getPositivePrefix(pp);
-
- if (newValue)
- {
- __pIcuNumberFormatter->setPositivePrefix(ps);
- }
- else
- {
- if (pp == ps)
- {
- __pIcuNumberFormatter->setPositivePrefix("");
- }
- }
- break;
- }
-
- default:
- {
- break;
- }
- }
- }
-}
-
-
IcuUDate
_LocaleData::GetIcuDate(DateTime date)
{
}
_LocaleData::_LocaleData(void)
- : __icuLocale()
- , __pIcuNumberFormatter(null)
{
}
_LocaleData::~_LocaleData(void)
{
- if (__pIcuNumberFormatter) // Delete __pIcuNumberFormatter and set to null
- {
- delete __pIcuNumberFormatter;
- __pIcuNumberFormatter = null;
- }
}
class _LocaleData
: public Tizen::Base::Object
{
-
-
-// Construct Operations
-public:
- /**
- * Creates an @b uninitialized instance.
- *
- * @remarks After creating an instance of this class, you must explicitly call the @e Construct() method
- * to initialize the instance.
- * @see Construct
- */
- _LocaleData(void);
-
-
- /**
- * Destroys this instance.
- */
- virtual ~_LocaleData(void);
-
-
-// Operations
-private:
- const IcuLocale& GetIcuLocale(void);
-
public:
static Tizen::Base::String GetOspString(const IcuUnicodeString& icuStr);
static U_ICU_NAMESPACE::UnicodeString GetIcuString(const Tizen::Base::String& ospString);
- static void GetIcuString(const Tizen::Base::String& ospStr, IcuUnicodeString& icuStr);
+
static IcuUnicodeString* ConvertOspArrayToIcuStringArrayN(const Tizen::Base::Collection::IList* pIcuStrList, int& count);
static Tizen::Base::Collection::ArrayList* ConvertIcuStringArrayToOspArrayN(const IcuUnicodeString* pIcuStrList, int count);
static IcuUDate GetIcuDate(Tizen::Base::DateTime date);
static IcuFieldPosition GetIcuFieldPosition(_FieldPosition pos);
static IcuLocale GetIcuLocale(const Tizen::Locales::Locale& ospLocale);
- // Methods to support Locale
- bool IsLocaleSupported();
- result SetLocale(const Locale& ospLocale);
-
- // Methods to support NumberSymbols
- result GetNumberSymbols(const Locale &locale, Tizen::Base::String symbols[]);
-
- // Methods to support NumberFormatter
- result SetNumberFormatter(const Locale& locale, NumberFormatterStyle style);
- result FormatNumber(long number, _FieldPosition& pos, Tizen::Base::String& str);
- result FormatNumber(double number, _FieldPosition& pos, Tizen::Base::String& str);
- result ApplyNumberPattern(const Tizen::Base::String& pattern, bool localized);
-
- Tizen::Base::String GetNumberFormatterStringAttributes(NumberFormatterAttributes attrName);
- void SetNumberFormatterAttributes(const Tizen::Base::String& newValue, NumberFormatterAttributes attrName);
-
- int GetNumberFormatterIntAttributes(NumberFormatterAttributes attrName);
- void SetNumberFormatterAttributes(const int newValue, NumberFormatterAttributes attrName);
-
- bool GetNumberFormatterBoolAttributes(NumberFormatterAttributes attrName);
- void SetNumberFormatterAttributes(const bool newValue, NumberFormatterAttributes attrName);
private:
+ _LocaleData(void);
+ virtual ~_LocaleData(void);
_LocaleData(const _LocaleData& localeData);
_LocaleData& operator =(const _LocaleData& localeData);
-private:
- IcuLocale __icuLocale;
- IcuDecimalFormat* __pIcuNumberFormatter;
}; // LocaleData
}} // Tizen::Locales
UErrorCode ec = U_ZERO_ERROR;
std::unique_ptr<IcuNumberFormat> pIcuNumberFormatter(IcuNumberFormat::createInstance(icuLocale, icuStyle, ec));
- if (pIcuNumberFormatter)
- {
- IcuDecimalFormat* pDecimalFmt = dynamic_cast<IcuDecimalFormat*>(pIcuNumberFormatter.get());
- if (pDecimalFmt)
- {
- pIcuNumberFormatter.release();
- pNumberFormatterImpl->__pIcuNumberFormatter = pDecimalFmt;
- pNumberFormatterImpl->__currency.Construct(locale);
- pNewFormatter->__pNumberFormatterImpl = pNumberFormatterImpl.release();
+ SysTryReturn(NID_LCL, pIcuNumberFormatter, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed");
- SetLastResult(E_SUCCESS);
- return pNewFormatter.release();
- }
- }
+ IcuDecimalFormat* pDecimalFmt = dynamic_cast<IcuDecimalFormat*>(pIcuNumberFormatter.get());
+ SysTryReturn(NID_LCL, pDecimalFmt, null, E_SYSTEM, "It is failed to get fomatter.");
+
+ pIcuNumberFormatter.release();
+ pNumberFormatterImpl->__pIcuNumberFormatter = pDecimalFmt;
+ pNumberFormatterImpl->__currency.Construct(locale);
+ pNewFormatter->__pNumberFormatterImpl = pNumberFormatterImpl.release();
- SetLastResult(E_INVALID_ARG);
- return null;
+ SetLastResult(E_SUCCESS);
+ return pNewFormatter.release();
}
result
* @file FLclNumberSymbols.cpp
* @brief This is the implementation file for NumberSymbols class.
*/
-
+#include <unicode/locid.h>
#include <FBaseSysLog.h>
#include <FApp_AppInfo.h>
#include "FLcl_NumberSymbolsImpl.h"
#include "FLcl_LocaleData.h"
-
using namespace Tizen::Base;
namespace Tizen { namespace Locales
{
-
-/////////////////////////////////////////////////////////////////////////////////////////////////////
-// Public Method
+static U_ICU_NAMESPACE::DecimalFormatSymbols::ENumberFormatSymbol NUMBER_SYMBOL_TYPE_CONVERT_TABLE[NUMBER_SYMBOL_COUNT] =
+ { U_ICU_NAMESPACE::DecimalFormatSymbols::kDecimalSeparatorSymbol
+ , U_ICU_NAMESPACE::DecimalFormatSymbols::kGroupingSeparatorSymbol
+ , U_ICU_NAMESPACE::DecimalFormatSymbols::kPatternSeparatorSymbol
+ , U_ICU_NAMESPACE::DecimalFormatSymbols::kPercentSymbol
+ , U_ICU_NAMESPACE::DecimalFormatSymbols::kZeroDigitSymbol
+ , U_ICU_NAMESPACE::DecimalFormatSymbols::kDigitSymbol
+ , U_ICU_NAMESPACE::DecimalFormatSymbols::kCurrencySymbol
+ , U_ICU_NAMESPACE::DecimalFormatSymbols::kIntlCurrencySymbol
+ , U_ICU_NAMESPACE::DecimalFormatSymbols::kMonetarySeparatorSymbol
+ , U_ICU_NAMESPACE::DecimalFormatSymbols::kPerMillSymbol
+ , U_ICU_NAMESPACE::DecimalFormatSymbols::kExponentialSymbol
+ , U_ICU_NAMESPACE::DecimalFormatSymbols::kPlusSignSymbol
+ , U_ICU_NAMESPACE::DecimalFormatSymbols::kMinusSignSymbol
+ };
_NumberSymbolsImpl::_NumberSymbolsImpl(void)
: __locale(LANGUAGE_INVALID, COUNTRY_INVALID)
+ , __pIcuDecimalFormatSymbols(null)
{
}
_NumberSymbolsImpl::_NumberSymbolsImpl(const _NumberSymbolsImpl& other)
: __locale(LANGUAGE_INVALID, COUNTRY_INVALID)
+ , __pIcuDecimalFormatSymbols(null)
{
- this->__locale = other.__locale;
-
- for (int i = 0; i < NUMBER_SYMBOL_COUNT; i++)
- {
- this->__symbols[i] = other.__symbols[i]; // Copying symbols
- }
+ __locale = other.__locale;
+ __pIcuDecimalFormatSymbols = new U_ICU_NAMESPACE::DecimalFormatSymbols(*other.__pIcuDecimalFormatSymbols);
+ SysTryReturn(NID_LCL, __pIcuDecimalFormatSymbols, , E_OUT_OF_MEMORY, "It is not enough memory.");
}
{
if (this != &rhs)
{
- for (int i = 0; i < (int) NUMBER_SYMBOL_COUNT; ++i)
+ __locale = rhs.__locale;
+ if (__pIcuDecimalFormatSymbols)
{
- __symbols[(NumberSymbol) i] = rhs.__symbols[(NumberSymbol) i]; // Copying symbols
+ delete __pIcuDecimalFormatSymbols;
+ __pIcuDecimalFormatSymbols = null;
}
-
- __locale = rhs.__locale;
+ __pIcuDecimalFormatSymbols = new U_ICU_NAMESPACE::DecimalFormatSymbols(*rhs.__pIcuDecimalFormatSymbols);
}
return *this;
_NumberSymbolsImpl::~_NumberSymbolsImpl(void)
{
+ if (__pIcuDecimalFormatSymbols)
+ {
+ delete __pIcuDecimalFormatSymbols;
+ }
}
result
_NumberSymbolsImpl::Construct(const Locale& locale)
{
- result r = E_SUCCESS;
- _LocaleData localeData;
- r = localeData.GetNumberSymbols(locale, __symbols); // Get number symbols from ICU
+ result r = (Tizen::App::_AppInfo::GetApiVersion() == _API_VERSION_2_0 && Tizen::App::_AppInfo::IsOspCompat())
+ ? E_UNSUPPORTED_OPERATION
+ : E_INVALID_ARG;
- if (!IsFailed(r))
- {
- __locale = locale;
- return E_SUCCESS;
- }
+ U_ICU_NAMESPACE::Locale icuLocale = _LocaleData::GetIcuLocale(locale);
+ SysTryReturnResult(NID_LCL, icuLocale.isBogus() != true, r, "It is an invalid locale.");
+
+ UErrorCode status = U_ZERO_ERROR;
+ __pIcuDecimalFormatSymbols = new U_ICU_NAMESPACE::DecimalFormatSymbols(icuLocale, status);
+ SysTryReturnResult(NID_LCL, __pIcuDecimalFormatSymbols, E_OUT_OF_MEMORY, "It is not enough memory.");
+ __locale = locale;
- return (Tizen::App::_AppInfo::GetApiVersion() == _API_VERSION_2_0 && Tizen::App::_AppInfo::IsOspCompat()) ? E_UNSUPPORTED_OPERATION : E_INVALID_ARG;
+ return E_SUCCESS;
}
String
_NumberSymbolsImpl::GetNumberSymbol(NumberSymbol symbol) const
{
- return (symbol < NUMBER_SYMBOL_COUNT) ? __symbols[symbol] : String(); // Get symbol value for symbol
+ SysTryReturn(NID_LCL, symbol < NUMBER_SYMBOL_COUNT, String(), E_INVALID_ARG, "It is an invalid argument.");
+ return _LocaleData::GetOspString(__pIcuDecimalFormatSymbols->getSymbol(NUMBER_SYMBOL_TYPE_CONVERT_TABLE[symbol]));
}
result
_NumberSymbolsImpl::SetNumberSymbol(const NumberSymbol symbol, const String& str)
{
- if (symbol < NUMBER_SYMBOL_COUNT) // validate symbol value
- {
- __symbols[symbol] = str; // Set symbol
- }
-
+ SysTryReturnResult(NID_LCL, symbol < NUMBER_SYMBOL_COUNT, E_INVALID_ARG, "It is an invalid argument.");
+ U_ICU_NAMESPACE::UnicodeString icuStr = _LocaleData::GetIcuString(str);
+ __pIcuDecimalFormatSymbols->setSymbol(NUMBER_SYMBOL_TYPE_CONVERT_TABLE[symbol], icuStr);
return E_SUCCESS;
}
_NumberSymbolsImpl::GetLocale(void) const
{
ClearLastResult();
- return &__locale; // return locale object stored during construction
+ return &__locale;
}
#define _FLCL_INTERNAL_NUMBER_SYMBOLS_IMPL_H_
// Includes
-#include <FLclLocale.h>
+#include <unicode/dcfmtsym.h>
#include <FLclNumberSymbols.h>
class _NumberSymbolsImpl
: public Tizen::Base::Object
{
-// Construct Operations
public:
_NumberSymbolsImpl(void);
virtual ~_NumberSymbolsImpl(void);
_NumberSymbolsImpl(const _NumberSymbolsImpl& other);
_NumberSymbolsImpl& operator =(const _NumberSymbolsImpl& other);
-
-// Operations
public:
result Construct(const Locale& locale);
Tizen::Base::String GetNumberSymbol(NumberSymbol symbol) const;
result SetNumberSymbol(NumberSymbol symbol, const Tizen::Base::String& str);
const Locale* GetLocale(void) const;
-
-// Attribute
private:
Locale __locale;
- Tizen::Base::String __symbols[NUMBER_SYMBOL_COUNT];
+ U_ICU_NAMESPACE::DecimalFormatSymbols* __pIcuDecimalFormatSymbols;
}; // _NumberSymbolsImpl