finch/gntblist.c

changeset 42155
bce9e3254fe6
parent 42137
59ceb87dc43c
child 42167
5240fe0d7bdc
equal deleted inserted replaced
42154:2557742988dc 42155:bce9e3254fe6
982 PurpleActionMenu *action = purple_action_menu_new(label, callback, data, NULL); 982 PurpleActionMenu *action = purple_action_menu_new(label, callback, data, NULL);
983 finch_append_menu_action(menu, action, NULL); 983 finch_append_menu_action(menu, action, NULL);
984 } 984 }
985 985
986 static void 986 static void
987 chat_components_edit_ok(PurpleChat *chat, PurpleRequestPage *page) 987 chat_components_edit_ok(PurpleChat *chat, PurpleRequestPage *page) {
988 { 988 guint n_groups;
989 GList *groups, *fields; 989
990 990 n_groups = g_list_model_get_n_items(G_LIST_MODEL(page));
991 for(groups = purple_request_page_get_groups(page); groups; 991 for(guint group_index = 0; group_index < n_groups; group_index++) {
992 groups = groups->next) 992 GListModel *group = NULL;
993 { 993 guint n_fields = 0;
994 fields = purple_request_group_get_fields(groups->data); 994
995 for (; fields; fields = fields->next) { 995 group = g_list_model_get_item(G_LIST_MODEL(page), group_index);
996 PurpleRequestField *field = fields->data; 996 n_fields = g_list_model_get_n_items(group);
997 for(guint field_index = 0; field_index < n_fields; field_index++) {
998 PurpleRequestField *field = NULL;
997 const char *id; 999 const char *id;
998 char *val; 1000 char *val;
999 1001
1002 field = g_list_model_get_item(group, field_index);
1000 id = purple_request_field_get_id(field); 1003 id = purple_request_field_get_id(field);
1001 if(PURPLE_IS_REQUEST_FIELD_INT(field)) { 1004 if(PURPLE_IS_REQUEST_FIELD_INT(field)) {
1002 PurpleRequestFieldInt *ifield = PURPLE_REQUEST_FIELD_INT(field); 1005 PurpleRequestFieldInt *ifield = PURPLE_REQUEST_FIELD_INT(field);
1003 val = g_strdup_printf("%d", 1006 val = g_strdup_printf("%d",
1004 purple_request_field_int_get_value(ifield)); 1007 purple_request_field_int_get_value(ifield));
1009 if (!val) { 1012 if (!val) {
1010 g_hash_table_remove(purple_chat_get_components(chat), id); 1013 g_hash_table_remove(purple_chat_get_components(chat), id);
1011 } else { 1014 } else {
1012 g_hash_table_replace(purple_chat_get_components(chat), g_strdup(id), val); /* val should not be free'd */ 1015 g_hash_table_replace(purple_chat_get_components(chat), g_strdup(id), val); /* val should not be free'd */
1013 } 1016 }
1017
1018 g_object_unref(field);
1014 } 1019 }
1020
1021 g_object_unref(group);
1015 } 1022 }
1016 } 1023 }
1017 1024
1018 static void 1025 static void
1019 chat_components_edit(G_GNUC_UNUSED PurpleBlistNode *selected, PurpleChat *chat) 1026 chat_components_edit(G_GNUC_UNUSED PurpleBlistNode *selected, PurpleChat *chat)

mercurial