static GtkWidget * impl_get_config_widget (RBDisplayPage *page, RBShellPreferences *prefs) { RBPodcastMainSource *source = RB_PODCAST_MAIN_SOURCE (page); RBPodcastManager *podcast_mgr; GtkBuilder *builder; GtkWidget *update_interval; GtkWidget *btn_file; GSettings *settings; char *download_dir; if (source->priv->config_widget) return source->priv->config_widget; builder = rb_builder_load ("podcast-prefs.ui", source); source->priv->config_widget = GTK_WIDGET (gtk_builder_get_object (builder, "podcast_vbox")); btn_file = GTK_WIDGET (gtk_builder_get_object (builder, "location_chooser")); gtk_file_chooser_add_shortcut_folder (GTK_FILE_CHOOSER (btn_file), rb_music_dir (), NULL); g_object_get (source, "podcast-manager", &podcast_mgr, NULL); download_dir = rb_podcast_manager_get_podcast_dir (podcast_mgr); gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (btn_file), download_dir); g_object_unref (podcast_mgr); g_free (download_dir); g_signal_connect_object (btn_file, "selection-changed", G_CALLBACK (rb_podcast_main_source_btn_file_change_cb), source, 0); update_interval = GTK_WIDGET (gtk_builder_get_object (builder, "update_interval")); g_object_set (update_interval, "id-column", 1, NULL); settings = g_settings_new (PODCAST_SETTINGS_SCHEMA); g_settings_bind (settings, PODCAST_DOWNLOAD_INTERVAL, update_interval, "active-id", G_SETTINGS_BIND_DEFAULT); g_object_unref (settings); return source->priv->config_widget; }
static GtkWidget * impl_get_config_widget (RBSource *asource, RBShellPreferences *prefs) { RBPodcastMainSource *source = RB_PODCAST_MAIN_SOURCE (asource); RBPodcastManager *podcast_mgr; GtkBuilder *builder; GtkWidget *cb_update_interval; GtkWidget *btn_file; char *download_dir; if (source->priv->config_widget) return source->priv->config_widget; builder = rb_builder_load ("podcast-prefs.ui", source); source->priv->config_widget = GTK_WIDGET (gtk_builder_get_object (builder, "podcast_vbox")); btn_file = GTK_WIDGET (gtk_builder_get_object (builder, "location_chooser")); gtk_file_chooser_add_shortcut_folder (GTK_FILE_CHOOSER (btn_file), rb_music_dir (), NULL); g_object_get (source, "podcast-manager", &podcast_mgr, NULL); download_dir = rb_podcast_manager_get_podcast_dir (podcast_mgr); g_object_unref (podcast_mgr); gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (btn_file), download_dir); g_free (download_dir); g_signal_connect (btn_file, "selection-changed", G_CALLBACK (rb_podcast_main_source_btn_file_change_cb), CONF_STATE_PODCAST_DOWNLOAD_DIR); cb_update_interval = GTK_WIDGET (gtk_builder_get_object (builder, "cb_update_interval")); gtk_combo_box_set_active (GTK_COMBO_BOX (cb_update_interval), eel_gconf_get_integer (CONF_STATE_PODCAST_DOWNLOAD_INTERVAL)); g_signal_connect (cb_update_interval, "changed", G_CALLBACK (rb_podcast_main_source_cb_interval_changed_cb), source); return source->priv->config_widget; }
static void impl_constructed (GObject *object) { RBImportDialog *dialog; RhythmDBQuery *query; GtkBuilder *builder; GSettings *settings; char **locations; RB_CHAIN_GOBJECT_METHOD (rb_import_dialog_parent_class, constructed, object); dialog = RB_IMPORT_DIALOG (object); g_object_get (dialog->priv->shell, "db", &dialog->priv->db, "shell-player", &dialog->priv->shell_player, NULL); /* create entry types */ dialog->priv->entry_type = g_object_new (rb_import_dialog_entry_type_get_type (), "db", dialog->priv->db, "name", "import-dialog", NULL); dialog->priv->ignore_type = g_object_new (rb_import_dialog_ignore_type_get_type (), "db", dialog->priv->db, "name", "import-dialog-ignore", NULL); rhythmdb_register_entry_type (dialog->priv->db, dialog->priv->entry_type); rhythmdb_register_entry_type (dialog->priv->db, dialog->priv->ignore_type); builder = rb_builder_load ("import-dialog.ui", NULL); dialog->priv->import_button = GTK_WIDGET (gtk_builder_get_object (builder, "import-button")); g_signal_connect_object (dialog->priv->import_button, "clicked", G_CALLBACK (import_clicked_cb), dialog, 0); gtk_widget_set_sensitive (dialog->priv->import_button, FALSE); dialog->priv->copy_check = GTK_WIDGET (gtk_builder_get_object (builder, "copy-check")); g_signal_connect (gtk_builder_get_object (builder, "close-button"), "clicked", G_CALLBACK (close_clicked_cb), dialog); dialog->priv->file_chooser = GTK_WIDGET (gtk_builder_get_object (builder, "file-chooser-button")); /* select the first library location, since the default may be * the user's home dir or / or something that will take forever to scan. */ settings = g_settings_new ("org.gnome.rhythmbox.rhythmdb"); locations = g_settings_get_strv (settings, "locations"); if (locations[0] != NULL) { dialog->priv->current_uri = g_strdup (locations[0]); } else { dialog->priv->current_uri = g_filename_to_uri (rb_music_dir (), NULL, NULL); } gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dialog->priv->file_chooser), dialog->priv->current_uri); g_strfreev (locations); g_object_unref (settings); g_signal_connect_object (dialog->priv->file_chooser, "selection-changed", G_CALLBACK (current_folder_changed_cb), dialog, 0); /* not sure why we have to set this, it should be the default */ gtk_widget_set_vexpand (gtk_widget_get_parent (dialog->priv->file_chooser), FALSE); dialog->priv->info_bar_container = GTK_WIDGET (gtk_builder_get_object (builder, "info-bar-container")); /* set up entry view */ dialog->priv->entry_view = rb_entry_view_new (dialog->priv->db, G_OBJECT (dialog->priv->shell_player), TRUE, FALSE); g_signal_connect (dialog->priv->entry_view, "entry-activated", G_CALLBACK (entry_activated_cb), dialog); g_signal_connect (dialog->priv->entry_view, "selection-changed", G_CALLBACK (selection_changed_cb), dialog); rb_entry_view_append_column (dialog->priv->entry_view, RB_ENTRY_VIEW_COL_TRACK_NUMBER, FALSE); rb_entry_view_append_column (dialog->priv->entry_view, RB_ENTRY_VIEW_COL_TITLE, TRUE); rb_entry_view_append_column (dialog->priv->entry_view, RB_ENTRY_VIEW_COL_GENRE, FALSE); rb_entry_view_append_column (dialog->priv->entry_view, RB_ENTRY_VIEW_COL_ARTIST, FALSE); rb_entry_view_append_column (dialog->priv->entry_view, RB_ENTRY_VIEW_COL_ALBUM, FALSE); rb_entry_view_append_column (dialog->priv->entry_view, RB_ENTRY_VIEW_COL_YEAR, FALSE); rb_entry_view_append_column (dialog->priv->entry_view, RB_ENTRY_VIEW_COL_DURATION, FALSE); rb_entry_view_append_column (dialog->priv->entry_view, RB_ENTRY_VIEW_COL_QUALITY, FALSE); rb_entry_view_append_column (dialog->priv->entry_view, RB_ENTRY_VIEW_COL_PLAY_COUNT, FALSE); rb_entry_view_append_column (dialog->priv->entry_view, RB_ENTRY_VIEW_COL_BPM, FALSE); rb_entry_view_append_column (dialog->priv->entry_view, RB_ENTRY_VIEW_COL_COMMENT, FALSE); rb_entry_view_append_column (dialog->priv->entry_view, RB_ENTRY_VIEW_COL_LOCATION, FALSE); settings = g_settings_new ("org.gnome.rhythmbox.sources"); g_settings_bind (settings, "visible-columns", dialog->priv->entry_view, "visible-columns", G_SETTINGS_BIND_DEFAULT); g_object_unref (settings); g_signal_connect (dialog->priv->entry_view, "notify::sort-order", G_CALLBACK (sort_changed_cb), dialog); rb_entry_view_set_sorting_order (dialog->priv->entry_view, "Album", GTK_SORT_ASCENDING); gtk_container_add (GTK_CONTAINER (gtk_builder_get_object (builder, "entry-view-container")), GTK_WIDGET (dialog->priv->entry_view)); dialog->priv->query_model = rhythmdb_query_model_new_empty (dialog->priv->db); rb_entry_view_set_model (dialog->priv->entry_view, dialog->priv->query_model); query = rhythmdb_query_parse (dialog->priv->db, RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TYPE, dialog->priv->entry_type, RHYTHMDB_QUERY_END); rhythmdb_do_full_query_async_parsed (dialog->priv->db, RHYTHMDB_QUERY_RESULTS (dialog->priv->query_model), query); rhythmdb_query_free (query); g_signal_connect (dialog->priv->query_model, "post-entry-delete", G_CALLBACK (entry_deleted_cb), dialog); g_signal_connect (dialog->priv->query_model, "row-inserted", G_CALLBACK (entry_inserted_cb), dialog); gtk_container_add (GTK_CONTAINER (dialog), GTK_WIDGET (gtk_builder_get_object (builder, "import-dialog"))); gtk_widget_show_all (GTK_WIDGET (dialog)); g_object_unref (builder); }