summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Withnall <withnall@endlessm.com>2017-02-03 16:33:55 +0000
committerPhilip Withnall <withnall@endlessm.com>2017-02-09 09:32:01 +0000
commit399d8d40af5546f0eff6416d3573934a251ce233 (patch)
tree0587b472cf9a065a38cfba0a43df97d398898619
parente1f91be003d2e3a297181b86ae098d492907e2a5 (diff)
downloadlibgdata-399d8d40af5546f0eff6416d3573934a251ce233.tar.gz
demos: Add event pagination support to calendar-cli demo
Otherwise it will only show the first few entries from a calendar.
-rw-r--r--demos/calendar/calendar-cli.c58
1 files changed, 37 insertions, 21 deletions
diff --git a/demos/calendar/calendar-cli.c b/demos/calendar/calendar-cli.c
index 25a060bc..a1d84f67 100644
--- a/demos/calendar/calendar-cli.c
+++ b/demos/calendar/calendar-cli.c
@@ -319,12 +319,11 @@ command_events (int argc, char *argv[])
GDataCalendarService *service = NULL;
GDataCalendarCalendar *calendar = NULL;
GDataCalendarQuery *query = NULL;
- GDataFeed *feed = NULL;
- GList/*<unowned GDataCalendarEvent>*/ *entries;
GError *error = NULL;
gint retval = 0;
const gchar *query_string, *calendar_id;
GDataAuthorizer *authorizer = NULL;
+ guint n_results;
if (argc < 3) {
return print_usage (argv);
@@ -351,33 +350,50 @@ command_events (int argc, char *argv[])
service = gdata_calendar_service_new (authorizer);
query = gdata_calendar_query_new (query_string);
+ gdata_query_set_max_results (GDATA_QUERY (query), 10);
calendar = gdata_calendar_calendar_new (calendar_id);
- feed = gdata_calendar_service_query_events (service, calendar,
- GDATA_QUERY (query), NULL,
- NULL, NULL, &error);
+ n_results = 0;
+
+ while (TRUE) {
+ GList/*<unowned GDataCalendarEvent>*/ *entries, *l;
+ GDataFeed *feed = NULL;
+
+ feed = gdata_calendar_service_query_events (service, calendar,
+ GDATA_QUERY (query), NULL,
+ NULL, NULL, &error);
+
+ if (error != NULL) {
+ g_printerr ("%s: Error querying events: %s\n",
+ argv[0], error->message);
+ g_error_free (error);
+ retval = 1;
+ goto done;
+ }
- if (error != NULL) {
- g_printerr ("%s: Error querying events: %s\n",
- argv[0], error->message);
- g_error_free (error);
- retval = 1;
- goto done;
- }
+ /* Print results. */
+ entries = gdata_feed_get_entries (feed);
- /* Print results. */
- for (entries = gdata_feed_get_entries (feed); entries != NULL;
- entries = entries->next) {
- GDataCalendarEvent *event;
+ if (entries == NULL) {
+ retval = 0;
+ g_object_unref (feed);
+ goto done;
+ }
- event = GDATA_CALENDAR_EVENT (entries->data);
- print_event (event);
+ for (l = entries; l != NULL; l = l->next) {
+ GDataCalendarEvent *event;
+
+ event = GDATA_CALENDAR_EVENT (l->data);
+ print_event (event);
+ n_results++;
+ }
+
+ gdata_query_next_page (GDATA_QUERY (query));
+ g_object_unref (feed);
}
- g_print ("Total of %u results.\n",
- g_list_length (gdata_feed_get_entries (feed)));
+ g_print ("Total of %u results.\n", n_results);
done:
- g_clear_object (&feed);
g_clear_object (&query);
g_clear_object (&authorizer);
g_clear_object (&calendar);