Enlightenment CVS committal

Author  : devilhorns
Project : e_modules
Module  : echo

Dir     : e_modules/echo/src


Modified Files:
        e_mod_main.c 


Log Message:
Patch from iamsthitha which adds sending signals to an echo edje for
changing volumes & mute.
 - Fixed formatting issues in patch.
 - Changed some function names in patch.
 - Changed signal name for mute.
 

===================================================================
RCS file: /cvs/e/e_modules/echo/src/e_mod_main.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_mod_main.c        10 Jan 2008 07:39:49 -0000      1.4
+++ e_mod_main.c        10 Jan 2008 19:49:59 -0000      1.5
@@ -24,6 +24,11 @@
 static void _echo_cb_volume_right_change(void *data, Evas_Object *obj, void 
*event);
 static void _echo_cb_mute_change(void *data, Evas_Object *obj, void *event);
 static void _echo_cb_update_inst(void *data);
+static void _echo_cb_signal_volume_left_up(void *data, Evas_Object *obj, const 
char *emission, const char *source);
+static void _echo_cb_signal_volume_left_down(void *data, Evas_Object *obj, 
const char *emission, const char *source);
+static void _echo_cb_signal_volume_right_up(void *data, Evas_Object *obj, 
const char *emission, const char *source);
+static void _echo_cb_signal_volume_right_down(void *data, Evas_Object *obj, 
const char *emission, const char *source);
+static void _echo_cb_signal_volume_mute_toggle(void *data, Evas_Object *obj, 
const char *emission, const char *source);
 
 typedef struct _Instance Instance;
 struct _Instance 
@@ -70,6 +75,16 @@
 
    evas_object_event_callback_add(inst->o_base, EVAS_CALLBACK_MOUSE_DOWN, 
                                   _echo_cb_mouse_down, inst);
+   edje_object_signal_callback_add(inst->o_base, "e,action,volume,left,up", 
"", 
+                                   _echo_cb_signal_volume_left_up, inst);
+   edje_object_signal_callback_add(inst->o_base, "e,action,volume,left,down", 
"", 
+                                   _echo_cb_signal_volume_left_down, inst);
+   edje_object_signal_callback_add(inst->o_base, "e,action,volume,right,up", 
"", 
+                                   _echo_cb_signal_volume_right_up, inst);
+   edje_object_signal_callback_add(inst->o_base, "e,action,volume,right,down", 
"", 
+                                   _echo_cb_signal_volume_right_down, inst);
+   edje_object_signal_callback_add(inst->o_base, 
"e,action,volume,mute,toggle", "", 
+                                   _echo_cb_signal_volume_mute_toggle, inst);
 
    inst->left_vol = inst->right_vol = -1;
    if (echo_sys->get_volume)
@@ -102,6 +117,21 @@
      {
         evas_object_event_callback_del(inst->o_base, EVAS_CALLBACK_MOUSE_DOWN, 
                                        _echo_cb_mouse_down);
+       edje_object_signal_callback_del(inst->o_base, 
+                                        "e,action,volume,left,up", "", 
+                                        _echo_cb_signal_volume_left_up);
+       edje_object_signal_callback_del(inst->o_base, 
+                                        "e,action,volume,left,down", "", 
+                                        _echo_cb_signal_volume_left_down);
+       edje_object_signal_callback_del(inst->o_base, 
+                                        "e,action,volume,right,up", "", 
+                                        _echo_cb_signal_volume_right_up);
+       edje_object_signal_callback_del(inst->o_base, 
+                                        "e,action,volume,right,down", "", 
+                                        _echo_cb_signal_volume_right_down);
+       edje_object_signal_callback_del(inst->o_base, 
+                                        "e,action,volume,mute,toggle", "", 
+                                        _echo_cb_signal_volume_mute_toggle);
         evas_object_del(inst->o_base);
      }
    E_FREE(inst);
