summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2011-11-23 16:27:32 +0000
committerGravatar Alan Fitton <ajf@eth0.org.uk>2011-11-23 16:27:32 +0000
commitecacee36541bf3e4df775b465d5d1ecee3a65cce (patch)
treeb0bb4941dbe2c89bafc9ea97524cda4923f24695 /src
parentcc9a1543b899d59fbc6db8dcdbd4122d910f25e6 (diff)
remember the last selected destination on moving torrents
Diffstat (limited to 'src')
-rw-r--r--src/trg-destination-combo.c165
-rw-r--r--src/trg-destination-combo.h3
-rw-r--r--src/trg-file-parser.c2
-rw-r--r--src/trg-main-window.c4
-rw-r--r--src/trg-main-window.h2
-rw-r--r--src/trg-preferences-dialog.c2
-rw-r--r--src/trg-prefs.c32
-rw-r--r--src/trg-prefs.h34
-rw-r--r--src/trg-torrent-add-dialog.c2
-rw-r--r--src/trg-torrent-model.c8
-rw-r--r--src/trg-torrent-model.h2
-rw-r--r--src/trg-torrent-move-dialog.c5
12 files changed, 163 insertions, 98 deletions
diff --git a/src/trg-destination-combo.c b/src/trg-destination-combo.c
index e0207a6..e30b747 100644
--- a/src/trg-destination-combo.c
+++ b/src/trg-destination-combo.c
@@ -34,12 +34,13 @@ typedef struct _TrgDestinationComboPrivate TrgDestinationComboPrivate;
struct _TrgDestinationComboPrivate {
TrgClient *client;
+ const gchar *last_selection;
GtkWidget *entry;
GtkCellRenderer *text_renderer;
};
enum {
- PROP_0, PROP_CLIENT
+ PROP_0, PROP_CLIENT, PROP_LAST_SELECTION
};
enum {
@@ -50,6 +51,12 @@ enum {
DEST_COLUMN_LABEL, DEST_COLUMN_DIR, DEST_COLUMN_TYPE, N_DEST_COLUMNS
};
+static void trg_destination_combo_finalize(GObject *object) {
+ TrgDestinationComboPrivate *priv =
+ TRG_DESTINATION_COMBO_GET_PRIVATE(object);
+ g_free((gpointer)priv->last_selection);
+}
+
static void trg_destination_combo_get_property(GObject * object,
guint property_id, GValue * value, GParamSpec * pspec) {
TrgDestinationComboPrivate *priv =
@@ -58,6 +65,9 @@ static void trg_destination_combo_get_property(GObject * object,
case PROP_CLIENT:
g_value_set_pointer(value, priv->client);
break;
+ case PROP_LAST_SELECTION:
+ g_value_set_string(value, priv->last_selection);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
break;
@@ -72,6 +82,9 @@ static void trg_destination_combo_set_property(GObject * object,
case PROP_CLIENT:
priv->client = g_value_get_pointer(value);
break;
+ case PROP_LAST_SELECTION:
+ priv->last_selection = g_value_get_string(value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
break;
@@ -90,6 +103,22 @@ static gboolean g_slist_str_set_add(GSList ** list, const gchar * string) {
return TRUE;
}
+void trg_destination_combo_save_selection(TrgDestinationCombo *combo_box)
+{
+ TrgDestinationComboPrivate *priv = TRG_DESTINATION_COMBO_GET_PRIVATE(combo_box);
+ GtkTreeIter iter;
+
+ if (priv->last_selection && gtk_combo_box_get_active_iter(GTK_COMBO_BOX(combo_box), &iter)) {
+ GtkTreeModel *model = gtk_combo_box_get_model(GTK_COMBO_BOX(combo_box));
+ TrgPrefs *prefs = trg_client_get_prefs(priv->client);
+ gchar *text;
+
+ gtk_tree_model_get(model, &iter, DEST_COLUMN_LABEL, &text, -1);
+ trg_prefs_set_string(prefs, priv->last_selection, text, TRG_PREFS_CONNECTION);
+ g_free(text);
+ }
+}
+
/*static void trg_destination_combo_entry_changed(GtkEntry *entry,
gpointer user_data) {
GtkComboBox *combo = GTK_COMBO_BOX(user_data);
@@ -166,6 +195,20 @@ static void add_entry_cb(GtkEntry *entry,
gtk_combo_box_set_active_iter(combo, &iter);
}
+static void trg_destination_combo_insert(GtkComboBox *box, const gchar *label,
+ const gchar *dir, guint type, const gchar *lastDestination)
+{
+ GtkListStore *store = GTK_LIST_STORE(gtk_combo_box_get_model(box));
+ GtkTreeIter iter;
+
+ gtk_list_store_insert_with_values(store, &iter, INT_MAX,
+ DEST_COLUMN_LABEL, label, DEST_COLUMN_DIR, dir,
+ DEST_COLUMN_TYPE, type, -1);
+
+ if (lastDestination && !g_strcmp0(lastDestination, label))
+ gtk_combo_box_set_active_iter(box, &iter);
+}
+
static GObject *trg_destination_combo_constructor(GType type,
guint n_construct_properties, GObjectConstructParam * construct_params) {
GObject *object = G_OBJECT_CLASS
@@ -183,37 +226,66 @@ static GObject *trg_destination_combo_constructor(GType type,
GtkTreeModel *model;
GtkTreePath *path;
GtkListStore *comboModel;
- JsonArray *saved_destinations;
+ JsonArray *savedDestinations;
gchar *defaultDir;
+ const gchar *lastDestination = NULL;
comboModel = gtk_list_store_new(N_DEST_COLUMNS, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_UINT);
+ gtk_combo_box_set_model(GTK_COMBO_BOX(object), GTK_TREE_MODEL(comboModel));
+ g_object_unref(comboModel);
+
+ g_signal_connect (object, "changed",
+ G_CALLBACK (gtk_combo_box_entry_active_changed), NULL);
+
+ priv->entry = gtk_entry_new ();
+ gtk_container_add (GTK_CONTAINER (object), priv->entry);
+
+ priv->text_renderer = gtk_cell_renderer_text_new ();
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (object),
+ priv->text_renderer, TRUE);
+
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (object),
+ priv->text_renderer,
+ "text", 0,
+ NULL);
+
+ g_slist_foreach(dirs, (GFunc) g_free, NULL);
+ g_slist_free(dirs);
+
+ gtk_entry_set_icon_from_stock(GTK_ENTRY(priv->entry), GTK_ENTRY_ICON_SECONDARY,
+ GTK_STOCK_CLEAR);
+
+ g_signal_connect(priv->entry, "icon-release",
+ G_CALLBACK(add_entry_cb), object);
defaultDir = g_strdup(
session_get_download_dir(trg_client_get_session(client)));
rm_trailing_slashes(defaultDir);
- gtk_list_store_insert_with_values(comboModel, NULL, INT_MAX,
- DEST_COLUMN_LABEL, defaultDir, DEST_COLUMN_DIR, defaultDir,
- DEST_COLUMN_TYPE, DEST_DEFAULT, -1);
- saved_destinations = trg_prefs_get_array(prefs, TRG_PREFS_KEY_DESTINATIONS,
+ savedDestinations = trg_prefs_get_array(prefs, TRG_PREFS_KEY_DESTINATIONS,
TRG_PREFS_CONNECTION);
- if (saved_destinations) {
- list = json_array_get_elements(saved_destinations);
+
+ if (priv->last_selection)
+ lastDestination = trg_prefs_get_string(prefs, priv->last_selection,
+ TRG_PREFS_CONNECTION);
+
+ trg_destination_combo_insert(GTK_COMBO_BOX(object),
+ defaultDir,
+ defaultDir,
+ DEST_DEFAULT, lastDestination);
+
+ g_free(defaultDir);
+
+ if (savedDestinations) {
+ list = json_array_get_elements(savedDestinations);
if (list) {
for (li = list; li; li = g_list_next(li)) {
JsonObject *obj = json_node_get_object((JsonNode*) li->data);
- gtk_list_store_insert_with_values(
- comboModel,
- NULL,
- INT_MAX,
- DEST_COLUMN_LABEL,
- json_object_get_string_member(obj,
- TRG_PREFS_SUBKEY_LABEL),
- DEST_COLUMN_DIR,
- json_object_get_string_member(obj,
- TRG_PREFS_KEY_DESTINATIONS_SUBKEY_DIR),
- DEST_COLUMN_TYPE, DEST_LABEL, -1);
+ trg_destination_combo_insert(GTK_COMBO_BOX(object),
+ json_object_get_string_member(obj, TRG_PREFS_SUBKEY_LABEL),
+ json_object_get_string_member(obj, TRG_PREFS_KEY_DESTINATIONS_SUBKEY_DIR),
+ DEST_LABEL, lastDestination);
}
g_list_free(list);
}
@@ -250,39 +322,10 @@ static GObject *trg_destination_combo_constructor(GType type,
g_list_free(list);
for (sli = dirs; sli; sli = g_slist_next(sli))
- gtk_list_store_insert_with_values(comboModel, NULL, INT_MAX,
- DEST_COLUMN_LABEL, (gchar *) sli->data, DEST_COLUMN_DIR,
- (gchar *) sli->data, DEST_COLUMN_TYPE, DEST_EXISTING, -1);
-
- priv->entry = gtk_entry_new ();
- //gtk_widget_show (entry);
- gtk_container_add (GTK_CONTAINER (object), priv->entry);
-
- priv->text_renderer = gtk_cell_renderer_text_new ();
- gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (object),
- priv->text_renderer, TRUE);
-
- gtk_combo_box_set_model(GTK_COMBO_BOX(object), GTK_TREE_MODEL(comboModel));
-
- gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (object),
- priv->text_renderer,
- "text", 0,
- NULL);
-
- g_object_unref(comboModel);
- g_slist_foreach(dirs, (GFunc) g_free, NULL);
- g_slist_free(dirs);
-
- g_free(defaultDir);
-
- g_signal_connect (object, "changed",
- G_CALLBACK (gtk_combo_box_entry_active_changed), NULL);
-
- gtk_entry_set_icon_from_stock(GTK_ENTRY(priv->entry), GTK_ENTRY_ICON_SECONDARY,
- GTK_STOCK_CLEAR);
-
- g_signal_connect(priv->entry, "icon-release",
- G_CALLBACK(add_entry_cb), object);
+ trg_destination_combo_insert(GTK_COMBO_BOX(object),
+ (gchar *) sli->data,
+ (gchar *) sli->data,
+ DEST_EXISTING, lastDestination);
return object;
}
@@ -313,6 +356,7 @@ static void trg_destination_combo_class_init(TrgDestinationComboClass * klass) {
object_class->get_property = trg_destination_combo_get_property;
object_class->set_property = trg_destination_combo_set_property;
+ object_class->finalize = trg_destination_combo_finalize;
object_class->constructor = trg_destination_combo_constructor;
g_object_class_install_property(
@@ -325,12 +369,25 @@ static void trg_destination_combo_class_init(TrgDestinationComboClass * klass) {
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY
| G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK
| G_PARAM_STATIC_BLURB));
+
+ g_object_class_install_property(
+ object_class,
+ PROP_LAST_SELECTION,
+ g_param_spec_string(
+ "last-selection-key",
+ "LastSelectionKey",
+ "LastSelectionKey",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY
+ | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK
+ | G_PARAM_STATIC_BLURB));
}
static void trg_destination_combo_init(TrgDestinationCombo * self) {
}
-GtkWidget *trg_destination_combo_new(TrgClient * client) {
+GtkWidget *trg_destination_combo_new(TrgClient * client, const gchar *lastSelectionKey) {
return GTK_WIDGET(g_object_new(TRG_TYPE_DESTINATION_COMBO,
- "trg-client", client, NULL));
+ "trg-client", client,
+ "last-selection-key", lastSelectionKey, NULL));
}
diff --git a/src/trg-destination-combo.h b/src/trg-destination-combo.h
index a5ce9d3..453e899 100644
--- a/src/trg-destination-combo.h
+++ b/src/trg-destination-combo.h
@@ -47,10 +47,11 @@ typedef struct {
GType trg_destination_combo_get_type(void);
-GtkWidget *trg_destination_combo_new(TrgClient * client);
+GtkWidget *trg_destination_combo_new(TrgClient * client, const gchar *lastSelectionKey);
gchar *trg_destination_combo_get_dir(TrgDestinationCombo *combo);
gboolean trg_destination_combo_has_text(TrgDestinationCombo *combo);
GtkEntry *trg_destination_combo_get_entry(TrgDestinationCombo *combo);
+void trg_destination_combo_save_selection(TrgDestinationCombo *combo_box);
G_END_DECLS
#endif /* TRG_DESTINATION_COMBO_H_ */
diff --git a/src/trg-file-parser.c b/src/trg-file-parser.c
index c1346aa..ac3d0ce 100644
--- a/src/trg-file-parser.c
+++ b/src/trg-file-parser.c
@@ -77,6 +77,8 @@ static trg_torrent_file_node
return target_node;
}
}
+
+ return NULL;
}
static void trg_torrent_file_node_free(trg_torrent_file_node * node)
diff --git a/src/trg-main-window.c b/src/trg-main-window.c
index c165484..f7fa2e6 100644
--- a/src/trg-main-window.c
+++ b/src/trg-main-window.c
@@ -1070,10 +1070,10 @@ static gboolean trg_torrent_tree_view_visible_func(GtkTreeModel * model,
return visible;
}
-void trg_main_window_reload_dir_alises(TrgMainWindow *win)
+void trg_main_window_reload_dir_aliases(TrgMainWindow *win)
{
TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(win);
- trg_torrent_model_reload_dir_alises(priv->client, GTK_TREE_MODEL(priv->torrentModel));
+ trg_torrent_model_reload_dir_aliases(priv->client, GTK_TREE_MODEL(priv->torrentModel));
trg_state_selector_update(priv->stateSelector);
}
diff --git a/src/trg-main-window.h b/src/trg-main-window.h
index 7303315..4355611 100644
--- a/src/trg-main-window.h
+++ b/src/trg-main-window.h
@@ -71,7 +71,7 @@ gint trg_mw_get_selected_torrent_id(TrgMainWindow * win);
GtkTreeModel *trg_main_window_get_torrent_model(TrgMainWindow * win);
void trg_main_window_notebook_set_visible(TrgMainWindow *win, gboolean visible);
void connect_cb(GtkWidget * w, gpointer data);
-void trg_main_window_reload_dir_alises(TrgMainWindow *win);
+void trg_main_window_reload_dir_aliases(TrgMainWindow *win);
#if !GTK_CHECK_VERSION(2, 21, 1)
#define gdk_drag_context_get_actions(context) context->actions
diff --git a/src/trg-preferences-dialog.c b/src/trg-preferences-dialog.c
index 584409b..cd92688 100644
--- a/src/trg-preferences-dialog.c
+++ b/src/trg-preferences-dialog.c
@@ -134,7 +134,7 @@ static void trg_preferences_response_cb(GtkDialog * dlg, gint res_id,
trg_prefs_save(priv->prefs);
}
- trg_main_window_reload_dir_alises(priv->win);
+ trg_main_window_reload_dir_aliases(priv->win);
GList *li;
for (li = priv->widgets; li; li = g_list_next(li))
diff --git a/src/trg-prefs.c b/src/trg-prefs.c
index a9ee946..ae3996f 100644
--- a/src/trg-prefs.c
+++ b/src/trg-prefs.c
@@ -57,7 +57,7 @@ void trg_prefs_profile_change_emit_signal(TrgPrefs *p)
g_signal_emit(p, signals[PREF_PROFILE_CHANGE], 0);
}
-void trg_prefs_changed_emit_signal(TrgPrefs *p, gchar *key)
+void trg_prefs_changed_emit_signal(TrgPrefs *p, const gchar *key)
{
g_signal_emit(p, signals[PREF_CHANGE], 0, key);
}
@@ -164,23 +164,23 @@ static JsonObject *trg_prefs_new_profile_object() {
return obj;
}
-void trg_prefs_add_default_int(TrgPrefs *p, gchar *key, int value) {
+void trg_prefs_add_default_int(TrgPrefs *p, const gchar *key, int value) {
TrgPrefsPrivate *priv = GET_PRIVATE(p);
json_object_set_int_member(priv->defaultsObj, key, value);
}
-void trg_prefs_add_default_string(TrgPrefs *p, gchar *key, gchar *value) {
+void trg_prefs_add_default_string(TrgPrefs *p, const gchar *key, gchar *value) {
TrgPrefsPrivate *priv = GET_PRIVATE(p);
json_object_set_string_member(priv->defaultsObj, key, value);
}
-void trg_prefs_add_default_double(TrgPrefs *p, gchar *key, double value) {
+void trg_prefs_add_default_double(TrgPrefs *p, const gchar *key, double value) {
TrgPrefsPrivate *priv = GET_PRIVATE(p);
json_object_set_double_member(priv->defaultsObj, key, value);
}
/* Not much point adding a default of FALSE, as that's the fallback */
-void trg_prefs_add_default_bool_true(TrgPrefs *p, gchar *key) {
+void trg_prefs_add_default_bool_true(TrgPrefs *p, const gchar *key) {
TrgPrefsPrivate *priv = GET_PRIVATE(p);
json_object_set_boolean_member(priv->defaultsObj, key, TRUE);
}
@@ -191,7 +191,7 @@ gint trg_prefs_get_profile_id(TrgPrefs *p) {
TRG_PREFS_KEY_PROFILE_ID);
}
-static JsonNode *trg_prefs_get_value_inner(JsonObject *obj, gchar *key, int type, int flags)
+static JsonNode *trg_prefs_get_value_inner(JsonObject *obj, const gchar *key, int type, int flags)
{
if (json_object_has_member(obj, key)) {
if ((flags & TRG_PREFS_REPLACENODE))
@@ -209,7 +209,7 @@ static JsonNode *trg_prefs_get_value_inner(JsonObject *obj, gchar *key, int type
return NULL;
}
-JsonNode *trg_prefs_get_value(TrgPrefs *p, gchar *key, int type, int flags) {
+JsonNode *trg_prefs_get_value(TrgPrefs *p, const gchar *key, int type, int flags) {
TrgPrefsPrivate *priv = GET_PRIVATE(p);
JsonNode *res;
@@ -243,7 +243,7 @@ void trg_prefs_set_connection(TrgPrefs *p, JsonObject *profile)
priv->connectionObj = profile;
}
-gchar *trg_prefs_get_string(TrgPrefs *p, gchar *key, int flags) {
+gchar *trg_prefs_get_string(TrgPrefs *p, const gchar *key, int flags) {
JsonNode *node = trg_prefs_get_value(p, key, JSON_NODE_VALUE, flags);
if (node)
return g_strdup(json_node_get_string(node));
@@ -251,7 +251,7 @@ gchar *trg_prefs_get_string(TrgPrefs *p, gchar *key, int flags) {
return NULL;
}
-JsonArray *trg_prefs_get_array(TrgPrefs *p, gchar *key, int flags)
+JsonArray *trg_prefs_get_array(TrgPrefs *p, const gchar *key, int flags)
{
JsonNode *node = trg_prefs_get_value(p, key, JSON_NODE_ARRAY, flags);
if (node)
@@ -260,7 +260,7 @@ JsonArray *trg_prefs_get_array(TrgPrefs *p, gchar *key, int flags)
return NULL;
}
-gint64 trg_prefs_get_int(TrgPrefs *p, gchar *key, int flags) {
+gint64 trg_prefs_get_int(TrgPrefs *p, const gchar *key, int flags) {
JsonNode *node = trg_prefs_get_value(p, key, JSON_NODE_VALUE, flags);
if (node)
return json_node_get_int(node);
@@ -268,7 +268,7 @@ gint64 trg_prefs_get_int(TrgPrefs *p, gchar *key, int flags) {
return 0;
}
-gdouble trg_prefs_get_double(TrgPrefs *p, gchar *key, int flags) {
+gdouble trg_prefs_get_double(TrgPrefs *p, const gchar *key, int flags) {
JsonNode *node = trg_prefs_get_value(p, key, JSON_NODE_VALUE, flags);
if (node)
return json_node_get_double(node);
@@ -276,7 +276,7 @@ gdouble trg_prefs_get_double(TrgPrefs *p, gchar *key, int flags) {
return 0.0;
}
-gboolean trg_prefs_get_bool(TrgPrefs *p, gchar *key, int flags) {
+gboolean trg_prefs_get_bool(TrgPrefs *p, const gchar *key, int flags) {
JsonNode *node = trg_prefs_get_value(p, key, JSON_NODE_VALUE, flags);
if (node)
return json_node_get_boolean(node);
@@ -284,13 +284,13 @@ gboolean trg_prefs_get_bool(TrgPrefs *p, gchar *key, int flags) {
return FALSE;
}
-void trg_prefs_set_int(TrgPrefs *p, gchar *key, int value, int flags) {
+void trg_prefs_set_int(TrgPrefs *p, const gchar *key, int value, int flags) {
JsonNode *node = trg_prefs_get_value(p, key, JSON_NODE_VALUE, flags | TRG_PREFS_NEWNODE);
json_node_set_int(node, (gint64) value);
trg_prefs_changed_emit_signal(p, key);
}
-void trg_prefs_set_string(TrgPrefs *p, gchar *key, const gchar *value,
+void trg_prefs_set_string(TrgPrefs *p, const gchar *key, const gchar *value,
int flags) {
JsonNode *node = trg_prefs_get_value(p, key, JSON_NODE_VALUE, flags | TRG_PREFS_NEWNODE);
json_node_set_string(node, value);
@@ -363,13 +363,13 @@ JsonArray* trg_prefs_get_profiles(TrgPrefs *p) {
return json_object_get_array_member(priv->userObj, TRG_PREFS_KEY_PROFILES);
}
-void trg_prefs_set_double(TrgPrefs *p, gchar *key, gdouble value, int flags) {
+void trg_prefs_set_double(TrgPrefs *p, const gchar *key, gdouble value, int flags) {
JsonNode *node = trg_prefs_get_value(p, key, JSON_NODE_VALUE, flags | TRG_PREFS_NEWNODE);
json_node_set_double(node, value);
trg_prefs_changed_emit_signal(p, key);
}
-void trg_prefs_set_bool(TrgPrefs *p, gchar *key, gboolean value, int flags) {
+void trg_prefs_set_bool(TrgPrefs *p, const gchar *key, gboolean value, int flags) {
JsonNode *node = trg_prefs_get_value(p, key, JSON_NODE_VALUE, flags | TRG_PREFS_NEWNODE);
json_node_set_boolean(node, value);
trg_prefs_changed_emit_signal(p, key);
diff --git a/src/trg-prefs.h b/src/trg-prefs.h
index 61ac369..9a737e6 100644
--- a/src/trg-prefs.h
+++ b/src/trg-prefs.h
@@ -71,6 +71,8 @@
#define TRG_PREFS_KEY_EXEC_COMMANDS "exec-commands"
#define TRG_PREFS_KEY_EXEC_COMMANDS_SUBKEY_CMD "cmd"
#define TRG_PREFS_KEY_DESTINATIONS "destinations"
+#define TRG_PREFS_KEY_LAST_MOVE_DESTINATION "last-move-destination"
+#define TRG_PREFS_KEY_LAST_ADD_DESTINATION "last-add-destination"
#define TRG_PREFS_KEY_DESTINATIONS_SUBKEY_DIR "dir"
@@ -106,23 +108,23 @@ typedef struct {
typedef struct {
GObjectClass parent_class;
- void (*pref_changed) (TrgPrefs *tc, gchar *key, gpointer data);
+ void (*pref_changed) (TrgPrefs *tc, const gchar *key, gpointer data);
} TrgPrefsClass;
GType trg_prefs_get_type (void);
TrgPrefs* trg_prefs_new (void);
-void trg_prefs_add_default_int(TrgPrefs *p, gchar *key, int value);
-void trg_prefs_add_default_string(TrgPrefs *p, gchar *key, gchar *value);
-void trg_prefs_add_default_double(TrgPrefs *p, gchar *key, double value);
-void trg_prefs_add_default_bool_true(TrgPrefs *p, gchar *key);
+void trg_prefs_add_default_int(TrgPrefs *p, const gchar *key, int value);
+void trg_prefs_add_default_string(TrgPrefs *p, const gchar *key, gchar *value);
+void trg_prefs_add_default_double(TrgPrefs *p, const gchar *key, double value);
+void trg_prefs_add_default_bool_true(TrgPrefs *p, const gchar *key);
-JsonNode *trg_prefs_get_value(TrgPrefs *p, gchar *key, int type, int flags);
-gchar *trg_prefs_get_string(TrgPrefs *p, gchar *key, int flags);
-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);
+JsonNode *trg_prefs_get_value(TrgPrefs *p, const gchar *key, int type, int flags);
+gchar *trg_prefs_get_string(TrgPrefs *p, const gchar *key, int flags);
+gint64 trg_prefs_get_int(TrgPrefs *p, const gchar *key, int flags);
+gdouble trg_prefs_get_double(TrgPrefs *p, const gchar *key, int flags);
+gboolean trg_prefs_get_bool(TrgPrefs *p, const 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);
@@ -133,16 +135,16 @@ void trg_prefs_set_profile(TrgPrefs *p, JsonObject *profile);
JsonObject *trg_prefs_new_profile(TrgPrefs *p);
JsonObject *trg_get_current_profile(TrgPrefs *p);
JsonObject *trg_prefs_get_root(TrgPrefs *p);
-JsonArray *trg_prefs_get_array(TrgPrefs *p, gchar *key, int flags);
+JsonArray *trg_prefs_get_array(TrgPrefs *p, const gchar *key, int flags);
-void trg_prefs_set_int(TrgPrefs *p, gchar *key, int value, int flags);
-void trg_prefs_set_string(TrgPrefs *p, gchar *key, const gchar *value, int flags);
-void trg_prefs_set_double(TrgPrefs *p, gchar *key, double value, int flags);
-void trg_prefs_set_bool(TrgPrefs *p, gchar *key, gboolean value, int flags);
+void trg_prefs_set_int(TrgPrefs *p, const gchar *key, int value, int flags);
+void trg_prefs_set_string(TrgPrefs *p, const gchar *key, const gchar *value, int flags);
+void trg_prefs_set_double(TrgPrefs *p, const gchar *key, double value, int flags);
+void trg_prefs_set_bool(TrgPrefs *p, const gchar *key, gboolean value, int flags);
gboolean trg_prefs_save(TrgPrefs *p);
void trg_prefs_load(TrgPrefs *p);
-void trg_prefs_changed_emit_signal(TrgPrefs *p, gchar *key);
+void trg_prefs_changed_emit_signal(TrgPrefs *p, const gchar *key);
void trg_prefs_profile_change_emit_signal(TrgPrefs *p);
guint trg_prefs_get_add_flags(TrgPrefs *p);
diff --git a/src/trg-torrent-add-dialog.c b/src/trg-torrent-add-dialog.c
index 8e3880f..f06600e 100644
--- a/src/trg-torrent-add-dialog.c
+++ b/src/trg-torrent-add-dialog.c
@@ -879,7 +879,7 @@ static GObject *trg_torrent_add_dialog_constructor(GType type,
0, 0, 0);
++col;
- priv->dest_combo = trg_destination_combo_new(priv->client);
+ priv->dest_combo = trg_destination_combo_new(priv->client, NULL);
gtk_combo_box_set_active(GTK_COMBO_BOX(priv->dest_combo), 0);
gtk_table_attach(GTK_TABLE(t), priv->dest_combo, col, col + 1, row,
row + 1, ~0, 0, 0, 0);
diff --git a/src/trg-torrent-model.c b/src/trg-torrent-model.c
index fb60c37..79ce396 100644
--- a/src/trg-torrent-model.c
+++ b/src/trg-torrent-model.c
@@ -195,7 +195,7 @@ gboolean trg_torrent_model_is_remove_in_progress(TrgTorrentModel * model) {
(G_OBJECT(model), PROP_REMOVE_IN_PROGRESS));
}
-static gboolean trg_torrent_model_reload_dir_alises_foreachfunc(
+static gboolean trg_torrent_model_reload_dir_aliases_foreachfunc(
GtkTreeModel * model, GtkTreePath * path G_GNUC_UNUSED,
GtkTreeIter * iter, gpointer gdata) {
gchar *downloadDir, *shortDownloadDir;
@@ -214,10 +214,10 @@ static gboolean trg_torrent_model_reload_dir_alises_foreachfunc(
return FALSE;
}
-void trg_torrent_model_reload_dir_alises(TrgClient *tc, GtkTreeModel *model)
+void trg_torrent_model_reload_dir_aliases(TrgClient *tc, GtkTreeModel *model)
{
gtk_tree_model_foreach(model,
- trg_torrent_model_reload_dir_alises_foreachfunc, tc);
+ trg_torrent_model_reload_dir_aliases_foreachfunc, tc);
}
static gboolean trg_torrent_model_stats_scan_foreachfunc(GtkTreeModel * model,
@@ -300,7 +300,7 @@ gchar *shorten_download_dir(TrgClient *tc, const gchar *downloadDir) {
return g_strdup(downloadDir);
}
-static void update_torrent_iter(TrgTorrentModel * model, TrgClient *tc,
+static inline void update_torrent_iter(TrgTorrentModel * model, TrgClient *tc,
gint64 rpcv, gint64 serial, GtkTreeIter * iter, JsonObject * t,
trg_torrent_model_update_stats * stats) {
TrgTorrentModelPrivate *priv = TRG_TORRENT_MODEL_GET_PRIVATE(model);
diff --git a/src/trg-torrent-model.h b/src/trg-torrent-model.h
index ebb911d..bc51565 100644
--- a/src/trg-torrent-model.h
+++ b/src/trg-torrent-model.h
@@ -85,7 +85,7 @@ gboolean get_torrent_data(GHashTable * table, gint64 id, JsonObject ** t,
GtkTreeIter * out_iter);
gchar *shorten_download_dir(TrgClient *tc, const gchar *downloadDir);
-void trg_torrent_model_reload_dir_alises(TrgClient *tc, GtkTreeModel *model);
+void trg_torrent_model_reload_dir_aliases(TrgClient *tc, GtkTreeModel *model);
enum {
TORRENT_COLUMN_ICON,
diff --git a/src/trg-torrent-move-dialog.c b/src/trg-torrent-move-dialog.c
index 3f80e72..aecf517 100644
--- a/src/trg-torrent-move-dialog.c
+++ b/src/trg-torrent-move-dialog.c
@@ -68,6 +68,7 @@ trg_torrent_move_response_cb(GtkDialog * dlg, gint res_id, gpointer data)
(priv->move_check)));
g_free(location);
request_set_tag_from_ids(request, priv->ids);
+ trg_destination_combo_save_selection(TRG_DESTINATION_COMBO(priv->location_combo));
dispatch_async(priv->client, request,
on_generic_interactive_action, data);
} else {
@@ -104,7 +105,7 @@ static GObject *trg_torrent_move_dialog_constructor(GType type,
t = hig_workarea_create();
- w = priv->location_combo = trg_destination_combo_new(priv->client);
+ w = priv->location_combo = trg_destination_combo_new(priv->client, TRG_PREFS_KEY_LAST_MOVE_DESTINATION);
g_signal_connect(trg_destination_combo_get_entry(TRG_DESTINATION_COMBO(w)), "changed", G_CALLBACK(location_changed), object);
hig_workarea_add_row(t, &row, _("Location:"), w, NULL);
@@ -182,6 +183,7 @@ trg_torrent_move_dialog_get_property(GObject * object, guint property_id,
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
+ break;
}
}
@@ -204,6 +206,7 @@ trg_torrent_move_dialog_set_property(GObject * object, guint property_id,
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
+ break;
}
}