SsdWidget ssd_button_new (const char *name, const char *value, const char **bitmap_names, int num_bitmaps, int flags, SsdCallback callback) { int i; SsdWidget w; SsdClickOffsets btn_offsets = BUTTON_CLICK_OFFSETS_DEFAULT; // RoadMapImage image; struct ssd_button_data *data = (struct ssd_button_data *)calloc (1, sizeof(*data)); w = ssd_widget_new (name, ssd_button_on_key_pressed, flags); w->_typeid = "Button"; w->draw = draw; w->release = release; w->flags = flags; w->data = data; data->state = BUTTON_STATE_NORMAL; // TODO :: Load the bitmaps here for (i=0; i<num_bitmaps; i++) { set_bitmap_name( data, i, bitmap_names[i] ); data->bitmap_images[i] = NULL; } w->callback = callback; set_value (w, value); #ifdef TOUCH_SCREEN ssd_widget_set_pointer_force_click( w ); ssd_widget_set_click_offsets( w, &btn_offsets ); #endif w->short_click = ssd_button_short_click; w->long_click = ssd_button_long_click; w->set_value = set_value; return w; }
SsdWidget ssd_confirmed_entry_new (const char *name, const char *value, int entry_flags, int text_flags, int width, int height, const char *messagebox_text, const char *background_text) { const char *edit_button[] = {"edit_right", "edit_left"}; SsdWidget button; SsdWidget space; SsdWidget bg_text; SsdWidget entry; SsdWidget text_box; int tab_st = 0; int txt_box_height = 40; SsdEntryContext* ctx = (SsdEntryContext*) calloc( 1, sizeof( SsdEntryContext ) ); #ifndef TOUCH_SCREEN txt_box_height = 23; #endif #ifdef OPENGL if ( height > 0 ) txt_box_height = height; #endif entry_ctx_init( ctx ); if (entry_flags & SSD_WS_TABSTOP) { entry_flags &= ~SSD_WS_TABSTOP; tab_st = SSD_WS_TABSTOP; } entry = ssd_container_new (name, NULL, SSD_MIN_SIZE, SSD_MIN_SIZE, entry_flags); text_box = ssd_container_new ("text_box", NULL, width, txt_box_height, SSD_CONTAINER_TXT_BOX|SSD_ALIGN_VCENTER|tab_st); ssd_widget_set_pointer_force_click( text_box ); entry->get_value = get_value; entry->set_value = set_value; entry->bg_color = NULL; text_box->callback = confirmed_edit_callback; text_box->bg_color = NULL; space = ssd_container_new("Space", NULL,5, SSD_MIN_SIZE, SSD_WIDGET_SPACE); ssd_widget_set_color(space, NULL, NULL); ssd_widget_add(text_box, space); ssd_widget_add (text_box, ssd_text_new ("Text", value, -1, text_flags|SSD_ALIGN_VCENTER)); if (background_text == NULL) bg_text = ssd_text_new ("BgText", "", -1, SSD_ALIGN_VCENTER); else bg_text = ssd_text_new ("BgText", background_text, -1, SSD_ALIGN_VCENTER); ssd_widget_set_color(bg_text, "#C0C0C0",NULL); ssd_widget_add (text_box, bg_text); #ifdef TOUCH_SCREEN if (!ssd_widget_rtl(NULL)) button = ssd_button_new ("edit_button", "", &edit_button[0], 1, SSD_ALIGN_VCENTER|SSD_ALIGN_RIGHT, edit_callback); else button = ssd_button_new ("edit_button", "", &edit_button[1], 1, SSD_ALIGN_VCENTER|SSD_ALIGN_RIGHT, edit_callback); if (!ssd_widget_rtl(NULL)) ssd_widget_set_offset(button, 10, 0); else ssd_widget_set_offset(button, -11, 0); #endif ctx->mb_text = (void *)strdup(messagebox_text); entry->context = ctx; if ((value != NULL) && (value[0] != 0)) ssd_widget_hide(bg_text); ssd_widget_add (entry, text_box); /* Default keyboard params */ ssd_entry_set_kb_params( entry, name, NULL, NULL, NULL, 0 ); return entry; }
SsdWidget ssd_entry_new (const char *name, const char *value, int entry_flags, int text_flags, int width, int height, const char *background_text) { SsdWidget space; SsdWidget bg_text; SsdWidget entry; SsdWidget text_box; SsdWidget text; int tab_st = 0; int txt_box_height = ADJ_SCALE(37); SsdEntryContext* ctx = (SsdEntryContext*) calloc( 1, sizeof( SsdEntryContext ) ); #ifndef TOUCH_SCREEN txt_box_height = 23; #endif #ifdef OPENGL if ( height > 0 ) txt_box_height = height; #endif entry_ctx_init( ctx ); if (entry_flags & SSD_WS_TABSTOP) { entry_flags &= ~SSD_WS_TABSTOP; tab_st = SSD_WS_TABSTOP; } entry = ssd_container_new (name, NULL, SSD_MIN_SIZE, SSD_MIN_SIZE, entry_flags); text_box = ssd_container_new ("text_box", NULL, width, txt_box_height, SSD_CONTAINER_TXT_BOX|SSD_ALIGN_VCENTER|tab_st); ssd_widget_set_color(text_box, NULL, NULL); ssd_widget_set_pointer_force_click( text_box ); entry->get_value = get_value; entry->set_value = set_value; entry->bg_color = NULL; text_box->callback = edit_callback; text_box->bg_color = NULL; space = ssd_container_new("Space", NULL,5, SSD_MIN_SIZE, SSD_WIDGET_SPACE); ssd_widget_set_color(space, NULL, NULL); ssd_widget_add(text_box, space); text = ssd_text_new ("Text", value, -1, text_flags|SSD_ALIGN_VCENTER|SSD_TEXT_SINGLE_LINE ); ssd_widget_add (text_box, text); #ifdef TOUCH_SCREEN ssd_widget_set_offset(text, 0, -2); #endif if (background_text == NULL) bg_text = ssd_text_new ("BgText", "", -1, SSD_ALIGN_VCENTER|SSD_TEXT_SINGLE_LINE); else bg_text = ssd_text_new ("BgText", background_text, -1, SSD_ALIGN_VCENTER|SSD_TEXT_SINGLE_LINE); ssd_widget_set_offset(bg_text, 0, -2); ssd_widget_set_color(bg_text, "#C0C0C0",NULL); ssd_widget_add (text_box, bg_text); entry->context = ctx; if ((value != NULL) && (value[0] != 0)) ssd_widget_hide(bg_text); ssd_widget_add (entry, text_box); /* Default keyboard params */ ssd_entry_set_kb_params( entry, background_text, NULL, NULL, NULL, 0 ); return entry; }