summaryrefslogtreecommitdiff
path: root/main/src/view/ivug-slider-mouse.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/view/ivug-slider-mouse.c')
-rwxr-xr-xmain/src/view/ivug-slider-mouse.c439
1 files changed, 0 insertions, 439 deletions
diff --git a/main/src/view/ivug-slider-mouse.c b/main/src/view/ivug-slider-mouse.c
deleted file mode 100755
index 2f3f190..0000000
--- a/main/src/view/ivug-slider-mouse.c
+++ /dev/null
@@ -1,439 +0,0 @@
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.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.tizenopensource.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 "ivug-common.h"
-#include "ivug-mouse-event.h"
-#include "ivug-anim.h"
-#include "ivug-slider-item.h"
-#include "ivug-slider.h"
-#include "ivug-effect.h"
-
-#include "ivug-slider-priv.h"
-
-#define SIG_CLICKED "slider,clicked"
-#define SIG_LONGPRESSED "slider,longpressed"
-
-#define SHIFT_THRESHOLD (0.0f) // 52%
-
-
-static bool _ivug_slider_check_flick(MouseEvent *down, MouseEvent *up)
-{
-#define FLICK_TIME_MAX (200) //flick time value.
-#define FLICK_WIDTH_MIN (elm_config_finger_size_get() >> 2)
-
- if ( up->event_flags & EVAS_EVENT_FLAG_ON_HOLD )
- {
- MSG_SLIDER_HIGH("On hold detected");
- return false;
- }
-
-// Check pinch zoom right before zoom
- if ( (up->timestamp - down->timestamp) > FLICK_TIME_MAX )
- {
- MSG_SLIDER_HIGH("Not flick opertion. TimeGap=%d", up->timestamp - down->timestamp);
- return false;
- }
-
-// TODO : Consider Y axis flick.
- int delta_x = up->x - down->x;
- int delta_y = up->y - down->y;
-
- if (abs(delta_x) < FLICK_WIDTH_MIN)
- {
- MSG_SLIDER_HIGH("Not flick opertion. Delta X=%d Delta Y=%d", delta_x, delta_y);
- return false;
- }
-
- return true;
-
-}
-
-
-static bool _ivug_slider_check_click(MouseEvent *down, MouseEvent *up)
-{
-#define CLICK_TIME_MIN (7)
-#define CLICK_TIME_MAX (500) /* 500 < long press */
-
-#define CLICK_WIDTH_MAX (elm_config_finger_size_get() >> 2)
-
- if ( down->device != up->device )
- {
- MSG_SLIDER_HIGH("Not click. Device=%d %d", down->device , up->device);
- return false;
- }
-
- if (up->button_flags & EVAS_BUTTON_DOUBLE_CLICK)
- {
- MSG_SLIDER_HIGH("Up.. Double clicked!!");
- return false;
- }
-
- int dTS = (up->timestamp - down->timestamp);
- if ( (dTS < CLICK_TIME_MIN) || (dTS > CLICK_TIME_MAX) )
- {
- MSG_SLIDER_HIGH("Not click. TS=%d", (up->timestamp - down->timestamp));
- return false;
- }
-
- unsigned int dist = get_distance(down->x, down->y, up->x, up->y);
-
- if ( dist < (unsigned int)CLICK_WIDTH_MAX)
- {
- MSG_SLIDER_HIGH("Detect Clicked event. TS=%d, Dist=%d", dTS, dist);
- return true;
- }
-
- MSG_SLIDER_HIGH("Not Click : TS=%dms Dis=%d", dTS, dist);
-
- return false;
-}
-
-static Eina_Bool _long_pressed(void *data)
-{
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(data);
-
- if (!sd) return ECORE_CALLBACK_CANCEL;
-
- sd->long_timer = NULL;
-
- Evas_Coord_Point down;
-
- down.x = sd->down.x;
- down.y = sd->down.y;
-
- evas_object_smart_callback_call(data, SIG_LONGPRESSED, &down);
-
- MSG_SLIDER_HIGH("Long pressed!!!!!");
- return ECORE_CALLBACK_CANCEL;
-}
-
-static Eina_Bool _clicked(void *data)
-{
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(data);
-
- if (!sd) return ECORE_CALLBACK_CANCEL;
-
- sd->click_timer = NULL;
-
- Evas_Coord_Point down;
-
- down.x = sd->down.x;
- down.y = sd->down.y;
-
- // Check video icon clicked or not/
- Slide_Item *si = sd->slide[CENTER_SLIDE];
-
- if ( ivug_slider_item_icon_click_check(si, down.x, down.y) == true ) // Video icon clicked.
- {
- MSG_SLIDER_HIGH("Video icon clicked!!!!!");
-
- evas_object_smart_callback_call(data, "slider,clicked,icon", &down);
-
- return ECORE_CALLBACK_CANCEL;
- }
-
- if(sd->ss_state == SLIDE_SHOW_RUNNING)/* this click is for stop slide show */
- {
- ivug_slider_stop_slide_show(sd->obj);
- return ECORE_CALLBACK_CANCEL;
- }
-
- evas_object_smart_callback_call(data, SIG_CLICKED, &down); // For change menu visibility
-
- return ECORE_CALLBACK_CANCEL;
-}
-
-
-void _ivug_on_mouse_down(Evas_Object *obj, MouseEvent *down, void *data)
-{
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(data);
- Slide_Item* si = sd->slide[CENTER_SLIDE];
-
- MSG_SLIDER_HIGH("%s. down->XY(%d,%d)", __func__, down->x, down->y);
-
-//save down position.
- sd->down = *down;
-
-// End animation
- if(sd->animator)
- {
- ecore_animator_del(sd->animator);
- sd->animator = NULL;
-
- MSG_SLIDER_HIGH("Animation is working. stopping animation. Current SI->XY(%d,%d)", si->x, si->y);
- }
-
- sd->edge = _ivug_slider_edge_state_get(si);
-
- if (down->button_flags & EVAS_BUTTON_DOUBLE_CLICK)
- {
- MSG_SLIDER_HIGH("Double clicked!!");
- }
-
- if (sd->long_timer)
- {
- ecore_timer_del(sd->long_timer);
- sd->long_timer = NULL;
- }
-
- if (sd->click_timer)
- {
- ecore_timer_del(sd->click_timer);
- sd->click_timer = NULL;
- }
-
- if ( sd->ss_state == SLIDE_SHOW_RUNNING)
- {
-// Stop slide show if running. BUG : When user click , menu bar is not visible.
-// Evas_Object *slider = (Evas_Object *)data;
- //ivug_slider_stop_slide_show(slider); // data is Evas_Object
-
- return;
- }
-
- if ( abs(si->x) < IMAGE_MOVE_MARGIN)
- {
- MSG_SLIDER_HIGH("Creating long pressed timer");
- sd->long_timer = ecore_timer_add(elm_config_longpress_timeout_get(), _long_pressed, data);
- }
-}
-
-
-void _ivug_on_mouse_up(Evas_Object *obj, MouseEvent *up, void *data)
-{
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(data);
-
- sd->up = *up;
-
- Slide_Item *si = sd->slide[CENTER_SLIDE];
-
- MSG_SLIDER_HIGH("Mouse Up : si->XYWH(%d,%d,%d,%d)", si->x, si->y, si->w, si->h);
-
- if (sd->long_timer)
- {
- ecore_timer_del(sd->long_timer);
- sd->long_timer = NULL;
- }
-
-// Find Scroll Direction
- shift_direction_t dir = SLIDE_SHIFT_NONE;
-
-// TODO How to make simpler below routine???
- if ( _ivug_slider_check_flick(&sd->down, up) == true) // If flick
- {
- int delta_x = up->x - sd->down.x;
-// int delta_y = up->y - sd->down.y;
-
- {
- if ( (sd->edge & SLIDE_RIGHT_EDGE) && (delta_x < 0)) // Mouse : <--
- {
- // <---------
- if ( sd->slide[NEXT_SLIDE]->state != SLIDE_STATE_NONE )
- {
- dir = SLIDE_SHIFT_TO_RIGHT;
- }
- }
- else if ( (sd->edge & SLIDE_LEFT_EDGE) && (delta_x > 0) ) // Mouse : -->
- {
- // ------>
- if ( sd->slide[PREV_SLIDE]->state != SLIDE_STATE_NONE )
- {
- dir = SLIDE_SHIFT_TO_LEFT;
- }
- }
- }
- }
- else
- {
- MSG_SLIDER_HIGH("Si->x=%d", si->x);
-// if ( si->x == 0 ) // If not moving state
-// {
- if ( _ivug_slider_check_click(&sd->down, up) == true )
- {
- sd->click_timer = ecore_timer_add(0.2f, _clicked, data);
- // Clicked event
-// evas_object_smart_callback_call(data, SIG_CLICKED, &sd->down.x);
- }
-
-// }
-
- // Not flick. check up position.
- if ( si->x > sd->w * (SHIFT_THRESHOLD) )
- {
- // Scroll to --->
- if ( sd->slide[PREV_SLIDE]->state != SLIDE_STATE_NONE ) // Check left end
- {
- dir = SLIDE_SHIFT_TO_LEFT;
- }
- }
- else if (si->x + si->w < sd->w * (1.0f - SHIFT_THRESHOLD) )
- {
- // Scroll to <---
- if ( sd->slide[NEXT_SLIDE]->state != SLIDE_STATE_NONE ) // Check left end
- {
- dir = SLIDE_SHIFT_TO_RIGHT;
- }
- }
- }
-
- switch(dir)
- {
- case SLIDE_SHIFT_TO_LEFT:
- MSG_SLIDER_HIGH("Scroll --->");
-
- _ivug_slider_slide_update(sd, sd->slide[CENTER_SLIDE]->x,
- sd->slide[CENTER_SLIDE]->w + IMAGE_BETWEEN_MARGIN);
- if(sd->ss_state == SLIDE_SHOW_RUNNING)
- {
- sd->bSS_SlideFlag = EINA_TRUE;
- ivug_slider_stop_slide_show(sd->obj);
- }
- break;
-
- case SLIDE_SHIFT_TO_RIGHT:
- MSG_SLIDER_HIGH("Scroll <---");
-
- _ivug_slider_slide_update(sd, sd->slide[CENTER_SLIDE]->x,
- -sd->slide[CENTER_SLIDE]->w - IMAGE_BETWEEN_MARGIN);
- if(sd->ss_state == SLIDE_SHOW_RUNNING)
- {
- sd->bSS_SlideFlag = EINA_TRUE;
- ivug_slider_stop_slide_show(sd->obj);
- }
- break;
-
- case SLIDE_SHIFT_NONE:
-
- MSG_SLIDER_HIGH("Scroll to center");
-
- if ( sd->slide[CENTER_SLIDE]->x == 0 )
- {
- MSG_SLIDER_WARN("No need to animation");
- return;
- }
-
- _ivug_slider_slide_update(sd,sd->slide[CENTER_SLIDE]->x , 0);
-
- break;
-
- }
-
-
-
-}
-
-
-void _ivug_on_mouse_move(Evas_Object *obj, MouseEvent *prev, MouseEvent *cur, void *data)
-{
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(data);
- Slide_Item* si = sd->slide[CENTER_SLIDE];
-
- if (sd->long_timer)
- {
- Evas_Coord dx, dy;
- dx = sd->down.x - cur->x;
- dx *= dx;
- dy =sd->down.y - cur->y;
- dy *= dy;
-
- if ((dx + dy) > LONG_PRESS_MARGIN * LONG_PRESS_MARGIN)
- {
- MSG_SLIDER_HIGH("%s delete long timer. Move:%d Margin:%d", __func__, (dx + dy), LONG_PRESS_MARGIN * LONG_PRESS_MARGIN );
- ecore_timer_del(sd->long_timer); //delete long press.
- sd->long_timer = NULL;
- }
- }
-// MSG_SLIDER_HIGH("%s. XY(%d,%d)", __func__, cur->x, cur->y);
-// TODO : check slide move threshhold
- if ( sd->edge == SLIDE_NO_EDGE )
- {
- MSG_SLIDER_MED("Photocam handle this event");
- return;
- }
-
- int dst_x, dst_y;
-
- dst_x = si->x + (cur->x - prev->x);
- dst_y = si->y + (cur->y - prev->y);
-
- MSG_SLIDER_MED("%s. Edge=%d Cur XY(%d,%d) Prev XY(%d,%d) SI->XY(%d,%d) Dest(%d,%d)", __func__,sd->edge,
- cur->x, cur->y, prev->x, prev->y, si->x, si->y, dst_x, dst_y);
-
-// If left-most or right-most image, do not scroll.
- if ( ivug_slider_item_data_get(sd->slide[NEXT_SLIDE]) == NULL ) // Is left-most image?
- {
- MSG_SLIDER_MED("Next item is NULL. dst_x=%d", dst_x);
-
- if ( dst_x < 0 )
- {
- MSG_SLIDER_MED("No allowed scroll to right");
- _ivug_slider_pass_event_to_item(sd, EINA_FALSE);
- return;
- }
- }
-
- if ( ivug_slider_item_data_get(sd->slide[PREV_SLIDE]) == NULL ) // Is right-most image?
- {
- MSG_SLIDER_MED("Prev item is NULL. dst_x=%d", dst_x);
- if ( dst_x > 0 )
- {
- MSG_SLIDER_MED("No allowed scroll to left");
- _ivug_slider_pass_event_to_item(sd, EINA_FALSE);
- return;
- }
- }
- if ( (sd->edge & SLIDE_LEFT_EDGE) && (dst_x > IMAGE_SCROLL_MARGIN))
- {
- MSG_SLIDER_MED("Case 1. edge=%d, X=%d", sd->edge, dst_x);
-
- _ivug_slider_pass_event_to_item(sd, EINA_FALSE);
-
- _ivug_slider_slide_update_pos(sd, dst_x , si->y); //update
- _ivug_slider_slide_update_shift(sd);
-
- return;
- }
-
- if ( (sd->edge & SLIDE_RIGHT_EDGE) && (dst_x < -IMAGE_SCROLL_MARGIN))
- {
- MSG_SLIDER_MED("Case 2. edge=%d, X=%d", sd->edge, dst_x);
- _ivug_slider_pass_event_to_item(sd, EINA_FALSE);
-
- _ivug_slider_slide_update_pos(sd, dst_x , si->y); //update
- _ivug_slider_slide_update_shift(sd);
-
- return;
- }
-
- if ( (sd->edge & SLIDE_FIT) != SLIDE_FIT)
- {
- MSG_SLIDER_MED("Case 3. edge=%d", sd->edge);
- _ivug_slider_pass_event_to_item(sd, EINA_TRUE); // Send event to phtocam
- sd->edge = SLIDE_NO_EDGE;
- }
-
- if (dst_x >= -IMAGE_SCROLL_MARGIN && dst_x <= IMAGE_SCROLL_MARGIN)
- {
- MSG_SLIDER_MED("Case 4. It isn't over IMAGE_SCROLL_MARGIN");
- return ;
- }
-
- MSG_SLIDER_ERROR("Debug Me NEw edge=%d delta_x=%d si->x=%d", sd->edge, dst_x, si->x);
- return;
-
-}
-