Enlightenment CVS committal

Author  : moom
Project : e_modules
Module  : mixer

Dir     : e_modules/mixer


Modified Files:
        e_mod_main.c 


Log Message:
* Makes the popup window pops down when you click on it


===================================================================
RCS file: /cvs/e/e_modules/mixer/e_mod_main.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- e_mod_main.c        8 Sep 2006 18:03:10 -0000       1.7
+++ e_mod_main.c        10 Sep 2006 20:00:55 -0000      1.8
@@ -45,9 +45,9 @@
    Evas_Object *slider;
    
    int         x, y, w, h;
-   int         popped_up;
    int         to_top;
-   double      slide_start_time;
+   int         popped_up;
+   double      start_time;
    Ecore_Animator *slide_animator;
 };
    
@@ -70,12 +70,13 @@
 static void         _mixer_menu_cb_configure (void *data, E_Menu *m, 
                                              E_Menu_Item *mi);
 
-static void _mixer_window_simple_pop_up       (Instance *inst);
-static int  _mixer_window_simple_animator_cb  (void *data);
-static void _mixer_window_simple_mouse_up_cb  (void *data, Evas *e, 
Evas_Object *obj, void *event_info);
-static void _mixer_window_simple_mouse_out_cb (void *data, Evas *e, 
Evas_Object *obj, void *event_info);
-static void _mixer_window_simple_changed_cb   (void *data, Evas_Object *obj, 
void *event_info);
-static void _mixer_window_simple_resize_cb    (E_Win *win);
+static void _mixer_window_simple_pop_up           (Instance *inst);
+static void _mixer_window_simple_pop_down         (Instance *inst);
+static int  _mixer_window_simple_animator_up_cb   (void *data);
+static int  _mixer_window_simple_animator_down_cb (void *data);
+static void _mixer_window_simple_mouse_up_cb      (void *data, Evas *e, 
Evas_Object *obj, void *event_info);
+static void _mixer_window_simple_changed_cb       (void *data, Evas_Object 
*obj, void *event_info);
+static void _mixer_window_simple_resize_cb        (E_Win *win);
 
 /* Private vars */
 static E_Config_DD *conf_edd = NULL;
@@ -433,15 +434,6 @@
         evas_object_show(win->event_obj);
         evas_object_event_callback_add(win->event_obj, EVAS_CALLBACK_MOUSE_UP,
                                        _mixer_window_simple_mouse_up_cb, win);
-
-       #ifdef DEBUG
-       /* Testing possible method for window destroy. It does work 
-        * with an updated evas, as evas had some null check bugs
-        * (or lack of) which I fixed. Is this the behavior we're 
-        * looking for ? */
-        evas_object_event_callback_add(win->event_obj, EVAS_CALLBACK_MOUSE_OUT,
-                                       _mixer_window_simple_mouse_out_cb, win);
-        #endif
        
         win->bg_obj = edje_object_add(e_win_evas_get(win->window));
         e_theme_edje_object_set(win->bg_obj, "base/theme/menus",
@@ -515,26 +507,44 @@
    e_win_resize(win->window, win->w, 0);
    e_win_show(win->window);
    
-   win->slide_start_time = ecore_time_get();
-   if (!win->slide_animator)
-     win->slide_animator = 
ecore_animator_add(_mixer_window_simple_animator_cb, win);
+   win->start_time = ecore_time_get();
+   if (win->slide_animator)
+      ecore_animator_del(win->slide_animator);
+   win->slide_animator = 
ecore_animator_add(_mixer_window_simple_animator_up_cb, win);
+   win->popped_up = 1;
+}
+
+/* Makes the simple window containing the slider pop up */
+static void
+_mixer_window_simple_pop_down(Instance *inst)
+{
+   Mixer_Win_Simple *win;
+   
+   if (!(win = inst->mixer->simple_win) || !win->popped_up)
+     return;
+   
+   win->start_time = ecore_time_get();
+   if (win->slide_animator)
+      ecore_animator_del(win->slide_animator);
+   win->slide_animator = 
ecore_animator_add(_mixer_window_simple_animator_down_cb, win);
+   win->popped_up = 0;
 }
 
