Ejemplo n.º 1
0
static int on_next (SsdWidget widget, const char *new_value) {
    static SsdWidget dialog;
    SsdWidget button;
    SsdWidget browserCont;
    SsdSize dlg_size, cnt_size;
    int browser_cont_flags = 0;

	ssd_dialog_hide_current(dec_close);

    if ( dialog != NULL )
    {
      if (ssd_dialog_currently_active_name() && !strcmp(ssd_dialog_currently_active_name(), "BonusBrowserDlg"))
            ssd_dialog_hide_current(dec_close);

         ssd_dialog_free( "BonusBrowserDlg", FALSE );
         dialog = NULL;
    }


    dialog = ssd_dialog_new ( "BonusBrowserDlg", "", on_dialog_close,
            SSD_CONTAINER_BORDER|SSD_DIALOG_FLOAT|SSD_DIALOG_MODAL|
            SSD_ALIGN_CENTER|SSD_ROUNDED_CORNERS|SSD_ROUNDED_BLACK);

#ifndef TOUCH_SCREEN
    browser_cont_flags = SSD_ALIGN_VCENTER;
    ssd_dialog_add_vspace(dialog, 2 ,0);
#else
    ssd_dialog_add_vspace(dialog, 5 ,0);
#endif

    browserCont = ssd_container_new("BonusBrowserDlg.BrowserContainer","", SSD_MAX_SIZE, get_browser_height() , SSD_ALIGN_CENTER|browser_cont_flags);
    browserCont->context = (void *)widget->context;
    browserCont->draw = draw_browser_rect;
    ssd_widget_set_color(browserCont, NULL, NULL);
    ssd_widget_add(dialog, browserCont);

#ifdef TOUCH_SCREEN
    ssd_dialog_add_vspace(dialog, 5 ,0);

    button = ssd_button_label("Close_button", roadmap_lang_get("Close"), SSD_ALIGN_CENTER, on_button_close);
    ssd_widget_add(dialog, button);
    button = ssd_button_label("Navigate_button", roadmap_lang_get("Navigate"), SSD_ALIGN_CENTER, on_button_navigate);
    button->context = widget->context;
    ssd_widget_add(dialog, button);
#else
    ssd_widget_set_left_softkey_callback(dialog, NULL);
    ssd_widget_set_left_softkey_text(dialog, "");
#endif
    ssd_dialog_activate ("BonusBrowserDlg", NULL);

    ssd_dialog_recalculate( "BonusBrowserDlg" );
    ssd_widget_get_size( dialog, &dlg_size, NULL );
    ssd_widget_get_size( browserCont, &cnt_size, NULL );

   return 1;
}
Ejemplo n.º 2
0
static int on_close (SsdWidget widget, const char *new_value) {
   if (ssd_dialog_is_currently_active () && (!strcmp (ssd_dialog_currently_active_name (),
                  "BonusPopUPDlg")))
      ssd_dialog_hide_current (dec_close);

   return 0;
}
Ejemplo n.º 3
0
static int on_options(SsdWidget widget, const char *new_value, void *context)
{
   int menu_x;

   if(g_context_menu_is_active)
   {
      ssd_dialog_hide_current(dec_ok);
      g_context_menu_is_active = FALSE;
   }

   if (ssd_widget_rtl (NULL))
   menu_x = SSD_X_SCREEN_RIGHT;
   else
   menu_x = SSD_X_SCREEN_LEFT;

   ssd_context_menu_show( menu_x, // X
            SSD_Y_SCREEN_BOTTOM, // Y
            &context_menu,
            on_option_selected,
            NULL,
            dir_default,
            0,
            TRUE);

   g_context_menu_is_active = TRUE;

   return 0;
}
Ejemplo n.º 4
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;
   }
}
static int button_callback (SsdWidget widget, const char *new_value) {

   set_geo_location_displayed();
   ssd_dialog_hide_current(dec_ok);

   return 1;
}
Ejemplo n.º 6
0
static int on_delete (SsdWidget widget, const char *new_value){
   reminder_remove_pin((char *)widget->context);
   remider_remover_from_history((char *)widget->context);
   if (ssd_dialog_is_currently_active() && (!strcmp(ssd_dialog_currently_active_name(), REMINDER_POP_DLG_NAME)))
      ssd_dialog_hide_current(dec_close);

   return 1;
}
Ejemplo n.º 7
0
static int on_back(SsdWidget widget, const char *new_value, void *context)
{
   if( generic_search_dlg_is_1st(search_address))
      ssd_dialog_hide_current( dec_cancel);
   else
      generic_search_dlg_switch_gui();

   return 0;
}
Ejemplo n.º 8
0
static int way_to_go_button_callback( SsdWidget widget, const char *new_value ) {

   if ( ( widget != NULL ) && !strcmp( widget->name, "Go" ) )
   {
      ssd_dialog_hide_current( dec_close );
      roadmap_welcome_guided_tour();
   }

   return 1;
}
Ejemplo n.º 9
0
static void right_softkey_callback(void){
   SsdDialog   current  = RoadMapDialogCurrent;

   if (current == NULL)
      return;

   if (current->scroll_container && current->scroll_container->right_softkey_callback)
      (*current->scroll_container->right_softkey_callback)(current->scroll_container, "", current->context);
   else if (current->container->right_softkey_callback)
      (*current->container->right_softkey_callback)(current->container, "", current->context);
   else
         ssd_dialog_hide_current(dec_cancel);
}
Ejemplo n.º 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;
}
Ejemplo n.º 11
0
static int on_close (SsdWidget widget, const char *new_value){

   int id = -1;

   if (widget->context)
      id = get_id((char *)widget->context);


   if ((id != -1) && (!ReminderTable.reminder[id].repeat)){
      reminder_remove_pin((char *)widget->context);
      remider_remover_from_history((char *)widget->context);
   }

   if (ssd_dialog_is_currently_active() && (!strcmp(ssd_dialog_currently_active_name(), REMINDER_POP_DLG_NAME)))
      ssd_dialog_hide_current(dec_close);

   return 0;
}
Ejemplo n.º 12
0
static int button_callback (SsdWidget widget, const char *new_value) {

   const char *title;
   const char *value;

   if (!strcmp(widget->name, "OK")) {
      update_range (
         ssd_widget_get_value (widget->parent, UPDATE_LEFT),
         ssd_widget_get_value (widget->parent, UPDATE_RIGHT),
         ssd_dialog_get_value (CITY_PREFIX),
         ssd_dialog_get_value (STREET_PREFIX));

      ssd_dialog_hide_current (dec_cancel);

      return 1;

   } else if (!strcmp(widget->name, "left_button")) {
      title = roadmap_lang_get (UPDATE_LEFT);
      value = ssd_widget_get_value (widget->parent, UPDATE_LEFT);
   } else {
      title = roadmap_lang_get (UPDATE_RIGHT);
      value = ssd_widget_get_value (widget->parent, UPDATE_RIGHT);
   }


#if (defined(__SYMBIAN32__) && !defined(TOUCH_SCREEN))
    ShowEditbox(title, "",
            keyboard_callback, (void *)widget, EEditBoxStandard | EEditBoxNumeric );
#else

   ssd_show_keyboard_dialog(  title,
                              NULL,
                              keyboard_callback,
                              widget);

#endif
   return 1;
}
static int on_softkey(SsdWidget widget, const char *new_value, void *context){
   set_geo_location_displayed();
   ssd_dialog_hide_current(dec_ok);
   return 1;
}
Ejemplo n.º 14
0
int RealtimeBonus_PopUpNext (SsdWidget widget, const char *new_value) {
   SsdWidget popup, spacer, container, button, text, icon;
   char msg[512];
   RTBonus *pbonus = g_pbonus;
   const char *title;
   char *text_color = "#ffffff";
   int width;

   if (!pbonus)
      return 0;

   if (ssd_dialog_is_currently_active () && (!strcmp (ssd_dialog_currently_active_name (),
                  "BonusPopUPDlg")))
      ssd_dialog_hide_current (dec_cancel);

   if (pbonus->pBonusTitle){
      title = roadmap_lang_get (pbonus->pBonusTitle);
   }
   else{
      if (pbonus->iType == BONUS_TYPE_TREASURE)
         title = roadmap_lang_get ("Treasure chest");
   }

   popup = ssd_popup_new ("BonusPopUPDlg", title, NULL,
                  SSD_MAX_SIZE, SSD_MIN_SIZE, &pbonus->position, SSD_POINTER_LOCATION
                                 | SSD_ROUNDED_BLACK,DIALOG_ANIMATION_FROM_TOP);

   spacer = ssd_container_new ("space", "", SSD_MIN_SIZE, 5, SSD_END_ROW);
   ssd_widget_set_color (spacer, NULL, NULL);
   ssd_widget_add (popup, spacer);

   container = ssd_container_new ("IconCon", "", 50, SSD_MIN_SIZE, SSD_ALIGN_RIGHT);
   ssd_widget_set_color (container, NULL, NULL);
   icon = ssd_bitmap_new ("bonusIcon", pbonus->pIconName, SSD_ALIGN_VCENTER | SSD_ALIGN_CENTER);
   ssd_widget_add (container, icon);
   ssd_widget_add (popup, container);

   if (pbonus->pBonusText){
      snprintf (msg, sizeof(msg), "%s", pbonus->pBonusText);
   }else if (pbonus->iType == BONUS_TYPE_TREASURE){
      if (!Realtime_is_random_user())
         snprintf (msg, sizeof(msg), "%s", roadmap_lang_get ("There may be presents in this treasure chest! You'll know when you drive over it."));
      else
         snprintf (msg, sizeof(msg), "%s", roadmap_lang_get ("There may be presents in this treasure chest! You'll know when you drive over it. Note: You need to be a registered user in order to receive the gift inside. Register in 'Settings > Profile'"));
   }

   if (roadmap_canvas_width() > roadmap_canvas_height())
      width = roadmap_canvas_height() - 90;
   else
      width = roadmap_canvas_width() - 90;
   container = ssd_container_new ("IconCon", "", width, SSD_MIN_SIZE, 0);
   ssd_widget_set_color (container, NULL, NULL);
   text = ssd_text_new ("PointsTxt", msg, 16, SSD_END_ROW);
   if (pbonus->pBonusTextColor)
      text_color = pbonus->pBonusTextColor;

   ssd_text_set_color (text,text_color);
   ssd_widget_add (container, text);
   ssd_widget_add (popup, container);

#ifdef TOUCH_SCREEN
   spacer = ssd_container_new ("space", "", SSD_MIN_SIZE, 5, SSD_END_ROW);
   ssd_widget_set_color (spacer, NULL, NULL);
   ssd_widget_add (popup, spacer);

   button = ssd_button_label ("Close_button", roadmap_lang_get ("Close"), SSD_ALIGN_CENTER,
                  on_close);
   ssd_widget_add (popup, button);
#endif //TOUCH_SCREEN
   ssd_dialog_activate ("BonusPopUPDlg", NULL);

   if (!roadmap_screen_refresh ()) {
      roadmap_screen_redraw ();
   }
   return 1;
}
Ejemplo n.º 15
0
static int editor_segments_apply (SsdWidget widget, const char *new_value) {
   DialogSelectedLines *selected_lines =
      (DialogSelectedLines *) ssd_dialog_context ();
#else
static void editor_segments_apply (const char *name, void *context) {
   DialogSelectedLines *selected_lines = (DialogSelectedLines *)context;
#endif


   int i;
#ifdef SSD
   long type = (long) ssd_dialog_get_data ("Road type");
   int cfcc = type + ROADMAP_ROAD_FIRST;
   
   char *street_type = (char *) ssd_dialog_get_value ("Street type");
   
   char *street_name = (char *) ssd_dialog_get_value ("Name");
   
   char *t2s = (char *) ssd_dialog_get_value ("Text to Speech");
   
   char *city = (char *) ssd_dialog_get_value ("City");
#else   
   int type = (int) roadmap_dialog_get_data ("General", "Road type");
   int cfcc = type + ROADMAP_ROAD_FIRST;
   int direction = (int) roadmap_dialog_get_data ("General", "Direction");
   
   char *street_type =
      (char *) roadmap_dialog_get_data ("General", "Street type");
   
   char *street_name =
      (char *) roadmap_dialog_get_data ("General", "Name");
   
   char *t2s =
      (char *) roadmap_dialog_get_data ("General", "Text to Speech");
   
/*   char *street_range =
      (char *) roadmap_dialog_get_data ("General", "Street range"); */

   char *city = (char *) roadmap_dialog_get_data ("General", "City");
   char *zip = (char *) roadmap_dialog_get_data ("General", "Zip code");

   char *speed_limit_str =
      (char *) roadmap_dialog_get_data ("General", "Speed Limit");
#endif

   int street_id = editor_street_create (street_name, street_type, "", "", city, t2s);
	
   for (i=0; i<selected_lines->count; i++) {

      SelectedLine *line = &selected_lines->lines[i];

      if (line->line.plugin_id != EditorPluginID) {

			if (roadmap_square_scale (line->line.square) == 0 &&
				 !roadmap_street_line_has_predecessor (&line->line)) {
			
				line->line.cfcc = cfcc;
				editor_line_copy (&line->line, street_id);	
			}
			roadmap_square_set_current (line->line.square);
			editor_override_line_set_flag (line->line.line_id, line->line.square,  ED_LINE_DELETED);
      } else {
      
      	editor_line_modify_properties (line->line.line_id, cfcc, ED_LINE_DIRTY);
      	editor_line_set_street (line->line.line_id, street_id);	
      }

      
   }

   editor_screen_reset_selected ();
   editor_report_segments ();

#ifdef SSD
   ssd_dialog_hide_current (dec_close);
   return 1;
#else
   free (context);
   roadmap_dialog_hide (name);
#endif
}
Ejemplo n.º 16
0
static int on_softkey_left_way_to_go(SsdWidget widget, const char *new_value, void *context)
{
   ssd_dialog_hide_current( dec_close );
   roadmap_welcome_guided_tour();
   return 0;
}
Ejemplo n.º 17
0
/*************************************************************************************************
 * void roadmap_groups_browser_btn_close_cb( void )
 * Custom button callback - Groups browser
 *
 */
void roadmap_groups_browser_btn_close_cb( void )
{
   ssd_dialog_hide_current( dec_ok );

}
Ejemplo n.º 18
0
static int button_callback (SsdWidget widget, const char *new_value) {
   ssd_dialog_hide_current (dec_ok);

   return 1;
}
Ejemplo n.º 19
0
static void OnReminderShortClick (const char *name,
                                  const char *sprite,
                                  const char *image,
                                  const RoadMapGpsPosition *gps_position,
                                  const RoadMapGuiPoint    *offset,
                                  BOOL is_visible,
                                  int scale,
                                  int opacity,
                                  const char *id,
                                  const char *text){

   SsdWidget button;
   SsdWidget spacer;
   SsdWidget txt;
   SsdWidget bg;
   RoadMapPosition Pos;

   Pos.latitude = gps_position->latitude;
   Pos.longitude = gps_position->longitude;
   if (ssd_dialog_is_currently_active() && (!strcmp(ssd_dialog_currently_active_name(), REMINDER_POP_DLG_NAME)))
      ssd_dialog_hide_current(dec_close);
   bg = create_reminder_dlg();

   if (get_id(id) != -1){
      char msg[250];
      int rem_distance;
      Reminder reminder;
      SsdWidget container;

      container = ssd_container_new( "container_txt", "", SSD_MIN_SIZE, SSD_MIN_SIZE, 0 );
      ssd_widget_set_color( container, NULL, NULL );

      reminder = ReminderTable.reminder[get_id(id)];
      txt = ssd_text_new("reminder_title",&reminder.title[0] ,22, SSD_END_ROW);
      ssd_text_set_color(txt, "#ab5939");
      ssd_widget_set_offset(txt, 25, 0);
      ssd_widget_add(container, txt);

      spacer = ssd_container_new( "space", "", SSD_MIN_SIZE, 10, SSD_END_ROW );
      ssd_widget_set_color( spacer, NULL, NULL );
      ssd_widget_add( container, spacer );

      txt = ssd_text_new("reminder_desc",&reminder.description[0] ,18, SSD_END_ROW);
      ssd_text_set_color(txt, "#ab5939");
      ssd_widget_set_offset(txt, 30, 0);
      ssd_widget_add(container, txt);

      spacer = ssd_container_new( "space", "", SSD_MIN_SIZE, 10, SSD_END_ROW );
      ssd_widget_set_color( spacer, NULL, NULL );
      ssd_widget_add( container, spacer );

      rem_distance = roadmap_math_to_trip_distance_tenths(reminder.distance);
      sprintf(msg, roadmap_lang_get("Distance to remind: %.1f %s"),rem_distance/10.0, roadmap_lang_get(roadmap_math_trip_unit()) );
      txt = ssd_text_new("reminder_dist",&msg[0] ,14, SSD_END_ROW);
      ssd_text_set_color(txt, "#ab5939");
      ssd_widget_set_offset(txt, 30, 0);
      ssd_widget_add(container, txt);

      ssd_widget_add( bg, container );
   }

#ifdef TOUCH_SCREEN

   button = create_close_button();
   ssd_widget_add(bg, button);

   button = create_del_button();
   ssd_widget_set_offset(button, 0, -20);

   button->context = strdup(id);
   ssd_widget_add(bg, button);
#endif //TOUCH_SCREEN

   show_reminder_dlg();
}
Ejemplo n.º 20
0
static void show_reminder(int id, int distance){
   SsdWidget button;
   SsdWidget spacer;
   SsdWidget txt;
   SsdWidget bg;

   if (ssd_dialog_is_currently_active() && (!strcmp(ssd_dialog_currently_active_name(), REMINDER_POP_DLG_NAME)))
      ssd_dialog_hide_current(dec_close);


   bg = create_reminder_dlg();

   if (id != -1){
      Reminder reminder;
      SsdWidget container;
      char msg[250];
      int rem_distance;

      container = ssd_container_new( "container_txt", "", SSD_MIN_SIZE, SSD_MIN_SIZE, 0 );
      ssd_widget_set_color( container, NULL, NULL );

      reminder = ReminderTable.reminder[id];
      txt = ssd_text_new("reminder_title",&reminder.title[0] ,22, SSD_END_ROW);
      ssd_text_set_color(txt, "#ab5939");
      ssd_widget_set_offset(txt, 25, 0);
      ssd_widget_add(container, txt);

      spacer = ssd_container_new( "space", "", SSD_MIN_SIZE, 10, SSD_END_ROW );
      ssd_widget_set_color( spacer, NULL, NULL );
      ssd_widget_add( container, spacer );

      txt = ssd_text_new("reminder_desc",&reminder.description[0] ,18, SSD_END_ROW);
      ssd_text_set_color(txt, "#ab5939");
      ssd_widget_set_offset(txt, 30, 0);
      ssd_widget_add(container, txt);

      spacer = ssd_container_new( "space", "", SSD_MIN_SIZE, 10, SSD_END_ROW );
      ssd_widget_set_color( spacer, NULL, NULL );
      ssd_widget_add( container, spacer );

      rem_distance = roadmap_math_to_trip_distance_tenths(reminder.distance);
      sprintf(msg, "%s: %.1f %s",roadmap_lang_get("Distance"), rem_distance/10.0, roadmap_lang_get(roadmap_math_trip_unit()) );
      txt = ssd_text_new("reminder_dist",&msg[0] ,14, SSD_END_ROW);
      ssd_text_set_color(txt, "#ab5939");
      ssd_widget_set_offset(txt, 30, 0);
      ssd_widget_add(container, txt);

      ssd_widget_add( bg, container );
   }

#ifdef TOUCH_SCREEN
   spacer = ssd_container_new( "space", "", 10, 30, SSD_END_ROW );
   ssd_widget_set_color( spacer, NULL, NULL );
   ssd_widget_add( bg, spacer );

   button = create_close_button();
   button->context = (void *)roadmap_string_get(generate_id(id));
   ssd_widget_add(bg, button);

   if (ReminderTable.reminder[id].repeat == 1){
      button = create_del_button();
      button->context = (void *)roadmap_string_get(generate_id(id));
      ssd_widget_add(bg, button);
   }

#endif //TOUCH_SCREEN

   show_reminder_dlg();

}
Ejemplo n.º 21
0
static int on_ok_softkey(SsdWidget widget, const char *new_value, void *context) {
   ssd_dialog_hide_current(dec_ok);
   return 0;
}
Ejemplo n.º 22
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;
}