static void impl_dispose (GObject *object) { RBPodcastMainSource *source; source = RB_PODCAST_MAIN_SOURCE (object); if (source->priv->config_widget != NULL) { g_object_unref (source->priv->config_widget); source->priv->config_widget = NULL; } G_OBJECT_CLASS (rb_podcast_main_source_parent_class)->dispose (object); }
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 void impl_constructed (GObject *object) { RBPodcastMainSource *source; RBPodcastManager *podcast_mgr; GdkPixbuf *pixbuf; gint size; RB_CHAIN_GOBJECT_METHOD (rb_podcast_main_source_parent_class, constructed, object); source = RB_PODCAST_MAIN_SOURCE (object); g_object_get (source, "podcast-manager", &podcast_mgr, NULL); g_signal_connect_object (podcast_mgr, "start_download", G_CALLBACK (start_download_cb), source, 0); g_signal_connect_object (podcast_mgr, "finish_download", G_CALLBACK (finish_download_cb), source, 0); g_signal_connect_object (podcast_mgr, "feed_updates_available", G_CALLBACK (feed_updates_available_cb), source, 0); g_signal_connect_object (podcast_mgr, "process_error", G_CALLBACK (feed_error_cb), source, 0); gtk_icon_size_lookup (RB_SOURCE_ICON_SIZE, &size, NULL); pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), RB_STOCK_PODCAST, size, 0, NULL); if (pixbuf != NULL) { rb_source_set_pixbuf (RB_SOURCE (source), pixbuf); g_object_unref (pixbuf); } }
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; }