@@ -493,9 +523,13 @@
 _echo_cb_update_inst(void *data) 
 {
    Instance *inst = NULL;
+   Edje_Message_Int *left_vol_msg, *right_vol_msg;
 
    if (!(inst = data)) return;
 
+   left_vol_msg = malloc(sizeof(Edje_Message_Int));
+   right_vol_msg = malloc(sizeof(Edje_Message_Int));
+
    if (inst->right_vol == -1) 
      {
         if (inst->left_vol == 0)
@@ -506,6 +540,9 @@
           edje_object_signal_emit(inst->o_base, "e,action,volume,medium", "");
         else if (inst->left_vol >= 66)
           edje_object_signal_emit(inst->o_base, "e,action,volume,high", "");
+
+       left_vol_msg->val = inst->left_vol;
+       right_vol_msg->val = inst->left_vol;
      }
    else 
      {
@@ -526,6 +563,9 @@
           edje_object_signal_emit(inst->o_base, 
"e,action,volume,right,medium", "");
         else if (inst->right_vol >= 66)
           edje_object_signal_emit(inst->o_base, "e,action,volume,right,high", 
"");
+
+       left_vol_msg->val = inst->left_vol;
+       right_vol_msg->val = inst->right_vol;
      }
    
    if ((echo_sys->can_mute) && (echo_sys->can_mute(echo_cfg->channel.name))) 
@@ -537,4 +577,97 @@
      }
    else
      edje_object_signal_emit(inst->o_base, "e,action,volume,unmute", "");
+
+   edje_object_message_send(inst->o_base, EDJE_MESSAGE_INT, 0, left_vol_msg);
+   edje_object_message_send(inst->o_base, EDJE_MESSAGE_INT, 1, right_vol_msg);
+   edje_object_signal_emit(inst->o_base, "e,action,volume,change", "");
+}
+
+static void
+_echo_cb_signal_volume_left_up(void *data, Evas_Object *obj, const char 
*emission, const char *source)
+{
+   Instance *inst;
+
+   if (!(inst = data)) return;
+
+   inst->left_vol = inst->right_vol = -1;
+   if (echo_sys->get_volume)
+     echo_sys->get_volume(echo_cfg->channel.name, 
+                         &(inst->left_vol), &(inst->right_vol));
+   if (echo_sys->set_volume)
+     echo_sys->set_volume(echo_cfg->channel.name, inst->left_vol + 5, 
inst->right_vol);
+
+   _echo_cb_update_inst(inst);
+}
+
+static void
+_echo_cb_signal_volume_left_down(void *data, Evas_Object *obj, const char 
*emission, const char *source)
+{
+   Instance *inst;
+
+   if (!(inst = data)) return;
+
+   inst->left_vol = inst->right_vol = -1;
+   if (echo_sys->get_volume)
+     echo_sys->get_volume(echo_cfg->channel.name, 
+                         &(inst->left_vol), &(inst->right_vol));
+   if (echo_sys->set_volume)
+     echo_sys->set_volume(echo_cfg->channel.name, inst->left_vol - 5, 
inst->right_vol);
+
+   _echo_cb_update_inst(inst);
+}
+
+static void
+_echo_cb_signal_volume_right_up(void *data, Evas_Object *obj, const char 
*emission, const char *source)
+{
+   Instance *inst;
+
+   if (!(inst = data)) return;
+
+   inst->left_vol = inst->right_vol = -1;
+   if (echo_sys->get_volume)
+     echo_sys->get_volume(echo_cfg->channel.name, 
+                         &(inst->left_vol), &(inst->right_vol));
+   if (echo_sys->set_volume)
+     echo_sys->set_volume(echo_cfg->channel.name, inst->left_vol, 
+                          inst->right_vol + 5);
+
+   _echo_cb_update_inst(inst);
+}
+
+static void
+_echo_cb_signal_volume_right_down(void *data, Evas_Object *obj, const char 
*emission, const char *source)
+{
+   Instance *inst;
+
+   if (!(inst = data)) return;
+
+   inst->left_vol = inst->right_vol = -1;
+   if (echo_sys->get_volume)
+     echo_sys->get_volume(echo_cfg->channel.name, 
+                         &(inst->left_vol), &(inst->right_vol));
+   if (echo_sys->set_volume)
+     echo_sys->set_volume(echo_cfg->channel.name, inst->left_vol, 
+                          inst->right_vol - 5);
+
+   _echo_cb_update_inst(inst);
+}
+
+static void
+_echo_cb_signal_volume_mute_toggle(void *data, Evas_Object *obj, const char 
*emission, const char *source)
+{
+   Instance *inst;
+
+   if (!(inst = data)) return;
+
+   inst->left_vol = inst->right_vol = -1;
+   if ((echo_sys->can_mute) && (echo_sys->can_mute(echo_cfg->channel.name)))
+     {
+        if (echo_sys->get_mute)
+         echo_sys->get_mute(echo_cfg->channel.name, &(inst->mute));
+       if (echo_sys->set_mute)
+         echo_sys->set_mute(echo_cfg->channel.name, !(inst->mute));
+     }
+
+   _echo_cb_update_inst(inst);
 }



-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to