setting-applications.c file updated 99/178199/1
authorMichal Skorupinski <m.skorupinsk@samsung.com>
Tue, 8 May 2018 10:47:07 +0000 (12:47 +0200)
committerMichal Skorupinski <m.skorupinsk@samsung.com>
Tue, 8 May 2018 10:47:07 +0000 (12:47 +0200)
Change-Id: I989325615624c24060c64ad3f2498534933870b0
Signed-off-by: Michal Skorupinski <m.skorupinsk@samsung.com>
setting-applications/.cproject
setting-applications/project_def.prop
setting-applications/src/setting-applications.c

index 9e63332d282f7cca296a8e4b50e52b157aedd5b9..1654099e5d38b4a74affc958af4b12ddfff1d568 100644 (file)
                                                                        <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
                                                                        <listOptionValue builtIn="false" value="_DEBUG"/>
                                                                        <listOptionValue builtIn="false" value="&quot;PACKAGE=\&quot;org.tizen.setting-applications\&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="_TZ_SYS_RO_APP=TZ_SYS_RO_APP"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;TZ_SYS_RO_APP=\&quot;/usr/apps/\&quot;"/>
                                                                </option>
                                                                <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.2090410992" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
                                                        </tool>
index 6f8cdcd2edc085aa6548e84d0e569be595068006..e6050a05935be9e0aaf40d411c5bf58833dcdaab 100644 (file)
@@ -6,7 +6,7 @@ APPNAME = setting-applications
 type = app
 
 # Project Profile
-profile = mobile-4.0
+profile = mobile-5.0
 
 # C/CPP Sources
 USER_SRCS = src/setting-applications-defaultapp.c src/setting-applications.c src/setting-applications-main.c 
@@ -18,7 +18,7 @@ USER_EDCS =
 USER_POS = 
 
 # User Defines
-USER_DEFS = TIZEN_DEPRECATION DEPRECATION_WARNING PACKAGE=\"org.tizen.setting-applications\" 
+USER_DEFS = TIZEN_DEPRECATION DEPRECATION_WARNING PACKAGE=\"org.tizen.setting-applications\" _TZ_SYS_RO_APP=TZ_SYS_RO_APP TZ_SYS_RO_APP=\"/usr/apps/\" 
 USER_CPP_DEFS = 
 
 # User Undefines
index 1729b9b95d645cdda438b7e77034bceb46958184..33bc4b80d58c72a323dc16d55f7dbae867149aea 100755 (executable)
-#include <efl_extension.h>
+/*
+ * setting
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Contact: MyoungJune Park <mj2004.park@samsung.com>
+ *
+ * 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 <appfw/app_control_internal.h>
+#include <Eina.h>
+#include <pkgmgr-info.h>
+#include <setting-common/setting-cfg.h>
 #include "setting-applications.h"
 
-typedef struct appdata {
-       Evas_Object *win;
-       Evas_Object *conform;
-       Evas_Object *label;
-} appdata_s;
+#define SETTING_APPLICATIONS_PACKAGE_NAME "org.tizen.setting-applications"
 
-static void
-win_delete_request_cb(void *data, Evas_Object *obj, void *event_info)
+static setting_view *__get_applications_view_to_load(void *data)
 {
-       ui_app_exit();
+       setting_retvm_if((!data), NULL, "!data");
+
+       setting_view_node_table_register(&setting_view_applications_main, NULL);
+       setting_view_node_table_register(&setting_view_applications_defaultapp,
+                       &setting_view_applications_main);
+       return &setting_view_applications_main;
 }
 
-static void
-win_back_cb(void *data, Evas_Object *obj, void *event_info)
+static void _cb_resize(void *data, Evas *e,
+               Evas_Object *obj, void *event_info)
 {
-       appdata_s *ad = data;
-       /* Let window go to hide state. */
-       elm_win_lower(ad->win);
+       SettingApplications *ad = (SettingApplications *)data;
+       setting_view_update(ad->view_to_load, ad);
 }
 
