From 2f26a1c4871588d2111e0f3fe4b83252b9865cec Mon Sep 17 00:00:00 2001 From: Julian Sparber Date: Tue, 17 Oct 2017 18:58:13 +0200 Subject: [PATCH] [feat] implement new way to set download folder --- src/settings.ui | 20 +++----------------- src/teleport-window.c | 32 ++++++++++++++++++++++++++------ 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/src/settings.ui b/src/settings.ui index 6279722..91ec01f 100644 --- a/src/settings.ui +++ b/src/settings.ui @@ -21,11 +21,11 @@ - + True True - ~/Downloads - 25 + select-folder + Choose download dir 0 @@ -34,20 +34,6 @@ 1 - - - True - false - Browse... - 12 - - - 1 - 1 - 1 - 1 - - False diff --git a/src/teleport-window.c b/src/teleport-window.c index 64c5ca6..c480fce 100644 --- a/src/teleport-window.c +++ b/src/teleport-window.c @@ -26,13 +26,28 @@ struct _TeleportWindowPrivate G_DEFINE_TYPE_WITH_PRIVATE(TeleportWindow, teleport_window, GTK_TYPE_APPLICATION_WINDOW); +static void +change_download_directory_cb (GtkWidget *widget, + gpointer user_data) { + GSettings *settings; + gchar * newDownloadDir; + settings = (GSettings *)user_data; + + newDownloadDir = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (widget)); + g_print ("Change download directory\n"); + g_settings_set_string (settings, + "download-dir", + newDownloadDir); + g_free(newDownloadDir); +} + static void teleport_window_init (TeleportWindow *win) { TeleportWindowPrivate *priv; GtkBuilder *builder; GtkWidget *menu; - GtkEntry *downloadDir; + GtkFileChooserButton *downloadDir; mainWin = win; priv = teleport_window_get_instance_private (win); @@ -50,7 +65,6 @@ teleport_window_init (TeleportWindow *win) } } - if (g_settings_get_user_value (priv->settings, "device-name") == NULL) { g_settings_set_string (priv->settings, "device-name", @@ -61,16 +75,22 @@ teleport_window_init (TeleportWindow *win) builder = gtk_builder_new_from_resource ("/com/frac_tion/teleport/settings.ui"); menu = GTK_WIDGET (gtk_builder_get_object (builder, "settings")); - downloadDir = GTK_ENTRY (gtk_builder_get_object (builder, "settings_download_directory")); + downloadDir = GTK_FILE_CHOOSER_BUTTON (gtk_builder_get_object (builder, "settings_download_directory")); gtk_menu_button_set_popover(GTK_MENU_BUTTON (priv->gears), menu); gtk_label_set_text (GTK_LABEL (priv->this_device_name_label), g_settings_get_string (priv->settings, "device-name")); - g_settings_bind (priv->settings, "download-dir", - downloadDir, "text", - G_SETTINGS_BIND_DEFAULT); + gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (downloadDir), + g_settings_get_string(priv->settings, + "download-dir")); + + g_signal_connect (downloadDir, "file-set", G_CALLBACK (change_download_directory_cb), priv->settings); + /*g_settings_bind (priv->settings, "download-dir", + GTK_FILE_CHOOSER (downloadDir), "current-folder", + G_SETTINGS_BIND_DEFAULT); + */ //g_object_unref (menu); //g_object_unref (label);