diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2011-12-09 11:17:49 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2011-12-09 11:17:49 +0000 |
commit | 10b8cad6f28e1fbd44708914633523df60269e8b (patch) | |
tree | 61d58a19fb2af5b862d8fe735b5cc65cb7b0a8eb | |
parent | 66131ac638447ea3bf63c9a0b540da3a575e7051 (diff) |
rename the addremove signal in the torrent model to update-filters. this is the only thing it's used for, and I've just made another use of it - since we now check if a download directory has changed to update the short one, emit the signal. now moving torrent(s) to a new directory is instantly shown.
-rw-r--r-- | src/trg-main-window.c | 6 | ||||
-rw-r--r-- | src/trg-torrent-model.c | 27 |
2 files changed, 16 insertions, 17 deletions
diff --git a/src/trg-main-window.c b/src/trg-main-window.c index 8b71a8a..45212be 100644 --- a/src/trg-main-window.c +++ b/src/trg-main-window.c @@ -321,7 +321,7 @@ static void on_torrent_completed(TrgTorrentModel * model, GtkTreeIter * iter, #endif } -static void on_torrent_addremove(TrgTorrentModel * model, gpointer data) { +static void on_update_filters(TrgTorrentModel * model, gpointer data) { TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(data); trg_state_selector_update(priv->stateSelector); } @@ -1981,8 +1981,8 @@ static GObject *trg_main_window_constructor(GType type, G_CALLBACK(on_torrent_completed), self); g_signal_connect(priv->torrentModel, "torrent-added", G_CALLBACK(on_torrent_added), self); - g_signal_connect(priv->torrentModel, "torrent-addremove", - G_CALLBACK(on_torrent_addremove), self); + g_signal_connect(priv->torrentModel, "update-filters", + G_CALLBACK(on_update_filters), self); priv->sortedTorrentModel = gtk_tree_model_sort_new_with_model( GTK_TREE_MODEL(priv->torrentModel)); diff --git a/src/trg-torrent-model.c b/src/trg-torrent-model.c index f367e77..e1fd3a0 100644 --- a/src/trg-torrent-model.c +++ b/src/trg-torrent-model.c @@ -54,7 +54,7 @@ enum { TMODEL_TORRENT_COMPLETED, TMODEL_TORRENT_ADDED, - TMODEL_TORRENT_ADDREMOVE, + TMODEL_UPDATE_FILTERS, TMODEL_SIGNAL_COUNT }; @@ -81,7 +81,7 @@ static void trg_torrent_model_dispose(GObject * object) { static void update_torrent_iter(TrgTorrentModel * model, TrgClient *tc, gint64 rpcv, gint64 serial, GtkTreeIter * iter, JsonObject * t, - trg_torrent_model_update_stats * stats); + trg_torrent_model_update_stats * stats, gboolean *updateFilters); static void trg_torrent_model_class_init(TrgTorrentModelClass * klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); @@ -103,7 +103,7 @@ static void trg_torrent_model_class_init(TrgTorrentModelClass * klass) { torrent_added), NULL, NULL, g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER); - signals[TMODEL_TORRENT_ADDREMOVE] = g_signal_new("torrent-addremove", + signals[TMODEL_UPDATE_FILTERS] = g_signal_new("update-filters", G_TYPE_FROM_CLASS(object_class), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET(TrgTorrentModelClass, @@ -323,7 +323,7 @@ gchar *shorten_download_dir(TrgClient *tc, const gchar *downloadDir) { static inline void update_torrent_iter(TrgTorrentModel * model, TrgClient *tc, gint64 rpcv, gint64 serial, GtkTreeIter * iter, JsonObject * t, - trg_torrent_model_update_stats * stats) { + trg_torrent_model_update_stats * stats, gboolean *updateFilters) { TrgTorrentModelPrivate *priv = TRG_TORRENT_MODEL_GET_PRIVATE(model); GtkListStore *ls = GTK_LIST_STORE(model); guint lastFlags, newFlags; @@ -494,6 +494,7 @@ static inline void update_torrent_iter(TrgTorrentModel * model, TrgClient *tc, gtk_list_store_set(ls, iter, TORRENT_COLUMN_DOWNLOADDIR_SHORT, shortDownloadDir, -1); g_free(shortDownloadDir); + *updateFilters = TRUE; } if (lastJson) @@ -598,7 +599,7 @@ void trg_torrent_model_update(TrgTorrentModel * model, TrgClient * tc, GtkTreePath *path; GtkTreeRowReference *rr; gpointer *result; - gboolean addRemove = FALSE; + gboolean updateFilters = FALSE; gint64 rpcv = trg_client_get_rpc_version(tc); @@ -617,7 +618,7 @@ void trg_torrent_model_update(TrgTorrentModel * model, TrgClient * tc, gtk_list_store_append(GTK_LIST_STORE(model), &iter); update_torrent_iter(model, tc, rpcv, trg_client_get_serial(tc), - &iter, t, stats); + &iter, t, stats, &updateFilters); path = gtk_tree_model_get_path(GTK_TREE_MODEL(model), &iter); rr = gtk_tree_row_reference_new(GTK_TREE_MODEL(model), path); @@ -625,9 +626,7 @@ void trg_torrent_model_update(TrgTorrentModel * model, TrgClient * tc, *idCopy = id; g_hash_table_insert(priv->ht, idCopy, rr); gtk_tree_path_free(path); - addRemove = TRUE; - if (mode != TORRENT_GET_MODE_FIRST - ) + if (mode != TORRENT_GET_MODE_FIRST) g_signal_emit(model, signals[TMODEL_TORRENT_ADDED], 0, &iter); } else { path = gtk_tree_row_reference_get_path( @@ -636,7 +635,7 @@ void trg_torrent_model_update(TrgTorrentModel * model, TrgClient * tc, if (gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path)) { update_torrent_iter(model, tc, rpcv, - trg_client_get_serial(tc), &iter, t, stats); + trg_client_get_serial(tc), &iter, t, stats, &updateFilters); } gtk_tree_path_free(path); } @@ -653,7 +652,7 @@ void trg_torrent_model_update(TrgTorrentModel * model, TrgClient * tc, g_hash_table_remove(priv->ht, li->data); g_free(li->data); } - addRemove = TRUE; + updateFilters = TRUE; g_list_free(hitlist); } } else if (mode > TORRENT_GET_MODE_FIRST) { @@ -663,14 +662,14 @@ void trg_torrent_model_update(TrgTorrentModel * model, TrgClient * tc, for (li = hitlist; li; li = g_list_next(li)) { id = json_node_get_int((JsonNode *) li->data); g_hash_table_remove(priv->ht, &id); - addRemove = TRUE; + updateFilters = TRUE; } g_list_free(hitlist); } } - if (addRemove) - g_signal_emit(model, signals[TMODEL_TORRENT_ADDREMOVE], 0); + if (updateFilters) + g_signal_emit(model, signals[TMODEL_UPDATE_FILTERS], 0); gtk_tree_model_foreach(GTK_TREE_MODEL(model), trg_torrent_model_stats_scan_foreachfunc, stats); |