static void pragha_filter_dialog_fill_model (GtkListStore *filter_model, PraghaPlaylist *cplaylist) { GtkTreeIter filter_iter; PraghaMusicobject *mobj = NULL; gchar *ch_title = NULL, *ch_artist = NULL, *ch_album = NULL; const gchar *file, *title, *artist, *album; gchar *track_data_markup = NULL; gint track_i = 0; GList *list = NULL, *i; list = pragha_playlist_get_mobj_list(cplaylist); track_i = pragha_playlist_get_no_tracks(cplaylist); if(list != NULL) { for (i=list; i != NULL; i = i->next) { mobj = i->data; file = pragha_musicobject_get_file(mobj); title = pragha_musicobject_get_title(mobj); artist = pragha_musicobject_get_artist(mobj); album = pragha_musicobject_get_album(mobj); ch_title = string_is_not_empty(title) ? g_strdup(title) : get_display_filename (file, FALSE); ch_artist = string_is_not_empty(artist) ? g_strdup(artist) : g_strdup(_("Unknown Artist")); ch_album = string_is_not_empty(album) ? g_strdup(album) : g_strdup(_("Unknown Album")); track_data_markup = g_markup_printf_escaped ("%s - %s - %s", ch_title, ch_artist, ch_album); if (track_data_markup != NULL) { gtk_list_store_prepend (filter_model, &filter_iter); gtk_list_store_set (filter_model, &filter_iter, 0, track_i, 1, track_data_markup, -1); } track_i--; g_free (ch_title); g_free (ch_artist); g_free (ch_album); g_free (track_data_markup); } g_list_free(list); } }
void pragha_toolbar_set_title (PraghaToolbar *toolbar, PraghaMusicobject *mobj) { gchar *str = NULL, *str_title = NULL; const gchar *file = pragha_musicobject_get_file (mobj); const gchar *title = pragha_musicobject_get_title (mobj); const gchar *artist = pragha_musicobject_get_artist (mobj); const gchar *album = pragha_musicobject_get_album (mobj); if(string_is_not_empty(title)) str_title = g_strdup(title); else str_title = get_display_filename(file, FALSE); if(string_is_not_empty(artist) && string_is_not_empty(album)) str = g_markup_printf_escaped (_("%s <small><span weight=\"light\">by</span></small> %s <small><span weight=\"light\">in</span></small> %s"), str_title, artist, album); else if(string_is_not_empty(artist)) str = g_markup_printf_escaped (_("%s <small><span weight=\"light\">by</span></small> %s"), str_title, artist); else if(string_is_not_empty(album)) str = g_markup_printf_escaped (_("%s <small><span weight=\"light\">in</span></small> %s"), str_title, album); else str = g_markup_printf_escaped("%s", str_title); gtk_label_set_markup(GTK_LABEL(toolbar->now_playing_label), str); g_free(str_title); g_free(str); }
int email_is_valid(char *email, int line_number) { log_string("starting validation for email ", email); if (string_is_not_empty(email, line_number, "Empty email.") == 0) { log_simple("email validation ended unsuccesfully"); return (0); } if (string_is_not_too_big(email, EMAIL_MAX_LENGTH, line_number, "Email is too big.") == 0) { log_simple("email validation ended unsuccesfully"); return (0); } if (email_format_is_valid(email, line_number) == 0) { log_simple("email validation ended unsuccesfully"); return (0); } log_simple("email validation ended succesfully"); return (1); }
void pragha_application_add_location (PraghaApplication *pragha) { PraghaPlaylist *playlist; PraghaDatabase *cdbase; PraghaMusicobject *mobj; GtkWidget *dialog, *table, *uri_entry, *label_name, *name_entry; const gchar *uri = NULL, *name = NULL; gchar *clipboard_location = NULL, *real_name = NULL; GSList *list = NULL, *i = NULL; GList *mlist = NULL; guint row = 0; gint result; /* Create dialog window */ table = pragha_hig_workarea_table_new (); pragha_hig_workarea_table_add_section_title(table, &row, _("Enter the URL of an internet radio stream")); uri_entry = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(uri_entry), 255); pragha_hig_workarea_table_add_wide_control (table, &row, uri_entry); label_name = gtk_label_new_with_mnemonic(_("Give it a name to save")); name_entry = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(name_entry), 255); pragha_hig_workarea_table_add_row (table, &row, label_name, name_entry); /* Get item from clipboard to fill GtkEntry */ clipboard_location = totem_open_location_set_from_clipboard (uri_entry); if (clipboard_location != NULL && strcmp (clipboard_location, "") != 0) { gtk_entry_set_text (GTK_ENTRY(uri_entry), clipboard_location); g_free (clipboard_location); } dialog = gtk_dialog_new_with_buttons (_("Add a location"), GTK_WINDOW(pragha_application_get_window(pragha)), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, _("_Cancel"), GTK_RESPONSE_CANCEL, _("_Ok"), GTK_RESPONSE_ACCEPT, NULL); gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), table); gtk_window_set_default_size(GTK_WINDOW (dialog), 450, -1); gtk_entry_set_activates_default (GTK_ENTRY(uri_entry), TRUE); gtk_entry_set_activates_default (GTK_ENTRY(name_entry), TRUE); gtk_widget_show_all(dialog); result = gtk_dialog_run(GTK_DIALOG(dialog)); switch(result) { case GTK_RESPONSE_ACCEPT: if (gtk_entry_get_text_length (GTK_ENTRY(uri_entry))) uri = gtk_entry_get_text(GTK_ENTRY(uri_entry)); playlist = pragha_application_get_playlist (pragha); if (string_is_not_empty(uri)) { if (gtk_entry_get_text_length (GTK_ENTRY(name_entry))) name = gtk_entry_get_text(GTK_ENTRY(name_entry)); #ifdef HAVE_PLPARSER list = pragha_totem_pl_parser_parse_from_uri (uri); #else list = g_slist_append (list, g_strdup(uri)); #endif for (i = list; i != NULL; i = i->next) { if (string_is_not_empty(name)) real_name = new_radio (playlist, i->data, name); mobj = new_musicobject_from_location (i->data, real_name); mlist = g_list_append(mlist, mobj); if (real_name) { g_free (real_name); real_name = NULL; } g_free(i->data); } g_slist_free(list); /* Append playlist and save on database */ pragha_playlist_append_mobj_list (playlist, mlist); g_list_free(mlist); cdbase = pragha_application_get_database (pragha); pragha_database_change_playlists_done (cdbase); } break; case GTK_RESPONSE_CANCEL: break; default: break; } gtk_widget_destroy(dialog); return; }
void pragha_application_open_files (PraghaApplication *pragha) { PraghaPreferences *preferences; GtkWidget *window, *hbox, *vbox, *chooser, *bbox, *toggle, *close_button, *add_button; gpointer storage; gint i = 0; GtkFileFilter *media_filter, *playlist_filter, *all_filter; const gchar *last_folder = NULL; /* Create a file chooser dialog */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_type_hint (GTK_WINDOW (window), GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_title(GTK_WINDOW(window), (_("Select a file to play"))); gtk_window_set_default_size(GTK_WINDOW(window), 700, 450); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_widget_set_name (GTK_WIDGET(window), "GtkFileChooserDialog"); gtk_container_set_border_width(GTK_CONTAINER(window), 0); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_widget_set_name (GTK_WIDGET(vbox), "dialog-vbox1"); gtk_container_add(GTK_CONTAINER(window), vbox); chooser = gtk_file_chooser_widget_new(GTK_FILE_CHOOSER_ACTION_OPEN); /* Set various properties */ gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(chooser), TRUE); preferences = pragha_application_get_preferences (pragha); last_folder = pragha_preferences_get_last_folder (preferences); if (string_is_not_empty(last_folder)) gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), last_folder); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_set_border_width(GTK_CONTAINER(hbox), 6); toggle = gtk_check_button_new_with_label(_("Add files recursively")); if(pragha_preferences_get_add_recursively (preferences)) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), TRUE); bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL); gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); gtk_box_set_spacing(GTK_BOX(bbox), 4); close_button = gtk_button_new_with_mnemonic (_("_Cancel")); add_button = gtk_button_new_with_mnemonic (_("_Add")); gtk_container_add(GTK_CONTAINER(bbox), close_button); gtk_container_add(GTK_CONTAINER(bbox), add_button); gtk_box_pack_start(GTK_BOX(hbox), toggle, TRUE, TRUE, 0); gtk_box_pack_end(GTK_BOX(hbox), bbox, FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(vbox), chooser, TRUE, TRUE, 0); /* Create file filters */ media_filter = gtk_file_filter_new(); gtk_file_filter_set_name(GTK_FILE_FILTER(media_filter), _("Supported media")); while (mime_wav[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_wav[i++]); i = 0; while (mime_mpeg[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_mpeg[i++]); i = 0; while (mime_flac[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_flac[i++]); i = 0; while (mime_ogg[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_ogg[i++]); i = 0; while (mime_asf[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_asf[i++]); i = 0; while (mime_mp4[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_mp4[i++]); i = 0; while (mime_ape[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_ape[i++]); i = 0; while (mime_tracker[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_tracker[i++]); #ifdef HAVE_PLPARSER i = 0; while (mime_playlist[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_playlist[i++]); i = 0; while (mime_dual[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(media_filter), mime_dual[i++]); #else gtk_file_filter_add_pattern(GTK_FILE_FILTER(media_filter), "*.m3u"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(media_filter), "*.M3U"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(media_filter), "*.pls"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(media_filter), "*.PLS"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(media_filter), "*.xspf"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(media_filter), "*.XSPF"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(media_filter), "*.wax"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(media_filter), "*.WAX"); #endif playlist_filter = gtk_file_filter_new(); #ifdef HAVE_PLPARSER i = 0; while (mime_playlist[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(playlist_filter), mime_playlist[i++]); i = 0; while (mime_dual[i]) gtk_file_filter_add_mime_type(GTK_FILE_FILTER(playlist_filter), mime_dual[i++]); #else gtk_file_filter_add_pattern(GTK_FILE_FILTER(playlist_filter), "*.m3u"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(playlist_filter), "*.M3U"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(playlist_filter), "*.pls"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(playlist_filter), "*.PLS"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(playlist_filter), "*.xspf"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(playlist_filter), "*.XSPF"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(playlist_filter), "*.wax"); gtk_file_filter_add_pattern(GTK_FILE_FILTER(playlist_filter), "*.WAX"); #endif gtk_file_filter_set_name(GTK_FILE_FILTER(playlist_filter), _("Playlists")); all_filter = gtk_file_filter_new (); gtk_file_filter_set_name (GTK_FILE_FILTER(all_filter), _("All files")); gtk_file_filter_add_pattern (GTK_FILE_FILTER(all_filter), "*"); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER(chooser), GTK_FILE_FILTER(media_filter)); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER(chooser), GTK_FILE_FILTER(playlist_filter)); gtk_file_chooser_add_filter (GTK_FILE_CHOOSER(chooser), GTK_FILE_FILTER(all_filter)); gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(chooser), GTK_FILE_FILTER(media_filter)); storage = g_object_new(G_TYPE_OBJECT, NULL); g_object_set_data(storage, "window", window); g_object_set_data(storage, "chooser", chooser); g_object_set_data(storage, "toggle-button", toggle); g_object_set_data(storage, "pragha", pragha); g_signal_connect (add_button, "clicked", G_CALLBACK(pragha_open_files_dialog_add_button_cb), storage); g_signal_connect (chooser, "file-activated", G_CALLBACK(pragha_open_files_dialog_add_button_cb), storage); g_signal_connect (close_button, "clicked", G_CALLBACK(pragha_open_files_dialog_close_button_cb), window); g_signal_connect (window, "destroy", G_CALLBACK(gtk_widget_destroy), window); g_signal_connect (window, "key-press-event", G_CALLBACK(pragha_open_files_dialog_keypress), NULL); gtk_window_set_transient_for(GTK_WINDOW (window), GTK_WINDOW(pragha_application_get_window(pragha))); gtk_window_set_destroy_with_parent (GTK_WINDOW (window), TRUE); gtk_widget_show_all(window); }
static void pragha_application_startup (GApplication *application) { PraghaToolbar *toolbar; PraghaPlaylist *playlist; const gchar *version = NULL; const gchar *desktop = NULL; gint playlist_id = 0; const GBindingFlags binding_flags = G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL; PraghaApplication *pragha = PRAGHA_APPLICATION (application); G_APPLICATION_CLASS (pragha_application_parent_class)->startup (application); /* Allocate memory for simple structures */ pragha->preferences = pragha_preferences_get(); pragha->cdbase = pragha_database_get(); if (pragha_database_start_successfully(pragha->cdbase) == FALSE) { g_error("Unable to init music dbase"); } version = pragha_preferences_get_installed_version (pragha->preferences); if (string_is_not_empty (version) && (g_ascii_strcasecmp (version, "1.3.90") < 0)) { pragha_database_compatibilize_version (pragha->cdbase); } playlist_id = pragha_database_find_playlist (pragha->cdbase, _("Favorites")); if (playlist_id == 0) pragha_database_add_new_playlist (pragha->cdbase, _("Favorites")); pragha->provider = pragha_database_provider_get (); g_signal_connect (pragha->provider, "want-upgrade", G_CALLBACK(pragha_application_provider_want_upgrade), pragha); g_signal_connect (pragha->provider, "want-update", G_CALLBACK(pragha_application_provider_want_update), pragha); pragha->enum_map = pragha_music_enum_get (); g_signal_connect (pragha->enum_map, "enum-removed", G_CALLBACK(pragha_enum_map_removed_handler), pragha); #ifdef HAVE_LIBPEAS pragha->plugins_engine = pragha_plugins_engine_new (G_OBJECT(pragha)); #endif pragha->art_cache = pragha_art_cache_get (); g_signal_connect (pragha->art_cache, "cache-changed", G_CALLBACK(pragha_art_cache_changed_handler), pragha); pragha->backend = pragha_backend_new (); g_signal_connect (pragha->backend, "finished", G_CALLBACK(pragha_backend_finished_song), pragha); g_signal_connect (pragha->backend, "tags-changed", G_CALLBACK(pragha_backend_tags_changed), pragha); g_signal_connect (pragha->backend, "error", G_CALLBACK(gui_backend_error_show_dialog_cb), pragha); g_signal_connect (pragha->backend, "error", G_CALLBACK(gui_backend_error_update_current_playlist_cb), pragha); g_signal_connect (pragha->backend, "notify::state", G_CALLBACK (pragha_menubar_update_playback_state_cb), pragha); /* * Collect widgets and construct the window. */ pragha_application_construct_window (pragha); /* Connect Signals and Bindings. */ toolbar = pragha->toolbar; g_signal_connect_swapped (toolbar, "prev", G_CALLBACK(pragha_playback_prev_track), pragha); g_signal_connect_swapped (toolbar, "play", G_CALLBACK(pragha_playback_play_pause_resume), pragha); g_signal_connect_swapped (toolbar, "stop", G_CALLBACK(pragha_playback_stop), pragha); g_signal_connect_swapped (toolbar, "next", G_CALLBACK(pragha_playback_next_track), pragha); g_signal_connect (toolbar, "unfull-activated", G_CALLBACK(pragha_window_unfullscreen), pragha); g_signal_connect (toolbar, "album-art-activated", G_CALLBACK(pragha_playback_show_current_album_art), pragha); g_signal_connect_swapped (toolbar, "track-info-activated", G_CALLBACK(pragha_playback_edit_current_track), pragha); g_signal_connect (toolbar, "track-progress-activated", G_CALLBACK(pragha_playback_seek_fraction), pragha); g_signal_connect (toolbar, "favorite-toggle", G_CALLBACK(pragha_playback_toogle_favorite), pragha); playlist = pragha->playlist; g_signal_connect (playlist, "playlist-set-track", G_CALLBACK(pragha_playback_set_playlist_track), pragha); g_signal_connect (playlist, "playlist-change-tags", G_CALLBACK(pragha_playlist_update_change_tags), pragha); g_signal_connect (playlist, "playlist-changed", G_CALLBACK(pragha_playlist_update_statusbar_playtime), pragha); pragha_playlist_update_statusbar_playtime (playlist, pragha); g_signal_connect (pragha->library, "library-append-playlist", G_CALLBACK(pragha_library_pane_append_tracks), pragha); g_signal_connect (pragha->library, "library-replace-playlist", G_CALLBACK(pragha_library_pane_replace_tracks), pragha); g_signal_connect (pragha->library, "library-replace-playlist-and-play", G_CALLBACK(pragha_library_pane_replace_tracks_and_play), pragha); g_signal_connect (pragha->library, "library-addto-playlist-and-play", G_CALLBACK(pragha_library_pane_addto_playlist_and_play), pragha); g_signal_connect (G_OBJECT(pragha->mainwindow), "window-state-event", G_CALLBACK(pragha_toolbar_window_state_event), toolbar); g_signal_connect (G_OBJECT(toolbar), "notify::timer-remaining-mode", G_CALLBACK(pragha_toolbar_show_ramaning_time_cb), pragha->backend); g_signal_connect (pragha->backend, "notify::state", G_CALLBACK(pragha_toolbar_playback_state_cb), toolbar); g_signal_connect (pragha->backend, "tick", G_CALLBACK(pragha_toolbar_update_playback_progress), toolbar); g_signal_connect (pragha->backend, "buffering", G_CALLBACK(pragha_toolbar_update_buffering_cb), toolbar); g_signal_connect (pragha->backend, "notify::state", G_CALLBACK (update_current_playlist_view_playback_state_cb), pragha->playlist); g_object_bind_property (pragha->backend, "volume", toolbar, "volume", binding_flags); g_object_bind_property (pragha->preferences, "timer-remaining-mode", toolbar, "timer-remaining-mode", binding_flags); g_signal_connect (pragha->preferences, "LibraryChanged", G_CALLBACK (pragha_libary_list_changed_cb), pragha); g_signal_connect (pragha->preferences, "NeedRestart", G_CALLBACK (pragha_need_restart_cb), pragha); g_signal_connect (pragha->preferences, "notify::system-titlebar", G_CALLBACK (pragha_system_titlebar_changed_cb), pragha); pragha->sidebar2_binding = g_object_bind_property (pragha->preferences, "secondary-lateral-panel", pragha->sidebar2, "visible", binding_flags); pragha->setting_dialog = pragha_preferences_dialog_new (pragha->mainwindow); #ifdef HAVE_LIBPEAS gboolean sidebar2_visible = // FIXME: Hack to allow hide sidebar when init. pragha_preferences_get_secondary_lateral_panel(pragha->preferences); pragha_plugins_engine_startup (pragha->plugins_engine); pragha_preferences_set_secondary_lateral_panel(pragha->preferences, sidebar2_visible); #endif /* If first run and the desktop is gnome adapts style. */ if (pragha_application_is_first_run (pragha)) { desktop = g_getenv ("XDG_CURRENT_DESKTOP"); if (desktop && (g_strcmp0(desktop, "GNOME") == 0) && gdk_screen_is_composited (gdk_screen_get_default())) { pragha_preferences_set_system_titlebar (pragha->preferences, FALSE); pragha_preferences_set_toolbar_size (pragha->preferences, GTK_ICON_SIZE_SMALL_TOOLBAR); pragha_preferences_set_show_menubar (pragha->preferences, FALSE); } } /* Forse update menubar and toolbar playback actions */ pragha_menubar_update_playback_state_cb (pragha->backend, NULL, pragha); pragha_toolbar_playback_state_cb (pragha->backend, NULL, pragha->toolbar); /* Finally fill the library and the playlist */ pragha_init_gui_state (pragha); }
void pragha_gtk_entry_set_text (GtkEntry *entry, const gchar *text) { gtk_entry_set_text (GTK_ENTRY(entry), string_is_not_empty(text) ? text : ""); }
static void pragha_preferences_finalize (GObject *object) { gchar *data = NULL; gsize length; GError *error = NULL; PraghaPreferences *preferences = PRAGHA_PREFERENCES(object); PraghaPreferencesPrivate *priv = preferences->priv; /* Store new preferences */ g_key_file_set_boolean(priv->rc_keyfile, GROUP_GENERAL, KEY_INSTANT_SEARCH, priv->instant_search); g_key_file_set_boolean(priv->rc_keyfile, GROUP_GENERAL, KEY_APPROXIMATE_SEARCH, priv->approximate_search); g_key_file_set_integer(priv->rc_keyfile, GROUP_LIBRARY, KEY_LIBRARY_VIEW_ORDER, priv->library_style); g_key_file_set_boolean(priv->rc_keyfile, GROUP_LIBRARY, KEY_SORT_BY_YEAR, priv->sort_by_year); g_key_file_set_boolean(priv->rc_keyfile, GROUP_LIBRARY, KEY_FUSE_FOLDERS, priv->fuse_folders); g_key_file_set_boolean(priv->rc_keyfile, GROUP_PLAYLIST, KEY_SHUFFLE, priv->shuffle); g_key_file_set_boolean(priv->rc_keyfile, GROUP_PLAYLIST, KEY_REPEAT, priv->repeat); g_key_file_set_boolean(priv->rc_keyfile, GROUP_GENERAL, KEY_USE_HINT, priv->use_hint); g_key_file_set_boolean(priv->rc_keyfile, GROUP_PLAYLIST, KEY_SAVE_PLAYLIST, priv->restore_playlist); g_key_file_set_string(priv->rc_keyfile, GROUP_AUDIO, KEY_AUDIO_SINK, priv->audio_sink); g_key_file_set_string(priv->rc_keyfile, GROUP_AUDIO, KEY_AUDIO_DEVICE, priv->audio_device); g_key_file_set_boolean(priv->rc_keyfile, GROUP_AUDIO, KEY_SOFTWARE_MIXER, priv->software_mixer); if (string_is_not_empty(priv->audio_cd_device)) g_key_file_set_string(priv->rc_keyfile, GROUP_AUDIO, KEY_AUDIO_CD_DEVICE, priv->audio_cd_device); else pragha_preferences_remove_key(preferences, GROUP_AUDIO, KEY_AUDIO_CD_DEVICE); g_key_file_set_boolean(priv->rc_keyfile, GROUP_WINDOW, KEY_SIDEBAR, priv->lateral_panel); g_key_file_set_integer(priv->rc_keyfile, GROUP_WINDOW, KEY_SIDEBAR_SIZE, priv->sidebar_size); g_key_file_set_boolean(priv->rc_keyfile, GROUP_WINDOW, KEY_SHOW_ALBUM_ART, priv->show_album_art); g_key_file_set_boolean(priv->rc_keyfile, GROUP_WINDOW, KEY_STATUS_BAR, priv->show_status_bar); g_key_file_set_boolean(priv->rc_keyfile, GROUP_GENERAL, KEY_ADD_RECURSIVELY_FILES, priv->add_recursively); g_key_file_set_boolean(priv->rc_keyfile, GROUP_GENERAL, KEY_TIMER_REMAINING_MODE, priv->timer_remaining_mode); /* Save to key file */ data = g_key_file_to_data(priv->rc_keyfile, &length, NULL); if(!g_file_set_contents(priv->rc_filepath, data, length, &error)) g_critical("Unable to write preferences file : %s", error->message); g_free(data); g_key_file_free(priv->rc_keyfile); g_free(priv->rc_filepath); g_free(priv->audio_sink); g_free(priv->audio_device); g_free(priv->audio_cd_device); G_OBJECT_CLASS(pragha_preferences_parent_class)->finalize(object); }
static void pragha_application_startup (GApplication *application) { PraghaToolbar *toolbar; PraghaPlaylist *playlist; const gchar *version = NULL; const GBindingFlags binding_flags = G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL; PraghaApplication *pragha = PRAGHA_APPLICATION (application); G_APPLICATION_CLASS (pragha_application_parent_class)->startup (application); /* Allocate memory for simple structures */ pragha->preferences = pragha_preferences_get(); pragha->cdbase = pragha_database_get(); if (pragha_database_start_successfully(pragha->cdbase) == FALSE) { g_error("Unable to init music dbase"); } version = pragha_preferences_get_installed_version (pragha->preferences); if (string_is_not_empty (version) && (g_ascii_strcasecmp (version, "1.3.1") < 0)) { pragha_database_compatibilize_version (pragha->cdbase); } pragha->enum_map = pragha_music_enum_get (); g_signal_connect (pragha->enum_map, "enum-removed", G_CALLBACK(pragha_enum_map_removed_handler), pragha); #ifdef HAVE_LIBPEAS pragha->plugins_engine = pragha_plugins_engine_new (pragha); #endif pragha->art_cache = pragha_art_cache_get (); g_signal_connect (pragha->art_cache, "cache-changed", G_CALLBACK(pragha_art_cache_changed_handler), pragha); pragha->backend = pragha_backend_new (); g_signal_connect (pragha->backend, "finished", G_CALLBACK(pragha_backend_finished_song), pragha); g_signal_connect (pragha->backend, "tags-changed", G_CALLBACK(pragha_backend_tags_changed), pragha); g_signal_connect (pragha->backend, "error", G_CALLBACK(gui_backend_error_show_dialog_cb), pragha); g_signal_connect (pragha->backend, "error", G_CALLBACK(gui_backend_error_update_current_playlist_cb), pragha); g_signal_connect (pragha->backend, "notify::state", G_CALLBACK (pragha_menubar_update_playback_state_cb), pragha); /* * Collect widgets and construct the window. */ pragha_application_construct_window (pragha); /* Connect Signals and Bindings. */ toolbar = pragha->toolbar; g_signal_connect_swapped (toolbar, "prev", G_CALLBACK(pragha_playback_prev_track), pragha); g_signal_connect_swapped (toolbar, "play", G_CALLBACK(pragha_playback_play_pause_resume), pragha); g_signal_connect_swapped (toolbar, "stop", G_CALLBACK(pragha_playback_stop), pragha); g_signal_connect_swapped (toolbar, "next", G_CALLBACK(pragha_playback_next_track), pragha); g_signal_connect (toolbar, "unfull-activated", G_CALLBACK(pragha_window_unfullscreen), pragha); g_signal_connect (toolbar, "album-art-activated", G_CALLBACK(pragha_playback_show_current_album_art), pragha); g_signal_connect (toolbar, "track-info-activated", G_CALLBACK(pragha_playback_edit_current_track), pragha); g_signal_connect (toolbar, "track-progress-activated", G_CALLBACK(pragha_playback_seek_fraction), pragha); playlist = pragha->playlist; g_signal_connect (playlist, "playlist-set-track", G_CALLBACK(pragha_playback_set_playlist_track), pragha); g_signal_connect (playlist, "playlist-change-tags", G_CALLBACK(pragha_playlist_update_change_tags), pragha); g_signal_connect (playlist, "playlist-changed", G_CALLBACK(pragha_playlist_update_statusbar_playtime), pragha); pragha_playlist_update_statusbar_playtime (playlist, pragha); g_signal_connect (pragha->library, "library-append-playlist", G_CALLBACK(pragha_library_pane_append_tracks), pragha); g_signal_connect (pragha->library, "library-replace-playlist", G_CALLBACK(pragha_library_pane_replace_tracks), pragha); g_signal_connect (pragha->library, "library-replace-playlist-and-play", G_CALLBACK(pragha_library_pane_replace_tracks_and_play), pragha); g_signal_connect (G_OBJECT(pragha->mainwindow), "window-state-event", G_CALLBACK(pragha_toolbar_window_state_event), toolbar); g_signal_connect (G_OBJECT(toolbar), "notify::timer-remaining-mode", G_CALLBACK(pragha_toolbar_show_ramaning_time_cb), pragha->backend); g_signal_connect (pragha->backend, "notify::state", G_CALLBACK(pragha_toolbar_playback_state_cb), toolbar); g_signal_connect (pragha->backend, "tick", G_CALLBACK(pragha_toolbar_update_playback_progress), toolbar); g_signal_connect (pragha->backend, "buffering", G_CALLBACK(pragha_toolbar_update_buffering_cb), toolbar); g_signal_connect (pragha->backend, "notify::state", G_CALLBACK (update_current_playlist_view_playback_state_cb), pragha->playlist); g_object_bind_property (pragha->backend, "volume", toolbar, "volume", binding_flags); g_object_bind_property (pragha->preferences, "timer-remaining-mode", toolbar, "timer-remaining-mode", binding_flags); pragha->sidebar2_binding = g_object_bind_property (pragha->preferences, "secondary-lateral-panel", pragha->sidebar2, "visible", binding_flags); pragha->setting_dialog = pragha_preferences_dialog_new (pragha); #ifdef HAVE_LIBPEAS pragha_plugins_engine_startup (pragha->plugins_engine); #endif /* Finally fill the library and the playlist */ pragha_init_gui_state (pragha); }