summaryrefslogtreecommitdiff
path: root/src/trg-main-window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/trg-main-window.c')
-rw-r--r--src/trg-main-window.c111
1 files changed, 60 insertions, 51 deletions
diff --git a/src/trg-main-window.c b/src/trg-main-window.c
index 1b67687..821f267 100644
--- a/src/trg-main-window.c
+++ b/src/trg-main-window.c
@@ -72,8 +72,7 @@ static gboolean update_selected_torrent_notebook(TrgMainWindow * win,
static void torrent_event_notification(TrgTorrentModel * model,
gchar * icon, gchar * desc,
gint tmout, gchar * prefKey,
- GtkTreeIter * iter,
- gpointer data);
+ GtkTreeIter * iter, gpointer data);
static void on_torrent_completed(TrgTorrentModel * model,
GtkTreeIter * iter, gpointer data);
static void on_torrent_added(TrgTorrentModel * model, GtkTreeIter * iter,
@@ -309,21 +308,23 @@ static void on_torrent_completed(TrgTorrentModel * model,
GtkTreeIter * iter, gpointer data)
{
torrent_event_notification(model, GTK_STOCK_APPLY,
- "This torrent has completed.", TORRENT_COMPLETE_NOTIFY_TMOUT,
+ _("This torrent has completed."),
+ TORRENT_COMPLETE_NOTIFY_TMOUT,
TRG_GCONF_KEY_COMPLETE_NOTIFY, iter, data);
}
-static void on_torrent_addremove(TrgTorrentModel *model, gpointer data)
+static void on_torrent_addremove(TrgTorrentModel * model, gpointer data)
{
TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(data);
- trg_state_selector_update_trackers(priv->stateSelector, priv->client->torrents, priv->client->updateSerial);
+ trg_state_selector_update(priv->stateSelector);
}
static void on_torrent_added(TrgTorrentModel * model,
GtkTreeIter * iter, gpointer data)
{
torrent_event_notification(model, GTK_STOCK_ADD,
- "This torrent has been added.", TORRENT_ADD_NOTIFY_TMOUT,
+ _("This torrent has been added."),
+ TORRENT_ADD_NOTIFY_TMOUT,
TRG_GCONF_KEY_ADD_NOTIFY, iter, data);
}
@@ -902,14 +903,12 @@ static void on_session_get(JsonObject * response, int status,
static void
on_torrent_get(JsonObject * response, int mode, int status, gpointer data)
{
+ TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(data);
+
+ trg_client *client = priv->client;
trg_torrent_model_update_stats stats;
- TrgMainWindowPrivate *priv;
- trg_client *client;
gboolean first;
- priv = TRG_MAIN_WINDOW_GET_PRIVATE(data);
- client = priv->client;
-
/* Disconnected between request and response callback */
if (client->session == NULL) {
response_unref(response);
@@ -1011,11 +1010,8 @@ trg_main_window_update_notebook_displays(TrgMainWindow * win,
GtkTreeIter * iter,
gboolean first)
{
- TrgMainWindowPrivate *priv;
- trg_client *client;
-
- priv = TRG_MAIN_WINDOW_GET_PRIVATE(win);
- client = priv->client;
+ TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(win);
+ trg_client *client = priv->client;
trg_general_panel_update(priv->genDetails, t, iter);
trg_trackers_model_update(priv->trackersModel, client->updateSerial, t,
@@ -1039,46 +1035,57 @@ trg_torrent_tree_view_visible_func(GtkTreeModel * model,
GtkTreeIter * iter, gpointer data)
{
guint flags;
- gchar *name = NULL;
- gboolean visible = TRUE;
+ gboolean visible;
+ gchar *name;
+ const gchar *filterText;
TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(data);
guint32 criteria = trg_state_selector_get_flag(priv->stateSelector);
- gtk_tree_model_get(model, iter,
- TORRENT_COLUMN_FLAGS, &flags,
- TORRENT_COLUMN_NAME, &name, -1);
+ gtk_tree_model_get(model, iter, TORRENT_COLUMN_FLAGS, &flags, -1);
if (criteria != 0) {
if (criteria & FILTER_FLAG_TRACKER) {
- gchar *text = trg_state_selector_get_selected_text(priv->stateSelector);
+ gchar *text =
+ trg_state_selector_get_selected_text(priv->stateSelector);
JsonObject *json = NULL;
- gtk_tree_model_get(model, iter, TORRENT_COLUMN_JSON, &json, -1);
-
- if (!torrent_has_tracker(json, trg_state_selector_get_url_host_regex(priv->stateSelector), text))
- visible = FALSE;
+ gtk_tree_model_get(model, iter, TORRENT_COLUMN_JSON, &json,
+ -1);
+
+ if (!torrent_has_tracker
+ (json,
+ trg_state_selector_get_url_host_regex
+ (priv->stateSelector), text))
+ return FALSE;
+ } else if (criteria & FILTER_FLAG_DIR) {
+ gchar *text =
+ trg_state_selector_get_selected_text(priv->stateSelector);
+ JsonObject *json = NULL;
+ gtk_tree_model_get(model, iter, TORRENT_COLUMN_JSON, &json,
+ -1);
+ if (g_strcmp0(text, torrent_get_download_dir(json)))
+ return FALSE;
} else if (!(flags & criteria)) {
- visible = FALSE;
+ return FALSE;
}
}
- if (visible && name != NULL) {
- const gchar *filterText =
- gtk_entry_get_text(GTK_ENTRY(priv->filterEntry));
- if (strlen(filterText) > 0) {
- gchar *filterCmp = g_utf8_casefold(filterText, -1);
- gchar *nameCmp = g_utf8_casefold(name, -1);
+ visible = TRUE;
+ name = NULL;
- if (!strstr(nameCmp, filterCmp))
- visible = FALSE;
+ gtk_tree_model_get(model, iter, TORRENT_COLUMN_NAME, &name, -1);
+ filterText = gtk_entry_get_text(GTK_ENTRY(priv->filterEntry));
+ if (strlen(filterText) > 0) {
+ gchar *filterCmp = g_utf8_casefold(filterText, -1);
+ gchar *nameCmp = g_utf8_casefold(name, -1);
- g_free(filterCmp);
- g_free(nameCmp);
- }
+ if (!strstr(nameCmp, filterCmp))
+ visible = FALSE;
+ g_free(filterCmp);
+ g_free(nameCmp);
}
-
g_free(name);
return visible;
@@ -1226,13 +1233,14 @@ void trg_main_window_conn_changed(TrgMainWindow * win, gboolean connected)
connected);
gtk_widget_set_sensitive(GTK_WIDGET(priv->genDetails), connected);;
- if (connected == FALSE) {
+ if (!connected) {
json_object_unref(tc->session);
tc->session = NULL;
gtk_list_store_clear(GTK_LIST_STORE(priv->torrentModel));
trg_main_window_torrent_scrub(win);
trg_torrent_graph_set_nothing(priv->graph);
+ trg_state_selector_disconnect(priv->stateSelector);
}
}
@@ -1736,6 +1744,12 @@ void trg_main_window_add_status_icon(TrgMainWindow * win)
G_CALLBACK(trg_status_icon_popup_menu_cb), win);
}
+TrgStateSelector *trg_main_window_get_state_selector(TrgMainWindow * win)
+{
+ TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(win);
+ return priv->stateSelector;
+}
+
static GObject *trg_main_window_constructor(GType type,
guint
n_construct_properties,
@@ -1749,7 +1763,6 @@ static GObject *trg_main_window_constructor(GType type,
GtkWidget *toolbarHbox;
GtkIconTheme *theme;
gint width, height;
- GError *error = NULL;
gboolean tray;
self = TRG_MAIN_WINDOW(G_OBJECT_CLASS
@@ -1781,7 +1794,7 @@ static GObject *trg_main_window_constructor(GType type,
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_CALLBACK(on_torrent_addremove), self);
priv->filteredTorrentModel =
gtk_tree_model_filter_new(GTK_TREE_MODEL(priv->torrentModel),
@@ -1856,9 +1869,10 @@ static GObject *trg_main_window_constructor(GType type,
gtk_box_pack_start(GTK_BOX(outerVbox), priv->vpaned, TRUE, TRUE, 0);
gtk_paned_pack1(GTK_PANED(priv->vpaned), priv->hpaned, TRUE, TRUE);
- priv->stateSelector = trg_state_selector_new();
+ priv->stateSelector = trg_state_selector_new(priv->client);
gtk_paned_pack1(GTK_PANED(priv->hpaned),
- GTK_WIDGET(priv->stateSelector), FALSE, FALSE);
+ my_scrolledwin_new(GTK_WIDGET(priv->stateSelector)),
+ FALSE, FALSE);
gtk_paned_pack2(GTK_PANED(priv->hpaned),
my_scrolledwin_new(GTK_WIDGET
@@ -1874,13 +1888,8 @@ static GObject *trg_main_window_constructor(GType type,
gtk_paned_pack2(GTK_PANED(priv->vpaned), priv->notebook, FALSE, FALSE);
tray =
- gconf_client_get_bool(priv->client->gconf,
- TRG_GCONF_KEY_SYSTEM_TRAY, &error);
- if (error) {
- g_error_free(error);
- tray = TRUE;
- }
-
+ gconf_client_get_bool_or_true(priv->client->gconf,
+ TRG_GCONF_KEY_SYSTEM_TRAY);
if (tray) {
trg_main_window_add_status_icon(self);
} else {