comparison src/savedstatuses.c @ 13761:ec858948d292

[gaim-migrate @ 16173] SF Patch #1482854 from Sadrul "This exposes the savedstatuses-api to dbus and makes the "setstatus" command work for gaim-remot committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Wed, 10 May 2006 17:31:25 +0000
parents c4be649e2aca
children a8a033a89ee0
comparison
equal deleted inserted replaced
13760:fb177706f6ba 13761:ec858948d292
1 /** 1 /**
2 * @file savedstatus.c Saved Status API 2 * @file savedstatuses.c Saved Status API
3 * @ingroup core 3 * @ingroup core
4 * 4 *
5 * gaim 5 * gaim
6 * 6 *
7 * Gaim is the legal property of its developers, whose names are too numerous 7 * Gaim is the legal property of its developers, whose names are too numerous
25 #include "internal.h" 25 #include "internal.h"
26 26
27 #include "debug.h" 27 #include "debug.h"
28 #include "notify.h" 28 #include "notify.h"
29 #include "savedstatuses.h" 29 #include "savedstatuses.h"
30 #include "dbus-maybe.h"
30 #include "status.h" 31 #include "status.h"
31 #include "util.h" 32 #include "util.h"
32 #include "xmlnode.h" 33 #include "xmlnode.h"
33 34
34 /** 35 /**
106 free_saved_status_sub(GaimSavedStatusSub *substatus) 107 free_saved_status_sub(GaimSavedStatusSub *substatus)
107 { 108 {
108 g_return_if_fail(substatus != NULL); 109 g_return_if_fail(substatus != NULL);
109 110
110 g_free(substatus->message); 111 g_free(substatus->message);
112 GAIM_DBUS_UNREGISTER_POINTER(substatus);
111 g_free(substatus); 113 g_free(substatus);
112 } 114 }
113 115
114 static void 116 static void
115 free_saved_status(GaimSavedStatus *status) 117 free_saved_status(GaimSavedStatus *status)
124 GaimSavedStatusSub *substatus = status->substatuses->data; 126 GaimSavedStatusSub *substatus = status->substatuses->data;
125 status->substatuses = g_list_remove(status->substatuses, substatus); 127 status->substatuses = g_list_remove(status->substatuses, substatus);
126 free_saved_status_sub(substatus); 128 free_saved_status_sub(substatus);
127 } 129 }
128 130
131 GAIM_DBUS_UNREGISTER_POINTER(status);
129 g_free(status); 132 g_free(status);
130 } 133 }
131 134
132 /* 135 /*
133 * Set the timestamp for when this saved status was created, and 136 * Set the timestamp for when this saved status was created, and
367 GaimSavedStatusSub *ret; 370 GaimSavedStatusSub *ret;
368 xmlnode *node; 371 xmlnode *node;
369 char *data; 372 char *data;
370 373
371 ret = g_new0(GaimSavedStatusSub, 1); 374 ret = g_new0(GaimSavedStatusSub, 1);
375 GAIM_DBUS_REGISTER_POINTER(ret, GaimSavedStatusSub);
372 376
373 /* Read the account */ 377 /* Read the account */
374 node = xmlnode_get_child(substatus, "account"); 378 node = xmlnode_get_child(substatus, "account");
375 if (node != NULL) 379 if (node != NULL)
376 { 380 {
440 const char *attrib; 444 const char *attrib;
441 char *data; 445 char *data;
442 int i; 446 int i;
443 447
444 ret = g_new0(GaimSavedStatus, 1); 448 ret = g_new0(GaimSavedStatus, 1);
449 GAIM_DBUS_REGISTER_POINTER(ret, GaimSavedStatus);
445 450
446 attrib = xmlnode_get_attrib(status, "transient"); 451 attrib = xmlnode_get_attrib(status, "transient");
447 if ((attrib == NULL) || (strcmp(attrib, "true"))) 452 if ((attrib == NULL) || (strcmp(attrib, "true")))
448 { 453 {
449 /* Read the title */ 454 /* Read the title */
545 /* Make sure we don't already have a saved status with this title. */ 550 /* Make sure we don't already have a saved status with this title. */
546 if (title != NULL) 551 if (title != NULL)
547 g_return_val_if_fail(gaim_savedstatus_find(title) == NULL, NULL); 552 g_return_val_if_fail(gaim_savedstatus_find(title) == NULL, NULL);
548 553
549 status = g_new0(GaimSavedStatus, 1); 554 status = g_new0(GaimSavedStatus, 1);
555 GAIM_DBUS_REGISTER_POINTER(status, GaimSavedStatus);
550 status->title = g_strdup(title); 556 status->title = g_strdup(title);
551 status->type = type; 557 status->type = type;
552 set_creation_time(status, time(NULL)); 558 set_creation_time(status, time(NULL));
553 559
554 saved_statuses = g_list_insert_sorted(saved_statuses, status, saved_statuses_sort_func); 560 saved_statuses = g_list_insert_sorted(saved_statuses, status, saved_statuses_sort_func);
611 /* Find an existing substatus or create a new one */ 617 /* Find an existing substatus or create a new one */
612 substatus = gaim_savedstatus_get_substatus(saved_status, account); 618 substatus = gaim_savedstatus_get_substatus(saved_status, account);
613 if (substatus == NULL) 619 if (substatus == NULL)
614 { 620 {
615 substatus = g_new0(GaimSavedStatusSub, 1); 621 substatus = g_new0(GaimSavedStatusSub, 1);
622 GAIM_DBUS_REGISTER_POINTER(substatus, GaimSavedStatusSub);
616 substatus->account = (GaimAccount *)account; 623 substatus->account = (GaimAccount *)account;
617 saved_status->substatuses = g_list_prepend(saved_status->substatuses, substatus); 624 saved_status->substatuses = g_list_prepend(saved_status->substatuses, substatus);
618 } 625 }
619 626
620 substatus->type = type; 627 substatus->type = type;