Mercurial > pidgin.yaz
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; |