--- /dev/null
+/*
+ * 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.
+ */
+
+#ifndef __AIR_HOME_UTILS_H__
+#define __AIR_HOME_UTILS_H__
+
+#include <stdbool.h>
+#include <Evas.h>
+
+Evas_Object *utils_add_layout(Evas_Object *base, const char *group, bool focus_allow,
+ const char *part);
+Evas_Object *utils_add_icon(Evas_Object *base, const char *file, const char *part);
+Evas_Object *utils_add_label(Evas_Object *base, char *text, const char *style,
+ const char *part);
+Evas_Object *utils_add_bg(Evas_Object *base, int r, int g, int b, int a,
+ const char *part);
+Evas_Object *utils_add_scroller(Evas_Object *base);
+Evas_Object *utils_add_box(Evas_Object *base, bool horizon);
+bool utils_launch_app(const char *pkg);
+
+#endif /* __AIR_HOME_UTILS_H__ */
--- /dev/null
+/*
+ * 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 <Elementary.h>
+#include <app_debug.h>
+#include <stdbool.h>
+#include <app.h>
+
+#include "utils.h"
+#include "defs.h"
+
+Evas_Object *utils_add_layout(Evas_Object *base, const char *group,
+ bool focus_allow, const char *part)
+{
+ Evas_Object *ly;
+
+ if (!base || !group) {
+ _ERR("Invalid argument");
+ return NULL;
+ }
+
+ ly = elm_layout_add(base);
+ if (!ly) {
+ _ERR("failed to add layout");
+ return false;
+ }
+ elm_layout_file_set(ly, EDJEFILE, group);
+
+ if (focus_allow)
+ elm_object_focus_allow_set(ly, EINA_TRUE);
+ if (part)
+ elm_object_part_content_set(base, part, ly);
+
+ evas_object_show(ly);
+
+ return ly;
+}
+
+Evas_Object *utils_add_icon(Evas_Object *base, const char *file,
+ const char *part)
+{
+ Evas_Object *ic;
+
+ if (!base || !file) {
+ _ERR("Invalid argument");
+ return NULL;
+ }
+
+ ic = elm_icon_add(base);
+ if (!ic) {
+ _ERR("failed to add icon");
+ return NULL;
+ }
+
+ elm_image_file_set(ic, file, NULL);
+
+ if (part)
+ elm_object_part_content_set(base, part, ic);
+
+ evas_object_show(ic);
+
+ return ic;
+}
+
+Evas_Object *utils_add_label(Evas_Object *base, char *text,
+ const char *style, const char *part)
+{
+ Evas_Object *lbl;
+ const char *s;
+
+ if (!base || !text) {
+ _ERR("Invalid argument");
+ return NULL;
+ }
+
+ lbl = elm_label_add(base);
+ if (!lbl) {
+ _ERR("failed to add label");
+ return NULL;
+ }
+
+ if (style)
+ elm_object_style_set(lbl, style);
+
+ s = edje_object_data_get(elm_layout_edje_get(base), TITLE_WIDTH);
+ if (s)
+ elm_label_wrap_width_set(lbl, atoi(s));
+
+ elm_object_text_set(lbl, text);
+
+ if (part)
+ elm_object_part_content_set(base, part, lbl);
+
+ evas_object_show(lbl);
+
+ return lbl;
+}
+
+Evas_Object *utils_add_bg(Evas_Object *base, int r, int g, int b, int a,
+ const char *part)
+{
+ Evas_Object *bg;
+
+ if (!base) {
+ _ERR("Invalid argument");
+ return NULL;
+ }
+
+ bg = evas_object_rectangle_add(evas_object_evas_get(base));
+ if (!bg) {
+ _ERR("failed to add label");
+ return NULL;
+ }
+
+ evas_object_color_set(bg, r, g, b, a);
+
+ if (part)
+ elm_object_part_content_set(base, part, bg);
+
+ evas_object_show(bg);
+
+ return bg;
+}
+
+Evas_Object *utils_add_scroller(Evas_Object *base)
+{
+ Evas_Object *scr;
+
+ scr = elm_scroller_add(base);
+ if (!scr) {
+ _ERR("failed to add scroller");
+ return NULL;
+ }
+
+ elm_scroller_policy_set(scr, ELM_SCROLLER_POLICY_OFF,
+ ELM_SCROLLER_POLICY_OFF);
+ evas_object_show(scr);
+
+ return scr;
+}
+
+Evas_Object *utils_add_box(Evas_Object *base, bool horizon)
+{
+ Evas_Object *box;
+
+ box = elm_box_add(base);
+ if (!box) {
+ _ERR("failed to add box");
+ return NULL;
+ }
+
+ if (horizon)
+ elm_box_horizontal_set(box, EINA_TRUE);
+
+ evas_object_show(box);
+
+ return box;
+}
+
+bool utils_launch_app(const char *pkg)
+{
+ app_control_h app_control;
+ int r;
+
+ if (!pkg) {
+ _ERR("Invalid argument");
+ return false;
+ }
+
+ app_control_create(&app_control);
+ app_control_set_operation(app_control, APP_CONTROL_OPERATION_DEFAULT);
+ app_control_set_app_id(app_control, pkg);
+
+ r = app_control_send_launch_request(app_control, NULL, NULL);
+ if (r != APP_CONTROL_ERROR_NONE) {
+ _ERR("failed to launch pkg");
+ app_control_destroy(app_control);
+ return false;
+ }
+
+ app_control_destroy(app_control);
+
+ return true;
+}