static void _cb_method_win_info_list_get(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
static void _cb_method_window_register(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
static void _cb_method_zone_rotation_change(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
+static void _cb_method_window_effect(void *data, const Eldbus_Message *msg, Eldbus_Pending *p);
/* callbacks - signal */
static void _cb_signal_vis_changed(void *data, const Eldbus_Message *msg);
static void _cb_signal_stack_changed(void *data, const Eldbus_Message *msg);
static void _cb_signal_win_rot_changed(void *data, const Eldbus_Message *msg);
static void _cb_signal_focus_changed(void *data, const Eldbus_Message *msg);
+static void _cb_signal_effect_run(void *data, const Eldbus_Message *msg);
/* callbacks - ecore */
static Eina_Bool _cb_ecore_key(void *data, int type, void *event);
wl_array_init(&options2);
tizen_launch_splash_launch(tzlaunch_splash, path, type,
- 24, 0, 0,
- effect_type, NULL, &options2);
- wl_array_release(&options2);
+ 24, 0, 0,
+ effect_type, NULL, &options2);
+ wl_array_release(&options2);
return EINA_TRUE;
}
}
Eina_Bool
+etRunner::setWindowEffectType(etWin *tw, E_TC_Window_Effect_type type)
+{
+ Eldbus_Pending *p = NULL;
+ Eina_Bool accepted = EINA_FALSE;
+
+ this->ev.effect.type = type;
+ this->ev.win = tw->elm_win;
+
+ p = eldbus_proxy_call(dbus.proxy,
+ "SetWindowEffect",
+ _cb_method_window_effect,
+ &accepted,
+ -1,
+ "ui",
+ tw->native_win,
+ type);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(p, EINA_FALSE);
+
+ this->ev.sh = eldbus_proxy_signal_handler_add(dbus.proxy,
+ "EffectRun",
+ _cb_signal_effect_run,
+ this);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(this->ev.sh, EINA_FALSE);
+ work();
+
+ return accepted;
+}
+
+Eina_Bool
etRunner::freezeEvent()
{
Eldbus_Pending *p = NULL;
this->generateKeyEvent(this->ev.key.name, 1.0);
break;
+ case E_TC_EVENT_TYPE_EFFECT:
+ EINA_SAFETY_ON_NULL_GOTO(this->ev.sh, finish);
+ break;
+
case E_TC_EVENT_TYPE_EFFECT_EVAS_CB:
this->ev.effect.state_smcb = E_TC_EVAS_SMART_CB_STATE_NONE;
evas_object_smart_callback_add(this->ev.win, effect_started, _cb_evas_smart_cb_effect_started, this);
}
if (sh) eldbus_signal_handler_del(sh);
+ if (this->ev.sh) eldbus_signal_handler_del(this->ev.sh);
+
if (eh) ecore_event_handler_del(eh);
if (eh2) ecore_event_handler_del(eh2);
etRunner::get().finishWork();
}
+static void
+_cb_method_window_effect(void *data,
+ const Eldbus_Message *msg,
+ Eldbus_Pending *p)
+{
+ const char *name = NULL, *text = NULL;
+ Eina_Bool res = EINA_FALSE;
+ Eina_Bool *allowed = (Eina_Bool *)data;
+
+ *allowed = EINA_FALSE;
+
+ res = eldbus_message_error_get(msg, &name, &text);
+ EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+ res = eldbus_message_arguments_get(msg, "b", allowed);
+ EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+ EINA_SAFETY_ON_FALSE_GOTO(*allowed, finish);
+
+finish:
+ if ((name) || (text))
+ {
+ ERR("errname: %s errmsg: %s\n", name, text);
+ }
+
+ etRunner::get().finishWork();
+}
+
/* callbacks - signal */
static void
_cb_signal_vis_changed(void *data,
}
}
+static void
+_cb_signal_effect_run(void *data,
+ const Eldbus_Message *msg)
+{
+ etRunner *runner = (etRunner *)data;
+ const char *name = NULL, *text = NULL;
+ Eina_Bool res = EINA_FALSE;
+ unsigned int effect_type = 0;
+ Ecore_Window id;
+
+ res = eldbus_message_error_get(msg, &name, &text);
+ EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+ res = eldbus_message_arguments_get(msg, "ui", &id, &effect_type);
+ EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+
+ if (effect_type == runner->ev.effect.type)
+ {
+ runner->ev.response = runner->ev.request;
+ elm_exit();
+ }
+finish:
+ if ((name) || (text))
+ {
+ ERR("errname:%s errmsg:%s\n", name, text);
+ }
+}
+
/* callbacks - timer */
static Eina_Bool
_cb_work_timeout(void *data)
--- /dev/null
+#include "e_test_event.h"
+#include "e_test_base.h"
+
+class etTestEffect : public ::etTCBase
+{
+ public:
+ etTestEffect() { };
+ ~etTestEffect() { };
+
+ protected:
+ etWin *tw = NULL;
+
+};
+
+TEST_F(etTestEffect, effect_show)
+{
+ Eina_Bool res = EINA_FALSE;
+ tw = initNormalWin("TCWin_Effect_Show", EINA_FALSE, EINA_FALSE);
+ ASSERT_TRUE(tw != NULL) << "failed to initiation window";
+
+ res = etRunner::get().setWindowEffectType(tw, E_TC_EFFECT_SHOW);
+ ASSERT_TRUE(res);
+
+ tw->updateGeometry();
+ tw->show();
+
+ res = etRunner::get().waitEvent(E_TC_EVENT_TYPE_EFFECT);
+ ASSERT_TRUE(res);
+
+ return;
+}
+
+TEST_F(etTestEffect, effect_hide)
+{
+ Eina_Bool res = EINA_FALSE;
+ tw = initNormalWin("TCWin_Effect_Hide", EINA_FALSE, EINA_FALSE);
+ ASSERT_TRUE(tw != NULL) << "failed to initiation window";
+
+ tw->updateGeometry();
+ tw->show();
+ etRunner::get().work(1.1);
+
+ res = etRunner::get().setWindowEffectType(tw, E_TC_EFFECT_HIDE);
+ ASSERT_TRUE(res);
+ etRunner::get().work(1.1);
+
+ tw->hide();
+
+ res = etRunner::get().waitEvent(E_TC_EVENT_TYPE_EFFECT);
+ ASSERT_TRUE(res);
+
+ return;
+}