From: Joohyun Kim Date: Mon, 26 Aug 2013 02:33:37 +0000 (+0000) Subject: Merge changes I62af2333,I9317aba8,I03d801f5 into tizen_2.2 X-Git-Tag: submit/tizen/20131210.080830^2^2~151 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5125fe551989681d9ca602569287f5fb722340b0;hp=db31ab7e5f088dbc9b89e6ded1818396dc4d53f3;p=platform%2Fframework%2Fnative%2Fappfw.git Merge changes I62af2333,I9317aba8,I03d801f5 into tizen_2.2 * changes: Fix prevent issue Remove tethering password Fix directory size count issue on mounted directory --- diff --git a/inc/FLclTimeZone.h b/inc/FLclTimeZone.h index 7984e15..1a3ccff 100644 --- a/inc/FLclTimeZone.h +++ b/inc/FLclTimeZone.h @@ -373,10 +373,11 @@ public: * * @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; diff --git a/src/app/FApp_AppControlManager.cpp b/src/app/FApp_AppControlManager.cpp index a9d88e5..bc39ebd 100644 --- a/src/app/FApp_AppControlManager.cpp +++ b/src/app/FApp_AppControlManager.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -75,22 +76,14 @@ using namespace Tizen::Base::Runtime; 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) @@ -279,7 +272,7 @@ _AppControlManager::OnAppControlEventReceivedN(int reqId, int res, const IMap* p 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; @@ -319,7 +312,7 @@ _AppControlManager::OnAppControlEventReceivedN(int reqId, int res, const IMap* p else { IAppControlResponseListener* pListener = dynamic_cast(pInfo->pListener); - if (pListener && (!__listenerList.Contains(pInfo->pListener))) + if (pListener) { _AppControlResponseEvent* pResponseEvent = null; int responseEventRequestId = RESPONSE_EVENT_REQID_MAGIC + reqId; @@ -841,7 +834,7 @@ _AppControlManager::LaunchAppImplicit(_AppArg* pArg, int req) 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) diff --git a/src/app/FApp_AppImpl.cpp b/src/app/FApp_AppImpl.cpp index 3f4386c..bfa3875 100644 --- a/src/app/FApp_AppImpl.cpp +++ b/src/app/FApp_AppImpl.cpp @@ -195,9 +195,7 @@ _AppImpl::Execute(_IAppImpl* pIAppImpl) } // clear outstanding ongoing notification - const AppId& appId = _AppInfo::GetApplicationId(); - std::unique_ptr 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; } @@ -688,7 +686,7 @@ _AppImpl::OnAppControlRequestReceived(const _AppArg& arg, RequestId reqId) 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; @@ -697,7 +695,7 @@ _AppImpl::OnAppControlRequestReceived(const _AppArg& arg, RequestId reqId) 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; @@ -728,7 +726,7 @@ _AppImpl::OnAppControlRequestReceived(const _AppArg& arg, RequestId reqId) 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()); } diff --git a/src/app/FApp_NotificationManagerImpl.cpp b/src/app/FApp_NotificationManagerImpl.cpp index c88337a..7b8233c 100644 --- a/src/app/FApp_NotificationManagerImpl.cpp +++ b/src/app/FApp_NotificationManagerImpl.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -138,11 +139,7 @@ _NotificationManagerImpl::GetBadgeNumber(void) const { unsigned int count = 0; - const AppId appId = _AppInfo::GetApplicationId(); - - std::unique_ptr 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) { @@ -233,9 +230,7 @@ _NotificationManagerImpl::NotifyImpl(const String& messageText, int badgeNumber, if (badgeNumber >= 0) { - const AppId appId = _AppInfo::GetApplicationId(); - std::unique_ptr 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); } diff --git a/src/app/FApp_RequestManagerT.cpp b/src/app/FApp_RequestManagerT.cpp index 8826226..8d1ea46 100644 --- a/src/app/FApp_RequestManagerT.cpp +++ b/src/app/FApp_RequestManagerT.cpp @@ -21,10 +21,14 @@ #include +#include + #include "FApp_RequestManagerT.h" #include "FApp_LaunchInfo.h" #include "FApp_AppArg.h" +using namespace Tizen::Base::Runtime; + namespace Tizen { namespace App { @@ -35,6 +39,16 @@ _ResultInfo::~_ResultInfo(void) delete pArg; } +_InProcessInfo::~_InProcessInfo(void) +{ + delete pLib; +} + +_LaunchInfo::~_LaunchInfo(void) +{ + delete pArg; +} + template _RequestManagerT::_RequestManagerT(void) diff --git a/src/locales/FLclNumberFormatter.cpp b/src/locales/FLclNumberFormatter.cpp index 5f198ec..41090ef 100644 --- a/src/locales/FLclNumberFormatter.cpp +++ b/src/locales/FLclNumberFormatter.cpp @@ -186,7 +186,7 @@ result 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); } diff --git a/src/locales/FLclNumberSymbols.cpp b/src/locales/FLclNumberSymbols.cpp index 9c09925..02fd499 100644 --- a/src/locales/FLclNumberSymbols.cpp +++ b/src/locales/FLclNumberSymbols.cpp @@ -34,10 +34,6 @@ using namespace Tizen::Base; namespace Tizen { namespace Locales { - -///////////////////////////////////////////////////////////////////////////////////////////////////// -// Public Method - NumberSymbols::NumberSymbols(void) : __pNumberSymbolsImpl(null) { @@ -52,7 +48,6 @@ NumberSymbols::~NumberSymbols(void) 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"); @@ -62,7 +57,6 @@ NumberSymbols::Construct(const Locale& locale) { r = E_UNSUPPORTED_OPERATION; } - // validating locale SysTryReturnResult(NID_LCL, _LocaleImpl::IsSupported(locale), r, "Given locale is not supported"); __pNumberSymbolsImpl = new (std::nothrow) _NumberSymbolsImpl; diff --git a/src/locales/FLcl_DateTimeFormatterImpl.cpp b/src/locales/FLcl_DateTimeFormatterImpl.cpp index e3da25c..87ae03e 100644 --- a/src/locales/FLcl_DateTimeFormatterImpl.cpp +++ b/src/locales/FLcl_DateTimeFormatterImpl.cpp @@ -165,9 +165,7 @@ _DateTimeFormatterImpl::Format(const Calendar& calendar, String& strBuf) const 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; @@ -179,8 +177,7 @@ result _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; } diff --git a/src/locales/FLcl_LocaleData.cpp b/src/locales/FLcl_LocaleData.cpp index 03643b8..2017e89 100644 --- a/src/locales/FLcl_LocaleData.cpp +++ b/src/locales/FLcl_LocaleData.cpp @@ -21,21 +21,12 @@ // Includes #include -#include -#include #include -#include -#include #include #include -#include -#include -#include +#include #include "FBase_StringConverter.h" -#include "FLcl_CalendarImpl.h" -#include "FLcl_IcuCalendarImpl.h" #include "FLcl_LocaleData.h" -#include "FLcl_LocaleImpl.h" // Other defines @@ -49,10 +40,6 @@ using namespace Tizen::Base::Utility; namespace Tizen { namespace Locales { -///////////////////////////////////////////////////////////////////////////////////////////////////// -// Public Method - -// this function is to convert ICU FieldPosition from OSP _FieldPosition IcuFieldPosition _LocaleData::GetIcuFieldPosition(_FieldPosition pos) { @@ -62,6 +49,7 @@ _LocaleData::GetIcuFieldPosition(_FieldPosition pos) return icuPos; } + U_ICU_NAMESPACE::UnicodeString _LocaleData::GetIcuString(const String& ospStr) { @@ -82,7 +70,7 @@ _LocaleData::GetIcuString(const String& ospStr) return icuStr; } -// This function convert ICU string to OSP string + String _LocaleData::GetOspString(const IcuUnicodeString& icuStr) { @@ -103,26 +91,7 @@ _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) { @@ -172,7 +141,7 @@ _LocaleData::ConvertOspArrayToIcuStringArrayN(const Tizen::Base::Collection::ILi pObj = static_cast< String* >(pEnum->GetCurrent()); if (pObj) { - GetIcuString(*pObj, pIcuStrArray[i]); + pIcuStrArray[i] = GetIcuString(*pObj); i++; } } @@ -212,515 +181,6 @@ _LocaleData::GetIcuLocale(const Locale& ospLocale) } -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) { @@ -743,19 +203,12 @@ _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; - } } diff --git a/src/locales/FLcl_LocaleData.h b/src/locales/FLcl_LocaleData.h index eada8f8..39012f2 100644 --- a/src/locales/FLcl_LocaleData.h +++ b/src/locales/FLcl_LocaleData.h @@ -65,69 +65,23 @@ namespace Tizen { namespace Locales 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 diff --git a/src/locales/FLcl_NumberFormatterImpl.cpp b/src/locales/FLcl_NumberFormatterImpl.cpp index ec564df..a8f606f 100644 --- a/src/locales/FLcl_NumberFormatterImpl.cpp +++ b/src/locales/FLcl_NumberFormatterImpl.cpp @@ -82,23 +82,18 @@ _NumberFormatterImpl::CreateNumberFormatterN(const Locale& locale, NumberFormatt UErrorCode ec = U_ZERO_ERROR; std::unique_ptr pIcuNumberFormatter(IcuNumberFormat::createInstance(icuLocale, icuStyle, ec)); - if (pIcuNumberFormatter) - { - IcuDecimalFormat* pDecimalFmt = dynamic_cast(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(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 diff --git a/src/locales/FLcl_NumberSymbolsImpl.cpp b/src/locales/FLcl_NumberSymbolsImpl.cpp index 4f3eb6c..ed1c5b4 100644 --- a/src/locales/FLcl_NumberSymbolsImpl.cpp +++ b/src/locales/FLcl_NumberSymbolsImpl.cpp @@ -18,37 +18,47 @@ * @file FLclNumberSymbols.cpp * @brief This is the implementation file for NumberSymbols class. */ - +#include #include #include #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."); } @@ -57,12 +67,13 @@ _NumberSymbolsImpl::operator =(const _NumberSymbolsImpl& rhs) { 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; @@ -71,40 +82,45 @@ _NumberSymbolsImpl::operator =(const _NumberSymbolsImpl& rhs) _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; } @@ -113,7 +129,7 @@ const Locale* _NumberSymbolsImpl::GetLocale(void) const { ClearLastResult(); - return &__locale; // return locale object stored during construction + return &__locale; } diff --git a/src/locales/FLcl_NumberSymbolsImpl.h b/src/locales/FLcl_NumberSymbolsImpl.h index a95a81f..02232e9 100644 --- a/src/locales/FLcl_NumberSymbolsImpl.h +++ b/src/locales/FLcl_NumberSymbolsImpl.h @@ -25,7 +25,7 @@ #define _FLCL_INTERNAL_NUMBER_SYMBOLS_IMPL_H_ // Includes -#include +#include #include @@ -35,7 +35,6 @@ namespace Tizen { namespace Locales class _NumberSymbolsImpl : public Tizen::Base::Object { -// Construct Operations public: _NumberSymbolsImpl(void); virtual ~_NumberSymbolsImpl(void); @@ -43,19 +42,15 @@ public: _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