Mercurial > pidgin
comparison src/savedstatuses.c @ 13387:d9dbb874a30c
[gaim-migrate @ 15760]
SF Patch #1441721 from Kevin Stange (SimGuy)
"emit a signal when the current savedstatus changes"
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Fri, 03 Mar 2006 07:02:59 +0000 |
parents | 24ac8fc885b8 |
children | 5948086807cd |
comparison
equal
deleted
inserted
replaced
13386:54f679516b52 | 13387:d9dbb874a30c |
---|---|
948 | 948 |
949 void | 949 void |
950 gaim_savedstatus_activate(GaimSavedStatus *saved_status) | 950 gaim_savedstatus_activate(GaimSavedStatus *saved_status) |
951 { | 951 { |
952 GList *accounts, *node; | 952 GList *accounts, *node; |
953 GaimSavedStatus *old = gaim_savedstatus_get_current(); | |
953 | 954 |
954 g_return_if_fail(saved_status != NULL); | 955 g_return_if_fail(saved_status != NULL); |
955 | 956 |
956 /* Make sure our list of saved statuses remains sorted */ | 957 /* Make sure our list of saved statuses remains sorted */ |
957 saved_status->lastused = time(NULL); | 958 saved_status->lastused = time(NULL); |
971 | 972 |
972 g_list_free(accounts); | 973 g_list_free(accounts); |
973 | 974 |
974 gaim_prefs_set_int("/core/savedstatus/current", | 975 gaim_prefs_set_int("/core/savedstatus/current", |
975 gaim_savedstatus_get_creation_time(saved_status)); | 976 gaim_savedstatus_get_creation_time(saved_status)); |
977 | |
978 gaim_signal_emit(gaim_savedstatuses_get_handle(), "savedstatus-changed", | |
979 saved_status, old); | |
980 | |
976 } | 981 } |
977 | 982 |
978 void | 983 void |
979 gaim_savedstatus_activate_for_account(const GaimSavedStatus *saved_status, | 984 gaim_savedstatus_activate_for_account(const GaimSavedStatus *saved_status, |
980 GaimAccount *account) | 985 GaimAccount *account) |
1022 } | 1027 } |
1023 | 1028 |
1024 void | 1029 void |
1025 gaim_savedstatuses_init(void) | 1030 gaim_savedstatuses_init(void) |
1026 { | 1031 { |
1032 void *handle = gaim_savedstatuses_get_handle(); | |
1033 | |
1027 creation_times = g_hash_table_new(g_int_hash, g_int_equal); | 1034 creation_times = g_hash_table_new(g_int_hash, g_int_equal); |
1028 | 1035 |
1029 /* | 1036 /* |
1030 * Using 0 as the creation_time is a special case. | 1037 * Using 0 as the creation_time is a special case. |
1031 * If someone calls gaim_savedstatus_get_current() or | 1038 * If someone calls gaim_savedstatus_get_current() or |
1038 gaim_prefs_add_int("/core/savedstatus/startup", 0); | 1045 gaim_prefs_add_int("/core/savedstatus/startup", 0); |
1039 gaim_prefs_add_bool("/core/savedstatus/startup_current_status", TRUE); | 1046 gaim_prefs_add_bool("/core/savedstatus/startup_current_status", TRUE); |
1040 gaim_prefs_add_int("/core/savedstatus/idleaway", 0); | 1047 gaim_prefs_add_int("/core/savedstatus/idleaway", 0); |
1041 | 1048 |
1042 load_statuses(); | 1049 load_statuses(); |
1050 | |
1051 gaim_signal_register(handle, "savedstatus-changed", | |
1052 gaim_marshal_VOID__POINTER_POINTER, NULL, 2, | |
1053 gaim_value_new(GAIM_TYPE_SUBTYPE, | |
1054 GAIM_SUBTYPE_SAVEDSTATUS), | |
1055 gaim_value_new(GAIM_TYPE_SUBTYPE, | |
1056 GAIM_SUBTYPE_SAVEDSTATUS)); | |
1043 } | 1057 } |
1044 | 1058 |
1045 void | 1059 void |
1046 gaim_savedstatuses_uninit(void) | 1060 gaim_savedstatuses_uninit(void) |
1047 { | 1061 { |
1059 saved_statuses = g_list_remove(saved_statuses, saved_status); | 1073 saved_statuses = g_list_remove(saved_statuses, saved_status); |
1060 free_saved_status(saved_status); | 1074 free_saved_status(saved_status); |
1061 } | 1075 } |
1062 | 1076 |
1063 g_hash_table_destroy(creation_times); | 1077 g_hash_table_destroy(creation_times); |
1064 } | 1078 |
1065 | 1079 gaim_signals_unregister_by_instance(gaim_savedstatuses_get_handle()); |
1080 } | |
1081 |