📄 wgui_inline_edit.c
字号:
pixtel_UI_move_text_cursor(text_x, text_y);
pixtel_UI_set_text_color(text_colr);
pixtel_UI_print_text((UI_string_type) text);
}
}
else
{
text_colr = MMI_fixed_icontext_menuitem.normal_text_color;
if (r2lMMIFlag)
gdi_layer_set_clip(text_x - text_width, text_y - 1, text_x, text_y + text_height + 1);
else
gdi_layer_set_clip(text_x, text_y - 1, text_x + text_width, text_y + text_height + 1);
pixtel_UI_move_text_cursor(text_x, text_y);
pixtel_UI_set_text_color(text_colr);
pixtel_UI_print_text((UI_string_type) text);
}
pixtel_UI_pop_clip();
UI_UNUSED_PARAMETER(char_height);
}
void wpixtel_UI_show_image_text_item(S32 x1, S32 y1, S32 iwidth, S32 iheight, wgui_inline_item * item)
{
wgui_inline_image_text *i = (wgui_inline_image_text *) item->item;
wgui_inline_item_text_edit *i_edit = (wgui_inline_item_text_edit *) i->inline_full_text;
draw_image_text_control(i, x1, y1, iwidth, iheight, i->image1, i->image2, i->image3, i_edit->buffer, 0);
}
void clear_inline_image_text_item(void)
{
pixtel_UI_scrolling_text_stop(&wgui_inline_scroll_text);
inline_scroll_flag = FALSE;
memset(&wgui_inline_scroll_text, 0, sizeof(wgui_inline_scroll_text));
clear_inline_item_keys = UI_dummy_function;
redraw_current_inline_item = UI_dummy_function;
#ifdef __MMI_TOUCH_SCREEN__
wgui_current_inline_item_pen_function = UI_dummy_inline_item_pen_function;
#endif /* __MMI_TOUCH_SCREEN__ */
}
void wpixtel_UI_show_image_text_item_highlight(S32 x1, S32 y1, S32 iwidth, S32 iheight, wgui_inline_item * item)
{
wgui_inline_image_text *i = (wgui_inline_image_text *) item->item;
wgui_inline_item_text_edit *i_edit = (wgui_inline_item_text_edit *) i->inline_full_text;
i->x = x1;
i->y = y1;
i->width = iwidth;
i->height = iheight;
clear_inline_item_keys = clear_inline_image_text_item;
redraw_current_inline_item = redraw_image_text_control;
#ifdef __MMI_TOUCH_SCREEN__
wgui_current_inline_item_pen_function = inline_image_text_pen_handler;
#endif /* __MMI_TOUCH_SCREEN__ */
current_image_text_control = i;
draw_image_text_control(i, x1, y1, iwidth, iheight, i->image1, i->image2, i->image3, i_edit->buffer, 1);
}
void handle_inline_full_screen_imagetext_edit(S32 x, S32 y, S32 width, S32 height, S32 key_code, S32 key_event,
U8 ** text_p, void *item, dword flags, U8 * history_buffer)
{
S32 input_type;
wgui_inline_image_text *image_type = (wgui_inline_image_text *) item;
// wgui_inline_item_text_edit *i=&wgui_inline_text_edit_items[0];//(wgui_inline_item_text_edit*)image_type->inline_full_text;
wgui_inline_item_text_edit *i = (wgui_inline_item_text_edit *) image_type->inline_full_text;
S32 inputbox_x = 0;
S32 inputbox_y = (MMI_title_y + MMI_title_height);
S32 inputbox_width = MMI_content_width;
S32 inputbox_height = MMI_content_height - MMI_multitap_height;
UI_UNUSED_PARAMETER(x);
UI_UNUSED_PARAMETER(y);
UI_UNUSED_PARAMETER(width);
UI_UNUSED_PARAMETER(height);
UI_UNUSED_PARAMETER(key_code);
UI_UNUSED_PARAMETER(key_event);
UI_UNUSED_PARAMETER(flags);
if (i->custom_setup_function != NULL)
{
i->custom_setup_function();
return;
}
#ifdef __MMI_T9__
InuptMethodEnterCategory5();
#elif defined __MMI_ZI__
ZiInuptMethodEnterCategory5();
#elif defined __MMI_KA__
KonkaInuptMethodEnterCategory5();
#elif defined __MMI_ITAP__
ItapInuptMethodEnterCategory5();
#elif defined(__MMI_GB__) //InuptMethodEnterCategory5
GBInputMethodEnterCategory5();
#endif
gdi_layer_lock_frame_buffer();
wgui_text_menuitem_reset_scrolling();
clear_inline_image_text_item();
if (i->flags & INLINE_ITEM_CHANGED)
inline_full_screen_edit_changed = 1;
else
inline_full_screen_edit_changed = 0;
wgui_current_inline_item_type = INLINE_ITEM_TYPE_FULL_SCREEN_EDIT;
current_wgui_inline_text_edit_item = i;
current_wgui_inline_text_edit_text_p = text_p;
input_type = i->input_type;
if (inline_image_text_edit_flag == 0)
{
if (!(i->flags & INLINE_ITEM_OPEN))
{
pixtel_UI_strcpy((UI_string_type) wgui_inline_full_screen_text_edit_buffer, (UI_string_type) i->buffer);
history_buffer = NULL;
}
}
inline_image_text_edit_flag = 1;
i->flags &= ~INLINE_ITEM_OPEN;
inline_full_screen_edit_saved_title = MMI_title_string;
inline_full_screen_edit_saved_title_icon = MMI_title_icon;
inline_full_screen_edit_saved_LSK_label = MMI_softkeys[MMI_LEFT_SOFTKEY].text;
inline_full_screen_edit_saved_RSK_label = MMI_softkeys[MMI_RIGHT_SOFTKEY].text;
inline_full_screen_edit_saved_LSK_icon = MMI_softkeys[MMI_LEFT_SOFTKEY].normal_up_icon;
inline_full_screen_edit_saved_RSK_icon = MMI_softkeys[MMI_RIGHT_SOFTKEY].normal_up_icon;
change_left_softkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
change_right_softkey(STR_GLOBAL_BACK, IMG_GLOBAL_BACK);
MMI_menu_shortcut_number = -1;
MMI_disable_title_shortcut_display = 1;
clear_key_handlers();
change_left_softkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
change_right_softkey(STR_GLOBAL_BACK, IMG_GLOBAL_BACK);
clear_left_softkey();
clear_right_softkey();
register_left_softkey_handler();
register_right_softkey_handler();
register_default_hide_softkeys();
MMI_title_string = get_string(i->title);
MMI_title_icon = get_image(i->title_icon);
register_hide_multitap(category5_hide_multitap);
wgui_inputbox_validation_callback = i->validation_callback;
wgui_setup_inputbox(inputbox_x, inputbox_y, inputbox_width, inputbox_height,
wgui_inline_full_screen_text_edit_buffer, i->buffer_size, INLINE_FULL_SCREEN_EDIT_HISTORY_ID,
get_string(STR_GLOBAL_BACK), get_image(IMG_GLOBAL_BACK), (S16) input_type, history_buffer, 1);
inputbox_height = MMI_content_height - MMI_multitap_height - wgui_inputbox_information_bar_height;
if (MMI_multiline_inputbox.height > inputbox_height)
pixtel_UI_resize_multi_line_input_box(&MMI_multiline_inputbox, MMI_multiline_inputbox.width, inputbox_height);
/* 101105 inline Calvin Start */
#ifdef __MMI_WALLPAPER_ON_BOTTOM__
MMI_multiline_inputbox.flags |= UI_MULTI_LINE_INPUT_BOX_TRANSPARENT_BACKGROUND;
dm_get_scr_bg_image(&inline_edit_scr_bg_ID, &inline_edit_scr_bg_filename, &inline_edit_scr_bg_x,
&inline_edit_scr_bg_y, &inline_edit_scr_bg_opacity);
dm_set_scr_bg_image(inline_edit_scr_bg_ID, inline_edit_scr_bg_filename, inline_edit_scr_bg_x, inline_edit_scr_bg_y, MMI_EDITOR_BG_OPACITY); //100605 editor opacity Calvin
#endif
/* 101105 Calvin End */
register_multiline_inputbox_input_callback(wgui_inline_edit_handle_multiline_inputbox_input);
wgui_inputbox_RSK_function = handle_inline_full_screen_edit_cancel;
redraw_current_inline_item = redraw_inline_full_screen_edit;
set_left_softkey_function(handle_inline_full_screen_edit_complete, KEY_EVENT_UP);
#if defined(__MMI_TOUCH_SCREEN__)|| defined(__MMI_HANDWRITING_PAD__)
mmi_pen_editor_set_inputbox_LSK_Function(handle_inline_full_screen_edit_complete);
#endif
gdi_layer_unlock_frame_buffer();
redraw_inline_full_screen_edit();
complete_inline_item_edit = handle_inline_full_screen_edit_close;
}
/// ATTACHMENT CONTROL////////////////////
#define ATTACHMENT_IMAGE_ITEM_HIGHLIGHTED 1
#define ATTACHMENT_IMAGE_ITEM_UNHIGHLIGHTED 0
#define ATTACHMENT_IMAGE_ITEM_ICON_MARGIN 4 /* Margin Between Icon of Inline item and start of Image Attachment Control */
#define ATTACHMENT_IMAGE_ICON_MARGIN 2 /* Margin Between Attachment Images in Image Attachment Control */
#define MAX_INLINE_IMAGE_ATTACHMENT_ITEMS 2
/* 0 ~ (MAX_INLINE_IMAGE_ATTACHMENT_ITEMS-1) inline items containing image attachments controls */
static wgui_inline_image_attachment wgui_inline_image_attachment_items[MAX_INLINE_IMAGE_ATTACHMENT_ITEMS];
static S32 n_inline_attach_items = 0;
/* 0 ~ (MAX_IMAGES_IN_INLINE_ATTACHMENT-1) images inside current image attachment control */
static S32 n_images_in_inline_attach_item = 0;
static wgui_inline_image_attachment *current_attach_control = NULL;
static MMI_BOOL attach_disable_flag = MMI_FALSE;
extern void show_attachment_images(S32 x1, S32 y1, S32 iwidth, S32 iheight,
wgui_inline_image_attachment * image_control, U8);
extern void handle_attachment_image(S32 x, S32 y, S32 width, S32 height, S32 key_code, S32 key_event, U8 ** text_p,
void *item, dword flags, U8 * history_buffer);
#ifdef __MMI_TOUCH_SCREEN__
extern BOOL inline_image_attachment_pen_handler(mmi_pen_event_type_enum pen_event, S16 x, S16 y,
mmi_gui_inline_item_pen_enum * item_event);
#endif /* __MMI_TOUCH_SCREEN__ */
void clear_inline_image_attachment_item(void)
{
/* FIXME. reset current_attach_control? */
clear_inline_item_keys = UI_dummy_function;
redraw_current_inline_item = UI_dummy_function;
ClearKeyHandler(KEY_LEFT_ARROW, KEY_EVENT_DOWN);
ClearKeyHandler(KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
#ifdef __MMI_TOUCH_SCREEN__
wgui_current_inline_item_pen_function = UI_dummy_inline_item_pen_function;
#endif /* __MMI_TOUCH_SCREEN__ */
}
void redraw_image_attachment_control(void)
{
wgui_inline_image_attachment *attach_item = current_attach_control;
#ifdef __MMI_TOUCH_SCREEN__
S32 x1;
gdi_layer_lock_frame_buffer();
if (attach_disable_flag)
x1 = attach_item->control_x1 + 17;
else
x1 = attach_item->control_x1;
pixtel_UI_draw_filled_area(x1, attach_item->control_y1, attach_item->control_x1 + attach_item->control_width - 1,
attach_item->control_y1 + attach_item->control_height - 1,
wgui_inline_select_fixed_text_menuitem_theme.selected_filler);
gdi_layer_unlock_frame_buffer();
gdi_layer_blt_previous(x1, attach_item->control_y1, attach_item->control_x1 + attach_item->control_width - 1,
attach_item->control_y1 + attach_item->control_height - 1);
#endif /* __MMI_TOUCH_SCREEN__ */
show_attachment_images(attach_item->control_x1, attach_item->control_y1,
attach_item->control_width, attach_item->control_height, attach_item,
ATTACHMENT_IMAGE_ITEM_HIGHLIGHTED);
}
void RegisterAttachmentLskFunction(InlineItem * item, void (*f) (UI_image_type image, UI_string_type str))
{
wgui_inline_image_attachment *attach_item;
if (f)
{
attach_item = (wgui_inline_image_attachment *) item->item;
attach_item->lsk_function = f;
}
}
void RegisterAttachmentRskFunction(InlineItem * item, void (*f) (UI_image_type image, UI_string_type str))
{
wgui_inline_image_attachment *attach_item;
if (f)
{
attach_item = (wgui_inline_image_attachment *) item->item;
attach_item->rsk_function = f;
}
}
void SetHighlightedAttachment(wgui_inline_item *inline_item, S32 index)
{
wgui_inline_image_attachment *image = (wgui_inline_image_attachment*)inline_item->item;
image->highlited_image = (S16) index;
}
/* Right arrow key handler */
void attach_control_right_arrow(void)
{
S32 temp_x1 = 0;
wgui_inline_image_attachment *image = current_attach_control;
gdi_layer_lock_frame_buffer();
image->highlited_image++;
if (image->highlited_image >= n_images_in_inline_attach_item)
image->highlited_image = 0;
if ( image->image_change_cb )
{
image->image_change_cb(image->highlited_image);
}
if (attach_disable_flag)
temp_x1 = image->control_x1 + 17;
else
temp_x1 = image->control_x1;
pixtel_UI_draw_filled_area(temp_x1, image->control_y1,
image->control_x1 + image->control_width - 1,
image->control_y1 + image->control_height - 1,
wgui_inline_select_fixed_text_menuitem_theme.selected_filler);
gdi_layer_unlock_frame_buffer();
show_attachment_images(image->control_x1, image->control_y1,
image->control_width, image->control_height, image, ATTACHMENT_IMAGE_ITEM_HIGHLIGHTED);
}
/* Left arrow key handler */
void attach_control_left_arrow(void)
{
S32 temp_x1 = 0;
wgui_inline_image_attachment *image = current_attach_control;
gdi_layer_lock_frame_buffer();
if (image->highlited_image == 0)
image->highlited_image = (S16) (n_images_in_inline_attach_item - 1);
else
image->highlited_image--;
if ( image->image_change_cb )
{
image->image_change_cb(image->highlited_image);
}
if (attach_disable_flag)
temp_x1 = image->control_x1 + 17;
else
temp_x1 = image->control_x1;
pixtel_UI_draw_filled_area(temp_x1, image->control_y1,
image->control_x1 + image->control_width - 1,
image->control_y1 + image->control_height - 1,
wgui_inline_select_fixed_text_menuitem_theme.selected_filler);
gdi_layer_unlock_frame_buffer();
show_attachment_images(image->control_x1, image->control_y1,
image->control_width, image->control_height, image, ATTACHMENT_IMAGE_ITEM_HIGHLIGHTED);
}
void ClearAllAttachmentImages(InlineItem * item, S32 attachments_present)
{
S32 i;
wgui_inline_image_attachment *attach_item;
attach_item = (wgui_inline_image_attachment *) item->item;
for (i = 0; i < attachments_present; i++)
{
attach_item->attach_image[i].image1 = 0;
pixtel_UI_strcpy((UI_string_type) (attach_item->attach_image[i].image_file_name), (UI_string_type) L"\0");
attach_item->attach_image[i].type_of_image = 0;
}
}
void ClearAttachmentImage(InlineItem * item, S32 index)
{
S32 i;
wgui_inline_image_attachment *attach_item;
attach_item = current_attach_control;
attach_item = (wgui_inline_image_attachment *) item->item;
for (i = index; i < MAX_IMAGES_IN_INLINE_ATTACHMENT; i++)
{
if (i == MAX_IMAGES_IN_INLINE_ATTACHMENT - 1)
{
attach_item->attach_image[i].image1 = 0;
pixtel_UI_strcpy((UI_string_type) (attach_item->attach_image[i].image_file_name), (UI_string_type) L"\0");
attach_item->attach_image[i].type_of_image = 0;
}
else
{
attach_item->attach_image[i].image1 = attach_item->attach_image[i + 1].image1;
pixtel_UI_strcpy((UI_string_type) (attach_item->attach_image[i].image_file_name),
(UI_string_type) (attach_item->attach_image[i + 1].image_file_name));
attach_item->attach_image[i].type_of_image = attach_item->attach_image[i + 1].type_of_image;
}
}
}
/* Add an image inside an image attachment inline item.
* This function should be called after SetInlineItemImageAttachment(). */
/* FIXME. we should change function prototype to pass the number of images as a parameter
* instead of using MAX_IMAGES_IN_INLINE_ATTACHMENT */
void AddEmailImageAttachmentUI(InlineItem * item, wgui_inline_images_detail * image_details)
{
wgui_inline_image_attachment *attach_item;
S32 i;
MMI_ASSERT((item->flags & 0xFF) == INLINE_ITEM_ATTACH_IMAGE);
attach_item = (wgui_inline_image_attachment *) item->item;
for (i = 0; i < MAX_IMAGES_IN_INLINE_ATTACHMENT; i++)
{
if (image_details[i].image1)
{
attach_item->attach_image[i].image1 = image_details[i].image1;
attach_item->attach_image[i].type_of_image = image_details[i].type_of_image;
pfnUnicodeStrcpy((PS8) attach_item->attach_image[i].image_file_name, (PS8) image_details[i].image_file_name);
}
}
}
/* Create an inline item containing image attachment */
void SetInlineItemImageAttachment(InlineItem * item,
UI_image_type image1,
UI_image_type image2,
UI_image_type image3, U16 title, U16 title_icon, U8 highlight_image)
{
wgui_inline_image_attachment *attach_item;
if (n_inline_attach_items >= MAX_INLINE_IMAGE_ATTACHMENT_ITEMS)
{
MMI_DBG_ASSERT(0);
return;
}
item->item = (void *)&wgui_inline_image_attachment_items[n_inline_attach_items];
item->flags = INLINE_ITEM_ATTACH_IMAGE;
item->show_img_flag = FALSE;
n_inline_attach_items++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -