⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wgui_inline_edit.c

📁 The font library converting tool MCT mainly introduces the process of the font formats to give us a
💻 C
📖 第 1 页 / 共 5 页
字号:
			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 + -