Mercurial > pidgin.yaz
diff src/notify.c @ 11359:9480e0d0f563
[gaim-migrate @ 13581]
Search results notification extended so that any column can be added.
committer: Tailor Script <tailor@pidgin.im>
author | Bartoz Oler <bartosz@pidgin.im> |
---|---|
date | Sun, 28 Aug 2005 22:21:24 +0000 |
parents | 911530134bf8 |
children | bf763a1b2454 |
line wrap: on
line diff
--- a/src/notify.c Sun Aug 28 22:18:08 2005 +0000 +++ b/src/notify.c Sun Aug 28 22:21:24 2005 +0000 @@ -158,7 +158,7 @@ void * gaim_notify_searchresults(GaimConnection *gc, const char *title, const char *primary, const char *secondary, - const char **results, GCallback cb, void *user_data) + GaimNotifySearchResults *results, GCallback cb, void *user_data) { GaimNotifyUiOps *ops; @@ -182,6 +182,151 @@ return NULL; } +void +gaim_notify_searchresults_free(GaimNotifySearchResults *results) +{ + GList *l, *m; + + g_return_if_fail(results != NULL); + + for (l = results->buttons; l != NULL; l = l->next) { + GaimNotifySearchButton *button = l->data; + + results->buttons = g_list_remove(results->buttons, button); + g_free(button); + } + g_list_free(results->buttons); + + for (l = results->rows; l != NULL; l = l->next) { + GList *row = l->data; + + for (m = row; m != NULL; m = m->next) { + gchar *str = m->data; + + m = g_list_remove(m, str); + g_free(str); + } + + results->rows = g_list_remove(results->rows, row); + g_list_free(row); + } + g_list_free(results->rows); + + for (l = results->columns; l != NULL; l = l->next) { + GaimNotifySearchColumn *column = l->data; + + results->columns = g_list_remove(results->columns, column); + g_free(column->title); + g_free(column); + } + g_list_free(results->columns); +} + +void +gaim_notify_searchresults_new_rows(GaimConnection *gc, + GaimNotifySearchResults *results, + void *data, void *user_data) +{ + GaimNotifyUiOps *ops; + + ops = gaim_notify_get_ui_ops(); + + if (ops != NULL && ops->notify_searchresults != NULL) { + ops->notify_searchresults_new_rows(gc, results, data, user_data); + } +} + +void +gaim_notify_searchresults_button_add(GaimNotifySearchResults *results, + GaimNotifySearchButtonType type, + GaimNotifySearchResultsCallback cb) +{ + GaimNotifySearchButton *button; + + g_return_if_fail(results != NULL); + g_return_if_fail(cb != NULL); + + button = g_new0(GaimNotifySearchButton, 1); + button->callback = cb; + button->type = type; + + results->buttons = g_list_append(results->buttons, button); +} + +GaimNotifySearchResults * +gaim_notify_searchresults_new() +{ + GaimNotifySearchResults *rs = g_new0(GaimNotifySearchResults, 1); + + return rs; +} + +void +gaim_notify_searchresults_column_add(GaimNotifySearchResults *results, + GaimNotifySearchColumn *column) +{ + g_return_if_fail(results != NULL); + g_return_if_fail(column != NULL); + + results->columns = g_list_append(results->columns, column); +} + +void gaim_notify_searchresults_row_add(GaimNotifySearchResults *results, + GList *row) +{ + g_return_if_fail(results != NULL); + g_return_if_fail(row != NULL); + + results->rows = g_list_append(results->rows, row); +} + +GaimNotifySearchColumn * +gaim_notify_searchresults_column_new(const char *title) +{ + GaimNotifySearchColumn *sc; + + g_return_val_if_fail(title != NULL, NULL); + + sc = g_new0(GaimNotifySearchColumn, 1); + sc->title = g_strdup(title); + + return sc; +} + +int +gaim_notify_searchresults_get_columns_count(GaimNotifySearchResults *results) +{ + g_return_val_if_fail(results != NULL, -1); + + return g_list_length(results->columns); +} + +int +gaim_notify_searchresults_get_rows_count(GaimNotifySearchResults *results) +{ + g_return_val_if_fail(results != NULL, -1); + + return g_list_length(results->rows); +} + +char * +gaim_notify_searchresults_column_get_title(GaimNotifySearchResults *results, + unsigned int column_id) +{ + g_return_val_if_fail(results != NULL, NULL); + + return ((GaimNotifySearchColumn *)g_list_nth_data(results->columns, column_id))->title; +} + +GList * +gaim_notify_searchresults_row_get(GaimNotifySearchResults *results, + unsigned int row_id) +{ + g_return_val_if_fail(results != NULL, NULL); + + return g_list_nth_data(results->rows, row_id); +} + void * gaim_notify_userinfo(GaimConnection *gc, const char *who, const char *title, const char *primary, const char *secondary,