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