static void on_media_player_key_pressed(con_gnome_media_keys *gmk, const gchar *key) { PraghaBackend *backend; PraghaPreferences *preferences; PraghaApplication *pragha = gmk->pragha; backend = pragha_application_get_backend (pragha); preferences = pragha_application_get_preferences (pragha); if (pragha_backend_emitted_error (backend)) return; if (g_strcmp0("Play", key) == 0) pragha_playback_play_pause_resume(pragha); else if (g_strcmp0("Pause", key) == 0) pragha_backend_pause (backend); else if (g_strcmp0("Stop", key) == 0) pragha_playback_stop(pragha); else if (g_strcmp0("Previous", key) == 0) pragha_playback_prev_track(pragha); else if (g_strcmp0("Next", key) == 0) pragha_playback_next_track(pragha); else if (g_strcmp0("Repeat", key) == 0) { gboolean repeat = pragha_preferences_get_repeat (preferences); pragha_preferences_set_repeat (preferences, !repeat); } else if (g_strcmp0("Shuffle", key) == 0) { gboolean shuffle = pragha_preferences_get_shuffle (preferences); pragha_preferences_set_shuffle (preferences, !shuffle); } //XXX missed buttons: "Rewind" and "FastForward" }
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); } }