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