void ssd_generic_icon_list_dialog_show( const char* title, int count, const char** labels, const void** values, const char** icons, const int* flags, PFN_ON_ITEM_SELECTED on_item_selected, PFN_ON_ITEM_SELECTED on_item_deleted, void* context, const char* left_softkey_text, SsdSoftKeyCallback left_softkey_callback, int list_height, int dialog_flags, BOOL add_next_button) { static SsdListContext list_context; SsdWidget list; int list_flags = 0; #if defined (OPENGL) /* * Borders are fast in OPENGL */ list_flags |= SSD_ALIGN_CENTER|SSD_CONTAINER_BORDER|SSD_ROUNDED_CORNERS|SSD_ROUNDED_WHITE; #endif // OPENGL list_context.on_item_selected= on_item_selected; list_context.on_item_deleted = on_item_deleted; list_context.context = context; list_context.left_softkey_callback = left_softkey_callback; if ( !ssd_dialog_exists( SSD_GEN_LIST_DLG_NAME ) ) { GenericList = ssd_dialog_new ( SSD_GEN_LIST_DLG_NAME, "", on_dialog_closed, SSD_CONTAINER_TITLE|dialog_flags); list = ssd_list_new ("list", SSD_MAX_SIZE, SSD_MAX_SIZE, inputtype_none, 0, NULL); ssd_widget_add (GenericList, list); } else{ GenericList->flags &= ~SSD_HEADER_BLACK; GenericList->flags |= dialog_flags; } ssd_widget_set_offset(GenericList,0,0); list = ssd_widget_get (GenericList, "list"); GenericList->set_value (GenericList->parent, title); ssd_widget_set_context (GenericList, &list_context); ssd_widget_reset_cache (list->parent); ssd_widget_reset_position(GenericList); ssd_list_resize ( list, list_height ); ssd_list_populate (list, count, labels, values,icons,flags, list_callback, del_callback, add_next_button); ssd_widget_set_left_softkey_text(GenericList, left_softkey_text); if (left_softkey_callback != NULL) ssd_widget_set_left_softkey_callback(GenericList, list_left_softkey_callback); ssd_dialog_activate (SSD_GEN_LIST_DLG_NAME, NULL); ssd_dialog_draw(); }
void roadmap_groups_dialog (RoadMapCallback callback) { int row_height = 60; SsdWidget groupDlg; SsdWidget list; int flags = 0; int i; int count; const char *active_name; static char *labels[MAX_GROUPS] ; static void *values[MAX_GROUPS] ; static void *icons[MAX_GROUPS]; int num_following; if (roadmap_screen_is_hd_screen()){ row_height = 80; } #ifdef OPENGL flags |= SSD_ALIGN_CENTER|SSD_CONTAINER_BORDER|SSD_ROUNDED_CORNERS|SSD_ROUNDED_WHITE; #endif groupDlg = ssd_dialog_new ( "groupDlg", roadmap_lang_get ("Groups"), NULL, SSD_CONTAINER_TITLE); groupDlg->context = (void *)callback; list = ssd_list_new ("list", SSD_MAX_SIZE, SSD_MAX_SIZE, inputtype_none, flags, NULL); ssd_list_resize ( list, row_height ); active_name = roadmap_groups_get_active_group_name(); count = roadmap_groups_get_num_following(); num_following = roadmap_groups_get_num_following(); if (active_name[0] != 0){ values[0] = (void *)roadmap_groups_get_active_group_name(); icons[0] = (void *) roadmap_groups_get_active_group_icon(); labels[0] = (char *)active_name; num_following -= 1; } else{ values[0] = ""; icons[0] = NULL; labels[0] = (char *)roadmap_lang_get("No group"); } for (i = 0; i< num_following; i++){ values[i+1] = (void *)roadmap_group_get_following_name(i); icons[i+1] = (void *) roadmap_group_get_following_icon(i); labels[i+1] = (char *) roadmap_group_get_following_name(i); } if (active_name[0] != 0){ values[count] = ""; icons[count] = NULL; labels[count] = (char *)roadmap_lang_get("No group"); } ssd_list_populate (list, count+1, (const char **)labels, (const void **)values, (const char **)icons, NULL, groups_callback, NULL, FALSE); ssd_widget_add (groupDlg, list); ssd_dialog_activate ("groupDlg", NULL); ssd_dialog_draw (); }
void ssd_generic_list_dialog_show(const char* title, int count, const char** labels, const void** values, PFN_ON_ITEM_SELECTED on_item_selected, PFN_ON_ITEM_SELECTED on_item_deleted, void* context, int list_height ) { static SsdListContext list_context; SsdWidget list; int flags = 0; #if defined (OPENGL) /* * Borders are fast in OPENGL */ flags |= SSD_ALIGN_CENTER|SSD_CONTAINER_BORDER|SSD_ROUNDED_CORNERS|SSD_ROUNDED_WHITE; #endif // OPENGL list_context.on_item_selected= on_item_selected; list_context.on_item_deleted = on_item_deleted; list_context.context = context; list_context.left_softkey_callback = NULL; if (!GenericList) { GenericList = ssd_dialog_new ( SSD_GEN_LIST_DLG_NAME, "", on_dialog_closed, SSD_CONTAINER_TITLE); ssd_dialog_add_vspace (GenericList, 5, 0); list = ssd_list_new ("list", ssd_container_get_width(), SSD_MAX_SIZE, inputtype_none, flags, NULL); ssd_widget_add (GenericList, list); } list = ssd_widget_get (GenericList, "list"); ssd_widget_set_offset(GenericList,0,0); ssd_widget_set_left_softkey_text(GenericList, roadmap_lang_get("Exit_key")); ssd_widget_set_left_softkey_callback(GenericList, NULL); GenericList->set_value (GenericList->parent, title); ssd_widget_set_context (GenericList, &list_context); ssd_widget_reset_cache (list->parent); ssd_widget_reset_position(GenericList); ssd_list_resize ( list, list_height ); ssd_list_populate (list, count, labels, values, NULL, NULL, list_callback, del_callback, FALSE); ssd_dialog_activate ( SSD_GEN_LIST_DLG_NAME, NULL ); ssd_dialog_draw(); }
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(); }
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]; const char* provider_icon = NULL; SsdWidget list_cont = (SsdWidget)context; SsdWidget list; SsdWidget bmp_logo = NULL; 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, LSD_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\n" "Please 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( "Search location"), msg, on_search_error_message ); } roadmap_log(ROADMAP_ERROR, "local_search_dlg::on_address_resolved() - Resolve process failed with error '%s' (%d)", roadmap_result_string( rc), rc); return; } if( !size) { roadmap_log(ROADMAP_DEBUG, "local_search_dlg::on_address_resolved() - NO RESULTS for the address-resolve process"); return; } assert( size <= ADSR_MAX_RESULTS); provider_icon = local_search_get_icon_name(); for( i=0; i<size; i++) { results[i] = array[i].address; indexes[i] = (void*)i; icons[i] = provider_icon; } if ( roadmap_native_keyboard_enabled() ) { roadmap_native_keyboard_hide(); } /* * Update the results container logo * dynamically according to the current provider */ bmp_logo = ssd_widget_get( s_result_container, "local search icon" ); ssd_bitmap_update( bmp_logo, local_search_get_logo_name() ); ssd_list_populate(list, size, results, (const void **)indexes, icons, 0, on_list_item_selected, NULL, FALSE); generic_search_dlg_switch_gui(); }
void roadmap_mood_dialog (RoadMapCallback callback) { char **files; const char *cursor; char **cursor2; char *directory = NULL; int count = 0; SsdWidget moodDlg; SsdWidget list; SsdWidget exclusive_list; SsdWidget baby_list; SsdWidget text; int i; BOOL only_baby_mood = Realtime_IsNewbie(); int row_height = ssd_container_get_row_height(); SsdListCallback exclusive_callback = NULL; SsdListCallback regular_mood_callback = roadmap_mood_call_back; int flags = 0; int width = SSD_MAX_SIZE; static roadmap_mood_list_dialog context = {"roadmap_mood", NULL}; static char *labels[MAX_MOOD_ENTRIES] ; static void *values[MAX_MOOD_ENTRIES] ; static void *icons[MAX_MOOD_ENTRIES]; static char *exclusive_labels[MAX_EXCLUSIVE_ICONS] ; static void *exclusive_values[MAX_EXCLUSIVE_ICONS] ; static void *exclusive_icons[MAX_EXCLUSIVE_ICONS]; static char *baby_labels[1] ; static void *baby_values[1] ; static void *baby_icons[1]; flags |= SSD_ALIGN_CENTER|SSD_CONTAINER_BORDER|SSD_CONTAINER_FLAGS; width = ssd_container_get_width(); moodDlg = ssd_dialog_new ( "MoodDlg", roadmap_lang_get ("Select your mood"), NULL, SSD_CONTAINER_TITLE); moodDlg->context = (void *)callback; exclusive_list = ssd_list_new ("list", width, SSD_MAX_SIZE, inputtype_none, flags, NULL); ssd_list_resize ( exclusive_list, row_height ); baby_list = ssd_list_new ("baby_list", width, SSD_MAX_SIZE, inputtype_none, flags, NULL); ssd_list_resize ( baby_list, row_height ); exclusive_labels[0] = (char *)roadmap_lang_get("wazer_gold"); exclusive_values[0] = "wazer_gold"; exclusive_icons[0] = "wazer_gold"; exclusive_labels[1] = (char *)roadmap_lang_get("wazer_silver"); exclusive_values[1] = "wazer_silver"; exclusive_icons[1] = "wazer_silver"; exclusive_labels[2] = (char *)roadmap_lang_get("wazer_bronze"); exclusive_values[2] = "wazer_bronze"; exclusive_icons[2] = "wazer_bronze"; if (roadmap_mood_get_exclusive_moods() > 0){ exclusive_callback = roadmap_exclusive_mood_call_back; } ssd_list_populate (exclusive_list, 3, (const char **)exclusive_labels, (const void **)exclusive_values, (const char **)exclusive_icons, NULL, exclusive_callback, NULL, FALSE); if (only_baby_mood){ char msg[150]; baby_labels[0] = (char *)roadmap_lang_get("Baby"); baby_values[0] = "wazer_baby"; baby_icons[0] = "wazer_baby"; ssd_list_populate (baby_list, 1, (const char **)baby_labels, (const void **)baby_values, (const char **)baby_icons, NULL, NULL, NULL, FALSE); ssd_dialog_add_hspace(moodDlg, 20, 0); text = ssd_text_new ("Baby Mood Txt", roadmap_lang_get("Waze newbie"), SSD_HEADER_TEXT_SIZE, SSD_TEXT_NORMAL_FONT | SSD_END_ROW); ssd_widget_add(moodDlg, text); ssd_dialog_add_hspace(moodDlg, 20, 0); snprintf(msg, sizeof(msg), roadmap_lang_get("(Gotta drive %d+ %s to access other moods)"), roadmap_mood_get_number_of_newbie_miles(), roadmap_lang_get(roadmap_math_trip_unit())); text = ssd_text_new ("Gold Mood Txt", msg, 12, SSD_END_ROW|SSD_TEXT_NORMAL_FONT); ssd_widget_add(moodDlg, text); ssd_widget_add (moodDlg, baby_list); } ssd_dialog_add_vspace(moodDlg, ADJ_SCALE(5),0); ssd_dialog_add_hspace(moodDlg, 20, 0); text = ssd_text_new ("Gold Mood Txt", roadmap_lang_get("Exclusive moods"), SSD_HEADER_TEXT_SIZE, SSD_TEXT_NORMAL_FONT | SSD_END_ROW); ssd_widget_add(moodDlg, text); ssd_dialog_add_hspace(moodDlg, 20, 0); text = ssd_text_new ("Gold Mood Txt", roadmap_lang_get("(Available only to top weekly scoring wazers)"), SSD_FOOTER_TEXT_SIZE, SSD_END_ROW|SSD_TEXT_NORMAL_FONT); ssd_widget_add(moodDlg, text); ssd_dialog_add_vspace(moodDlg, ADJ_SCALE(3),0); ssd_widget_add (moodDlg, exclusive_list); for (i = 0; i < (3 - roadmap_mood_get_exclusive_moods()); i++){ SsdWidget row = ssd_list_get_row(exclusive_list, i); if (row){ SsdWidget label = ssd_widget_get(row,"label"); if (label) ssd_text_set_color(label,"#999999"); } } list = ssd_list_new ("list", width, SSD_MAX_SIZE, inputtype_none, flags, NULL); exclusive_list->key_pressed = NULL; ssd_dialog_add_vspace(moodDlg, ADJ_SCALE(10), 0); ssd_dialog_add_hspace(moodDlg, 20, 0); text = ssd_text_new ("Gold Mood Txt", roadmap_lang_get("Everyday moods"), SSD_HEADER_TEXT_SIZE, SSD_TEXT_NORMAL_FONT | SSD_END_ROW); ssd_widget_add(moodDlg, text); ssd_dialog_add_hspace(moodDlg, 20, 0); text = ssd_text_new ("Gold Mood Txt", roadmap_lang_get("(Available to all)"), SSD_FOOTER_TEXT_SIZE, SSD_END_ROW|SSD_TEXT_NORMAL_FONT); ssd_widget_add(moodDlg, text); ssd_dialog_add_vspace(moodDlg, ADJ_SCALE(3),0); ssd_widget_add (moodDlg, list); ssd_list_resize ( list, row_height ); context.callback = callback; for (cursor = roadmap_path_first ("skin"); cursor != NULL; cursor = roadmap_path_next ("skin", cursor)) { directory = roadmap_path_join (cursor, "moods"); files = roadmap_path_list (directory, ".png"); if ( *files == NULL ) { files = roadmap_path_list (directory, NULL); } for (cursor2 = files; *cursor2 != NULL; ++cursor2) { labels[count] = (char *)(strtok(*cursor2,".")); count++; } } qsort((void *) &labels[0], count, sizeof(void *), cstring_cmp); for (i = 0; i< count; i++){ values[i] = labels[i]; icons[i] = roadmap_path_join("moods", labels[i]); labels[i] = (char *)roadmap_lang_get(labels[i]); } if (only_baby_mood){ regular_mood_callback = NULL; } free(directory); ssd_list_populate (list, count, (const char **)labels, (const void **)values, (const char **)icons, NULL, regular_mood_callback, NULL, FALSE); if (only_baby_mood){ for (i = 0; i< count; i++){ SsdWidget row = ssd_list_get_row(list, i); if (row){ SsdWidget label = ssd_widget_get(row,"label"); if (label) ssd_text_set_color(label,"#999999"); } } } // else{ // SsdWidget row = ssd_list_get_row(baby_list,0 ); // if (row){ // SsdWidget label = ssd_widget_get(row,"label"); // if (label) // ssd_text_set_color(label,"#999999"); // } // } exclusive_list->key_pressed = NULL; ssd_dialog_activate ("MoodDlg", NULL); ssd_dialog_draw (); }