#ifndef PURPLE_PLUGINS #define PURPLE_PLUGINS #endif #include "internal.h" #include "tapi.h" #include "gtkplugin.h" #include #include #include #include #include #include //static PurplePlugin *my_plugin = NULL; #ifndef _WIN32 static GdkAtom _Cardinal = GDK_NONE; static GdkAtom _PurpleUnseenCount = GDK_NONE; #endif static void *(*notify_userinfo_ori)(PurpleConnection *gc, const char *who, PurpleNotifyUserInfo *user_info); //static void *(*birthday_reminder_notify_userinfo)(PurpleConnection *gc, const char *who, PurpleNotifyUserInfo *user_info); /** * Diese Methode testet den Anruf. * Es wird eine Debug-Ausgabe getätigt. */ static void test() { //tapiRequestMakeCall("017699747962", NULL, NULL, NULL); purple_blist_set_visible(false); purple_debug_info("plugin-call-a-buddy", "User wird angerufen.\n"); } static void *birthday_reminder_notify_userinfo(PurpleConnection *gc, const char *who, PurpleNotifyUserInfo *user_info) { // PurpleBuddy *buddy; purple_debug_warning("plugin-call-a-buddy", "In der Funktion ..._notify_userinfo"); purple_debug_warning("plugin-call-a-buddy", who); // if(current_scanned_buddy && (current_scanned_buddy->account == gc->account && purple_utf8_strcasecmp(current_scanned_buddy->name, who)==0)) { // buddy = current_scanned_buddy; // } else { // return notify_userinfo_ori(gc, who, user_info); // } /* Translators: use %1$s for the buddy's nickname, %2$s for the account name and %3$s for the protocol name. */ // purple_debug_info("plugin-call-a-buddy", _("Buddy %s (Account: %s (%s)) scanned.\n"), purple_buddy_get_name(current_scanned_buddy), purple_account_get_username(current_scanned_buddy->account), purple_account_get_protocol_name(current_scanned_buddy->account)); // purple_debug_info("plugin-call-a-buddy", (char*) user_info); // current_scanned_buddy = NULL; /* Info-Fenster unterdrücken */ return NULL; } /** * Hier werden die User-Informationen extrahiert und mit der dadurch gewonnenen * Telefon-Nummer ein Anruf durchgeführt. */ static void call_user(PurpleBlistNode *node) { PurpleAccount *acc = NULL; PurpleConnection *gc = NULL; PurplePlugin *prpl = NULL; PurplePluginProtocolInfo *prpl_info = NULL; PurpleNotifyUiOps *ops; purple_debug_warning("plugin-call-a-buddy", "Variablen wurden initialisiert.\n"); const char *name = NULL; PurpleBuddy *buddy = (PurpleBuddy*) node; acc = purple_buddy_get_account(buddy); purple_debug_warning("plugin-call-a-buddy", "Node Konvertiert und Acc geholt.\n"); gc = acc->gc; purple_debug_warning("plugin-call-a-buddy", "GC wird geholt.\n"); if(!gc) { return; } prpl = purple_connection_get_prpl(gc); purple_debug_warning("plugin-call-a-buddy", "Hole Protocol.\n"); if(!prpl) { return; } prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); purple_debug_warning("plugin-call-a-buddy", "Plugin_Protocol_INFO wird geholt. \n"); if(!prpl_info || !prpl_info->get_info) { return; } prpl_info->get_info(gc, name); purple_debug_warning("plugin-call-a-buddy", "Entsprechende Infos werden ermittelt \n"); ops = purple_notify_get_ui_ops(); purple_debug_warning("plugin-call-a-buddy", "Notify_Get_UI_Ops \n"); notify_userinfo_ori = ops->notify_userinfo; purple_debug_warning("plugin-call-a-buddy", (char*)notify_userinfo_ori); // ops->notify_userinfo = birthday_reminder_notify_userinfo; // purple_debug_warning("plugin-call-a-buddy", "Birthday_Reminder_Notify_Userinfo \n"); if(!PURPLE_BLIST_NODE_IS_BUDDY(node)) { purple_debug_fatal("plugin-call-a-buddy", "Es wird versucht einen Nicht-User anzurufen.\n"); return; } test(); // const char *userInfo; free(acc); free(gc); free(prpl); free(prpl_info); free(ops); free(buddy); // PurpleBuddy *buddy = (PurpleBuddy*) node; // PurpleAccount *p = purple_buddy_get_account(buddy); // const char *name = purple_buddy_get_name(buddy); } static void call_user2(PurpleBlistNode *node){ purple_debug_warning("plugin-call-a-buddy", "Programm stürzt nicht ab."); } static void extend_buddy_context_menu(PurpleBlistNode *node, GList **menu) { PurpleMenuAction *action = NULL; GList *submenu = NULL; action = purple_menu_action_new(_("User anrufen."), PURPLE_CALLBACK(call_user), NULL, NULL); *menu = g_list_append(*menu, action); } static gboolean plugin_load(PurplePlugin *plugin) { purple_debug_warning("plugin-call-a-buddy", "Plugin_Load\n"); purple_signal_connect(purple_blist_get_handle(), "blist-node-extended-menu", plugin, PURPLE_CALLBACK(extend_buddy_context_menu), NULL); return TRUE; } static gboolean plugin_unload(PurplePlugin *plugin) { // purple_signal_disconnect(purple_blist_get_handle(), "blist-node-extended-menu", plugin, PURPLE_CALLBACK(extend_buddy_context_menu)); return TRUE; } static PurplePluginInfo info = { PURPLE_PLUGIN_MAGIC, /**<- Magic */ PURPLE_MAJOR_VERSION, /**<- Major Version */ PURPLE_MINOR_VERSION, /**<- Minor Version */ PURPLE_PLUGIN_STANDARD, /**<- Type */ PIDGIN_PLUGIN_TYPE, /**<- UI_Requirements */ 0, /**<- Flags */ NULL, /**<- Dependencies */ PURPLE_PRIORITY_DEFAULT, /**<- Priority */ "plugin-call-a-buddy", /**<- ID */ "Call a Buddy", /**<- Name */ "0.1", /**<- Version */ "Call a Buddy via Context-Menu", /**<- Summary */ "Call a Buddy via Context-Menu", /**<- Description */ "James Vornhagen