[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Ayttm-commits] CVS: ayttm/src util.c,1.14,1.15 util.h,1.7,1.8 add_conta
From: |
Colin Leroy <address@hidden> |
Subject: |
[Ayttm-commits] CVS: ayttm/src util.c,1.14,1.15 util.h,1.7,1.8 add_contact_window.c,1.12,1.13 |
Date: |
Sat, 18 Jan 2003 06:44:48 -0500 |
Update of /cvsroot/ayttm/ayttm/src
In directory subversions:/tmp/cvs-serv19555/src
Modified Files:
util.c util.h add_contact_window.c
Log Message:
Forbid contact & account move/add/del when not
online (avoid messing up server-side lists)
Index: util.c
===================================================================
RCS file: /cvsroot/ayttm/ayttm/src/util.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- util.c 16 Jan 2003 17:28:26 -0000 1.14
+++ util.c 18 Jan 2003 11:44:39 -0000 1.15
@@ -674,7 +674,7 @@
}
eb_account * find_suitable_remote_account( eb_account * first,
-
struct contact * rest )
+ struct contact * rest )
{
GList * node;
eb_account * possibility = NULL;
@@ -1134,14 +1134,23 @@
}
-void remove_account( eb_account * a )
+int remove_account( eb_account * a )
{
struct contact * c = a->account_contact;
- buddy_logoff(a);
- remove_account_line(a);
+ if (!find_suitable_local_account(NULL, a->service_id)) {
+ char *buff = g_strdup_printf(_("You should be connected to %s before
removing this account"),
+ get_service_name(a->service_id));
+ do_error_dialog(buff, _("Error"));
+ g_free(buff);
+ return 0;
+ }
+
+ buddy_logoff(a);
+ remove_account_line(a);
c->accounts = g_list_remove(c->accounts, a);
RUN_SERVICE(a)->del_user(a);
g_free(a);
+ return 1;
}
void remove_contact( struct contact * c )
{
@@ -1150,7 +1159,8 @@
gtk_widget_destroy(c->chatwindow->window);
while(c->accounts)
{
- remove_account(c->accounts->data);
+ if (!remove_account(c->accounts->data))
+ return;
}
remove_contact_line(c);
g->members = g_list_remove(g->members, c);
@@ -1208,32 +1218,39 @@
void add_account_verbose( gchar * contact, eb_account * account, gboolean
verbosity )
{
struct contact * c = find_contact_by_nick( contact );
- eb_account * ea = find_account_by_handle(account->handle,
account->service_id);
- if(ea)
- {
- if(!strcasecmp(ea->account_contact->nick, _("Unknown")))
- {
- struct contact * c2 = ea->account_contact;
- remove_account(ea);
- if(g_list_length(c2->accounts) == 0)
- {
- remove_contact(c2);
- }
- }
- else
- {
- char buff[2048];
- g_snprintf(buff, 2048, _("The account already exists on
your\ncontact list at the following location\nGroup: %s\nContact: %s\nPlease
delete this account before\nadding it elsewhere."),
ea->account_contact->group->name, ea->account_contact->nick );
+ eb_account * ea = find_account_by_handle(account->handle,
account->service_id);
+ if (!find_suitable_local_account(NULL, account->service_id)) {
+ char *buff = g_strdup_printf(_("You should be connected to %s before
adding this account"),
+ get_service_name(account->service_id));
+ do_error_dialog(buff, _("Error"));
+ g_free(buff);
+ return;
+ }
+ if(ea)
+ { /* shouldn't it be ea->account_contact->group->name ? */
+ if(!strcasecmp(ea->account_contact->nick, _("Unknown")))
+ {
+ struct contact * c2 = ea->account_contact;
+ remove_account(ea);
+ if(g_list_length(c2->accounts) == 0)
+ {
+ remove_contact(c2);
+ }
+ }
+ else
+ {
+ char buff[2048];
+ g_snprintf(buff, 2048, _("The account already exists on
your\ncontact list at the following location\nGroup: %s\nContact: %s\nPlease
delete this account before\nadding it elsewhere."),
ea->account_contact->group->name, ea->account_contact->nick );
- if( c && g_list_length(c->accounts) == 0)
- {
- remove_contact(c);
- }
- if(verbosity)
- do_error_dialog(buff, _("Error: account
exists"));
- return;
- }
- }
+ if( c && g_list_length(c->accounts) == 0)
+ {
+ remove_contact(c);
+ }
+ if(verbosity)
+ do_error_dialog(buff, _("Error: account exists"));
+ return;
+ }
+ }
if( c )
{
c->accounts = g_list_append( c->accounts, account );
@@ -1334,7 +1351,15 @@
struct contact *c = ea->account_contact;
gchar * new_group = con->group->name;
gchar *old_group = c->group->name;
-
+
+ if (!find_suitable_local_account(NULL, ea->service_id)) {
+ char *buff = g_strdup_printf(_("You should be connected to %s
before moving this account"),
+
get_service_name(ea->service_id));
+ do_error_dialog(buff, _("Error"));
+ g_free(buff);
+ return;
+ }
+
handle_group_change(ea, old_group, new_group);
c->accounts = g_list_remove(c->accounts, ea);
@@ -1368,6 +1393,28 @@
grouplist * g = c->group;
struct contact *con;
GList *l = c->accounts;
+ char *not_connected = NULL;
+ for(; l; l=l->next)
+ {
+ eb_account *ea = l->data;
+ if (!find_suitable_local_account(NULL, ea->service_id)) {
+ if (not_connected &&
!strstr(not_connected,get_service_name(ea->service_id))) {
+ char *old = not_connected;
+ not_connected = g_strdup_printf("%s,%s",
not_connected, get_service_name(ea->service_id));
+ g_free(old);
+ } else if (!not_connected)
+ not_connected =
g_strdup(get_service_name(ea->service_id));
+ }
+ }
+ if(not_connected != NULL) {
+ char *buff = g_strdup_printf(_("You should be connected to %s
before moving this contact"),
+ not_connected);
+ do_error_dialog(buff, _("Error"));
+ g_free(buff);
+ g_free(not_connected);
+ return;
+ }
+ l = c->accounts;
g->members = g_list_remove(g->members, c);
remove_contact_line(c);
Index: util.h
===================================================================
RCS file: /cvsroot/ayttm/ayttm/src/util.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- util.h 16 Jan 2003 17:28:26 -0000 1.7
+++ util.h 18 Jan 2003 11:44:39 -0000 1.8
@@ -91,7 +91,7 @@
eb_account * find_account_by_handle_normalized( gchar * handle, gint type );
eb_local_account * find_local_account_by_handle( gchar * handle, gint type );
void strip_html(gchar * text);
-void remove_account( eb_account * a );
+int remove_account( eb_account * a );
void remove_contact( struct contact * c );
void rename_contact( struct contact * c, char *newname);
void remove_group( grouplist * g );
Index: add_contact_window.c
===================================================================
RCS file: /cvsroot/ayttm/ayttm/src/add_contact_window.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- add_contact_window.c 17 Jan 2003 23:43:11 -0000 1.12
+++ add_contact_window.c 18 Jan 2003 11:44:39 -0000 1.13
@@ -227,6 +227,8 @@
}
add_account(con->nick, ea);
+ if (g_list_length(con->accounts) == 0)
+ remove_contact(con);
update_contact_list ();
write_contact_list();
gtk_widget_destroy(add_contact_window);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Ayttm-commits] CVS: ayttm/src util.c,1.14,1.15 util.h,1.7,1.8 add_contact_window.c,1.12,1.13,
Colin Leroy <address@hidden> <=
- Prev by Date:
[Ayttm-commits] CVS: ayttm ChangeLog,1.151,1.152 configure.in,1.148,1.149
- Next by Date:
[Ayttm-commits] CVS: ayttm/po fr.po,1.17,1.18
- Previous by thread:
[Ayttm-commits] CVS: ayttm ChangeLog,1.151,1.152 configure.in,1.148,1.149
- Next by thread:
[Ayttm-commits] CVS: ayttm/po fr.po,1.17,1.18
- Index(es):