summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2012-01-02 00:04:22 +0000
committerGravatar Alan Fitton <ajf@eth0.org.uk>2012-01-02 00:04:22 +0000
commit94e9936deac2818db70d77a70d809fe16234e05e (patch)
treec0156aa9e87fb62a08f702d5121bbbaca3e97f58 /src
parent6b84bc3968c7b09a7eb180a5c73d4cf3f646d759 (diff)
contributed patch to change two Kbps to the correct KB/s. also have another go at the more efficient filter refreshes.
Diffstat (limited to 'src')
-rw-r--r--src/trg-main-window.c1
-rw-r--r--src/trg-state-selector.c50
-rw-r--r--src/trg-state-selector.h2
-rw-r--r--src/trg-torrent-model.c23
-rw-r--r--src/trg-torrent-props-dialog.c4
5 files changed, 46 insertions, 34 deletions
diff --git a/src/trg-main-window.c b/src/trg-main-window.c
index 5461fb3..491d156 100644
--- a/src/trg-main-window.c
+++ b/src/trg-main-window.c
@@ -1298,7 +1298,6 @@ void trg_main_window_reload_dir_aliases(TrgMainWindow * win)
trg_torrent_model_reload_dir_aliases(priv->client,
GTK_TREE_MODEL
(priv->torrentModel));
- trg_state_selector_update(priv->stateSelector);
}
static TrgTorrentTreeView
diff --git a/src/trg-state-selector.c b/src/trg-state-selector.c
index 5bad1cc..cbfacdd 100644
--- a/src/trg-state-selector.c
+++ b/src/trg-state-selector.c
@@ -161,26 +161,27 @@ static void trg_state_selector_update_dynamic_filter(GtkTreeModel * model,
if (oldSerial != serial) {
g_value_init(&gvalue, G_TYPE_INT);
g_value_set_int(&gvalue, 1);
- gtk_list_store_set_value(GTK_LIST_STORE(model), &iter, STATE_SELECTOR_COUNT,
- &gvalue);
+ gtk_list_store_set_value(GTK_LIST_STORE(model), &iter,
+ STATE_SELECTOR_COUNT, &gvalue);
memset(&gvalue, 0, sizeof(GValue));
g_value_init(&gvalue, G_TYPE_INT64);
g_value_set_int64(&gvalue, serial);
- gtk_list_store_set_value(GTK_LIST_STORE(model), &iter, STATE_SELECTOR_SERIAL,
- &gvalue);
+ gtk_list_store_set_value(GTK_LIST_STORE(model), &iter,
+ STATE_SELECTOR_SERIAL, &gvalue);
} else {
g_value_init(&gvalue, G_TYPE_INT);
g_value_set_int(&gvalue, ++oldCount);
- gtk_list_store_set_value(GTK_LIST_STORE(model), &iter, STATE_SELECTOR_COUNT,
- &gvalue);
+ gtk_list_store_set_value(GTK_LIST_STORE(model), &iter,
+ STATE_SELECTOR_COUNT, &gvalue);
}
gtk_tree_path_free(path);
}
static void refresh_statelist_cb(GtkWidget * w, gpointer data) {
- trg_state_selector_update(TRG_STATE_SELECTOR(data));
+ trg_state_selector_update(TRG_STATE_SELECTOR(data),
+ TORRENT_UPDATE_ADDREMOVE);
}
static void view_popup_menu(GtkWidget * treeview, GdkEventButton * event,
@@ -263,7 +264,7 @@ static void trg_state_selector_insert(TrgStateSelector * s, int offset,
gtk_list_store_insert(GTK_LIST_STORE(model), iter, args.pos);
}
-void trg_state_selector_update(TrgStateSelector * s) {
+void trg_state_selector_update(TrgStateSelector * s, guint whatsChanged) {
TrgStateSelectorPrivate *priv = TRG_STATE_SELECTOR_GET_PRIVATE(s);
GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(s));
TrgClient *client = priv->client;
@@ -300,7 +301,7 @@ void trg_state_selector_update(TrgStateSelector * s) {
if (!t)
continue;
- if (priv->showTrackers) {
+ if (priv->showTrackers && (whatsChanged & TORRENT_UPDATE_ADDREMOVE)) {
trackersList = json_array_get_elements(
torrent_get_tracker_stats(t));
for (trackerItem = trackersList; trackerItem;
@@ -328,9 +329,8 @@ void trg_state_selector_update(TrgStateSelector * s) {
STATE_SELECTOR_ICON, GTK_STOCK_NETWORK,
STATE_SELECTOR_NAME, announceHost,
STATE_SELECTOR_SERIAL, updateSerial,
- STATE_SELECTOR_COUNT, 1,
- STATE_SELECTOR_BIT, FILTER_FLAG_TRACKER,
- STATE_SELECTOR_INDEX, 0, -1);
+ STATE_SELECTOR_COUNT, 1, STATE_SELECTOR_BIT,
+ FILTER_FLAG_TRACKER, STATE_SELECTOR_INDEX, 0, -1);
g_hash_table_insert(priv->trackers, announceHost,
quick_tree_ref_new(model, &iter));
}
@@ -338,7 +338,9 @@ void trg_state_selector_update(TrgStateSelector * s) {
g_list_free(trackersList);
}
- if (priv->showDirs) {
+ if (priv->showDirs
+ && ((whatsChanged & TORRENT_UPDATE_ADDREMOVE)
+ || (whatsChanged & TORRENT_UPDATE_PATH_CHANGE))) {
gchar *dir;
gtk_tree_model_get(torrentModel, &torrentIter,
TORRENT_COLUMN_DOWNLOADDIR_SHORT, &dir, -1);
@@ -355,8 +357,7 @@ void trg_state_selector_update(TrgStateSelector * s) {
STATE_SELECTOR_ICON, GTK_STOCK_DIRECTORY,
STATE_SELECTOR_NAME, dir, STATE_SELECTOR_SERIAL,
updateSerial, STATE_SELECTOR_BIT, FILTER_FLAG_DIR,
- STATE_SELECTOR_COUNT, 1,
- STATE_SELECTOR_INDEX, 0, -1);
+ STATE_SELECTOR_COUNT, 1, STATE_SELECTOR_INDEX, 0, -1);
g_hash_table_insert(priv->directories, g_strdup(dir),
quick_tree_ref_new(model, &iter));
}
@@ -369,13 +370,15 @@ void trg_state_selector_update(TrgStateSelector * s) {
cruft.serial = trg_client_get_serial(client);
- if (priv->showTrackers) {
+ if (priv->showTrackers && ((whatsChanged & TORRENT_UPDATE_ADDREMOVE))) {
cruft.table = priv->trackers;
g_hash_table_foreach_remove(priv->trackers,
trg_state_selector_remove_cruft, &cruft);
}
- if (priv->showDirs) {
+ if (priv->showDirs
+ && ((whatsChanged & TORRENT_UPDATE_ADDREMOVE)
+ || (whatsChanged & TORRENT_UPDATE_PATH_CHANGE))) {
cruft.table = priv->directories;
g_hash_table_foreach_remove(priv->directories,
trg_state_selector_remove_cruft, &cruft);
@@ -388,15 +391,18 @@ void trg_state_selector_set_show_dirs(TrgStateSelector * s, gboolean show) {
if (!show)
g_hash_table_remove_all(priv->directories);
else
- trg_state_selector_update(s);
+ trg_state_selector_update(s, TORRENT_UPDATE_PATH_CHANGE);
}
static void on_torrents_state_change(TrgTorrentModel * model,
guint whatsChanged, gpointer data) {
TrgStateSelector *selector = TRG_STATE_SELECTOR(data);
- trg_state_selector_update(selector);
- trg_state_selector_stats_update(selector,
- trg_torrent_model_get_stats(model));
+ trg_state_selector_update(selector, whatsChanged);
+
+ if ((whatsChanged & TORRENT_UPDATE_ADDREMOVE)
+ || (whatsChanged & TORRENT_UPDATE_STATE_CHANGE))
+ trg_state_selector_stats_update(selector,
+ trg_torrent_model_get_stats(model));
}
void trg_state_selector_set_show_trackers(TrgStateSelector * s, gboolean show) {
@@ -405,7 +411,7 @@ void trg_state_selector_set_show_trackers(TrgStateSelector * s, gboolean show) {
if (!show)
g_hash_table_remove_all(priv->trackers);
else
- trg_state_selector_update(s);
+ trg_state_selector_update(s, TORRENT_UPDATE_ADDREMOVE);
}
static void trg_state_selector_add_state(TrgStateSelector * selector,
diff --git a/src/trg-state-selector.h b/src/trg-state-selector.h
index f002b3b..2d9af17 100644
--- a/src/trg-state-selector.h
+++ b/src/trg-state-selector.h
@@ -64,7 +64,7 @@ GType trg_state_selector_get_type(void);
TrgStateSelector *trg_state_selector_new(TrgClient * client, TrgTorrentModel *tmodel);
G_END_DECLS guint32 trg_state_selector_get_flag(TrgStateSelector * s);
-void trg_state_selector_update(TrgStateSelector * s);
+void trg_state_selector_update(TrgStateSelector * s, guint whatsChanged);
gchar *trg_state_selector_get_selected_text(TrgStateSelector * s);
GRegex *trg_state_selector_get_url_host_regex(TrgStateSelector * s);
void trg_state_selector_disconnect(TrgStateSelector * s);
diff --git a/src/trg-torrent-model.c b/src/trg-torrent-model.c
index e46b876..ace6bae 100644
--- a/src/trg-torrent-model.c
+++ b/src/trg-torrent-model.c
@@ -249,6 +249,8 @@ static gboolean trg_torrent_model_reload_dir_aliases_foreachfunc(
void trg_torrent_model_reload_dir_aliases(TrgClient * tc, GtkTreeModel * model) {
gtk_tree_model_foreach(model,
trg_torrent_model_reload_dir_aliases_foreachfunc, tc);
+ g_signal_emit(model, signals[TMODEL_STATE_CHANGED], 0,
+ TORRENT_UPDATE_PATH_CHANGE);
}
static gboolean trg_torrent_model_stats_scan_foreachfunc(GtkTreeModel * model,
@@ -274,23 +276,25 @@ static gboolean trg_torrent_model_stats_scan_foreachfunc(GtkTreeModel * model,
stats->error++;
if (flags & TORRENT_FLAG_COMPLETE
- )
+ )
stats->complete++;
else
stats->incomplete++;
if (flags & TORRENT_FLAG_CHECKING
- )
+ )
stats->checking++;
if (flags & TORRENT_FLAG_ACTIVE
- )
+ )
stats->active++;
- if (flags & TORRENT_FLAG_SEEDING_WAIT)
+ if (flags & TORRENT_FLAG_SEEDING_WAIT
+ )
stats->seed_wait++;
- if (flags & TORRENT_FLAG_DOWNLOADING_WAIT)
+ if (flags & TORRENT_FLAG_DOWNLOADING_WAIT
+ )
stats->down_wait++;
stats->count++;
@@ -720,9 +724,12 @@ trg_torrent_model_update_stats *trg_torrent_model_update(
}
if (whatsChanged != 0) {
- trg_torrent_model_stat_counts_clear(&priv->stats);
- gtk_tree_model_foreach(GTK_TREE_MODEL(model),
- trg_torrent_model_stats_scan_foreachfunc, &(priv->stats));
+ if ((whatsChanged & TORRENT_UPDATE_ADDREMOVE)
+ || (whatsChanged & TORRENT_UPDATE_STATE_CHANGE)) {
+ trg_torrent_model_stat_counts_clear(&priv->stats);
+ gtk_tree_model_foreach(GTK_TREE_MODEL(model),
+ trg_torrent_model_stats_scan_foreachfunc, &(priv->stats));
+ }
g_signal_emit(model, signals[TMODEL_STATE_CHANGED], 0, whatsChanged);
}
diff --git a/src/trg-torrent-props-dialog.c b/src/trg-torrent-props-dialog.c
index 92c624c..1ab2f8a 100644
--- a/src/trg-torrent-props-dialog.c
+++ b/src/trg-torrent-props-dialog.c
@@ -195,7 +195,7 @@ static GtkWidget *trg_props_limitsPage(TrgTorrentPropsDialog * win,
tb = trg_json_widget_check_new(&priv->widgets, json,
FIELD_DOWNLOAD_LIMITED,
- _("Limit download speed (Kbps)"), NULL);
+ _("Limit download speed (KB/s)"), NULL);
w = trg_json_widget_spin_new(&priv->widgets, json,
FIELD_DOWNLOAD_LIMIT, tb, 0, INT_MAX,
1);
@@ -203,7 +203,7 @@ static GtkWidget *trg_props_limitsPage(TrgTorrentPropsDialog * win,
tb = trg_json_widget_check_new(&priv->widgets, json,
FIELD_UPLOAD_LIMITED,
- _("Limit upload speed (Kbps)"), NULL);
+ _("Limit upload speed (KB/s)"), NULL);
w = trg_json_widget_spin_new(&priv->widgets, json,
FIELD_UPLOAD_LIMIT, tb, 0, INT_MAX,
1);