diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/trg-destination-combo.c | 136 | ||||
-rw-r--r-- | src/trg-persistent-tree-view.c | 28 | ||||
-rw-r--r-- | src/trg-persistent-tree-view.h | 4 | ||||
-rw-r--r-- | src/trg-preferences-dialog.c | 2 |
4 files changed, 85 insertions, 85 deletions
diff --git a/src/trg-destination-combo.c b/src/trg-destination-combo.c index 5fe32b0..75df78c 100644 --- a/src/trg-destination-combo.c +++ b/src/trg-destination-combo.c @@ -26,7 +26,7 @@ #include "util.h" G_DEFINE_TYPE(TrgDestinationCombo, trg_destination_combo, - GTK_TYPE_COMBO_BOX) + GTK_TYPE_COMBO_BOX) #define TRG_DESTINATION_COMBO_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRG_TYPE_DESTINATION_COMBO, TrgDestinationComboPrivate)) typedef struct _TrgDestinationComboPrivate TrgDestinationComboPrivate; @@ -36,16 +36,13 @@ struct _TrgDestinationComboPrivate { }; enum { - PROP_0, - PROP_CLIENT + PROP_0, PROP_CLIENT }; -static void -trg_destination_combo_get_property(GObject * object, guint property_id, - GValue * value, GParamSpec * pspec) -{ +static void trg_destination_combo_get_property(GObject * object, + guint property_id, GValue * value, GParamSpec * pspec) { TrgDestinationComboPrivate *priv = - TRG_DESTINATION_COMBO_GET_PRIVATE(object); + TRG_DESTINATION_COMBO_GET_PRIVATE(object); switch (property_id) { case PROP_CLIENT: g_value_set_pointer(value, priv->client); @@ -55,13 +52,10 @@ trg_destination_combo_get_property(GObject * object, guint property_id, } } -static void -trg_destination_combo_set_property(GObject * object, guint property_id, - const GValue * value, - GParamSpec * pspec) -{ +static void trg_destination_combo_set_property(GObject * object, + guint property_id, const GValue * value, GParamSpec * pspec) { TrgDestinationComboPrivate *priv = - TRG_DESTINATION_COMBO_GET_PRIVATE(object); + TRG_DESTINATION_COMBO_GET_PRIVATE(object); switch (property_id) { case PROP_CLIENT: priv->client = g_value_get_pointer(value); @@ -71,55 +65,76 @@ trg_destination_combo_set_property(GObject * object, guint property_id, } } -static gboolean g_slist_str_set_add(GSList ** list, const gchar * string, gint pos) -{ +static gboolean g_slist_str_set_add(GSList ** list, const gchar * string, + gint pos) { GSList *li; for (li = *list; li; li = g_slist_next(li)) if (!g_strcmp0((gchar *) li->data, string)) return FALSE; if (pos < 0) - *list = g_slist_insert_sorted(*list, (gpointer)string, (GCompareFunc)g_strcmp0); + *list = g_slist_insert_sorted(*list, (gpointer) string, + (GCompareFunc) g_strcmp0); else - *list = g_slist_insert(*list, (gpointer)string, pos); + *list = g_slist_insert(*list, (gpointer) string, pos); return TRUE; } static GObject *trg_destination_combo_constructor(GType type, - guint - n_construct_properties, - GObjectConstructParam - * construct_params) -{ + guint n_construct_properties, GObjectConstructParam * construct_params) { GObject *object = G_OBJECT_CLASS - (trg_destination_combo_parent_class)->constructor(type, - n_construct_properties, - construct_params); + (trg_destination_combo_parent_class)->constructor(type, + n_construct_properties, construct_params); TrgDestinationComboPrivate *priv = - TRG_DESTINATION_COMBO_GET_PRIVATE(object); + TRG_DESTINATION_COMBO_GET_PRIVATE(object); TrgClient *client = priv->client; + TrgPrefs *prefs = trg_client_get_prefs(client); GSList *dirs = NULL; GSList *sli; GList *li; - GList *torrentItemRefs; + GList *list; GtkCellRenderer *renderer; GtkTreeRowReference *rr; GtkTreeModel *model; GtkTreePath *path; GtkListStore *comboModel; + JsonArray *saved_destinations; JsonObject *t; + gchar *defaultDownDir; - gchar *defaultDownDir = - g_strdup(session_get_download_dir(trg_client_get_session(client))); + comboModel = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); + + defaultDownDir = g_strdup( + session_get_download_dir(trg_client_get_session(client))); rm_trailing_slashes(defaultDownDir); - comboModel = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); + saved_destinations = trg_prefs_get_array(prefs, TRG_PREFS_KEY_DESTINATIONS, + TRG_PREFS_CONNECTION); + if (saved_destinations) { + list = json_array_get_elements(saved_destinations); + 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, + 0, + json_object_get_string_member(obj, + TRG_PREFS_SUBKEY_LABEL), + 1, + json_object_get_string_member(obj, + TRG_PREFS_KEY_DESTINATIONS_SUBKEY_DIR), -1); + } + g_list_free(list); + } + } trg_client_updatelock(client); - torrentItemRefs = g_hash_table_get_values(trg_client_get_torrent_table(client)); - for (li = torrentItemRefs; li; li = g_list_next(li)) { + list = g_hash_table_get_values(trg_client_get_torrent_table(client)); + for (li = list; li; li = g_list_next(li)) { rr = (GtkTreeRowReference *) li->data; model = gtk_tree_row_reference_get_model(rr); path = gtk_tree_row_reference_get_path(rr); @@ -130,8 +145,8 @@ static GObject *trg_destination_combo_constructor(GType type, if (gtk_tree_model_get_iter(model, &iter, path)) { gchar *dd; gtk_tree_model_get(model, &iter, TORRENT_COLUMN_JSON, &t, - TORRENT_COLUMN_DOWNLOADDIR, &dd, - -1);; + TORRENT_COLUMN_DOWNLOADDIR, &dd, -1); + ; if (dd && g_strcmp0(dd, defaultDownDir)) g_slist_str_set_add(&dirs, dd, -1); else @@ -144,41 +159,38 @@ static GObject *trg_destination_combo_constructor(GType type, trg_client_updateunlock(client); - g_list_free(torrentItemRefs); + g_list_free(list); if (defaultDownDir) g_slist_str_set_add(&dirs, defaultDownDir, 0); for (sli = dirs; sli; sli = g_slist_next(sli)) gtk_list_store_insert_with_values(comboModel, NULL, INT_MAX, 0, - (gchar *) sli->data, - 1, (gchar *) sli->data, -1); + (gchar *) sli->data, 1, (gchar *) sli->data, -1); - gtk_combo_box_set_model(GTK_COMBO_BOX(object), - GTK_TREE_MODEL(comboModel)); + gtk_combo_box_set_model(GTK_COMBO_BOX(object), GTK_TREE_MODEL(comboModel)); renderer = gtk_cell_renderer_text_new(); gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(object), renderer, TRUE); - gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(object), renderer, "text", 0, NULL); + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(object), renderer, "text", + 0, NULL); g_object_unref(comboModel); - g_slist_foreach(dirs, (GFunc)g_free, NULL); + g_slist_foreach(dirs, (GFunc) g_free, NULL); g_slist_free(dirs); return object; } -gchar *trg_destination_combo_get_dir(TrgDestinationCombo *combo) -{ +gchar *trg_destination_combo_get_dir(TrgDestinationCombo *combo) { GtkTreeIter iter; gchar *value; gtk_combo_box_get_active_iter(GTK_COMBO_BOX(combo), &iter); - gtk_tree_model_get(gtk_combo_box_get_model(GTK_COMBO_BOX(combo)), &iter, 1, &value, -1); + gtk_tree_model_get(gtk_combo_box_get_model(GTK_COMBO_BOX(combo)), &iter, 1, + &value, -1); return value; } -static void -trg_destination_combo_class_init(TrgDestinationComboClass * klass) -{ +static void trg_destination_combo_class_init(TrgDestinationComboClass * klass) { GObjectClass *object_class = G_OBJECT_CLASS(klass); g_type_class_add_private(klass, sizeof(TrgDestinationComboPrivate)); @@ -187,24 +199,22 @@ trg_destination_combo_class_init(TrgDestinationComboClass * klass) object_class->set_property = trg_destination_combo_set_property; object_class->constructor = trg_destination_combo_constructor; - g_object_class_install_property(object_class, - PROP_CLIENT, - g_param_spec_pointer - ("trg-client", "TClient", - "Client", - 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_CLIENT, + g_param_spec_pointer( + "trg-client", + "TClient", + "Client", + 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) -{ +static void trg_destination_combo_init(TrgDestinationCombo * self) { } -GtkWidget *trg_destination_combo_new(TrgClient * client) -{ +GtkWidget *trg_destination_combo_new(TrgClient * client) { return GTK_WIDGET(g_object_new(TRG_TYPE_DESTINATION_COMBO, - "trg-client", client, NULL)); + "trg-client", client, NULL)); } diff --git a/src/trg-persistent-tree-view.c b/src/trg-persistent-tree-view.c index 48cf908..f843e57 100644 --- a/src/trg-persistent-tree-view.c +++ b/src/trg-persistent-tree-view.c @@ -138,36 +138,27 @@ static void trg_persistent_tree_view_save(TrgPrefs *prefs, void *wdp) { trg_prefs_changed_emit_signal(prefs, wd->key); } -void trg_persistent_tree_view_build(TrgPersistentTreeView *ptv) { - TrgPersistentTreeViewPrivate *priv = GET_PRIVATE(ptv); - GSList *li; - GtkCellRenderer *renderer; - - for (li = priv->columns; li; li = g_slist_next(li)) { - trg_persistent_tree_view_column *cd = - (trg_persistent_tree_view_column*) li->data; - renderer = gtk_cell_renderer_text_new(); - g_object_set(G_OBJECT(renderer), "editable", TRUE, NULL); - g_signal_connect(renderer, "edited", - G_CALLBACK(trg_persistent_tree_view_edit), cd); - cd->column = gtk_tree_view_column_new_with_attributes(cd->label, - renderer, "text", cd->index, NULL); - gtk_tree_view_append_column(GTK_TREE_VIEW(priv->tv), cd->column); - } -} - trg_persistent_tree_view_column *trg_persistent_tree_view_add_column( TrgPersistentTreeView *ptv, gint index, const gchar *key, const gchar *label) { TrgPersistentTreeViewPrivate *priv = GET_PRIVATE(ptv); trg_persistent_tree_view_column *cd = g_new0(trg_persistent_tree_view_column, 1); + GtkCellRenderer *renderer; cd->key = g_strdup(key); cd->label = g_strdup(label); cd->index = index; cd->tv = ptv; + renderer = gtk_cell_renderer_text_new(); + g_object_set(G_OBJECT(renderer), "editable", TRUE, NULL); + g_signal_connect(renderer, "edited", + G_CALLBACK(trg_persistent_tree_view_edit), cd); + cd->column = gtk_tree_view_column_new_with_attributes(cd->label, + renderer, "text", cd->index, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(priv->tv), cd->column); + priv->columns = g_slist_append(priv->columns, cd); return cd; @@ -181,7 +172,6 @@ static GtkTreeView *trg_persistent_tree_view_tree_view_new( g_object_unref(G_OBJECT(model)); gtk_tree_view_set_rubber_banding(tv, TRUE); - //gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tv), FALSE); selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv)); diff --git a/src/trg-persistent-tree-view.h b/src/trg-persistent-tree-view.h index 2664946..fc2e9c0 100644 --- a/src/trg-persistent-tree-view.h +++ b/src/trg-persistent-tree-view.h @@ -64,13 +64,15 @@ typedef struct { TrgPersistentTreeView* trg_persistent_tree_view_new (TrgPrefs *prefs, GtkListStore *model, const gchar *key); + trg_pref_widget_desc* trg_persistent_tree_view_get_widget_desc(TrgPersistentTreeView* ptv); + void trg_persistent_tree_view_set_add_select(TrgPersistentTreeView *ptv, trg_persistent_tree_view_column *cd); + trg_persistent_tree_view_column *trg_persistent_tree_view_add_column(TrgPersistentTreeView *ptv, gint index, const gchar *key, const gchar *label); -void trg_persistent_tree_view_build(TrgPersistentTreeView *ptv); G_END_DECLS diff --git a/src/trg-preferences-dialog.c b/src/trg-preferences-dialog.c index e729300..0316bc4 100644 --- a/src/trg-preferences-dialog.c +++ b/src/trg-preferences-dialog.c @@ -565,7 +565,6 @@ static GtkWidget *trg_prefs_openExecPage(TrgPreferencesDialog *dlg) { trg_persistent_tree_view_add_column(ptv, 0, TRG_PREFS_SUBKEY_LABEL, _("Label"))); trg_persistent_tree_view_add_column(ptv, 1, TRG_PREFS_KEY_EXEC_COMMANDS_SUBKEY_CMD, _("Command")); wd = trg_persistent_tree_view_get_widget_desc(ptv); - trg_persistent_tree_view_build(ptv); trg_pref_widget_refresh(dlg, wd); priv->widgets = g_list_append(priv->widgets, wd); @@ -595,7 +594,6 @@ static GtkWidget *trg_prefs_dirsPage(TrgPreferencesDialog *dlg) { trg_persistent_tree_view_add_column(ptv, 0, TRG_PREFS_SUBKEY_LABEL, _("Label"))); trg_persistent_tree_view_add_column(ptv, 1, TRG_PREFS_KEY_DESTINATIONS_SUBKEY_DIR, _("Directory")); wd = trg_persistent_tree_view_get_widget_desc(ptv); - trg_persistent_tree_view_build(ptv); trg_pref_widget_refresh(dlg, wd); priv->widgets = g_list_append(priv->widgets, wd); |