summaryrefslogtreecommitdiff
path: root/src/trg-trackers-tree-view.c
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2011-02-27 21:24:43 +0000
committerGravatar Alan Fitton <ajf@eth0.org.uk>2011-02-27 21:24:43 +0000
commit37f53760e5a5a2c0f9294c13ca680aaa33af056f (patch)
treee50273164754bdf0354f4116add8d286dcc250c5 /src/trg-trackers-tree-view.c
parentaca2e2bbd8738437a20473202b09757a1fc7c409 (diff)
a much better system for suspending tracker/file updates until a change has been acknowledged. fix for issue 17 (bandwidth priorities). use transmission-remote-gtk icon in .desktop instead of transmission.
Diffstat (limited to 'src/trg-trackers-tree-view.c')
-rw-r--r--src/trg-trackers-tree-view.c37
1 files changed, 21 insertions, 16 deletions
diff --git a/src/trg-trackers-tree-view.c b/src/trg-trackers-tree-view.c
index c0f45b2..c7bb101 100644
--- a/src/trg-trackers-tree-view.c
+++ b/src/trg-trackers-tree-view.c
@@ -48,6 +48,19 @@ trg_trackers_tree_view_class_init(TrgTrackersTreeViewClass * klass)
g_type_class_add_private(klass, sizeof(TrgTrackersTreeViewPrivate));
}
+static void
+on_trackers_update(JsonObject * response, int status,
+ gpointer data)
+{
+ TrgTrackersTreeViewPrivate *priv = TRG_TRACKERS_TREE_VIEW_GET_PRIVATE(data);
+ GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(data));
+
+ trg_trackers_model_set_accept(TRG_TRACKERS_MODEL(model),
+ TRUE);
+
+ on_generic_interactive_action(response, status, priv->win);
+}
+
void trg_trackers_tree_view_new_connection(TrgTrackersTreeView * tv,
trg_client * tc)
{
@@ -104,11 +117,8 @@ static void trg_tracker_announce_edited(GtkCellRendererText * renderer,
g_free(icon);
- trg_trackers_model_set_update_barrier(TRG_TRACKERS_MODEL(model),
- priv->client->updateSerial + 1);
-
- dispatch_async(priv->client, req, on_generic_interactive_action,
- priv->win);
+ dispatch_async(priv->client, req, on_trackers_update,
+ user_data);
}
static void trg_tracker_announce_editing_started(GtkCellRenderer *
@@ -120,20 +130,17 @@ static void trg_tracker_announce_editing_started(GtkCellRenderer *
TrgTrackersModel *model =
TRG_TRACKERS_MODEL(gtk_tree_view_get_model
(GTK_TREE_VIEW(user_data)));
- trg_trackers_model_set_update_barrier(model,
- TRACKERS_UPDATE_BARRIER_FULL);
+
+ trg_trackers_model_set_accept(model, FALSE);
}
static void trg_tracker_announce_editing_canceled(GtkWidget * w,
gpointer data)
{
- TrgTrackersTreeViewPrivate *priv =
- TRG_TRACKERS_TREE_VIEW_GET_PRIVATE(data);
TrgTrackersModel *model =
TRG_TRACKERS_MODEL(gtk_tree_view_get_model(GTK_TREE_VIEW(data)));
- trg_trackers_model_set_update_barrier(model,
- priv->client->updateSerial + 1);
+ trg_trackers_model_set_accept(model, TRUE);
}
static void trg_trackers_tree_view_init(TrgTrackersTreeView * self)
@@ -226,11 +233,9 @@ static void delete_tracker(GtkWidget * w, gpointer data)
json_object_set_array_member(args, "trackerRemove", trackerIds);
- trg_trackers_model_set_update_barrier(TRG_TRACKERS_MODEL(model),
- priv->client->updateSerial + 1);
+ trg_trackers_model_set_accept(TRG_TRACKERS_MODEL(model), FALSE);
- dispatch_async(priv->client, req, on_generic_interactive_action,
- priv->win);
+ dispatch_async(priv->client, req, on_trackers_update, data);
}
static void
@@ -310,10 +315,10 @@ view_onButtonPressed(GtkWidget * treeview, GdkEventButton * event,
gtk_tree_path_free(path);
view_popup_menu(treeview, event, userdata);
- return TRUE;
} else if (trg_trackers_model_get_torrent_id(model) >= 0) {
view_popup_menu_add_only(treeview, event, userdata);
}
+ return TRUE;
}
return FALSE;