summaryrefslogtreecommitdiff
path: root/mobile_src/Systeminfo/JSLocaleInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mobile_src/Systeminfo/JSLocaleInfo.cpp')
-rw-r--r--mobile_src/Systeminfo/JSLocaleInfo.cpp124
1 files changed, 124 insertions, 0 deletions
diff --git a/mobile_src/Systeminfo/JSLocaleInfo.cpp b/mobile_src/Systeminfo/JSLocaleInfo.cpp
new file mode 100644
index 0000000..61310e4
--- /dev/null
+++ b/mobile_src/Systeminfo/JSLocaleInfo.cpp
@@ -0,0 +1,124 @@
+//
+// Tizen Web Device API
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Apache License, Version 2.0 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+#include <memory>
+#include "JSLocaleInfo.h"
+#include <Logger.h>
+
+namespace DeviceAPI {
+namespace Systeminfo {
+using namespace WrtDeviceApis::CommonsJavaScript;
+using namespace WrtDeviceApis::Commons;
+
+namespace {
+const char* LOCALE_LANGUAGE_PROPERTY = "language";
+const char* LOCALE_COUNTRY_PROPERTY = "country";
+}
+
+JSClassRef JSLocaleInfo::m_classRef = NULL;
+
+JSClassDefinition JSLocaleInfo::m_classInfo = {
+ 0,
+ kJSClassAttributeNone,
+ "localeinfo",
+ 0,
+ m_properties,
+ NULL,
+ Initialize,
+ Finalize,
+ hasProperty,
+ getProperty,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+};
+
+JSStaticValue JSLocaleInfo::m_properties[] = {
+ { LOCALE_LANGUAGE_PROPERTY, getProperty, NULL, kJSPropertyAttributeReadOnly },
+ { LOCALE_COUNTRY_PROPERTY, getProperty, NULL, kJSPropertyAttributeReadOnly },
+ { 0, 0, 0, 0 }
+};
+
+const JSClassRef JSLocaleInfo::getClassRef()
+{
+ if (!m_classRef) {
+ m_classRef = JSClassCreate(&m_classInfo);
+ }
+ return m_classRef;
+}
+
+const JSClassDefinition* JSLocaleInfo::getClassInfo()
+{
+ return &m_classInfo;
+}
+
+void JSLocaleInfo::Initialize(JSContextRef context, JSObjectRef object)
+{
+}
+
+void JSLocaleInfo::Finalize(JSObjectRef object)
+{
+ LoggerD("Entered");
+ JSLocalePriv* priv = static_cast<JSLocalePriv*>(JSObjectGetPrivate(object));
+ JSObjectSetPrivate(object, NULL);
+ LoggerD("Deleting localeInfo object");
+ delete priv;
+}
+
+bool JSLocaleInfo::hasProperty(JSContextRef context, JSObjectRef object, JSStringRef propertyName)
+{
+ return JSUtils::hasProperty(m_properties, propertyName);
+}
+
+JSObjectRef JSLocaleInfo::createJSObject(JSContextRef context, const LocalePropertiesPtr localeInfo)
+{
+ JSLocalePriv *priv = new JSLocalePriv(context, localeInfo);
+ return JSObjectMake(context, getClassRef(), priv);
+}
+
+JSValueRef JSLocaleInfo::getProperty(JSContextRef context, JSObjectRef object, JSStringRef propertyName, JSValueRef* exception)
+{
+ LoggerD("Enter");
+ JSLocalePriv *priv = static_cast<JSLocalePriv*>(JSObjectGetPrivate(object));
+ if (NULL == priv) {
+ LoggerE("Private object not set.");
+ return JSValueMakeUndefined(context);
+ }
+
+ Try
+ {
+ LocalePropertiesPtr localeInfo = priv->getObject();
+ Converter convert(context);
+
+ if (JSStringIsEqualToUTF8CString(propertyName, LOCALE_LANGUAGE_PROPERTY)) {
+ return convert.toJSValueRef(localeInfo->language);
+ } else if (JSStringIsEqualToUTF8CString(propertyName, LOCALE_COUNTRY_PROPERTY)) {
+ return convert.toJSValueRef(localeInfo->country);
+ }
+ }
+ Catch(Exception)
+ {
+ LoggerE("Exception: " << _rethrown_exception.GetMessage());
+ }
+ return JSValueMakeUndefined(context);
+}
+}
+}