Turkey : 0815 Version(Back key hold & unhold)
[apps/native/sample/adventure.git] / src / main_view.c
index d4153e0..1ba66c3 100644 (file)
@@ -1,6 +1,6 @@
 #include <Elementary.h>
 #include <time.h>
-#include <app_control.h>
+//#include <app_control.h>
 #include <notification.h>
 
 #include "main.h"
@@ -19,6 +19,7 @@ const char *const MAIN_VIEW_EDJE = "momentic.edj";
 const char *const ENTRY_EDJE = "entry.edj";
 const char *const PREDICT_ITEM_EDJE = "predict_item.edj";
 static int cur_page = 0;
+static int hold = 0;
 
 static void _append_item_to_searchlist(Evas_Object *searchlist, Evas_Object *item)
 {
@@ -597,6 +598,16 @@ static void _page1_done_cb(void *data, Evas_Object *obj, const char *signal, con
        elm_object_focus_set(data, EINA_TRUE);
 }
 
+static void _hold_cb(void *data, Evas_Object *obj, const char *signal, const char *source)
+{
+       hold = 1;
+}
+
+static void _unhold_cb(void *data, Evas_Object *obj, const char *signal, const char *source)
+{
+       hold = 0;
+}
+
 static Evas_Object *_create_add_btn(Evas_Object *parent, main_view_s *main_view_info)
 {
        Evas_Object *add_btn = NULL;
@@ -896,9 +907,15 @@ static void _destroy_group_scroller(Evas_Object *group_scroller)
 static void _main_view_back_cb(void *data, Evas_Object *obj, void *event_info)
 {
        main_view_s *main_view_info = data;
+
+       if (hold) {
+               _D("hold the back key events");
+               return;
+       }
+
+#if 0  /* Use hold & unhold events */
        static time_t prev_t;
        time_t cur_t;
-
        time(&cur_t);
 
        if (prev_t + 2 > cur_t) {
@@ -907,6 +924,7 @@ static void _main_view_back_cb(void *data, Evas_Object *obj, void *event_info)
        }
 
        prev_t = cur_t;
+#endif
        elm_object_signal_emit(obj, "momentic,state,page,back", "");
        
        switch (cur_page) {
@@ -939,6 +957,10 @@ static void _main_view_back_cb(void *data, Evas_Object *obj, void *event_info)
                ret_if(!list);
 
                EINA_LIST_FREE(list, item) {
+                       if (evas_object_data_get(item, DATA_KEY_BEST_TIME)) {
+                               item_destroy_best_time(item);
+                               continue;
+                       }
                        elm_object_signal_emit(item, "momentic,item,state,default", "");
                        unset_time_range(item);
                        tmp = item;
@@ -946,6 +968,7 @@ static void _main_view_back_cb(void *data, Evas_Object *obj, void *event_info)
 
                scroller_remove_item(main_view_info->city_list, tmp);
                item_destroy_best_time(tmp);
+               elm_object_signal_emit(main_view_info->main_view, "momentic,state,page1", "");
                cur_page = 1;
                break;
        case 4:
@@ -1032,6 +1055,8 @@ Evas_Object *main_view_create(Evas_Object *parent, moment_info_s *moment_info)
                elm_object_part_content_set(main_view_info->main_view, "save_group_btn", main_view_info->save_button);
 
        elm_object_signal_callback_add(main_view_info->main_view, "momentic,page1,done", "", _page1_done_cb, main_view_info->searchbar);
+       elm_object_signal_callback_add(main_view_info->main_view, "momentic,state,hold", "", _hold_cb, NULL);
+       elm_object_signal_callback_add(main_view_info->main_view, "momentic,state,unhold", "", _unhold_cb, NULL);
 
        return main_view_info->main_view;
 }
@@ -1109,6 +1134,7 @@ static void _get_best_time(double *timezone, int size, double *start, double *en
        }
 }
 
+#if 0
 static void _reply_cb(app_control_h request, app_control_h reply, app_control_result_e result, void *user_data)
 {
        _D("Result callback is called");
@@ -1154,6 +1180,6 @@ static void _launch_calendar_edit(int start, int end)
        app_control_send_launch_request(app_control, _reply_cb, NULL);
        app_control_destroy(app_control);
 }
-
+#endif