|
From: <aar...@us...> - 2006-09-06 05:24:18
|
Revision: 17178
http://svn.sourceforge.net/gaim/?rev=17178&view=rev
Author: aaronsheldon
Date: 2006-09-05 22:24:13 -0700 (Tue, 05 Sep 2006)
Log Message:
-----------
This commit adds a confirmation dialog to GTKgaim when merging two groups.
Modified Paths:
--------------
trunk/gtk/gtkblist.c
trunk/gtk/gtkdialogs.c
trunk/gtk/gtkdialogs.h
Modified: trunk/gtk/gtkblist.c
===================================================================
--- trunk/gtk/gtkblist.c 2006-09-06 03:58:53 UTC (rev 17177)
+++ trunk/gtk/gtkblist.c 2006-09-06 05:24:13 UTC (rev 17178)
@@ -317,6 +317,7 @@
GtkTreePath *path;
GValue val;
GaimBlistNode *node;
+ GaimGroup *dest;
path = gtk_tree_path_new_from_string (arg1);
gtk_tree_model_get_iter (GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
@@ -350,7 +351,11 @@
serv_alias_buddy((GaimBuddy *)node);
break;
case GAIM_BLIST_GROUP_NODE:
- gaim_blist_rename_group((GaimGroup*)node, arg2);
+ dest = gaim_find_group(arg2);
+ if (dest != NULL && strcmp(arg2, ((GaimGroup*) node)->name)) {
+ gaim_gtkdialogs_merge_groups((GaimGroup*) node, arg2);
+ } else
+ gaim_blist_rename_group((GaimGroup*)node, arg2);
break;
case GAIM_BLIST_CHAT_NODE:
gaim_blist_alias_chat((GaimChat*)node, arg2);
Modified: trunk/gtk/gtkdialogs.c
===================================================================
--- trunk/gtk/gtkdialogs.c 2006-09-06 03:58:53 UTC (rev 17177)
+++ trunk/gtk/gtkdialogs.c 2006-09-06 05:24:13 UTC (rev 17178)
@@ -43,6 +43,11 @@
static GtkWidget *about = NULL;
+struct _GaimGroupMergeObject {
+ GaimGroup* parent;
+ char *new_name;
+};
+
struct developer {
char *name;
char *role;
@@ -996,6 +1001,36 @@
}
}
+void
+gaim_gtkdialogs_merge_groups_cb(struct _GaimGroupMergeObject *GGP)
+{
+ gaim_blist_rename_group(GGP->parent, GGP->new_name);
+}
+
+void
+gaim_gtkdialogs_merge_groups(GaimGroup *source, const char *new_name)
+{
+ gchar *text;
+ struct _GaimGroupMergeObject *ggp;
+
+ g_return_if_fail(source != NULL);
+ g_return_if_fail(new_name != NULL);
+
+ text = g_strdup_printf(
+ "You are about to merge the group called %s into the group "
+ "called %s. Do you want to continue?", source->name, new_name);
+
+ ggp = g_new(struct _GaimGroupMergeObject, 1);
+ ggp->parent = source;
+ ggp->new_name = g_strdup(new_name);
+
+ gaim_request_action(source, NULL, _("Merge Groups"), text, 0, ggp, 2,
+ _("_Merge Groups"), G_CALLBACK(gaim_gtkdialogs_merge_groups_cb),
+ _("Cancel"), NULL);
+
+ g_free(text);
+}
+
static void
gaim_gtkdialogs_remove_group_cb(GaimGroup *group)
{
Modified: trunk/gtk/gtkdialogs.h
===================================================================
--- trunk/gtk/gtkdialogs.h 2006-09-06 03:58:53 UTC (rev 17177)
+++ trunk/gtk/gtkdialogs.h 2006-09-06 05:24:13 UTC (rev 17178)
@@ -44,6 +44,7 @@
void gaim_gtkdialogs_remove_group(GaimGroup *);
void gaim_gtkdialogs_remove_chat(GaimChat *);
void gaim_gtkdialogs_remove_contact(GaimContact *);
+void gaim_gtkdialogs_merge_groups(GaimGroup *, const char *);
/* Everything after this should probably be moved elsewhere */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|