int main (int argc, char **argv) { GMainLoop *loop; RBPodcastSearch *itunes; RBPodcastSearch *miroguide; char *text; g_type_init (); setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); text = argv[1]; if (argv[2] != NULL && strcmp (argv[2], "--debug") == 0) { debug = TRUE; } loop = g_main_loop_new (NULL, FALSE); itunes = RB_PODCAST_SEARCH (g_object_new (rb_podcast_search_itunes_get_type (), NULL)); miroguide = RB_PODCAST_SEARCH (g_object_new (rb_podcast_search_miroguide_get_type (), NULL)); g_signal_connect (itunes, "result", G_CALLBACK (result_cb), NULL); g_signal_connect (miroguide, "result", G_CALLBACK (result_cb), NULL); g_signal_connect (itunes, "finished", G_CALLBACK (finished_cb), loop); g_signal_connect (miroguide, "finished", G_CALLBACK (finished_cb), loop); rb_podcast_search_start (itunes, text, 10); rb_podcast_search_start (miroguide, text, 10); g_main_loop_run (loop); return 0; }
static void search_cb (RBSearchEntry *entry, const char *text, RBPodcastAddDialog *dialog) { GList *searches; GList *s; int i; /* remove previous feeds */ remove_all_feeds (dialog); rhythmdb_entry_delete_by_type (dialog->priv->db, RHYTHMDB_ENTRY_TYPE_PODCAST_SEARCH); rhythmdb_commit (dialog->priv->db); gtk_widget_hide (dialog->priv->info_bar); if (text == NULL || text[0] == '\0') { return; } /* if the entered text looks like a feed URL, parse it directly */ for (i = 0; i < G_N_ELEMENTS (podcast_uri_prefixes); i++) { if (g_str_has_prefix (text, podcast_uri_prefixes[i])) { parse_in_thread (dialog, text, FALSE, TRUE); return; } } /* not really sure about this one */ if (g_path_is_absolute (text)) { parse_in_thread (dialog, text, FALSE, TRUE); return; } /* otherwise, try podcast searches */ dialog->priv->search_successful = FALSE; searches = rb_podcast_manager_get_searches (dialog->priv->podcast_mgr); for (s = searches; s != NULL; s = s->next) { RBPodcastSearch *search = s->data; g_signal_connect_object (search, "result", G_CALLBACK (podcast_search_result_cb), dialog, 0); g_signal_connect_object (search, "finished", G_CALLBACK (podcast_search_finished_cb), dialog, 0); rb_podcast_search_start (search, text, PODCAST_SEARCH_LIMIT); dialog->priv->running_searches++; } }