CicoHSControlBarTouch::TouchUpControlBar(void *data, Evas *evas,
Evas_Object *obj, void *event_info)
{
+ Evas_Event_Mouse_Down *info = reinterpret_cast<Evas_Event_Mouse_Down*>(event_info);
+
ICO_DBG("CicoHSControlBarTouch::TouchUpControlBar Enter(down=%d)",
(int)touch_down);
if (touch_down == false) {
- // multi touch up, skiep
- ICO_DBG("CicoHSControlBarTouch::TouchUpControlBar not down, Skip");
+ ICO_DBG("CicoHSControlBarTouch::TouchUpControlBar No Down");
+ // Menu manipulation is normally processed, even if there is no touchdown.
}
touch_down = false;
if (data == NULL) {
- ICO_PRF("TOUCH_EVENT Ctrl-Bar Down->Up app=(NIL)");
+ ICO_PRF("TOUCH_EVENT Ctrl-Bar Down->Up (%d,%d) app=(NIL)",
+ info->output.x, info->output.y);
ctl_bar_window->TouchHome();
}
else {
- ICO_PRF("TOUCH_EVENT Ctrl-Bar Down->Up app=%s", (const char *)data);
+ ICO_PRF("TOUCH_EVENT Ctrl-Bar Down->Up (%d,%d) app=%s",
+ info->output.x, info->output.y, (const char *)data);
ctl_bar_window->TouchShortcut((const char *)data);
}
ICO_DBG("CicoHSControlBarTouch::TouchUpControlBar Leave");
*
* @date Aug-08-2013
*/
+#include "CicoHomeScreen.h"
#include "CicoHSMenuTouch.h"
#include "CicoSound.h"
bool CicoHSMenuTouch::long_act;
bool CicoHSMenuTouch::touch_down;
+Evas_Object *CicoHSMenuTouch::grabbed_object;
+
CicoHSMenuWindow* CicoHSMenuTouch::menu_window;
/*============================================================================*/
timer = NULL;
long_act = false;
touch_down = false;
+ grabbed_object = NULL;
CicoHSMenuTouch::menu_window = menu_window;
}
CicoHSMenuTouch::LongPushed(void *data)
{
ICO_TRA("CicoHSMenuTouch::LongPushed Enter");
- long_act = true;
timer = NULL;
- /*stop select*/
- menu_window->ChangeTerminateMode();
+ if (CicoHomeScreen::getInstance()->GetMode() == ICO_HS_MODE_MENU) {
+ long_act = true;
+
+ /*stop select*/
+ menu_window->ChangeTerminateMode();
- ICO_TRA("CicoHSMenuTouch::LongPushed Leave");
+ ICO_TRA("CicoHSMenuTouch::LongPushed Leave");
+ }
+ else {
+ long_act = false;
+ ICO_TRA("CicoHSMenuTouch::LongPushed Leave(Not in Menu)");
+ }
return ECORE_CALLBACK_CANCEL;
}
timer = NULL;
}
else if (touch_down == false) {
- ICO_DBG("CicoHSMenuTouch::TouchUpMenu: (%d,%d) No Down, Skip", x, y);
- return;
+ ICO_DBG("CicoHSMenuTouch::TouchUpMenu: (%d,%d) No Down", x, y);
+ // Menu manipulation is normally processed, even if there is no touchdown.
+ touch_state_b_x = x;
+ touch_state_b_y = y;
}
touch_down = false;
touch_state_a_x, touch_state_a_y, appid ? appid: "(NULL)");
if (abs(sub_x) > abs(sub_y)) {
-
/* menu slide*/
if (sub_x > ICO_HS_MENU_TOUCH_FLICK_THREASHOLD_DISTANCE) {
menu_window->GoBackMenu();
/*--------------------------------------------------------------------------*/
/**
+ * @brief CicoHSMenuTouch::FocusOutEvas
+ * focus out at menu evas
+ *
+ * @param[in] data data(canvas object, unused)
+ * @param[in] evas evas(unused)
+ * @param[in] event_info event information(unused)
+ * @return none
+ */
+/*--------------------------------------------------------------------------*/
+void
+CicoHSMenuTouch::FocusOutEvas(void *data, Evas *evas, void *event_info)
+{
+ // Ungrab focus
+ if (grabbed_object) {
+ evas_object_focus_set(grabbed_object, EINA_FALSE);
+ grabbed_object = NULL;
+ }
+
+ // Focus Out, Cancel menu touch
+ if (timer != NULL) {
+ // delete timer
+ ecore_timer_del(timer);
+ timer = NULL;
+ }
+ else if (touch_down == false) {
+ ICO_DBG("CicoHSMenuTouch::FocusOutEvas: No Down, Skip");
+ return;
+ }
+ touch_down = false;
+
+ if (long_act) {
+ // Stop Terminate Mode
+ long_act = false;
+ menu_window->ChangeNormalMode();
+ }
+
+ ICO_PRF("TOUCH_EVENT Menu FocusOut(Evas)");
+}
+
+/*--------------------------------------------------------------------------*/
+/**
+ * @brief CicoHSMenuTouch::SetGrabbedObject
+ * set/reset grabbed Evas Object
+ *
+ * @param[in] object grabbed Evas object or NULL
+ * @return none
+ */
+/*--------------------------------------------------------------------------*/
+void
+CicoHSMenuTouch::SetGrabbedObject(Evas_Object *object)
+{
+ ICO_DBG("CicoHSMenuTouch::SetGrabbedObject %p", object);
+ grabbed_object = object;
+}
+
+/*--------------------------------------------------------------------------*/
+/**
* @brief CicoHSMenuTouch::TouchDownTerm
* touch down action at terminate icon
*
void
CicoHSMenuTouch::TouchDownTerm(void *data, Evas *evas, Evas_Object *obj, void *event_info)
{
- ICO_DBG("CicoHSMenuTouch::TouchDownTerm:");
+ Evas_Event_Mouse_Down *info = reinterpret_cast<Evas_Event_Mouse_Down*>(event_info);
+ char *appid = reinterpret_cast<char*>(data);
+
+ ICO_PRF("TOUCH_EVENT Term Down (%d,%d) app=%s",
+ info->output.x, info->output.y, appid ? appid : "(NIL)");
touch_down = true;
}
void
CicoHSMenuTouch::TouchUpTerm(void *data, Evas *evas, Evas_Object *obj, void *event_info)
{
- // if no down, skip
- ICO_DBG("CicoHSMenuTouch::TouchUpTerm: down=%d", (int)touch_down);
+ Evas_Event_Mouse_Down *info = reinterpret_cast<Evas_Event_Mouse_Down*>(event_info);
+ char *appid = reinterpret_cast<char*>(data);
+
+ ICO_PRF("TOUCH_EVENT Term Up (%d,%d) app=%s",
+ info->output.x, info->output.y, appid ? appid : "(NIL)");
if (touch_down == false) {
- ICO_DBG("CicoHSMenuTouch::TouchUpTerm: No Down, Skip");
- return;
+ ICO_DBG("CicoHSMenuTouch::TouchUpTerm: No Down");
+ // Menu manipulation is normally processed, even if there is no touchdown.
}
touch_down = false;
// play opration sound
CicoSound::GetInstance()->PlayOperationSound();
- char *appid = reinterpret_cast<char*>(data);
- ICO_PRF("TOUCH_EVENT Term Down->Up app=%s", appid ? appid : "(NIL)");
-
strncpy(terminate_appid, appid, ICO_HS_MAX_PROCESS_NAME);
menu_window->ShowTerminateButton();
CicoHSMenuTouch::TouchUpTerminateYes(void *data, Evas *evas, Evas_Object *obj,
void *event_info)
{
- ICO_PRF("TOUCH_EVENT TermYes Up app=%s", terminate_appid);
+ Evas_Event_Mouse_Down *info = reinterpret_cast<Evas_Event_Mouse_Down*>(event_info);
+
+ ICO_PRF("TOUCH_EVENT TermYes (%d,%d) app=%s",
+ info->output.x, info->output.y, terminate_appid);
// play opration sound
CicoSound::GetInstance()->PlayOperationSound();
*/
/*--------------------------------------------------------------------------*/
void
-CicoHSMenuTouch::TouchUpTerminateNo(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+CicoHSMenuTouch::TouchUpTerminateNo(void *data, Evas *evas, Evas_Object *obj,
+ void *event_info)
{
- ICO_PRF("TOUCH_EVENT TermNo Up app=%s", terminate_appid);
+ Evas_Event_Mouse_Down *info = reinterpret_cast<Evas_Event_Mouse_Down*>(event_info);
+
+ ICO_PRF("TOUCH_EVENT TermNo (%d,%d) app=%s",
+ info->output.x, info->output.y, terminate_appid);
// play opration sound
CicoSound::GetInstance()->PlayOperationSound();
static void Finalize(void);
static void TouchDownMenu(void *data, Evas *evas, Evas_Object *obj, void *event_info);
static void TouchUpMenu(void *data, Evas *evas, Evas_Object *obj, void *event_info);
-
+ static void FocusOutEvas(void *data, Evas *evas, void *event_info);
static void TouchDownTerm(void *data, Evas *evas, Evas_Object *obj, void *event_info);
static void TouchUpTerm(void *data, Evas *evas, Evas_Object *obj, void *event_info);
-
static void TouchUpTerminateYes(void *data, Evas *evas, Evas_Object *obj, void *event_info);
static void TouchUpTerminateNo(void *data, Evas *evas, Evas_Object *obj, void *event_info);
static Eina_Bool LongPushed(void *data);
+ static void SetGrabbedObject(Evas_Object *object);
private:
static char terminate_appid[ICO_HS_MAX_PROCESS_NAME];
static bool long_act;
static bool touch_down;
+ static Evas_Object *grabbed_object;
+
protected:
CicoHSMenuTouch operator=(const CicoHSMenuTouch&);
CicoHSMenuTouch(const CicoHSMenuTouch&);
CicoHSMenuTouch::TouchDownMenu,NULL);
evas_object_event_callback_add(canvas, EVAS_CALLBACK_MOUSE_UP,
CicoHSMenuTouch::TouchUpMenu,NULL);
+ evas_event_callback_add(evas, EVAS_CALLBACK_CANVAS_FOCUS_OUT,
+ CicoHSMenuTouch::FocusOutEvas, (void *)canvas);
evas_object_move(canvas, 0, 0);
evas_object_resize(canvas, width, height);
evas_object_show(canvas);
#include "CicoHSAppInfo.h"
#include "CicoHomeScreen.h"
#include "CicoHSSystemState.h"
+#include "CicoHSMenuTouch.h"
#include "ico_syc_inputctl.h"
#include <linux/input.h>
int CicoHSSwipeTouch::touch_state_a_x;
int CicoHSSwipeTouch::touch_state_a_y;
-int CicoHSSwipeTouch::touch_down;
+bool CicoHSSwipeTouch::touch_down;
bool CicoHSSwipeTouch::set_xy_pos;
int CicoHSSwipeTouch::num_windows;
int width, int height)
{
num_windows = 0;
- touch_down = 0;
+ touch_down = false;
set_xy_pos = false;
ctl_bar_window = ctl_bar;
CicoHSSwipeInputWindow *window;
int x, y;
- touch_down ++;
+ touch_down = true;
info = reinterpret_cast<Evas_Event_Mouse_Down*>(event_info);
window = (CicoHSSwipeInputWindow *)data;
x = info->output.x + window->GetPosX();
y = info->output.y + window->GetPosY();
- ICO_PRF("TOUCH_EVENT Swipe Down (%d,%d)->(%d,%d) (%d)",
- info->output.x, info->output.y, x, y, touch_down);
+ ICO_PRF("TOUCH_EVENT Swipe Down (%d,%d)->(%d,%d)",
+ info->output.x, info->output.y, x, y);
if ((x >= 0) && (x < 4096) && (y >= 0) && (y < 4096)) {
if (set_xy_pos == false) {
touch_state_a_x = x;
touch_state_a_y = y;
}
+
+ CicoHSMenuTouch::SetGrabbedObject(obj);
}
/*--------------------------------------------------------------------------*/
touch_state_a_y = y;
}
- ICO_PRF("TOUCH_EVENT Swipe Up (%d,%d)->(%d,%d) before(%d,%d) (%d)",
- info->output.x, info->output.y, touch_state_a_x, touch_state_a_y,
- touch_state_b_x, touch_state_b_y, touch_down - 1);
+ CicoHSMenuTouch::SetGrabbedObject(NULL);
- if (touch_down > 1) {
- touch_down --;
- ICO_DBG("TouchUpSwipe: touch counter not 0(%d), Skip", touch_down);
- return;
- }
+ ICO_PRF("TOUCH_EVENT Swipe Up (%d,%d)->(%d,%d) before(%d,%d)",
+ info->output.x, info->output.y, touch_state_a_x, touch_state_a_y,
+ touch_state_b_x, touch_state_b_y);
- if (touch_down == 0) {
+ if (touch_down == false) {
set_xy_pos = false;
- ICO_DBG("TouchUpSwipe: no touch down, Skip");
+ ICO_DBG("TouchUpSwipe: No Down, Skip");
return;
}
- touch_down --;
+ touch_down = false;
if (set_xy_pos == false) {
ICO_DBG("TouchUpSwipe: unknown coordinate, Skip");
touch_state_a_x = x;
touch_state_a_y = y;
- if ((set_xy_pos == false) || (touch_down == 0)) {
+ if ((set_xy_pos == false) || (touch_down == false)) {
set_xy_pos = true;
touch_state_b_x = touch_state_a_x;
touch_state_b_y = touch_state_a_y;
static int touch_state_a_x;
static int touch_state_a_y;
- static int touch_down;
+ static bool touch_down;
static bool set_xy_pos;
static int num_windows;
static CicoHSSwipeInputWindow* swipe_windows[ICO_HS_MAX_SWIPEWINDOWS];
}
}
+//--------------------------------------------------------------------------
+/**
+ * @brief get this class instance
+ */
+//--------------------------------------------------------------------------
+CicoHomeScreen*
+CicoHomeScreen::getInstance(void)
+{
+ return hs_instance;
+}
+
/*--------------------------------------------------------------------------*/
/**
* @brief CicoHomeScreen::ShowHomeScreenLayer
public:
CicoHomeScreen(void);
~CicoHomeScreen(void);
+ static CicoHomeScreen* getInstance(void);
int Initialize(int orientation,CicoGKeyFileConfig *config);
void InitializeAppHistory(void);
void Finalize(void);
}
// icon setup
m_icon = evas_object_image_filled_add(ecore_evas_get(m_window));
+ evas_object_pointer_mode_set(m_icon, EVAS_OBJECT_POINTER_MODE_NOGRAB);
edje_object_part_swallow(m_theme, "icon", m_icon);
/* getting size of screen */
/* home screen size is full of display*/
ICO_DBG("Initialize start windowobj_.");
windowobj_ = evas_object_rectangle_add(ecore_evas_get(window_));
+ evas_object_pointer_mode_set(windowobj_, EVAS_OBJECT_POINTER_MODE_NOGRAB);
// statusbar RGBcolor setting
evas_object_color_set(windowobj_, 0, 0, 0, 255);