/* * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved * * 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 #include #include #include #include #include #include #include "define.h" #include "view.h" #define MEDIAHUB_WIN_TITLE PACKAGE #define APP_ID_FAVORITE "org.tizen.favorite" #define APP_ID_RECENT "org.tizen.home" SET_TAG(PACKAGE) struct _appdata { const char *name; Evas_Object *win; }; static Evas_Object *_add_win(const char *name) { Evas_Object *win; int w, h; win = elm_win_add(NULL, name, ELM_WIN_BASIC); if (!win) return NULL; elm_win_title_set(win, MEDIAHUB_WIN_TITLE); elm_win_alpha_set(win, EINA_TRUE); elm_win_role_set(win, "video"); elm_win_screen_size_get(win, NULL, NULL, &w, &h); evas_object_resize(win, w, h); efl_util_set_window_opaque_state(win, 1); evas_object_show(win); return win; } static bool _create(void *data) { struct _appdata *ad; Evas_Object *win; if (!data) { _ERR("failed to get data"); return false; } ad = data; elm_app_base_scale_set(APP_BASE_SCALE); elm_theme_overlay_add(NULL, THEMEFILE); elm_config_focus_move_policy_set(ELM_FOCUS_MOVE_POLICY_CLICK); win = _add_win(ad->name); if (!win) { _ERR("failed to create win object"); return false; } if (!viewmgr_create(win)) { _ERR("failed to initialize viewmgr"); evas_object_del(win); return false; } viewmgr_add_view(view_base_get_vclass(), NULL); viewmgr_add_view(view_detail_get_vclass(), NULL); viewmgr_add_view(view_viewer_get_vclass(), NULL); viewmgr_add_view(view_mplayer_get_vclass(), NULL); viewmgr_add_view(view_action_menu_get_vclass(), NULL); viewmgr_add_view(view_zoom_get_vclass(), NULL); elm_win_focus_highlight_enabled_set(win, EINA_TRUE); elm_win_focus_highlight_style_set(win, STYLE_INVISIBLE); ad->win = win; return true; } static void _terminate(void *data) { struct _appdata *ad; if (!data) { _ERR("failed to get data"); return; } ad = data; viewmgr_remove_view(VIEW_BASE); viewmgr_remove_view(VIEW_DETAIL); viewmgr_remove_view(VIEW_VIEWER); viewmgr_remove_view(VIEW_MPLAYER); viewmgr_remove_view(VIEW_ACTION_MENU); viewmgr_remove_view(VIEW_ZOOM); viewmgr_destroy(); if (ad->win) { evas_object_del(ad->win); ad->win = NULL; } } static void _app_control(app_control_h app_control, void *data) { struct _appdata *ad; char *media_id; char *caller_id; int r; if (!data) { _ERR("failed to get data"); return; } ad = data; if (ad->win) elm_win_activate(ad->win); r = app_control_get_caller(app_control, &caller_id); if (r != APP_CONTROL_ERROR_NONE) caller_id = NULL; r = app_control_get_extra_data(app_control, PARAM_MEDIA_ID, &media_id); if (r != APP_CONTROL_ERROR_NONE) media_id = NULL; if (media_id && caller_id) { if (!strcmp(caller_id, APP_ID_FAVORITE)) { while (viewmgr_active_view_count() > 0) viewmgr_pop_view(); viewmgr_update_view(VIEW_BASE, UPDATE_FAVORITE, media_id); } else if (!strcmp(caller_id, APP_ID_RECENT)) { viewmgr_push_view(VIEW_BASE); viewmgr_update_view(VIEW_BASE, UPDATE_RECENT, media_id); } } else viewmgr_push_view(VIEW_BASE); free(media_id); free(caller_id); } static void _pause(void *data) { inputmgr_enable(EINA_FALSE); viewmgr_pause(); } static void _resume(void *data) { inputmgr_enable(EINA_TRUE); viewmgr_resume(); } int main(int argc, char **argv) { struct _appdata ad; ui_app_lifecycle_callback_s cb = { .create = _create, .terminate = _terminate, .app_control = _app_control, .pause = _pause, .resume = _resume, }; memset(&ad, 0x0, sizeof(ad)); ad.name = PACKAGE; ui_app_main(argc, argv, &cb, &ad); return 0; }