-static void
-create_base_gui(appdata_s *ad)
+static char *_gl_label_new_get(void *data, Evas_Object *obj,
+               const char *part)
 {
-       /* Window */
-       /* Create and initialize elm_win.
-          elm_win is mandatory to manipulate window. */
-       ad->win = elm_win_util_standard_add(PACKAGE, PACKAGE);
-       elm_win_autodel_set(ad->win, EINA_TRUE);
-
-       if (elm_win_wm_rotation_supported_get(ad->win)) {
-               int rots[4] = { 0, 90, 180, 270 };
-               elm_win_wm_rotation_available_rotations_set(ad->win, (const int *)(&rots), 4);
-       }
+       default_app *info = data;
+       retv_if(data == NULL, NULL);
+       char *label = NULL;
 
-       evas_object_smart_callback_add(ad->win, "delete,request", win_delete_request_cb, NULL);
-       eext_object_event_callback_add(ad->win, EEXT_CALLBACK_BACK, win_back_cb, ad);
-
-       /* Conformant */
-       /* Create and initialize elm_conformant.
-          elm_conformant is mandatory for base gui to have proper size
-          when indicator or virtual keypad is visible. */
-       ad->conform = elm_conformant_add(ad->win);
-       elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW);
-       elm_win_indicator_opacity_set(ad->win, ELM_WIN_INDICATOR_OPAQUE);
-       evas_object_size_hint_weight_set(ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       elm_win_resize_object_add(ad->win, ad->conform);
-       evas_object_show(ad->conform);
-
-       /* Label */
-       /* Create an actual view of the base gui.
-          Modify this part to change the view. */
-       ad->label = elm_label_add(ad->conform);
-       elm_object_text_set(ad->label, "<align=center>Hello Tizen</align>");
-       evas_object_size_hint_weight_set(ad->label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       elm_object_content_set(ad->conform, ad->label);
-
-       /* Show window after base gui is set up */
-       evas_object_show(ad->win);
+       if (0 == strcmp(part, "elm.text")) {
+               label = SAFE_STRDUP(info->pkg_label);
+               SETTING_TRACE("##label:[%s]", label);
+       }
+       return label;
 }
 
-static bool
-app_create(void *data)
+static char *_get_defualt_icon(pkgmgrinfo_appinfo_h handle)
 {
-       /* Hook to take necessary actions before main event loop starts
-               Initialize UI resources and application's data
-               If this function returns true, the main loop of application starts
-               If this function returns false, the application is terminated */
-       appdata_s *ad = data;
+       int ret;
+       char *type;
+       const char *icon;
+       const char *svc_icon = SETTING_ICON_PATH
+       "/default_icon_service.png";
+       const char *app_icon = SETTING_ICON_PATH
+       "/mainmenu.png";
 
-       create_base_gui(ad);
+       ret = pkgmgrinfo_appinfo_get_component_type(handle, &type);
+       if (PMINFO_R_OK == ret) {
+               if (0 == safeStrCmp(type, "svcapp"))
+                       icon = svc_icon;
+               else
+                       icon = app_icon;
+       } else {
+               SETTING_TRACE_ERROR(
+                               "pkgmgrinfo_appinfo_get_component_type() Fail(%d)",
+                               ret);
+               icon = app_icon;
+       }
 
-       return true;
+       return strdup(icon);
 }
-
-static void
-app_control(app_control_h app_control, void *data)
+static void _clear_default_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       /* Handle the launch request. */
-}
+       SETTING_TRACE_BEGIN;
+       ret_if(data == NULL);
+       default_app *info = data;
+       int ret = -1;
 
-static void
-app_pause(void *data)
-{
-       /* Take necessary actions when application becomes invisible. */
-}
+       if (NULL != info->pkgid) {
+               ret = app_control_unset_defapp(info->pkgid);
+               if (ret != APP_CONTROL_ERROR_NONE)
+                       SETTING_TRACE_ERROR("app_control_unset_defapp() Fail(%d)", ret);
+       }
 
-static void
-app_resume(void *data)
-{
-       /* Take necessary actions when application becomes visible. */
+       elm_object_item_del(info->item);
 }
 
-static void
-app_terminate(void *data)
-{
-       /* Release all resources. */
-}
 
