From fb8d0deab9df49443f6f9a44be4f3e89ef7be15f Mon Sep 17 00:00:00 2001 From: DriverXX Date: Wed, 9 Mar 2016 00:39:24 +0100 Subject: Add directory first options --- src/trg-state-selector.c | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) (limited to 'src/trg-state-selector.c') diff --git a/src/trg-state-selector.c b/src/trg-state-selector.c index cbfc244..4110f7b 100644 --- a/src/trg-state-selector.c +++ b/src/trg-state-selector.c @@ -53,6 +53,7 @@ struct _TrgStateSelectorPrivate { guint flag; gboolean showDirs; gboolean showTrackers; + gboolean dirsFirst; TrgClient *client; TrgPrefs *prefs; GHashTable *trackers; @@ -360,10 +361,13 @@ void trg_state_selector_update(TrgStateSelector * s, guint whatsChanged) updateSerial); g_free(announceHost); } else { - trg_state_selector_insert(s, priv->n_categories, - g_hash_table_size - (priv->trackers), - announceHost, &iter); + if (priv->dirsFirst){ + trg_state_selector_insert(s, priv->n_categories + + g_hash_table_size(priv->directories), -1, announceHost, &iter); + } else { + trg_state_selector_insert(s, priv->n_categories, + g_hash_table_size(priv->trackers), announceHost, &iter); + } gtk_list_store_set(GTK_LIST_STORE(model), &iter, STATE_SELECTOR_ICON, GTK_STOCK_NETWORK, @@ -394,11 +398,13 @@ void trg_state_selector_update(TrgStateSelector * s, guint whatsChanged) *) result, updateSerial); } else { - trg_state_selector_insert(s, - priv->n_categories + - g_hash_table_size - (priv->trackers), -1, dir, - &iter); + if (priv->dirsFirst){ + trg_state_selector_insert(s, priv->n_categories, + g_hash_table_size(priv->directories), dir, &iter); + } else { + trg_state_selector_insert(s, priv->n_categories + + g_hash_table_size(priv->trackers), -1, dir, &iter); + } gtk_list_store_set(GTK_LIST_STORE(model), &iter, STATE_SELECTOR_ICON, GTK_STOCK_DIRECTORY, @@ -470,6 +476,15 @@ trg_state_selector_set_show_trackers(TrgStateSelector * s, gboolean show) trg_state_selector_update(s, TORRENT_UPDATE_ADDREMOVE); } +void +trg_state_selector_set_directories_first(TrgStateSelector * s, gboolean _dirsFirst){ + TrgStateSelectorPrivate *priv = TRG_STATE_SELECTOR_GET_PRIVATE(s); + priv->dirsFirst = _dirsFirst; + g_hash_table_remove_all(priv->directories); + g_hash_table_remove_all(priv->trackers); + trg_state_selector_update(s, TORRENT_UPDATE_ADDREMOVE); +} + static void trg_state_selector_add_state(TrgStateSelector * selector, GtkTreeIter * iter, gint pos, @@ -719,6 +734,9 @@ static GObject *trg_state_selector_constructor(GType type, priv->showTrackers = trg_prefs_get_bool(priv->prefs, TRG_PREFS_KEY_FILTER_TRACKERS, TRG_PREFS_GLOBAL); + priv->dirsFirst = + trg_prefs_get_bool(priv->prefs, TRG_PREFS_KEY_DIRECTORIES_FIRST, + TRG_PREFS_GLOBAL); return object; } -- cgit v1.2.3