[feat] implement new way to set download folder

This commit is contained in:
Julian Sparber
2017-10-17 18:58:13 +02:00
parent 6995b34b69
commit 2f26a1c487
2 changed files with 29 additions and 23 deletions

View File

@@ -21,11 +21,11 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkEntry" id="settings_download_directory"> <object class="GtkFileChooserButton" id="settings_download_directory">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">True</property> <property name="sensitive">True</property>
<property name="text">~/Downloads</property> <property name="action">select-folder</property>
<property name="width_chars">25</property> <property name="title" translatable="yes">Choose download dir</property>
</object> </object>
<packing> <packing>
<property name="left_attach">0</property> <property name="left_attach">0</property>
@@ -34,20 +34,6 @@
<property name="height">1</property> <property name="height">1</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkButton">
<property name="visible">True</property>
<property name="sensitive">false</property>
<property name="label">Browse...</property>
<property name="margin_start">12</property>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child> <child>
<object class="GtkLabel"> <object class="GtkLabel">
<property name="visible">False</property> <property name="visible">False</property>

View File

@@ -26,13 +26,28 @@ struct _TeleportWindowPrivate
G_DEFINE_TYPE_WITH_PRIVATE(TeleportWindow, teleport_window, GTK_TYPE_APPLICATION_WINDOW); 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 static void
teleport_window_init (TeleportWindow *win) teleport_window_init (TeleportWindow *win)
{ {
TeleportWindowPrivate *priv; TeleportWindowPrivate *priv;
GtkBuilder *builder; GtkBuilder *builder;
GtkWidget *menu; GtkWidget *menu;
GtkEntry *downloadDir; GtkFileChooserButton *downloadDir;
mainWin = win; mainWin = win;
priv = teleport_window_get_instance_private (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) { if (g_settings_get_user_value (priv->settings, "device-name") == NULL) {
g_settings_set_string (priv->settings, g_settings_set_string (priv->settings,
"device-name", "device-name",
@@ -61,16 +75,22 @@ teleport_window_init (TeleportWindow *win)
builder = gtk_builder_new_from_resource ("/com/frac_tion/teleport/settings.ui"); builder = gtk_builder_new_from_resource ("/com/frac_tion/teleport/settings.ui");
menu = GTK_WIDGET (gtk_builder_get_object (builder, "settings")); 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_menu_button_set_popover(GTK_MENU_BUTTON (priv->gears), menu);
gtk_label_set_text (GTK_LABEL (priv->this_device_name_label), gtk_label_set_text (GTK_LABEL (priv->this_device_name_label),
g_settings_get_string (priv->settings, "device-name")); g_settings_get_string (priv->settings, "device-name"));
g_settings_bind (priv->settings, "download-dir", gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (downloadDir),
downloadDir, "text", g_settings_get_string(priv->settings,
G_SETTINGS_BIND_DEFAULT); "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 (menu);
//g_object_unref (label); //g_object_unref (label);