Sie sind auf Seite 1von 6

#include <tizen.

h>
#include "worldclock.h"
#include <app.h>
#define TAG "MY_TAG"
typedef struct appdata {
Evas_Object *win;
Evas_Object *conform;
Evas_Object *naviframe;
Elm_Object_Item *nf_it;
} appdata_s;
typedef struct item_data {
int index;
char *phone;
char *name;
char *mail;
Elm_Object_Item *item; // Elm_Object_Item *item;
Evas_Object *naviframe; // Evas_Object *button;
} item_data_s; // alias
static void win_delete_request_cb(void *data, Evas_Object *obj,
void *event_info) {
ui_app_exit();
}
static void win_back_cb(void *data, Evas_Object *obj, void *event_info) {
appdata_s *ad = data;
/* Let window go to hide state. */
elm_win_lower(ad->win);
}
static Eina_Bool naviframe_pop_cb(void *data, Elm_Object_Item *it) {
ui_app_exit();
return EINA_FALSE;
}
static Evas_Object* create_simple_clock(Evas_Object *parent);
static Evas_Object* create_list(Evas_Object *parent, Evas_Object *naviframe);
static void create_base_gui(appdata_s *ad) {
Evas_Object *box, *layout, *list_area;
/* Window */
ad->win = elm_win_util_standard_add(PACKAGE, PACKAGE);
elm_win_conformant_set(ad->win, ad->conform);
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);
}
//
evas_object_smart_callback_add(ad->win, "delete,request",win_delete_requ
est_cb, NULL);
//eext_object_event_callback_add(ad->win, EEXT_CALLBACK_BACK, win_back_c
b, ad);
/* Conformant */
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);
/* Naviframe */
ad->naviframe = elm_naviframe_add(ad->conform);
elm_object_content_set(ad->conform, ad->naviframe);
evas_object_size_hint_weight_set(ad->naviframe, EVAS_HINT_EXPAND,EVAS_HI
NT_EXPAND);
evas_object_show(ad->naviframe);
// naviframe back callback
eext_object_event_callback_add(ad->naviframe, EEXT_CALLBACK_BACK,eext_na
viframe_back_cb, NULL);
// Box
box = elm_box_add(ad->naviframe);
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);
Evas_Object *clock = create_simple_clock(box);
evas_object_size_hint_weight_set(clock, EVAS_HINT_EXPAND, 0.2);
evas_object_size_hint_align_set(clock, EVAS_HINT_FILL, EVAS_HINT_FILL);
elm_box_pack_end(box, clock);
//add layout to manage the genlist area
layout = elm_layout_add(box);
elm_layout_theme_set(layout, "layout", "application", "default");
evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
list_area = create_list(layout, ad->naviframe);
elm_layout_content_set(layout, "elm.swallow.content", list_area);
evas_object_show(list_area);
evas_object_show(layout);
elm_box_pack_end(box, layout);
// nut back cung callback
ad->nf_it = elm_naviframe_item_push(ad->naviframe, _("Contact"), NULL, N
ULL,
box, "basic");
elm_naviframe_item_pop_cb_set(ad->nf_it, naviframe_pop_cb, ad->win);
//
/* Show window after base gui is set up */
evas_object_show(ad->win);
}
static Evas_Object* create_simple_clock(Evas_Object *parent) {
Evas_Object *box;
Evas_Object *label1, *label2, *label3;
box = elm_box_add(parent);

//create label 1
label1 = elm_label_add(box);
elm_object_text_set(label1,"<font_size=110><color=#1C1C1C>Contact</color
></font_size>");
//add label 1 into the box
elm_box_pack_end(box, label1);
evas_object_show(label1);
evas_object_show(box); //
return box;
}
static void item_selected_cb(void *data, Evas_Object *obj, void *event_info) { /
/data = itemdata
dlog_print(DLOG_INFO, "MyTag", "Item selected");
item_data_s *id = data;
char tmp[256];
snprintf(tmp, 255, "%d", id->index);
dlog_print(DLOG_INFO, "MyTag", tmp);
app_control_h app_control;
app_control_create(&app_control);
app_control_set_operation(app_control, APP_CONTROL_OPERATION_VIEW);
app_control_set_app_id(app_control, "org.tizen.native");
if (app_control_send_launch_request(app_control, NULL, NULL) == APP_CONT
ROL_ERROR_NONE) {
dlog_print(DLOG_INFO, TAG, "Succeeded to launch a calculator app.");
}
else if (app_control_send_launch_request(app_control, NULL, NULL) == APP
_CONTROL_ERROR_APP_NOT_FOUND) {
dlog_print(DLOG_ERROR, TAG, "APP_NOT_FOUND");
}
else if (app_control_send_launch_request(app_control, NULL, NULL) == APP
_CONTROL_ERROR_LAUNCH_REJECTED) {
dlog_print(DLOG_ERROR, TAG, "LAUNCH_REJECTED");
}
else if (app_control_send_launch_request(app_control, NULL, NULL) == APP
_CONTROL_ERROR_PERMISSION_DENIED) {
dlog_print(DLOG_ERROR, TAG, "LAUNCH_REJECTED");
}
}

static char* gl_text_get_cb(void *data, Evas_Object *obj, const char *part) {


item_data_s *id = data;
const Elm_Genlist_Item_Class *itc = elm_genlist_item_item_class_get(id->
item); // elm_genlist_item_item_class_get(Elm_Object_Item *item)

dlog_print(DLOG_INFO, "MyTag", itc->item_style); //


char buf[1024];
dlog_print(DLOG_ERROR, "Den day 1", "Da doc", 0);
if (!strcmp(part, "elm.text.main.left.top")) {
snprintf(buf, 1023, "%s", id->phone);
return strdup(buf); // sao chep // ghi vao buf
} else if (!strcmp(part, "elm.text.sub.right.top")) {
snprintf(buf, 1023, "%s", id->name);
return strdup(buf);
} else if (!strcmp(part, "elm.text.sub.left.bottom")) {
snprintf(buf, 1023, "%s", id->mail);
return strdup(buf);
}
dlog_print(DLOG_ERROR, "Den day 2", "Da doc", 0);
return NULL;
}
static Evas_Object* create_list(Evas_Object *parent, Evas_Object *naviframe) {
Evas_Object *list;
Elm_Object_Item *it;
Elm_Genlist_Item_Class *itc = NULL;
int i = 0;
list = elm_genlist_add(parent); // elm_..._add(parent) -> control evas o
bject add (parent)
itc = elm_genlist_item_class_new(); // Elm_Genlist_Item_Class *itc = elm
_genlist_item_class_new();
itc->item_style = "2line.top.4";
itc->func.text_get = gl_text_get_cb;
itc->func.content_get = NULL;
itc->func.del = NULL;
char path[200];
char content[1000];
snprintf(path,200,"%s/contact.txt",app_get_resource_path());
char **result_arr;
FILE *file = fopen(path, "r");
fread(content,sizeof(char),1000,file);
result_arr = eina_str_split(content, ";", 0);
// Doc 3 contact
for (i = 0; i<3; i++) {
item_data_s *itemdata = calloc(sizeof(item_data_s), 1);
itemdata->phone = result_arr[i*3];
itemdata->name = result_arr[i*3+1];
itemdata->mail = result_arr[i*3+2];
itemdata->naviframe = naviframe;
dlog_print(DLOG_ERROR, "Da doc duoc file", "Da doc", 0);

itemdata->index = i;
it = elm_genlist_item_append (list, itc, itemdata, NULL, ELM_GEN
LIST_ITEM_NONE, item_selected_cb, itemdata);
itemdata->item = it;
}
elm_genlist_item_class_free(itc);
return list;
}
static bool app_create(void *data) {
/* 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;
create_base_gui(ad);
return true;
}
static void app_control(app_control_h app_control, void *data) {
/* Handle the launch request. */
}
static void app_pause(void *data) {
/* Take necessary actions when application becomes invisible. */
}
static void app_resume(void *data) {
/* Take necessary actions when application becomes visible. */
}
static void app_terminate(void *data) {
/* Release all resources. */
}
static void ui_app_lang_changed(app_event_info_h event_info, void *user_data) {
/*APP_EVENT_LANGUAGE_CHANGED*/
char *locale = NULL;
system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE,
&locale);
elm_language_set(locale);
free(locale);
return;
}
static void ui_app_orient_changed(app_event_info_h event_info, void *user_data)
{
/*APP_EVENT_DEVICE_ORIENTATION_CHANGED*/
return;
}
static void ui_app_region_changed(app_event_info_h event_info, void *user_data)
{
/*APP_EVENT_REGION_FORMAT_CHANGED*/
}

static void ui_app_low_battery(app_event_info_h event_info, void *user_data) {


/*APP_EVENT_LOW_BATTERY*/
}
static void ui_app_low_memory(app_event_info_h event_info, void *user_data) {
/*APP_EVENT_LOW_MEMORY*/
}
int main(int argc, char *argv[]) {
appdata_s ad = { 0, };
int ret = 0;
ui_app_lifecycle_callback_s event_callback = { 0, };
app_event_handler_h handlers[5] = { NULL, };
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_chan
ged, &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);
ui_app_remove_event_handler(handlers[APP_EVENT_LOW_MEMORY]);
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);
}
return ret;
}

Das könnte Ihnen auch gefallen