static void pragha_open_files_dialog_add_button_cb (GtkWidget *widget, gpointer data) { PraghaPlaylist *playlist; GSList *files = NULL, *l; gboolean add_recursively; GList *mlist = NULL; GtkWidget *window = g_object_get_data(data, "window"); GtkWidget *chooser = g_object_get_data(data, "chooser"); GtkWidget *toggle = g_object_get_data(data, "toggle-button"); PraghaApplication *pragha = g_object_get_data(data, "pragha"); PraghaPreferences *preferences = pragha_application_get_preferences (pragha); add_recursively = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toggle)); pragha_preferences_set_add_recursively (preferences, add_recursively); gchar *last_folder = gtk_file_chooser_get_current_folder ((GtkFileChooser *) chooser); pragha_preferences_set_last_folder (preferences, last_folder); g_free (last_folder); files = gtk_file_chooser_get_filenames((GtkFileChooser *) chooser); gtk_widget_destroy(window); if (files) { for (l = files; l != NULL; l = l->next) { mlist = append_mobj_list_from_unknown_filename(mlist, l->data); } g_slist_free_full(files, g_free); playlist = pragha_application_get_playlist (pragha); pragha_playlist_append_mobj_list (playlist, mlist); g_list_free (mlist); } }
static void pragha_preferences_load_from_file(PraghaPreferences *preferences) { gboolean approximate_search, instant_search; gboolean shuffle, repeat, use_hint, restore_playlist, software_mixer; gboolean lateral_panel, show_album_art, show_status_bar; gboolean add_recursively, timer_remaining_mode; gchar *audio_sink, *audio_device, *audio_cd_device; gint library_style, sidebar_size; gboolean fuse_folders, sort_by_year; const gchar *user_config_dir; gchar *pragha_config_dir = NULL; GError *error = NULL; PraghaPreferencesPrivate *priv = preferences->priv; /* First check preferences folder or create it */ user_config_dir = g_get_user_config_dir(); pragha_config_dir = g_build_path(G_DIR_SEPARATOR_S, user_config_dir, "/pragha", NULL); if (g_file_test(pragha_config_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR) == FALSE) { if (g_mkdir_with_parents (pragha_config_dir, S_IRWXU) == -1) { g_free(pragha_config_dir); g_critical("Unable to create preferences directory, err: %s", strerror(errno)); return; } CDEBUG(DBG_INFO, "Created .config/pragha folder"); } g_free(pragha_config_dir); /* Does /pragha/config exist ? */ priv->rc_filepath = g_build_path(G_DIR_SEPARATOR_S, user_config_dir, "/pragha/config", NULL); if (g_file_test(priv->rc_filepath, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR) == FALSE) { if (g_creat(priv->rc_filepath, S_IRWXU) == -1) { g_free(priv->rc_filepath); priv->rc_filepath = NULL; g_critical("Unable to create config file, err: %s", strerror(errno)); return; } CDEBUG(DBG_INFO, "Created .config/pragha/config file"); } /* Open the preferences storage file */ priv->rc_keyfile = g_key_file_new(); if (!g_key_file_load_from_file(priv->rc_keyfile, priv->rc_filepath, G_KEY_FILE_NONE, &error)) { g_critical("Unable to load config file (Possible first start), err: %s", error->message); g_error_free(error); return; } /* Open last preferences */ approximate_search = g_key_file_get_boolean(priv->rc_keyfile, GROUP_GENERAL, KEY_APPROXIMATE_SEARCH, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_approximate_search(preferences, approximate_search); } instant_search = g_key_file_get_boolean(priv->rc_keyfile, GROUP_GENERAL, KEY_INSTANT_SEARCH, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_instant_search(preferences, instant_search); } shuffle = g_key_file_get_boolean(priv->rc_keyfile, GROUP_PLAYLIST, KEY_SHUFFLE, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_shuffle(preferences, shuffle); } repeat = g_key_file_get_boolean(priv->rc_keyfile, GROUP_PLAYLIST, KEY_REPEAT, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_repeat(preferences, repeat); } use_hint = g_key_file_get_boolean(priv->rc_keyfile, GROUP_GENERAL, KEY_USE_HINT, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_use_hint(preferences, use_hint); } library_style = g_key_file_get_integer(priv->rc_keyfile, GROUP_LIBRARY, KEY_LIBRARY_VIEW_ORDER, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_library_style(preferences, library_style); } sort_by_year = g_key_file_get_boolean(priv->rc_keyfile, GROUP_LIBRARY, KEY_SORT_BY_YEAR, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_sort_by_year(preferences, sort_by_year); } fuse_folders = g_key_file_get_boolean(priv->rc_keyfile, GROUP_LIBRARY, KEY_FUSE_FOLDERS, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_fuse_folders(preferences, fuse_folders); } restore_playlist = g_key_file_get_boolean(priv->rc_keyfile, GROUP_PLAYLIST, KEY_SAVE_PLAYLIST, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_restore_playlist(preferences, restore_playlist); } audio_sink = g_key_file_get_string(priv->rc_keyfile, GROUP_AUDIO, KEY_AUDIO_SINK, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_audio_sink(preferences, audio_sink); } audio_device = g_key_file_get_string(priv->rc_keyfile, GROUP_AUDIO, KEY_AUDIO_DEVICE, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_audio_device(preferences, audio_device); } software_mixer = g_key_file_get_boolean(priv->rc_keyfile, GROUP_AUDIO, KEY_SOFTWARE_MIXER, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_software_mixer(preferences, software_mixer); } audio_cd_device = g_key_file_get_string(priv->rc_keyfile, GROUP_AUDIO, KEY_AUDIO_CD_DEVICE, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_audio_cd_device(preferences, audio_cd_device); } lateral_panel = g_key_file_get_boolean(priv->rc_keyfile, GROUP_WINDOW, KEY_SIDEBAR, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_lateral_panel(preferences, lateral_panel); } sidebar_size = g_key_file_get_integer(priv->rc_keyfile, GROUP_WINDOW, KEY_SIDEBAR_SIZE, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_sidebar_size(preferences, sidebar_size); } show_album_art = g_key_file_get_boolean(priv->rc_keyfile, GROUP_WINDOW, KEY_SHOW_ALBUM_ART, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_show_album_art(preferences, show_album_art); } show_status_bar = g_key_file_get_boolean(priv->rc_keyfile, GROUP_WINDOW, KEY_STATUS_BAR, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_show_status_bar(preferences, show_status_bar); } add_recursively = g_key_file_get_boolean(priv->rc_keyfile, GROUP_GENERAL, KEY_ADD_RECURSIVELY_FILES, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_add_recursively(preferences, add_recursively); } timer_remaining_mode = g_key_file_get_boolean(priv->rc_keyfile, GROUP_GENERAL, KEY_TIMER_REMAINING_MODE, &error); if (error) { g_error_free(error); error = NULL; } else { pragha_preferences_set_timer_remaining_mode(preferences, timer_remaining_mode); } g_free(audio_sink); g_free(audio_device); g_free(audio_cd_device); }
static void pragha_preferences_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { PraghaPreferences *preferences = PRAGHA_PREFERENCES(object); switch (prop_id) { case PROP_INSTANT_SEARCH: pragha_preferences_set_instant_search(preferences, g_value_get_boolean(value)); break; case PROP_APPROXIMATE_SEARCH: pragha_preferences_set_approximate_search(preferences, g_value_get_boolean(value)); break; case PROP_LIBRARY_STYLE: pragha_preferences_set_library_style(preferences, g_value_get_int(value)); break; case PROP_LIBRARY_SORT_BY_YEAR: pragha_preferences_set_sort_by_year(preferences, g_value_get_boolean(value)); break; case PROP_LIBRARY_FUSE_FOLDERS: pragha_preferences_set_fuse_folders(preferences, g_value_get_boolean(value)); break; case PROP_SHUFFLE: pragha_preferences_set_shuffle(preferences, g_value_get_boolean(value)); break; case PROP_REPEAT: pragha_preferences_set_repeat(preferences, g_value_get_boolean(value)); break; case PROP_USE_HINT: pragha_preferences_set_use_hint(preferences, g_value_get_boolean(value)); break; case PROP_RESTORE_PLAYLIST: pragha_preferences_set_restore_playlist(preferences, g_value_get_boolean(value)); break; case PROP_AUDIO_SINK: pragha_preferences_set_audio_sink(preferences, g_value_get_string(value)); break; case PROP_AUDIO_DEVICE: pragha_preferences_set_audio_device(preferences, g_value_get_string(value)); break; case PROP_SOFTWARE_MIXER: pragha_preferences_set_software_mixer(preferences, g_value_get_boolean(value)); break; case PROP_AUDIO_CD_DEVICE: pragha_preferences_set_audio_cd_device(preferences, g_value_get_string(value)); break; case PROP_LATERAL_PANEL: pragha_preferences_set_lateral_panel(preferences, g_value_get_boolean(value)); break; case PROP_SIDEBAR_SIZE: pragha_preferences_set_sidebar_size(preferences, g_value_get_int(value)); break; case PROP_SHOW_ALBUM_ART: pragha_preferences_set_show_album_art(preferences, g_value_get_boolean(value)); break; case PROP_SHOW_STATUS_BAR: pragha_preferences_set_show_status_bar(preferences, g_value_get_boolean(value)); break; case PROP_ADD_RECURSIVELY: pragha_preferences_set_add_recursively(preferences, g_value_get_boolean(value)); break; case PROP_TIMER_REMAINING_MODE: pragha_preferences_set_timer_remaining_mode(preferences, g_value_get_boolean(value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); } }