grim/purple-plugin-pack
* This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA #include "../common/pp_internal.h" #define PLUGIN_ID "gtk-plugin_pack-buddytime" #define PLUGIN_STATIC_NAME "buddytime" #define PLUGIN_AUTHOR "Gary Kramlich <grim@reaperworld.com>" /****************************************************************************** *****************************************************************************/ #define BT_NODE_SETTING "bt-timezone" /****************************************************************************** *****************************************************************************/ PurpleRequestField *timezone; PurpleConversation *conv; /****************************************************************************** *****************************************************************************/ static GList *dialogs = NULL; static GList *widgets = NULL; /****************************************************************************** *****************************************************************************/ bt_widget_new(PurpleConversation *conv) { g_return_val_if_fail(conv, NULL); ret = g_new0(BTWidget, 1); ret->ebox = gtk_event_box_new(); ret->label = gtk_label_new("label"); gtk_container_add(GTK_CONTAINER(ret->ebox), ret->label); /****************************************************************************** *****************************************************************************/ bt_dialog_ok_cb(gpointer data, PurpleRequestFields *fields) { BTDialog *dialog = (BTDialog *)data; dialogs = g_list_remove(dialogs, dialog); bt_dialog_cancel_cb(gpointer data, PurpleRequestFields *fields) { BTDialog *dialog = (BTDialog *)data; dialogs = g_list_remove(dialogs, dialog); bt_show_dialog(PurpleBlistNode *node) { PurpleRequestFields *fields; PurpleRequestFieldGroup *group; PurpleAccount *account = NULL; dialog = g_new0(BTDialog, 1); current = purple_blist_node_get_int(node, BT_NODE_SETTING); /* TODO: set account from node */ /* build the request fields */ fields = purple_request_fields_new(); group = purple_request_field_group_new(NULL); purple_request_fields_add_group(fields, group); dialog->timezone = purple_request_field_choice_new("timezone", purple_request_field_group_add_field(group, dialog->timezone); purple_request_field_choice_add(dialog->timezone, _("Clear setting")); purple_request_field_choice_add(dialog->timezone, _("GMT-12")); purple_request_field_choice_add(dialog->timezone, _("GMT-11")); purple_request_field_choice_add(dialog->timezone, _("GMT-10")); purple_request_field_choice_add(dialog->timezone, _("GMT-9")); purple_request_field_choice_add(dialog->timezone, _("GMT-8")); purple_request_field_choice_add(dialog->timezone, _("GMT-7")); purple_request_field_choice_add(dialog->timezone, _("GMT-6")); purple_request_field_choice_add(dialog->timezone, _("GMT-5")); purple_request_field_choice_add(dialog->timezone, _("GMT-4")); purple_request_field_choice_add(dialog->timezone, _("GMT-3")); purple_request_field_choice_add(dialog->timezone, _("GMT-2")); purple_request_field_choice_add(dialog->timezone, _("GMT-1")); purple_request_field_choice_add(dialog->timezone, _("GMT")); purple_request_field_choice_add(dialog->timezone, _("GMT+1")); purple_request_field_choice_add(dialog->timezone, _("GMT+2")); purple_request_field_choice_add(dialog->timezone, _("GMT+3")); purple_request_field_choice_add(dialog->timezone, _("GMT+4")); purple_request_field_choice_add(dialog->timezone, _("GMT+5")); purple_request_field_choice_add(dialog->timezone, _("GMT+6")); purple_request_field_choice_add(dialog->timezone, _("GMT+7")); purple_request_field_choice_add(dialog->timezone, _("GMT+8")); purple_request_field_choice_add(dialog->timezone, _("GMT+9")); purple_request_field_choice_add(dialog->timezone, _("GMT+10")); purple_request_field_choice_add(dialog->timezone, _("GMT+11")); purple_request_field_choice_add(dialog->timezone, _("GMT+12")); // purple_request_field_choice_set_default_value(dialog->timezone, current); // purple_request_field_coice_set_value(dialog->timezone, current); /* TODO: set who from blist node */ purple_request_fields(NULL, _("Select timezone"), _("OK"), PURPLE_CALLBACK(bt_dialog_ok_cb), _("Cancel"), PURPLE_CALLBACK(bt_dialog_cancel_cb), account, NULL /* who */, NULL, dialog); dialogs = g_list_append(dialogs, dialog); bt_edit_timezone_cb(PurpleBlistNode *node, gpointer data) { bt_blist_drawing_menu_cb(PurpleBlistNode *node, GList **menu) { PurpleMenuAction *action; if (purple_blist_node_get_flags(node) & PURPLE_BLIST_NODE_FLAG_NO_SAVE) /* ignore chats and groups */ if(PURPLE_BLIST_NODE_IS_CHAT(node) || PURPLE_BLIST_NODE_IS_GROUP(node)) action = purple_menu_action_new(_("Timezone"), PURPLE_CALLBACK(bt_edit_timezone_cb), (*menu) = g_list_append(*menu, action); /****************************************************************************** *****************************************************************************/ /****************************************************************************** *****************************************************************************/ plugin_load(PurplePlugin *plugin) { purple_signal_connect(purple_blist_get_handle(), "blist-node-extended-menu", PURPLE_CALLBACK(bt_blist_drawing_menu_cb), plugin_unload(PurplePlugin *plugin) { static PurplePluginInfo info = { PURPLE_PLUGIN_MAGIC, /* Magic */ PURPLE_MAJOR_VERSION, /* Purple Major Version */ PURPLE_MINOR_VERSION, /* Purple Minor Version */ PURPLE_PLUGIN_STANDARD, /* plugin type */ PIDGIN_PLUGIN_TYPE, /* ui requirement */ PURPLE_PRIORITY_DEFAULT, /* priority */ PLUGIN_ID, /* plugin id */ PP_VERSION, /* version */ PLUGIN_AUTHOR, /* author */ PP_WEBSITE, /* website */ plugin_unload, /* unload */ init_plugin(PurplePlugin *plugin) { bindtextdomain(GETTEXT_PACKAGE, PP_LOCALEDIR); bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); info.name = _("Buddy Time"); info.summary = _("summary"); info.description = _("description"); PURPLE_INIT_PLUGIN(PLUGIN_STATIC_NAME, init_plugin, info)