-static void
-ui_app_lang_changed(app_event_info_h event_info, void *user_data)
+static Evas_Object *_gl_1button1_icon_get(void *data, Evas_Object *obj,
+               const char *part)
 {
-       /*APP_EVENT_LANGUAGE_CHANGED*/
+       retv_if(data == NULL, NULL);
+       default_app *info = data;
 
-       int ret;
-       char *language;
+       if (!safeStrCmp(part, "elm.swallow.icon")) {
+               Evas_Object *icon = NULL;
+               icon = elm_icon_add(obj);
+               SETTING_TRACE("path:[%s]", info->icon_path);
+               if (NULL == info->icon_path) {
+                       char *_icon;
+                       pkgmgrinfo_appinfo_h handle = NULL;
 
-       ret = app_event_get_language(event_info, &language);
-       if (ret != APP_ERROR_NONE) {
-               dlog_print(DLOG_ERROR, LOG_TAG, "app_event_get_language() failed. Err = %d.", ret);
-               return;
-       }
+                       int ret = pkgmgrinfo_appinfo_get_appinfo(info->pkgid, &handle);
+                       warn_if(PMINFO_R_OK != ret, "pkgmgrinfo_appinfo_get_appinfo() Fail(%d)",
+                                       ret);
 
-       if (language != NULL) {
-               elm_language_set(language);
-               free(language);
-       }
-}
+                       _icon = _get_defualt_icon(handle);
 
-static void
-ui_app_orient_changed(app_event_info_h event_info, void *user_data)
-{
-       /*APP_EVENT_DEVICE_ORIENTATION_CHANGED*/
-       return;
+                       SETTING_TRACE(" ==> appid [%s], icon [%s]", info->pkgid, _icon);
+
+                       pkgmgrinfo_appinfo_destroy_appinfo(handle);
+                       free(_icon);
+               }
+
+               elm_image_file_set(icon, info->icon_path, NULL);
+               elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
+               evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_size_hint_min_set(icon, SETTING_APP_MGR_ICON_SIZE,
+                               SETTING_APP_MGR_ICON_SIZE);
+               evas_object_show(icon);
+               return icon;
+
+       } else if (!safeStrCmp(part, "elm.swallow.end")) {
+               Evas_Object *button = NULL;
+
+               button = elm_button_add(obj);
+               elm_object_text_set(button, "Clear");
+               evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+               evas_object_size_hint_min_set(button, 160, 60);
+               evas_object_size_hint_max_set(button, 160, 60);
+               evas_object_show(button);
+               evas_object_smart_callback_add(button, "clicked", _clear_default_cb, info);
+
+               return button;
+       } else
+               return NULL;
 }
 
-static void
-ui_app_region_changed(app_event_info_h event_info, void *user_data)
+static bool on_app_create(void *priv)
 {
-       /*APP_EVENT_REGION_FORMAT_CHANGED*/
+       SETTING_TRACE_BEGIN;
+       SettingApplications *ad = priv;
+       setting_retvm_if((!priv), NULL, "!priv");
+
+       if (app_init(&ad->md, SETTING_APPLICATIONS_PACKAGE_NAME)
+                       != SETTING_RETURN_SUCCESS) {
+               SETTING_TRACE_ERROR("Cannot initialize application");
+               return false;
+       }
+
+       /* register view node table */
+       setting_view_node_table_intialize();
+
+       setting_create_Gendial_itc(SETTING_GENLIST_2LINE_STYLE,
+                       &(ad->itc_2text_2));
+       setting_create_Gendial_itc(SETTING_GENLIST_ICON_1LINE_STYLE,
+                       &(ad->itc_1text_1icon));
+       setting_create_Gendial_itc(SETTING_GENLIST_ICON_1LINE_STYLE,
+                       &(ad->itc_1icon_1text_sub));
+       setting_create_Gendial_itc(SETTING_GENLIST_ICON_1LINE_STYLE,
+                       &(ad->itc_1text));
+       setting_create_Gendial_itc(SETTING_GENLIST_ICON_1LINE_STYLE,
+                       &(ad->itc_2text_3));
+       setting_create_Gendial_itc(SETTING_GENLIST_ICON_1LINE_STYLE,
+                       &(ad->itc_1text_1icon_divider));
+       setting_create_Gendial_itc(SETTING_GENLIST_GROUP_INDEX_STYLE,
+                       &(ad->itc_grp_title));
+
+       ad->itc_1icon_1button.item_style = SETTING_GENLIST_2LINE_STYLE;
+       ad->itc_1icon_1button.func.text_get = _gl_label_new_get;
+       ad->itc_1icon_1button.func.content_get =
+                       _gl_1button1_icon_get;
+       ad->itc_1icon_1button.func.state_get = NULL;
+       ad->itc_1icon_1button.func.del = NULL;
+
+       /*      creating a view. */
+       ad->view_to_load = __get_applications_view_to_load(ad);
+       retv_if(!ad->view_to_load, NULL);
+
+       setting_view_node_set_cur_view(ad->view_to_load);
+       setting_view_create(ad->view_to_load, (void *)ad);
+       evas_object_event_callback_add(ad->md.layout, EVAS_CALLBACK_RESIZE,
+                       _cb_resize, ad);
+
+       evas_object_show(ad->md.window);
+       return true;
 }
 
