EOM / src /
view.c
- /*
- * Samsung API
- * Copyright (c) 2009-2015 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/license/
- *
- * 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 "log.h"
- #include "view.h"
- #include "eom_sample.h"
- static Evas_Object *_create_box(Evas_Object *parent)
- {
- Evas_Object *box = NULL;
- retv_if(!parent, NULL);
- box = elm_box_add(parent);
- retv_if(!box, NULL);
- evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
- return box;
- }
- static void _destroy_box(Evas_Object *box)
- {
- ret_if(!box);
- evas_object_del(box);
- }
- static Evas_Object *_create_grid(Evas_Object *parent)
- {
- Evas_Object *grid = NULL;
- retv_if(!parent, NULL);
- grid = elm_grid_add(parent);
- retv_if(!grid, NULL);
- evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(grid, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_show(grid);
- return grid;
- }
- static void _destroy_grid(Evas_Object *grid)
- {
- ret_if(!grid);
- evas_object_del(grid);
- }
- static Evas_Object *_create_btn(Evas_Object *parent, char *text)
- {
- Evas_Object *btn = NULL;
- retv_if(!parent, NULL);
- btn = elm_button_add(parent);
- retv_if(!btn, NULL);
- elm_object_style_set(btn, "circle");
- elm_object_text_set(btn, text);
- evas_object_show(btn);
- return btn;
- }
- static void _destroy_btn(Evas_Object *btn)
- {
- ret_if(!btn);
- evas_object_del(btn);
- }
- static Evas_Object *_create_bg(Evas_Object *parent, int type)
- {
- Evas_Object *bg = NULL;
- retv_if(!parent, NULL);
- bg = elm_bg_add(parent);
- retv_if(!bg, NULL);
- evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(bg, EVAS_HINT_FILL, EVAS_HINT_FILL);
- if (type == 1) {
- elm_bg_file_set(bg, BG_DIR, NULL);
- evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(bg, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_win_resize_object_add(parent, bg);
- } else {
- elm_bg_color_set(bg, 0, 40, 40);
- }
- evas_object_show(bg);
- return bg;
- }
- static void _destroy_bg(Evas_Object *bg)
- {
- ret_if(!bg);
- evas_object_del(bg);
- }
- extern Evas_Object *view_create_eom_display(appdata_s *ad)
- {
- Evas_Object *box = NULL;
- Evas_Object *grid = NULL;
- Evas_Object *bg = NULL;
- viewdata_s *vd = NULL;
- retv_if(!ad, NULL);
- box = _create_box(ad->layout);
- retv_if(!box, NULL);
- grid = _create_grid(box);
- goto_if(!grid, ERROR);
- bg = _create_bg(grid, 1);
- goto_if(!bg, ERROR);
- elm_grid_pack(grid, bg, 0, 0, 100, 100);
- /* memory allocate */
- vd = calloc(1, sizeof(viewdata_s));
- goto_if(!vd, ERROR);
- vd->bg = bg;
- ad->vd = vd;
- /* set label */
- vd->text1 = elm_label_add(grid);
- goto_if(!vd->text1, ERROR);
- if (ad->support_external_display)
- {
- elm_object_text_set(vd->text1, "<font_size=50><color=#ffffff>Supporting EOM.</color></font_size>");
- evas_object_show(vd->text1);
- elm_grid_pack(grid, vd->text1, 2, 10, 100, 100);
- vd->text2 = elm_label_add(grid);
- goto_if(!vd->text2, ERROR);
- if (ad->connected)
- {
- elm_object_text_set(vd->text2, "<font_size=40><color=#ffffff>HDMI Connected.</color></font_size>");
- evas_object_show(vd->text2);
- elm_grid_pack(grid, vd->text2, 2, 30, 100, 100);
- }
- else
- {
- elm_object_text_set(vd->text2, "<font_size=40><color=#ffffff>Connect HDMI cable.</color></font_size>");
- evas_object_show(vd->text2);
- elm_grid_pack(grid, vd->text2, 2, 30, 100, 100);
- }
- vd->text3 = elm_label_add(grid);
- goto_if(!vd->text3, ERROR);
- if (ad->mode == EOM_OUTPUT_MODE_MIRROR)
- {
- elm_object_text_set(vd->text3, "<font_size=40><color=#ffffff>Mode : mirror</color></font_size>");
- evas_object_show(vd->text3);
- elm_grid_pack(grid, vd->text3, 2, 45, 100, 100);
- }
- else
- {
- elm_object_text_set(vd->text3, "<font_size=40><color=#ffffff>Mode : presentation</color></font_size>");
- evas_object_show(vd->text3);
- elm_grid_pack(grid, vd->text3, 2, 45, 100, 100);
- }
- }
- else
- {
- elm_object_text_set(vd->text1, "<font_size=50><color=#ffffff>Not supporting EOM.</color></font_size>");
- evas_object_show(vd->text1);
- elm_grid_pack(grid, vd->text1, 2, 10, 100, 100);
- }
- elm_box_pack_end(box, grid);
- return box;
- ERROR:
- if (vd) free(vd);
- if (bg) _destroy_bg(bg);
- if (grid) _destroy_grid(grid);
- if (box) _destroy_box(box);
- return NULL;
- }
- extern Evas_Object *view_create_eom_button(appdata_s *ad)
- {
- Evas_Object *box = NULL;
- Evas_Object *grid = NULL;
- retv_if(!ad, NULL);
- box = _create_box(ad->layout);
- retv_if(!box, NULL);
- grid = _create_grid(box);
- goto_if(!grid, ERROR);
- /* create button */
- ad->btn_mirror = _create_btn(grid, "MIRROR");
- goto_if(!ad->btn_mirror, ERROR);
- elm_grid_pack(grid, ad->btn_mirror, 0, 20, 50, 100);
- evas_object_smart_callback_add(ad->btn_mirror, "clicked", eom_button_clicked, ad);
- ad->btn_presentation = _create_btn(grid, "PRESENTATION");
- goto_if(!ad->btn_presentation, ERROR);
- elm_grid_pack(grid, ad->btn_presentation, 50, 20, 50, 100);
- evas_object_smart_callback_add(ad->btn_presentation, "clicked", eom_button_clicked, ad);
- elm_box_pack_end(box, grid);
- return box;
- ERROR:
- if (ad->btn_mirror) _destroy_btn(ad->btn_mirror);
- if (grid) _destroy_grid(grid);
- if (box) _destroy_box(box);
- return NULL;
- }
- /* End of file */