Add get widget instance id API 99/120199/30
authorHyunho Kang <hhstark.kang@samsung.com>
Wed, 22 Mar 2017 05:34:33 +0000 (14:34 +0900)
committerHyunho Kang <hhstark.kang@samsung.com>
Thu, 13 Apr 2017 08:09:24 +0000 (01:09 -0700)
- widget_viewer_evas_get_widget_instance_id

Change-Id: Id9016abb0461d35ac51d954f26efc5302495d85b
Signed-off-by: Hyunho Kang <hhstark.kang@samsung.com>
widget_viewer_evas/include/widget_viewer_evas.h
widget_viewer_evas/src/widget_viewer_evas.c

index ff8e385..a9fb1c5 100644 (file)
@@ -563,6 +563,26 @@ extern bool widget_viewer_evas_is_widget(Evas_Object *widget);
  */
 extern void widget_viewer_evas_set_permanent_delete(Evas_Object *widget, int flag);
 
+/**
+ * @brief Gets the widget object's instance ID.
+ * @since_tizen 4.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/widget.viewer
+ * @remarks The returned instance ID should not be freed.
+ * @remarks The returned widget instance ID is volatile. If the device reboots or the widget's process restarts, it will be changed.\n
+ *      So, you should not assume this value is a persistent one.
+ * @remarks The returned string is usable only before the widget is destroyed. If it's going to be needed after that, it should be copied.
+ * @remarks The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section.
+ * @param[in] widget A widget object
+ * @return The widget's instance ID as a string, NULL in case of errors
+ * @exception #WIDGET_ERROR_NONE Successfully retrieved the widget instance ID
+ * @exception #WIDGET_ERROR_NOT_SUPPORTED Not supported
+ * @exception #WIDGET_ERROR_FAULT Widget is not ready
+ * @exception #WIDGET_ERROR_PERMISSION_DENIED Permission denied
+ * @exception #WIDGET_ERROR_INVALID_PARAMETER Invalid argument
+ * @see get_last_result()
+ */
+extern const char *widget_viewer_evas_get_widget_instance_id(Evas_Object *widget);
 
 /**
  * @}
index 017c614..e6cd786 100644 (file)
@@ -1692,4 +1692,41 @@ EAPI void widget_viewer_evas_set_permanent_delete(Evas_Object *widget, int flag)
        return;
 }
 
+EAPI const char *widget_viewer_evas_get_widget_instance_id(Evas_Object *widget)
+{
+       struct widget_info *info;
+
+       if (!is_widget_feature_enabled()) {
+               set_last_result(WIDGET_ERROR_NOT_SUPPORTED);
+               return NULL;
+       }
+
+       if (__check_privilege("http://tizen.org/privilege/widget.viewer") < 0) {
+               set_last_result(WIDGET_ERROR_PERMISSION_DENIED);
+               ErrPrint("Permission deny");
+               return NULL;
+       }
+
+       if (!s_info.initialized) {
+               set_last_result(WIDGET_ERROR_FAULT);
+               ErrPrint("widget viewer evas is not initialized");
+               return NULL;
+       }
+
+       if (!widget) {
+               set_last_result(WIDGET_ERROR_INVALID_PARAMETER);
+               ErrPrint("widget object is invalid");
+               return NULL;
+       }
+
+       info = evas_object_data_get(widget, WIDGET_INFO_TAG);
+       if (!info) {
+               set_last_result(WIDGET_ERROR_INVALID_PARAMETER);
+               ErrPrint("widget(%p) don't have the info", widget);
+               return NULL;
+       }
+
+       return (const char *)info->instance_id;
+}
+
 /* End of a file */