summaryrefslogtreecommitdiff
path: root/src/trg-files-model.c
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2011-10-01 18:09:23 +0000
committerGravatar Alan Fitton <ajf@eth0.org.uk>2011-10-01 18:09:23 +0000
commit786bfb4ef30c02d2aa1336effcf258d786857def (patch)
treefc597ed2b42626ab3dd259623e70f9791ab7c06d /src/trg-files-model.c
parentd5df15f1fec2971e05a9352585414d92580b7ab1 (diff)
accept URLs and magnet links as application arguments, DHT on magnet warning, fix files model to accept new files after first update (required for magnet).
Diffstat (limited to 'src/trg-files-model.c')
-rw-r--r--src/trg-files-model.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/trg-files-model.c b/src/trg-files-model.c
index 956e6f5..3836398 100644
--- a/src/trg-files-model.c
+++ b/src/trg-files-model.c
@@ -132,6 +132,8 @@ trg_files_model_update(TrgFilesModel * model, gint64 updateSerial,
{
TrgFilesModelPrivate *priv = TRG_FILES_MODEL_GET_PRIVATE(model);
GList *filesList, *li;
+ GtkTreeIter filesIter;
+ JsonObject *file;
gint j = 0;
priv->torrentId = torrent_get_id(t);
@@ -144,8 +146,8 @@ trg_files_model_update(TrgFilesModel * model, gint64 updateSerial,
gtk_list_store_clear(GTK_LIST_STORE(model));
priv->accept = TRUE;
for (li = filesList; li; li = g_list_next(li)) {
- JsonObject *file = json_node_get_object((JsonNode *) li->data);
- GtkTreeIter filesIter;
+ file = json_node_get_object((JsonNode *) li->data);
+
trg_files_model_iter_new(model, &filesIter, file, j);
trg_files_model_iter_update(model, &filesIter,
file, priv->wanted,
@@ -153,9 +155,22 @@ trg_files_model_update(TrgFilesModel * model, gint64 updateSerial,
j++;
}
} else {
+ gint n_existing = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(model), NULL);
+ gint n_updates = g_list_length(filesList);
gtk_tree_model_foreach(GTK_TREE_MODEL(model),
(GtkTreeModelForeachFunc)
trg_files_model_update_foreach, filesList);
+ if (n_updates > n_existing) {
+ gint n_new = n_updates - n_existing;
+ for (j = n_updates - n_new; j < n_updates; j++)
+ {
+ file = json_node_get_object(g_list_nth_data(filesList, j));
+ trg_files_model_iter_new(model, &filesIter, file, j);
+ trg_files_model_iter_update(model, &filesIter,
+ file, priv->wanted,
+ priv->priorities, j);
+ }
+ }
}
g_list_free(filesList);