summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2011-10-19 20:21:19 +0000
committerGravatar Alan Fitton <ajf@eth0.org.uk>2011-10-19 20:21:19 +0000
commit3fa2dbf607db03b7f2535d7eb98ee6bdae0239dd (patch)
treec134603b54c23cd2dfc2a14650d8d39394dfd139
parenta04430bff79030690add518548677251816e3e71 (diff)
implement a TRG_PREFS_CONNECTION flag which gets prefs for the connected profile
-rw-r--r--src/remote-exec.c4
-rw-r--r--src/remote-exec.h2
-rw-r--r--src/trg-client.c24
-rw-r--r--src/trg-client.h2
-rw-r--r--src/trg-main-window.c5
-rw-r--r--src/trg-preferences-dialog.c2
-rw-r--r--src/trg-prefs.c25
-rw-r--r--src/trg-prefs.h7
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);