diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2011-11-23 16:27:32 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2011-11-23 16:27:32 +0000 |
commit | ecacee36541bf3e4df775b465d5d1ecee3a65cce (patch) | |
tree | b0bb4941dbe2c89bafc9ea97524cda4923f24695 | |
parent | cc9a1543b899d59fbc6db8dcdbd4122d910f25e6 (diff) |
remember the last selected destination on moving torrents
-rw-r--r-- | src/trg-destination-combo.c | 165 | ||||
-rw-r--r-- | src/trg-destination-combo.h | 3 | ||||
-rw-r--r-- | src/trg-file-parser.c | 2 | ||||
-rw-r--r-- | src/trg-main-window.c | 4 | ||||
-rw-r--r-- | src/trg-main-window.h | 2 | ||||
-rw-r--r-- | src/trg-preferences-dialog.c | 2 | ||||
-rw-r--r-- | src/trg-prefs.c | 32 | ||||
-rw-r--r-- | src/trg-prefs.h | 34 | ||||
-rw-r--r-- | src/trg-torrent-add-dialog.c | 2 | ||||
-rw-r--r-- | src/trg-torrent-model.c | 8 | ||||
-rw-r--r-- | src/trg-torrent-model.h | 2 | ||||
-rw-r--r-- | src/trg-torrent-move-dialog.c | 5 |
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; } } |