-/* Makes the simple window slide */
+/* Makes the window slide when it pops up */
 static int 
-_mixer_window_simple_animator_cb(void *data)
+_mixer_window_simple_animator_up_cb(void *data)
 {
    Mixer_Win_Simple *win;
-   double percent;
+   double progress;
    int prev_h, h;
    
    if (!(win = data))
      return 1;
    
-   percent = (ecore_time_get() - win->slide_start_time) / SLIDE_LENGTH;
-   percent = E_CLAMP(percent, 0.0, 1.0);
-   percent = 1.0 - (1.0 - percent) * (1.0 - percent);
-   h = percent * win->h;
+   progress = (ecore_time_get() - win->start_time) / SLIDE_LENGTH;
+   progress = E_CLAMP(progress, 0.0, 1.0);
+   progress = 1.0 - (1.0 - progress) * (1.0 - progress);
+   h = progress * win->h;
    prev_h = win->window->h;
    
    if (win->to_top)
@@ -543,7 +553,6 @@
    
    if (h >= win->h)
      {
-       ecore_animator_del(win->slide_animator);
         win->slide_animator = NULL;
         return 0;
      }
@@ -551,58 +560,46 @@
      return 1;
 }
 
-/* Called when the background object of the simple window is released */
-static void 
-_mixer_window_simple_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void 
*event_info)
+/* Makes the simple window pops down in animation */
+static int 
+_mixer_window_simple_animator_down_cb(void *data)
 {
    Mixer_Win_Simple *win;
+   double progress;
+   int prev_h, h;
    
-   if (!(win = data)) return;
+   if (!(win = data))
+     return 1;
    
-   printf("Mouse up\n");
+   progress = (ecore_time_get() - win->start_time) / SLIDE_LENGTH;
+   progress = E_CLAMP(progress, 0.0, 1.0);
+   h = (1.0 - progress) * (1.0 - progress) * win->h;
+   prev_h = win->window->h;
+   
+   if (win->to_top)
+     e_win_move(win->window, win->x, win->y - h);
+   e_win_resize(win->window, win->w, h);
+   
+   if (h <= 0)
+     {
+        e_win_hide(win->window);
+        win->slide_animator = NULL;
+        return 0;
+     }
+   else
+     return 1;
 }
 
+/* Called when the background object of the simple window is released */
 static void 
-_mixer_window_simple_mouse_out_cb(void *data, Evas *e, Evas_Object *obj, void 
*event_info) 
+_mixer_window_simple_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void 
*event_info)
 {
    Mixer_Win_Simple *win;
-   Mixer *mixer;
    
    if (!(win = data)) return;
-
-   if (win->slide_animator) 
-     { 
-       ecore_animator_del(win->slide_animator);
-       win->slide_animator = NULL;
-     }
-   
-   if (win->slider) 
-     {
-        evas_object_smart_callback_del(win->slider, "changed",
-                                       _mixer_window_simple_changed_cb);
-       evas_object_del(win->slider);
-     }
-   
-   if (win->bg_obj)
-     evas_object_del(win->bg_obj);
-
-   if (win->event_obj) 
-     {
-        evas_object_event_callback_del(win->event_obj, EVAS_CALLBACK_MOUSE_UP,
-                                       _mixer_window_simple_mouse_up_cb);
-        evas_object_event_callback_del(win->event_obj, EVAS_CALLBACK_MOUSE_OUT,
-                                       _mixer_window_simple_mouse_out_cb);
-       evas_object_del(win->event_obj);
-     }
    
-   if (win->window)
-     e_object_del(E_OBJECT(win->window));
-
-   if (win->mixer) 
-     {
-       mixer = win->mixer;
-       mixer->simple_win =  NULL;
-     }
+   printf("Mouse up\n");
+   _mixer_window_simple_pop_down(win->mixer->inst);
 }
 
 /* Called when the value of the slider of the simple window is changed */



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to