-static void
-ui_app_low_battery(app_event_info_h event_info, void *user_data)
+static void on_app_terminate(void *priv)
 {
-       /*APP_EVENT_LOW_BATTERY*/
+       SETTING_TRACE_BEGIN;
+       setting_retm_if((!priv), "!priv");
+       SettingApplications *ad = priv;
+
+       /* fix flash issue for gallery */
+       evas_object_event_callback_del(ad->md.layout,
+                       EVAS_CALLBACK_RESIZE,
+                       _cb_resize);
+
+       setting_view_destroy(&setting_view_applications_main, ad);
+
+       SETTING_TRACE_END;
 }
 
-static void
-ui_app_low_memory(app_event_info_h event_info, void *user_data)
+static void _lang_changed(app_event_info_h event_info, void *data)
 {
-       /*APP_EVENT_LOW_MEMORY*/
+       SETTING_TRACE_BEGIN;
+       SettingApplications *ad = data;
+       setting_retm_if(NULL == ad, "ad is NULL");
+
+       char *lang = NULL;
+       if (app_event_get_language(event_info, &lang) == APP_ERROR_NONE) {
+               SETTING_TRACE_DEBUG("Setting - language is changed : %s", lang);
+               elm_language_set(lang);
+               elm_config_all_flush();
+               free(lang);
+               setting_navi_items_update(ad->md.naviframe);
+       } else {
+               SETTING_TRACE_ERROR("Cannot get language from event_info");
+       }
 }
 
-int
-main(int argc, char *argv[])
+EXPORT_PUBLIC
+int main(int argc, char *argv[])
 {
-       appdata_s ad = {0,};
-       int ret = 0;
-
-       ui_app_lifecycle_callback_s event_callback = {0,};
+       SettingApplications app_data = {{0},};
        app_event_handler_h handlers[5] = {NULL, };
+       ui_app_lifecycle_callback_s ops = {
+               .create = on_app_create,
+               .app_control = NULL,
+               .pause = NULL,
+               .resume = NULL,
+               .terminate = on_app_terminate,
+       };
 
-       event_callback.create = app_create;
-       event_callback.terminate = app_terminate;
-       event_callback.pause = app_pause;
-       event_callback.resume = app_resume;
-       event_callback.app_control = app_control;
-
-       ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, ui_app_low_battery, &ad);
-       ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, ui_app_low_memory, &ad);
-       ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, ui_app_orient_changed, &ad);
-       ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, &ad);
-       ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, ui_app_region_changed, &ad);
-
-       ret = ui_app_main(argc, argv, &event_callback, &ad);
-       if (ret != APP_ERROR_NONE) {
-               dlog_print(DLOG_ERROR, LOG_TAG, "app_main() is failed. err = %d", ret);
-       }
+       ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY],
+                       APP_EVENT_LOW_MEMORY, NULL, NULL);
+       ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY],
+                       APP_EVENT_LOW_BATTERY, NULL, NULL);
+       ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED],
+                       APP_EVENT_LANGUAGE_CHANGED, _lang_changed, &app_data);
+       ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED],
+                       APP_EVENT_REGION_FORMAT_CHANGED, NULL, NULL);
+       ui_app_add_event_handler(
+                       &handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED],
+                       APP_EVENT_DEVICE_ORIENTATION_CHANGED, NULL, NULL);
 
-       return ret;
+       return ui_app_main(argc, argv, &ops, &app_data);
 }