From 0121ec9afc0e02b91e9603482a952d07fda3a200 Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Mon, 18 Jan 2010 02:02:09 +0000 Subject: [PATCH] Add illume-bluetooth module (based on original module from illume) SVN revision: 45273 --- configure.ac | 2 + src/modules/Makefile.am | 2 +- src/modules/illume-bluetooth/Makefile.am | 29 +++ .../e-module-illume-bluetooth.edj | Bin 0 -> 12496 bytes src/modules/illume-bluetooth/e_mod_main.c | 200 ++++++++++++++++++ src/modules/illume-bluetooth/e_mod_main.h | 10 + .../illume-bluetooth/module.desktop.in | 6 + 7 files changed, 248 insertions(+), 1 deletion(-) create mode 100644 src/modules/illume-bluetooth/Makefile.am create mode 100644 src/modules/illume-bluetooth/e-module-illume-bluetooth.edj create mode 100644 src/modules/illume-bluetooth/e_mod_main.c create mode 100644 src/modules/illume-bluetooth/e_mod_main.h create mode 100644 src/modules/illume-bluetooth/module.desktop.in diff --git a/configure.ac b/configure.ac index cae05ece4..08558e55b 100644 --- a/configure.ac +++ b/configure.ac @@ -637,6 +637,8 @@ src/modules/illume-kbd-toggle/Makefile src/modules/illume-kbd-toggle/module.desktop src/modules/illume-mode-toggle/Makefile src/modules/illume-mode-toggle/module.desktop +src/modules/illume-bluetooth/Makefile +src/modules/illume-bluetooth/module.desktop src/modules/illume2/Makefile src/modules/illume2/module.desktop src/modules/illume2/keyboards/Makefile diff --git a/src/modules/Makefile.am b/src/modules/Makefile.am index 6fa0457da..6000a4449 100644 --- a/src/modules/Makefile.am +++ b/src/modules/Makefile.am @@ -243,7 +243,7 @@ SUBDIRS += illume endif if USE_MODULE_ILLUME2 -SUBDIRS += illume2 illume-home illume-softkey illume-keyboard illume-indicator illume-kbd-toggle illume-mode-toggle +SUBDIRS += illume2 illume-home illume-softkey illume-keyboard illume-indicator illume-kbd-toggle illume-mode-toggle illume-bluetooth endif if USE_MODULE_SYSCON diff --git a/src/modules/illume-bluetooth/Makefile.am b/src/modules/illume-bluetooth/Makefile.am new file mode 100644 index 000000000..ea62f0cb2 --- /dev/null +++ b/src/modules/illume-bluetooth/Makefile.am @@ -0,0 +1,29 @@ +MAINTAINERCLEANFILES = Makefile.in +MODULE = illume-bluetooth + +# data files for the module +filesdir = $(libdir)/enlightenment/modules/$(MODULE) +files_DATA = \ +e-module-$(MODULE).edj module.desktop + +EXTRA_DIST = $(files_DATA) + +# the module .so file +INCLUDES = -I. \ + -I$(top_srcdir) \ + -I$(top_srcdir)/src/modules/$(MODULE) \ + -I$(top_srcdir)/src/bin \ + -I$(top_srcdir)/src/lib \ + -I$(top_srcdir)/src/modules \ + @e_cflags@ +pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH) +pkg_LTLIBRARIES = module.la +module_la_SOURCES = e_mod_main.c \ + e_mod_main.h + +module_la_LIBADD = @e_libs@ @dlopen_libs@ +module_la_LDFLAGS = -module -avoid-version +module_la_DEPENDENCIES = $(top_builddir)/config.h + +uninstall: + rm -rf $(DESTDIR)$(libdir)/enlightenment/modules/$(MODULE) diff --git a/src/modules/illume-bluetooth/e-module-illume-bluetooth.edj b/src/modules/illume-bluetooth/e-module-illume-bluetooth.edj new file mode 100644 index 0000000000000000000000000000000000000000..abd07dacefe32038227113768f579a08de800e9e GIT binary patch literal 12496 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 = edje_object_add(gc->evas); + if (!e_theme_edje_object_set(inst->obj, "base/theme/modules/illume-bluetooth", + "modules/illume-bluetooth/main")) + { + snprintf(buff, sizeof(buff), "%s/e-module-illume-bluetooth.edj", + _bt_mod_dir); + edje_object_file_set(inst->obj, buff, "modules/illume-bluetooth/main"); + } + evas_object_show(inst->obj); + + inst->gcc = e_gadcon_client_new(gc, name, id, style, inst->obj); + inst->gcc->data = inst; + + inst->on = -1; + inst->poller = ecore_poller_add(ECORE_POLLER_CORE, 16, _cb_poll, inst); + return inst->gcc; +} + +static void +_gc_shutdown(E_Gadcon_Client *gcc) +{ + Instance *inst; + + if (!(inst = gcc->data)) return; + instances = eina_list_remove(instances, inst); + if (inst->poller) ecore_poller_del(inst->poller); + if (inst->obj) evas_object_del(inst->obj); + E_FREE(inst); +} + +static void +_gc_orient(E_Gadcon_Client *gcc, E_Gadcon_Orient orient) +{ + Instance *inst; + int mw, mh, xw, xh; + + inst = gcc->data; + edje_object_size_min_get(inst->obj, &mw, &mh); + edje_object_size_max_get(inst->obj, &xw, &xh); + if ((mw < 1) || (mh < 1)) + edje_object_size_min_calc(inst->obj, &mw, &mh); + if (mw < 4) mw = 4; + if (mh < 4) mh = 4; + if ((xw > 0) && (xh > 0)) + e_gadcon_client_aspect_set(gcc, xw, xh); + e_gadcon_client_min_size_set(gcc, mw, mh); +} + +static char * +_gc_label(E_Gadcon_Client_Class *cc) +{ + return _("Illume Bluetooth"); +} + +static Evas_Object * +_gc_icon(E_Gadcon_Client_Class *cc, Evas *evas) +{ + Evas_Object *o; + char buff[PATH_MAX]; + + snprintf(buff, sizeof(buff), "%s/e-module-illume-bluetooth.edj", + _bt_mod_dir); + o = edje_object_add(evas); + edje_object_file_set(o, buff, "icon"); + return o; +} + +static const char * +_gc_id_new(E_Gadcon_Client_Class *cc) +{ + char buff[PATH_MAX]; + + snprintf(buff, sizeof(buff), "%s.%d", _gc_class.name, + eina_list_count(instances)); + return strdup(buff); +} + +static int +_cb_poll(void *data) +{ + Instance *inst; + int pon; + + inst = data; + pon = inst->on; + inst->on = _get_interface_class(0xe0); + if (inst->on != pon) + { + if (inst->on) + edje_object_signal_emit(inst->obj, "e,state,active", "e"); + else + edje_object_signal_emit(inst->obj, "e,state,passive", "e"); + } + return 1; +} + +static int +_get_interface_class(int iclass) +{ + Eina_List *devs; + char *name; + + devs = ecore_file_ls("/sys/bus/usb/devices"); + EINA_LIST_FREE(devs, name) + { + char buf[PATH_MAX]; + FILE *f; + + snprintf(buf, sizeof(buf), "%s/%s/%s", + "/sys/bus/usb/devices", name, "bInterfaceClass"); + f = fopen(buf, "r"); + if (f) + { + if (fgets(buf, sizeof(buf), f)) + { + int id = -1; + + sscanf(buf, "%x", &id); + if (iclass == id) + { + EINA_LIST_FREE(devs, name) + free(name); + fclose(f); + return 1; + } + } + fclose(f); + } + free(name); + } + return 0; +} + +EAPI E_Module_Api e_modapi = { E_MODULE_API_VERSION, "Illume Bluetooth" }; + +EAPI void * +e_modapi_init(E_Module *m) +{ + _bt_mod_dir = eina_stringshare_add(m->dir); + e_gadcon_provider_register(&_gc_class); + return m; +} + +EAPI int +e_modapi_shutdown(E_Module *m) +{ + e_gadcon_provider_unregister(&_gc_class); + if (_bt_mod_dir) eina_stringshare_del(_bt_mod_dir); + _bt_mod_dir = NULL; + return 1; +} + +EAPI int +e_modapi_save(E_Module *M) +{ + return 1; +} diff --git a/src/modules/illume-bluetooth/e_mod_main.h b/src/modules/illume-bluetooth/e_mod_main.h new file mode 100644 index 000000000..f415823c6 --- /dev/null +++ b/src/modules/illume-bluetooth/e_mod_main.h @@ -0,0 +1,10 @@ +#ifndef E_MOD_MAIN_H +# define E_MOD_MAIN_H + +EAPI extern E_Module_Api e_modapi; + +EAPI void *e_modapi_init(E_Module *m); +EAPI int e_modapi_shutdown(E_Module *m); +EAPI int e_modapi_save(E_Module *m); + +#endif diff --git a/src/modules/illume-bluetooth/module.desktop.in b/src/modules/illume-bluetooth/module.desktop.in new file mode 100644 index 000000000..d6bf01a8d --- /dev/null +++ b/src/modules/illume-bluetooth/module.desktop.in @@ -0,0 +1,6 @@ +[Desktop Entry] +Type=Link +Name=Illume-Bluetooth +Icon=e-module-illume-bluetooth +X-Enlightenment-ModuleType=system +Comment=Illume Bluetooth for Embedded