diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2011-10-19 20:21:19 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2011-10-19 20:21:19 +0000 |
commit | 3fa2dbf607db03b7f2535d7eb98ee6bdae0239dd (patch) | |
tree | c134603b54c23cd2dfc2a14650d8d39394dfd139 | |
parent | a04430bff79030690add518548677251816e3e71 (diff) |
implement a TRG_PREFS_CONNECTION flag which gets prefs for the connected profile
-rw-r--r-- | src/remote-exec.c | 4 | ||||
-rw-r--r-- | src/remote-exec.h | 2 | ||||
-rw-r--r-- | src/trg-client.c | 24 | ||||
-rw-r--r-- | src/trg-client.h | 2 | ||||
-rw-r--r-- | src/trg-main-window.c | 5 | ||||
-rw-r--r-- | src/trg-preferences-dialog.c | 2 | ||||
-rw-r--r-- | src/trg-prefs.c | 25 | ||||
-rw-r--r-- | src/trg-prefs.h | 7 |
8 files changed, 39 insertions, 32 deletions
diff --git a/src/remote-exec.c b/src/remote-exec.c index d8041c7..0e3c4e9 100644 --- a/src/remote-exec.c +++ b/src/remote-exec.c @@ -83,9 +83,9 @@ static gchar *dump_json_value(JsonNode * node) { return g_string_free(buffer, FALSE); } -gchar *build_remote_exec_cmd(TrgClient *tc, GtkTreeModel *model, GList *selection, +gchar *build_remote_exec_cmd(TrgPrefs *prefs, GtkTreeModel *model, GList *selection, const gchar * input) { - JsonObject *profile = trg_client_get_current_profile(tc); + JsonObject *profile = trg_prefs_get_connection(prefs); gchar *work; GRegex *regex, *replacerx; GMatchInfo *match_info; diff --git a/src/remote-exec.h b/src/remote-exec.h index 4f8c52e..4fb67f4 100644 --- a/src/remote-exec.h +++ b/src/remote-exec.h @@ -20,7 +20,7 @@ #ifndef REMOTE_EXEC_H_ #define REMOTE_EXEC_H_ -gchar *build_remote_exec_cmd(TrgClient *tc, GtkTreeModel *model, GList *selection, +gchar *build_remote_exec_cmd(TrgPrefs *prefs, GtkTreeModel *model, GList *selection, const gchar * input); #endif /* REMOTE_EXEC_H_ */ diff --git a/src/trg-client.c b/src/trg-client.c index 481156c..617a0e1 100644 --- a/src/trg-client.c +++ b/src/trg-client.c @@ -60,7 +60,6 @@ struct _TrgClientPrivate { guint min_interval; gint64 updateSerial; JsonObject *session; - JsonObject *currentProfile; gboolean ssl; float version; char *url; @@ -197,12 +196,6 @@ TrgPrefs *trg_client_get_prefs(TrgClient *tc) return priv->prefs; } -JsonObject *trg_client_get_current_profile(TrgClient *tc) -{ - TrgClientPrivate *priv = TRG_CLIENT_GET_PRIVATE(tc); - return priv->currentProfile; -} - int trg_client_populate_with_settings(TrgClient * tc) { TrgClientPrivate *priv = TRG_CLIENT_GET_PRIVATE(tc); @@ -216,6 +209,8 @@ int trg_client_populate_with_settings(TrgClient * tc) g_mutex_lock(priv->configMutex); + trg_prefs_set_connection(prefs, trg_prefs_get_profile(prefs)); + g_free(priv->url); priv->url = NULL; @@ -269,8 +264,6 @@ int trg_client_populate_with_settings(TrgClient * tc) trg_prefs_get_bool(prefs, TRG_PREFS_KEY_UPDATE_ACTIVE_ONLY, TRG_PREFS_PROFILE); - priv->currentProfile = trg_prefs_get_profile(prefs); - #ifdef HAVE_LIBPROXY if ((pf = px_proxy_factory_new())) { char **proxies = px_proxy_factory_get_proxies(pf, priv->url); @@ -342,7 +335,8 @@ void trg_client_status_change(TrgClient *tc, gboolean connected) json_object_unref(priv->session); priv->session = NULL; } - priv->currentProfile = NULL; + + trg_prefs_set_connection(priv->prefs, NULL); } } @@ -352,16 +346,6 @@ JsonObject* trg_client_get_session(TrgClient *tc) return priv->session; } -void trg_client_del_profile(TrgClient *tc, JsonObject *profile) -{ - TrgClientPrivate *priv = TRG_CLIENT_GET_PRIVATE(tc); - - if (profile == priv->currentProfile) - priv->currentProfile = NULL; - - trg_prefs_del_profile(priv->prefs, profile); -} - void trg_client_thread_pool_push(TrgClient *tc, gpointer data, GError **err) { TrgClientPrivate *priv = TRG_CLIENT_GET_PRIVATE(tc); diff --git a/src/trg-client.h b/src/trg-client.h index f89d695..4ef93f9 100644 --- a/src/trg-client.h +++ b/src/trg-client.h @@ -170,8 +170,6 @@ void trg_client_set_interval(TrgClient *tc, guint interval); void trg_client_set_minimised_interval(TrgClient *tc, guint interval); void trg_client_set_activeonlyupdate(TrgClient *tc, gboolean activeOnlyUpdate); void trg_client_inc_connid(TrgClient *tc); -JsonObject *trg_client_get_current_profile(TrgClient *tc); -void trg_client_del_profile(TrgClient *tc, JsonObject *profile); G_END_DECLS diff --git a/src/trg-main-window.c b/src/trg-main-window.c index 20a9df7..5691786 100644 --- a/src/trg-main-window.c +++ b/src/trg-main-window.c @@ -1501,6 +1501,7 @@ static GtkWidget *limit_menu_new(TrgMainWindow * win, gchar * title, static void exec_cmd_cb(GtkWidget *w, gpointer data) { TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(data); + TrgPrefs *prefs = trg_client_get_prefs(priv->client); JsonObject *cmd_obj = (JsonObject*) g_object_get_data(G_OBJECT(w), "cmd-object"); GtkTreeSelection *selection = gtk_tree_view_get_selection( @@ -1511,7 +1512,7 @@ static void exec_cmd_cb(GtkWidget *w, gpointer data) { gchar *cmd_line, **argv; cmd_line = build_remote_exec_cmd( - priv->client, + prefs, model, selectedRows, json_object_get_string_member(cmd_obj, @@ -1574,7 +1575,7 @@ static void trg_torrent_tv_view_menu(GtkWidget * treeview, trg_imagemenuitem_new(GTK_MENU_SHELL(menu), _("Remove & Delete"), GTK_STOCK_CLEAR, TRUE, G_CALLBACK(delete_cb), data); - cmds = trg_prefs_get_array(prefs, TRG_PREFS_KEY_EXEC_COMMANDS, TRG_PREFS_PROFILE); + cmds = trg_prefs_get_array(prefs, TRG_PREFS_KEY_EXEC_COMMANDS, TRG_PREFS_CONNECTION); n_cmds = json_array_get_length(cmds); if (n_cmds > 0) { diff --git a/src/trg-preferences-dialog.c b/src/trg-preferences-dialog.c index e72febe..4b0cd57 100644 --- a/src/trg-preferences-dialog.c +++ b/src/trg-preferences-dialog.c @@ -529,7 +529,7 @@ static void del_profile_cb(GtkWidget *w, gpointer data) { if (gtk_combo_box_get_active_iter(combo, &iter)) { gtk_tree_model_get(profileModel, &iter, 0, &profile, -1); - trg_client_del_profile(priv->client, profile); + trg_prefs_del_profile(prefs, profile); trg_prefs_set_profile(prefs, NULL); gtk_list_store_remove(GTK_LIST_STORE(profileModel), &iter); gtk_combo_box_set_active(combo, 0); diff --git a/src/trg-prefs.c b/src/trg-prefs.c index 1501217..90d8887 100644 --- a/src/trg-prefs.c +++ b/src/trg-prefs.c @@ -39,6 +39,7 @@ struct _TrgPrefsPrivate { JsonObject *defaultsObj; JsonNode *user; JsonObject *userObj; + JsonObject *connectionObj; JsonObject *profile; gchar *file; }; @@ -213,8 +214,10 @@ JsonNode *trg_prefs_get_value(TrgPrefs *p, gchar *key, int type, int flags) { JsonNode *res; if ((flags & TRG_PREFS_PROFILE)) { - JsonObject *profile = trg_prefs_get_profile(p); - if ((res = trg_prefs_get_value_inner(profile, key, type, flags))) + if ((res = trg_prefs_get_value_inner(trg_prefs_get_profile(p), key, type, flags))) + return res; + } else if ((flags & TRG_PREFS_CONNECTION)) { + if ((res = trg_prefs_get_value_inner(priv->connectionObj, key, type, flags))) return res; } else { if ((res = trg_prefs_get_value_inner(priv->userObj, key, type, flags))) @@ -227,6 +230,19 @@ JsonNode *trg_prefs_get_value(TrgPrefs *p, gchar *key, int type, int flags) { return NULL; } +void trg_prefs_set_connection(TrgPrefs *p, JsonObject *profile) +{ + TrgPrefsPrivate *priv = GET_PRIVATE(p); + + if (priv->connectionObj) + json_object_unref(priv->connectionObj); + + if (profile) + json_object_ref(profile); + + priv->connectionObj = profile; +} + gchar *trg_prefs_get_string(TrgPrefs *p, gchar *key, int flags) { JsonNode *node = trg_prefs_get_value(p, key, JSON_NODE_VALUE, flags); if (node) @@ -337,6 +353,11 @@ JsonObject* trg_prefs_get_profile(TrgPrefs *p) { return priv->profile; } +JsonObject* trg_prefs_get_connection(TrgPrefs *p) { + TrgPrefsPrivate *priv = GET_PRIVATE(p); + return priv->connectionObj; +} + JsonArray* trg_prefs_get_profiles(TrgPrefs *p) { TrgPrefsPrivate *priv = GET_PRIVATE(p); return json_object_get_array_member(priv->userObj, TRG_PREFS_KEY_PROFILES); diff --git a/src/trg-prefs.h b/src/trg-prefs.h index 2cc05b5..b01ccae 100644 --- a/src/trg-prefs.h +++ b/src/trg-prefs.h @@ -75,8 +75,9 @@ #define TRG_PREFS_NOFLAGS (1 << 0) /* 0x00 */ #define TRG_PREFS_GLOBAL (1 << 1) /* 0x01 */ #define TRG_PREFS_PROFILE (1 << 2) /* 0x02 */ -#define TRG_PREFS_NEWNODE (1 << 3) /* 0x04 */ -#define TRG_PREFS_REPLACENODE (1 << 4) /* 0x08 */ +#define TRG_PREFS_CONNECTION (1 << 3) /* 0x04 */ +#define TRG_PREFS_NEWNODE (1 << 4) /* 0x08 */ +#define TRG_PREFS_REPLACENODE (1 << 5) /* 0x16 */ G_BEGIN_DECLS @@ -121,7 +122,9 @@ gint64 trg_prefs_get_int(TrgPrefs *p, gchar *key, int flags); gdouble trg_prefs_get_double(TrgPrefs *p, gchar *key, int flags); gboolean trg_prefs_get_bool(TrgPrefs *p, gchar *key, int flags); JsonObject* trg_prefs_get_profile(TrgPrefs *p); +JsonObject* trg_prefs_get_connection(TrgPrefs *p); JsonArray* trg_prefs_get_profiles(TrgPrefs *p); +void trg_prefs_set_connection(TrgPrefs *p, JsonObject *profile); gint trg_prefs_get_profile_id(TrgPrefs *p); void trg_prefs_del_profile(TrgPrefs *p, JsonObject *profile); void trg_prefs_set_profile(TrgPrefs *p, JsonObject *profile); |