static int on_venue_item_selected(SsdWidget widget, const char* selection,const void *value, void* context)
{
   int index = (int)value;
#ifdef IPHONE_NATIVE
   index -= 10;
#endif //IPHONE_NATIVE

   gsRequestType = ROADMAP_FOURSQUARE_CHECKIN;

   roadmap_main_set_periodic(FOURSQUARE_REQUEST_TIMEOUT, request_time_out);
#ifdef IPHONE
   delayed_show_progress();
#else
   roadmap_main_set_periodic(100, delayed_show_progress);
#endif //IPHONE

   create_address (&gsVenuesList[index], &gsCheckInInfo);

   ssd_dialog_hide_all(dec_close);

   Realtime_FoursquareCheckin(gsVenuesList[index].sId,
         roadmap_foursquare_is_tweet_badge_enabled() && roadmap_twitter_logged_in());

   return 1;
}
void editor_track_toggle_new_roads (void) {
   if ( Realtime_is_random_user() ){
      roadmap_messagebox ("Error", "Sorry, only registered users can record new roads. Go to Settings > Profile to register.");
      return;
   }

   if (EditorAllowNewRoads) EditorAllowNewRoads = 0;
   else EditorAllowNewRoads = 1;
   
   ssd_dialog_hide_all(dec_close);
   
   
   if (EditorAllowNewRoads) {
       editor_track_set_fuzzy ();
       roadmap_messagebox ("New roads", "New Road Recording is ON. Please turn it off once you've finished recording a new road.");
   } else {
      if (editor_line_get_count () > 0)
         roadmap_messagebox ("New roads", "Road successfully recorded.  A link to edit it will be sent to your email and to you Dashboard on www.waze.com. (May take 24 hrs.)");
      else
         roadmap_messagebox ("New roads", "New Road Recording is now OFF");
      
       roadmap_fuzzy_reset_cycle ();
   }
   
   if (NumUpdateToggles == MAX_UPDATE_TOGGLES) {
   	
   	NumUpdateToggles--;
   	memmove (UpdateToggleTimes, UpdateToggleTimes + 1, NumUpdateToggles * sizeof (UpdateToggleTimes[0]));	
   }
   UpdateToggleTimes[NumUpdateToggles++] = LastGpsUpdate;
   
   roadmap_screen_redraw ();
}
Beispiel #3
0
static int callGlobalCallback (SsdWidget widget, const char *new_value, void *context) {
	ssd_dialog_hide_all(dec_close);
	if (gCallback)
	   (*gCallback)();

	return 1;
}
static int roadmap_address_show (const char *city,
                                 const char *street_name,
                                 const char *street_number_image,
                                 RoadMapAddressDialog *context) {

   int i;
   int count;

   RoadMapGeocode *selections;

   char *state;
   const char *argv[4];

   address_info   ai;

   ai.state = NULL;
   ai.country = NULL;

   ai.city = city;
   ai.street = street_name;

   ai.house = street_number_image;

   state         = "IL";

   if (context->use_zip) {
      return 0; /* TBD: how to select by ZIP ? Need one more table in usdir. */
   }
   ssd_dialog_hide_all(dec_close);
   count = roadmap_geocode_address (&selections,
                                    street_number_image,
                                    street_name,
                                    city,
                                    state);
   if (count <= 0) {
      roadmap_messagebox (roadmap_lang_get ("Warning"),
                          roadmap_geocode_last_error_string());
      free (selections);
      return 0;
   }

   argv[0] = street_number_image;
   argv[1] = street_name;
   argv[2] = city;
   argv[3] = state;

   roadmap_history_add ('A', argv);
   roadmap_history_save();

   roadmap_address_done (selections, context, &ai);

   for (i = 0; i < count; ++i) {
      free (selections[i].name);
      selections[i].name = NULL;
   }

   free (selections);

   return 1;
}
Beispiel #5
0
static void on_option_selected( BOOL made_selection,
         ssd_cm_item_ptr item,
         void* context)
{

   privacy_context_menu_items selection;

   int exit_code = dec_ok;
   g_context_menu_is_active = FALSE;

   if( !made_selection)
   return;

   selection = item->id;
   switch( selection)
   {

      case privacy_cm_save:
      save_changes();
      ssd_dialog_hide_current(dec_close);
      break;

      case privacy_cm_exit:
      exit_code = dec_cancel;
      ssd_dialog_hide_all( exit_code);
      roadmap_screen_refresh ();
      break;

      default:
      break;
   }
}
Beispiel #6
0
static int map_scheme_callback (SsdWidget widget, const char *new_value, const void *value, void *context) {

    roadmap_analytics_log_event(ANALYTICS_EVENT_MAPSCHEME, ANALYTICS_EVENT_INFO_CHANGED_TO, value);
    roadmap_skin_set_scheme((const char *)value);
    ssd_dialog_hide_all(dec_close);
    return 1;
}
Beispiel #7
0
static void on_option_selected(  BOOL              made_selection,
                                 ssd_cm_item_ptr   item,
                                 void*             context)
{
   contextmenu_items selection = cm__invalid;
   BOOL              close     = FALSE;
   BOOL              do_nav    = FALSE;

   s_menu = FALSE;

   if( !made_selection)
      return;

   selection = item->id;

   switch( selection)
   {
      case cm_navigate:
         do_nav = TRUE;
         // Roll down...
      case cm_show:
         close = navigate( do_nav);
         break;

      case cm_add_to_favorites:
      {
         int                        selected_list_item   = get_selected_list_item();
         const address_candidate*   selection            = generic_search_result( selected_list_item);
         RoadMapPosition position;
         position.latitude = (int)(selection->latitude*1000000);
         position.longitude= (int)(selection->longtitude*1000000);
         generic_search_add_address_to_history( ADDRESS_FAVORITE_CATEGORY,
                                                selection->city,
                                                selection->street,
                                                get_house_number__str( selection->house),
                                                selection->state,
                                                selection->name,
                                                &position);
         break;
      }

      case cm_cancel:
         close = FALSE;
         break;

      default:
         assert(0);
         break;
   }

   if( close)
   {
      ssd_dialog_hide_all( dec_close);

      if (!roadmap_screen_refresh ())
           roadmap_screen_redraw();
   }
}
Beispiel #8
0
static int end_button_callback (SsdWidget widget, const char *new_value) {

   set_first_time_no();
   ssd_dialog_hide_all (dec_ok);

   roadmap_analytics_log_event (ANALYTICS_EVENT_NEW_USER_SIGNUP, ANALYTICS_EVENT_INFO_ACTION, "End");
   roadmap_welcome_guided_tour_start();

   return 1;
}
Beispiel #9
0
void RealtimeAltRoutes_OnTripRouteRC (NavigateRouteRC rc, int protocol_rc, const char *description){
   if ((protocol_rc != 200) || (rc != route_succeeded)){
      roadmap_log (ROADMAP_ERROR,"RealtimeAltRoutes_OnTripRouteRC - %s (rc=%d)", description, rc);
      if (roadmap_alternative_routes_suggest_dlg_active()){
         ssd_dialog_hide_all(dec_close);
         if (!roadmap_screen_refresh())
           roadmap_screen_redraw();
         roadmap_messagebox_timeout("Oops", description, 5);
      }
   }
}
Beispiel #10
0
static int reminder_add_dlg_buttons_callback (SsdWidget widget, const char *new_value) {
   SsdWidget container = widget->parent;
   const char *argv[reminder_hi__count];
   char  temp[15];
   if (!strcmp(widget->name, "Save")){
      const char *title_txt = ssd_widget_get_value(ssd_widget_get(container, "TitleEntry"),"TitleEntry");
      const char *description = ssd_widget_get_value(ssd_widget_get(container, "DescriptionEntry"),"DescriptionEntry");
      const char *distance = (const char *)ssd_dialog_get_data("distance");
      const char *repeat = (const char *)ssd_dialog_get_data("repeat");
      const char *add_reminder         = ssd_dialog_get_data("add_reminder");

      ssd_dialog_hide_all(dec_close);

      argv[reminder_hi_house_number] = strdup(gContext.properties.address);
      argv[reminder_hi_street] = strdup(gContext.properties.street);
      argv[reminder_hi_city] = strdup(gContext.properties.city);
      argv[reminder_state] = ""; //state
      sprintf(temp, "%d", gContext.position.latitude);
      argv[reminder_hi_latitude] = strdup(temp);
      sprintf(temp, "%d", gContext.position.longitude);
      argv[reminder_hi_longtitude] = strdup(temp);
      argv[reminder_hi_title] = strdup(title_txt);
      if (add_reminder && !strcmp( add_reminder, "yes" )){
         argv[reminder_hi_add_reminder] = "1";
         argv[reminder_hi_distance] = strdup(distance);
         argv[reminder_hi_description] = strdup(description);
         argv[reminder_hi_repeat] = strdup(repeat);
      }
      else{
         argv[reminder_hi_add_reminder] = "0";
         argv[reminder_hi_distance] = strdup("");
         argv[reminder_hi_description] = strdup("");
         argv[reminder_hi_repeat] = strdup("");
      }
      roadmap_reminder_add_entry (argv, add_reminder && !strcmp( add_reminder, "yes" ));

      free((void *)argv[reminder_hi_house_number]);
      free((void *)argv[reminder_hi_street]);
      free((void *)argv[reminder_hi_city]);
      free((void *)argv[reminder_hi_latitude]);
      free((void *)argv[reminder_hi_longtitude]);
      free((void *)argv[reminder_hi_distance]);
      free((void *)argv[reminder_hi_description]);
      free((void *)argv[reminder_hi_repeat]);
   }
   else{
      ssd_dialog_hide_current(dec_close);
   }

   return 1;
}
Beispiel #11
0
static void left_softkey_callback(void){
   SsdDialog   current  = RoadMapDialogCurrent;

   if (current == NULL)
      return;

     if (current->scroll_container && current->scroll_container->left_softkey_callback)
       (*current->scroll_container->left_softkey_callback)(current->scroll_container, "", current->context);
     else if (current->container->left_softkey_callback)
      (*current->container->left_softkey_callback)(current->container, "", current->context);
    else
         ssd_dialog_hide_all(dec_cancel);

}
static int on_checkin_ok_btn(SsdWidget widget, const char *new_value) {
   ssd_dialog_hide_all(dec_close);
   return 1;
}
Beispiel #13
0
static void on_auto_search_completed( int exit_code, void* context)
{ ssd_dialog_hide_all( dec_close);}
Beispiel #14
0
static void on_search(void)
{
   SsdWidget      list_cont;
   SsdWidget      edit;
   const char*    text;
   roadmap_result rc;
   const char*		dl_prefix = roadmap_lang_get ("map:");
   SsdWidget dlg = generic_search_dlg_get_search_dlg(search_address);

   edit = generic_search_dlg_get_search_edit_box(search_address);
   if ( !strcmp( DEBUG_LEVEL_SET_PATTERN, ssd_text_get_text( edit ) ) )
   {
      roadmap_start_reset_debug_mode();
      return;
   }

   if ( !strcmp( "##@coord", ssd_text_get_text( edit ) ) )
   {
      roadmap_gps_reset_show_coordinates();
      return;
   }

   if ( !strcmp( "##@il", ssd_text_get_text( edit ) ) )
   {
      roadmap_geo_config_il(NULL);
      return;
   }
   if ( !strcmp( "##@usa", ssd_text_get_text( edit ) ) )
   {
      roadmap_geo_config_usa(NULL);
      return;
   }
   if ( !strcmp( "##@other", ssd_text_get_text( edit ) ) )
   {
      roadmap_geo_config_other(NULL);
      return;
   }
   if ( !strcmp( "##@stg", ssd_text_get_text( edit ) ) )
   {
      roadmap_geo_config_stg(NULL);
      return;
   }


    if ( !strcmp( "##@heb", ssd_text_get_text( edit ) ) )
   {
      roadmap_lang_set_system_lang("heb", TRUE);
      roadmap_messagebox("", "Language changed to Hebrew, please restart waze");
      return;
   }

   if ( !strcmp( "##@eng", ssd_text_get_text( edit ) ) )
   {
      roadmap_lang_set_system_lang("eng", TRUE);
      roadmap_messagebox("","Language changed to English, please restart waze");
      return;
   }
   if ( !strcmp( "cc@tts", ssd_text_get_text( edit ) ) )
   {
      tts_clear_cache();
      roadmap_messagebox("","TTS cache has been cleared!");
      return;
   }
   if ( !strcmp( "##@tts", ssd_text_get_text( edit ) ) )
   {
      tts_set_feature_enabled( !tts_feature_enabled() );
      if ( tts_feature_enabled() )
      {
         roadmap_messagebox("","TTS Feature is enabled!\nPlease restart WAZE.");
      }
      else
      {
         roadmap_messagebox("","TTS Feature is disabled!");

      }
      navigate_main_override_nav_settings();
      return;
   }
   if ( !strcmp( "dbg@tts", ssd_text_get_text( edit ) ) )
   {
      if ( !strcmp( tts_was_provider_voices_set(), TTS_WAS_VOICES_SET_PRODUCTION ) )
      {
         tts_was_provider_apply_voices_set( TTS_WAS_VOICES_SET_DEBUG );
         roadmap_messagebox("","TTS Feature is running in debug mode!\nPlease restart WAZE.");
      }
      else
      {
         tts_was_provider_apply_voices_set( TTS_WAS_VOICES_SET_PRODUCTION );
         roadmap_messagebox("","TTS Feature is running in production mode!\nPlease restart WAZE.");
      }
      return;
   }

   if ( !strncmp( dl_prefix, ssd_text_get_text( edit ), strlen( dl_prefix ) ) )
   {
   	roadmap_map_download_region( ssd_text_get_text( edit ) + strlen( dl_prefix ),
   										  roadmap_locator_static_county() );
      ssd_dialog_hide_all( dec_close);

      if (!roadmap_screen_refresh ())
           roadmap_screen_redraw();
   	return;
   }

   s_searching = TRUE;

   roadmap_main_set_periodic( 100, search_progress_message_delayed );

   text     = ssd_text_get_text( edit );
   list_cont=  dlg->context;

   rc = address_search_resolve_address( list_cont, on_address_resolved, text );
   if( succeeded == rc)
   {
      roadmap_main_set_cursor( ROADMAP_CURSOR_WAIT);
      roadmap_log(ROADMAP_DEBUG,
                  "address_search_dlg::on_search() - Started Web-Service transaction: Resolve address");
   }
   else
   {
      const char* err = roadmap_result_string( rc);
      s_searching = FALSE;
      roadmap_log(ROADMAP_ERROR,
                  "address_search_dlg::on_search() - Resolve process transaction failed to start");
      /* Close the progress message */
      ssd_progress_msg_dialog_hide();
      roadmap_messagebox_cb ( roadmap_lang_get( "Resolve Address"),
                           roadmap_lang_get( err ), on_search_error_message );
   }
}
Beispiel #15
0
static void on_address_resolved( void*                context,
                                 address_candidate*   array,
                                 int                  size,
                                 roadmap_result       rc)
{
   static   const char* results[ADSR_MAX_RESULTS+1];
   static   void*       indexes[ADSR_MAX_RESULTS+1];
   static   const char* icons[ADSR_MAX_RESULTS+1];

   SsdWidget list_cont = (SsdWidget)context;
   SsdWidget list;
   int       i;

   s_searching = FALSE;

   /* Close the progress message */
   ssd_progress_msg_dialog_hide();

   roadmap_main_set_cursor( ROADMAP_CURSOR_NORMAL);

   assert(list_cont);

   list = ssd_widget_get( list_cont, ASD_RC_LIST_NAME);

   if( succeeded != rc)
   {
      if( is_network_error( rc))
         roadmap_messagebox_cb ( roadmap_lang_get( "Oops"),
                              roadmap_lang_get( "Search requires internet connection.\r\nPlease make sure you are connected."), on_search_error_message );



      else if( err_as_could_not_find_matches == rc)
         roadmap_messagebox_cb ( roadmap_lang_get( "Oops"),
                              roadmap_lang_get( "Sorry, no results were found for this search"), on_search_error_message );
      else
      {
         char msg[128];

         snprintf( msg, sizeof(msg), "%s\n%s",roadmap_lang_get("Sorry we were unable to complete the search"), roadmap_lang_get("Please try again later"));

         roadmap_messagebox_cb ( roadmap_lang_get( "Oops"), msg, on_search_error_message );
      }

      roadmap_log(ROADMAP_ERROR,
                  "address_search_dlg::on_address_resolved() - Resolve process failed with error '%s' (%d)",
                  roadmap_result_string( rc), rc);
      return;
   }

   if( !size)
   {
      roadmap_log(ROADMAP_DEBUG,
                  "address_search_dlg::on_address_resolved() - NO RESULTS for the address-resolve process");
      return;
   }

   assert( size <= ADSR_MAX_RESULTS);
   
   if (size == 1 && s_auto_start_nav) {
      s_auto_start_nav = FALSE;
      generic_search_dlg_switch_gui();
      ssd_dialog_hide_all( dec_close);
      navigate(1);
      return;
   }

   for( i=0; i<size; i++)
   {
      results[i] = array[i].address;
      indexes[i] = (void*)i;
      icons[i] = "search_address";
   }

   results[i] = roadmap_lang_get(COULDNT_FIND_ADDRESS_TEXT);
   indexes[i] = (void*)COULDNT_FIND_INDEX;
   icons[i] = "submit_logs";

   if ( roadmap_native_keyboard_enabled() )
   {
	   roadmap_native_keyboard_hide();
   }
   ssd_list_populate(list,
                     size+1,
                     results,
                     (const void **)indexes,
                     icons,
                     0,
                     on_list_item_selected,
                     NULL,
                     FALSE);


   generic_search_dlg_switch_gui();
}
Beispiel #16
0
static BOOL OnKeyPressed( const char* utf8char, uint32_t flags) {
   BOOL        key_handled = TRUE;
   SsdWidget   in_focus    = NULL;

   if( !RoadMapDialogCurrent)
      return FALSE;

   // Let the control handle the key:
   in_focus = RoadMapDialogCurrent->in_focus;
   if( in_focus && ssd_widget_on_key_pressed (in_focus, utf8char, flags)) {
      roadmap_screen_redraw();
      return TRUE;
   }

   // The control did not handle the key...
   //    Supply general handling for virtual keys:
   if( KEYBOARD_VIRTUAL_KEY & flags)
   {
      SsdWidget container = RoadMapDialogCurrent->container;
      switch( *utf8char) {
         case VK_Back:
            ssd_dialog_hide_current(dec_cancel);
            break;

         case VK_Arrow_left:
            if( SSD_TAB_CONTROL & RoadMapDialogCurrent->container->flags)
               if (RoadMapDialogCurrent->scroll_container)
                  ssd_tabcontrol_move_tab_left( RoadMapDialogCurrent->scroll_container);
               else
                  ssd_tabcontrol_move_tab_left( RoadMapDialogCurrent->container);
            else
               ssd_dialog_move_focus(FOCUS_LEFT);
            break;

         case VK_Arrow_up:
            ssd_dialog_move_focus(FOCUS_UP);
            break;

         case VK_Arrow_right:
            if( SSD_TAB_CONTROL & RoadMapDialogCurrent->container->flags)
               if (RoadMapDialogCurrent->scroll_container)
                  ssd_tabcontrol_move_tab_right( RoadMapDialogCurrent->scroll_container);
               else
                  ssd_tabcontrol_move_tab_right( RoadMapDialogCurrent->container);
            else
               ssd_dialog_move_focus( FOCUS_RIGHT);
            break;

         case VK_Arrow_down:
            ssd_dialog_move_focus(FOCUS_DOWN);
            break;

         case VK_Softkey_right:
            if (RoadMapDialogCurrent->scroll_container && (RoadMapDialogCurrent->scroll_container->right_softkey_callback != NULL))
                     RoadMapDialogCurrent->scroll_container->right_softkey_callback(RoadMapDialogCurrent->scroll_container, RoadMapDialogCurrent->scroll_container->name, RoadMapDialogCurrent->scroll_container->context);
            else if (container->right_softkey_callback != NULL)
               container->right_softkey_callback(container, container->name, container->context);
            else
#ifdef TOUCH_SCREEN
               ssd_dialog_hide_current( dec_ok );
#else
               ssd_dialog_hide_current( dec_cancel );
#endif
            break;

         case VK_Softkey_left:
            if (RoadMapDialogCurrent->scroll_container && (RoadMapDialogCurrent->scroll_container->left_softkey_callback != NULL))
                     RoadMapDialogCurrent->scroll_container->left_softkey_callback(RoadMapDialogCurrent->scroll_container, RoadMapDialogCurrent->scroll_container->name, RoadMapDialogCurrent->scroll_container->context);
            else if (container->left_softkey_callback != NULL)
               container->left_softkey_callback(container, container->name, container->context);
            else
               ssd_dialog_hide_all(dec_cancel);
            break;

         default:
            key_handled = FALSE;
      }

   }
   else
   {
      assert(utf8char);
      assert(*utf8char);

      // Other special keys:
      if( KEYBOARD_ASCII & flags)
      {
         switch(*utf8char)
         {
            case ESCAPE_KEY:
               ssd_dialog_hide_current(dec_cancel);
               break;

            case TAB_KEY:
               ssd_dialog_move_focus(FOCUS_FORWARD);
               break;

            default:
               key_handled = FALSE;
         }
      }
   }

   if( key_handled)
      roadmap_screen_redraw ();

   return key_handled;
}
Beispiel #17
0
static int on_skip_welcome(SsdWidget widget, const char *new_value, void *context){
   set_first_time_no();
   ssd_dialog_hide_all(dec_close);
   return 0;
}
Beispiel #18
0
static int map_scheme_callback (SsdWidget widget, const char *new_value, const void *value, void *context) {

   roadmap_skin_set_scheme((const char *)value);
   ssd_dialog_hide_all(dec_close);
   return 1;
}
void ssd_generic_list_dialog_hide_all (void)
{ ssd_dialog_hide_all (dec_close);}
static void on_search(void)
{
   SsdWidget      list_cont;
   SsdWidget      edit;
   const char*    text;
   roadmap_result rc;
   const char*		dl_prefix = roadmap_lang_get ("map:");
   SsdWidget dlg = generic_search_dlg_get_search_dlg(search_address);

   edit = generic_search_dlg_get_search_edit_box(search_address);
   if ( !strcmp( DEBUG_LEVEL_SET_PATTERN, ssd_text_get_text( edit ) ) )
   {
      roadmap_start_reset_debug_mode();
      return;
   }
   if ( !strcmp( "##@il", ssd_text_get_text( edit ) ) )
   {
      roadmap_geo_config_il(NULL);
      return;
   }
   if ( !strcmp( "##@usa", ssd_text_get_text( edit ) ) )
   {
      roadmap_geo_config_usa(NULL);
      return;
   }
   
    if ( !strcmp( "##@heb", ssd_text_get_text( edit ) ) )
   {
      roadmap_lang_set_system_lang("heb");
      roadmap_messagebox("", "changed to hebrew, please restart wase");
      return;
   }
  
   if ( !strcmp( "##@eng", ssd_text_get_text( edit ) ) )
   {
         roadmap_messagebox("","changed to english, please restart wase");
      roadmap_lang_set_system_lang("eng");
      return;
   }
   
   if ( !strncmp( dl_prefix, ssd_text_get_text( edit ), strlen( dl_prefix ) ) )
   {
   	roadmap_map_download_region( ssd_text_get_text( edit ) + strlen( dl_prefix ),
   										  roadmap_locator_static_county() );
      ssd_dialog_hide_all( dec_close);

      if (!roadmap_screen_refresh ())
           roadmap_screen_redraw();
   	return;
   }

   s_searching = TRUE;

   roadmap_main_set_periodic( 100, search_progress_message_delayed );

   text     = ssd_text_get_text( edit );
   list_cont=  dlg->context;

   rc = address_search_resolve_address( list_cont, on_address_resolved, text );
   if( succeeded == rc)
   {
      roadmap_main_set_cursor( ROADMAP_CURSOR_WAIT);
      roadmap_log(ROADMAP_DEBUG,
                  "address_search_dlg::on_search() - Started Web-Service transaction: Resolve address");
   }
   else
   {
      const char* err = roadmap_result_string( rc);
      s_searching = FALSE;
      roadmap_log(ROADMAP_ERROR,
                  "address_search_dlg::on_search() - Resolve process transaction failed to start");
      /* Close the progress message */
      ssd_progress_msg_dialog_hide();
      roadmap_messagebox_cb ( roadmap_lang_get( "Resolve Address"),
                           roadmap_lang_get( err ), on_search_error_message );
   }
}
static const char* parse_search_results(roadmap_result* rc, int NumParams, const char*  pData) {
   //Expected data:
   // VenueList,<id>,<name>,<address>,<crossstreet>,<city>,<state>,<zip>,<geolat>,<geolong>,<phone>,<distance>[,<id>,.....]

   FoursquareVenue   venue;
   int i;
   char CommandName[128];
   int iBufferSize;
   double dValue;
   int count;

   iBufferSize =  128;

   if (NumParams == 0)
      return pData;

   if ((NumParams - 1) % ROADMAP_FOURSQUARE_VENUE_ENTRIES != 0) {
      (*rc) = err_parser_unexpected_data;
      return NULL;
   }

   pData       = ExtractNetworkString(
                       pData,             // [in]     Source string
                       CommandName,//   [out]   Output buffer
                       &iBufferSize,      // [in,out] Buffer size / Size of extracted string
                       ",\r\n",          //   [in]   Array of chars to terminate the copy operation
                       1);   // [in]     Remove additional termination chars

   if (strcmp(CommandName, "VenueList") != 0) {
      roadmap_log(ROADMAP_ERROR, "Foursquare - parse_search_results(): could not find command: VenueList (received: '%s')", CommandName);
      (*rc) = err_parser_unexpected_data;
      return NULL;
   }

   count = (NumParams - 1) / ROADMAP_FOURSQUARE_VENUE_ENTRIES;

   if (!(*pData) || count == 0) {
      roadmap_log(ROADMAP_DEBUG, "Foursquare - received empty venues list");
      ssd_dialog_hide_all(dec_close);
#ifdef IPHONE_NATIVE
      roadmap_main_show_root(1);
#endif //IPHONE_NATIVE
      roadmap_messagebox_timeout("Foursquare", "We can't find anything nearby.", 5);
      return pData;
   }

   for (i = 0; i < count; ++i){
      //   1.   id
      iBufferSize = ROADMAP_FOURSQUARE_ID_MAX_SIZE;
      pData       = ExtractNetworkString(
                     pData,               // [in]     Source string
                     venue.sId,           // [out,opt]Output buffer
                     &iBufferSize,        // [in,out] Buffer size / Size of extracted string
                     ",",                 // [in]     Array of chars to terminate the copy operation
                     1);                  // [in]     Remove additional termination chars

      if( !pData || !(*pData))
      {
         roadmap_log( ROADMAP_ERROR, "Foursquare - parse_search_results(): Failed to read venue id=%s", venue.sId);
         (*rc) = err_parser_unexpected_data;
         return NULL;
      }

      //   2.   name
      iBufferSize = ROADMAP_FOURSQUARE_NAME_MAX_SIZE;
      pData       = ExtractNetworkString(
                     pData,               // [in]     Source string
                     venue.sName,         // [out,opt]Output buffer
                     &iBufferSize,        // [in,out] Buffer size / Size of extracted string
                     ",",                 // [in]     Array of chars to terminate the copy operation
                     1);                  // [in]     Remove additional termination chars

      if( !pData || !(*pData))
      {
         roadmap_log( ROADMAP_ERROR, "Foursquare - parse_search_results(): Failed to read venue name=%s", venue.sName);
         (*rc) = err_parser_unexpected_data;
         return NULL;
      }

      //   3.   address
      iBufferSize = ROADMAP_FOURSQUARE_ADDRESS_MAX_SIZE;
      pData       = ExtractNetworkString(
                     pData,               // [in]     Source string
                     venue.sAddress,      // [out,opt]Output buffer
                     &iBufferSize,        // [in,out] Buffer size / Size of extracted string
                     ",",                 // [in]     Array of chars to terminate the copy operation
                     1);                  // [in]     Remove additional termination chars

      if( !pData || !(*pData))
      {
         roadmap_log( ROADMAP_ERROR, "Foursquare - parse_search_results(): Failed to read venue address=%s", venue.sAddress);
         (*rc) = err_parser_unexpected_data;
         return NULL;
      }

      //   4.   crossstreet
      iBufferSize = ROADMAP_FOURSQUARE_CROSS_STREET_MAX_SIZE;
      pData       = ExtractNetworkString(
                     pData,               // [in]     Source string
                     venue.sCrossStreet,  // [out,opt]Output buffer
                     &iBufferSize,        // [in,out] Buffer size / Size of extracted string
                     ",",                 // [in]     Array of chars to terminate the copy operation
                     1);                  // [in]     Remove additional termination chars

      if( !pData || !(*pData))
      {
         roadmap_log( ROADMAP_ERROR, "Foursquare - parse_search_results(): Failed to read venue crossname=%s", venue.sCrossStreet);
         (*rc) = err_parser_unexpected_data;
         return NULL;
      }

      //   5.   city
      iBufferSize = ROADMAP_FOURSQUARE_CITY_MAX_SIZE;
      pData       = ExtractNetworkString(
                     pData,               // [in]     Source string
                     venue.sCity,         // [out,opt]Output buffer
                     &iBufferSize,        // [in,out] Buffer size / Size of extracted string
                     ",",                 // [in]     Array of chars to terminate the copy operation
                     1);                  // [in]     Remove additional termination chars

      if( !pData || !(*pData))
      {
         roadmap_log( ROADMAP_ERROR, "Foursquare - parse_search_results(): Failed to read venue city=%s", venue.sCity);
         (*rc) = err_parser_unexpected_data;
         return NULL;
      }

      //   6.   state
      iBufferSize = ROADMAP_FOURSQUARE_STATE_MAX_SIZE;
      pData       = ExtractNetworkString(
                     pData,               // [in]     Source string
                     venue.sState,        // [out,opt]Output buffer
                     &iBufferSize,        // [in,out] Buffer size / Size of extracted string
                     ",",                 // [in]     Array of chars to terminate the copy operation
                     1);                  // [in]     Remove additional termination chars

      if( !pData || !(*pData))
      {
         roadmap_log( ROADMAP_ERROR, "Foursquare - parse_search_results(): Failed to read venue state=%s", venue.sState);
         (*rc) = err_parser_unexpected_data;
         return NULL;
      }

      //   7.   zip
      iBufferSize = ROADMAP_FOURSQUARE_ZIP_MAX_SIZE;
      pData       = ExtractNetworkString(
                     pData,               // [in]     Source string
                     venue.sZip,          // [out,opt]Output buffer
                     &iBufferSize,        // [in,out] Buffer size / Size of extracted string
                     ",",                 // [in]     Array of chars to terminate the copy operation
                     1);                  // [in]     Remove additional termination chars

      if( !pData || !(*pData))
      {
         roadmap_log( ROADMAP_ERROR, "Foursquare - parse_search_results(): Failed to read venue zip=%s", venue.sZip);
         (*rc) = err_parser_unexpected_data;
         return NULL;
      }

      //   8.   lat
      pData = ReadDoubleFromString(
                           pData,         //   [in]      Source string
                           ",",           //   [in,opt]  Value termination
                           NULL,          //   [in,opt]  Allowed padding
                           &dValue,       //   [out]     Output value
                           1);            //   [in]      TRIM_ALL_CHARS, DO_NOT_TRIM, or 'n'

      venue.iLatitude = (int) (dValue * 1000000);
      if( !pData || !(*pData))
      {
         roadmap_log( ROADMAP_ERROR, "Foursquare - parse_search_results(): Failed to read venue lat=%d", venue.iLatitude);
         (*rc) = err_parser_unexpected_data;
         return NULL;
      }

      //   9.   lon
      pData = ReadDoubleFromString(
                           pData,         //   [in]      Source string
                           ",",           //   [in,opt]  Value termination
                           NULL,          //   [in,opt]  Allowed padding
                           &dValue,       //   [out]     Output value
                           1);            //   [in]      TRIM_ALL_CHARS, DO_NOT_TRIM, or 'n'

      venue.iLongitude = (int) (dValue * 1000000);
      if( !pData || !(*pData))
      {
         roadmap_log( ROADMAP_ERROR, "Foursquare - parse_search_results(): Failed to read venue lon=%d", venue.iLongitude);
         (*rc) = err_parser_unexpected_data;
         return NULL;
      }

      //   10.   phone
      iBufferSize = ROADMAP_FOURSQUARE_PHONE_MAX_SIZE;
      pData       = ExtractNetworkString(
                     pData,               // [in]     Source string
                     venue.sPhone,        // [out,opt]Output buffer
                     &iBufferSize,        // [in,out] Buffer size / Size of extracted string
                     ",",                 // [in]     Array of chars to terminate the copy operation
                     1);                  // [in]     Remove additional termination chars

      if( !pData || !(*pData))
      {
         roadmap_log( ROADMAP_ERROR, "Foursquare - parse_search_results(): Failed to read venue phone=%s", venue.sPhone);
         (*rc) = err_parser_unexpected_data;
         return NULL;
      }

      //   11.   distance
      pData = ReadIntFromString(
                     pData,            //   [in]      Source string
                     ",\r\n",              //   [in,opt]   Value termination
                     NULL,             //   [in,opt]   Allowed padding
                     &venue.iDistance,    //   [out]      Put it here
                     1);               //   [in]      Remove additional termination CHARS

      if( !pData || (!(*pData) && i < count-1))
      {
         roadmap_log( ROADMAP_ERROR, "Foursquare - parse_search_results(): Failed to read venue distance=%d", venue.iDistance);
         (*rc) = err_parser_unexpected_data;
         return NULL;
      }


      if (gsVenuesCount < ROADMAP_FOURSQUARE_MAX_VENUE_COUNT) { //skip if more venues received
         create_description (&venue);
         gsVenuesList[gsVenuesCount++] = venue;
      }
   }

   roadmap_main_set_periodic(100,roadmap_foursquare_venues_list);

   return pData;
}
Beispiel #22
0
static int on_softkey_finish(SsdWidget widget, const char *new_value, void *context){
   set_first_time_no();
   ssd_dialog_hide_all (dec_ok);
   roadmap_welcome_guided_tour();
   return 0;
}