在Blackberry编写邮件的窗体中加入控件

BerryMail新版本里有个附件预览的功能,COOL.具体可以参看这里,http://www.berrymail.cn/berrymail-v-1-2-0-0-now-available.html

顺便借一下它那里的图吧.

我第一眼看见这个图,惊呆了,够酷够炫,够强大.

考虑到预览图片,我觉得还是很简单的.整个预览的东西可以作为一个整体自定义一个控件,实际上这没什么困难的.

我唯一感兴趣的是如何在编写邮件的编辑器里加入这个控件呢.研究了一把,搞定.

先看看我做的结果 吧

 

 

 

直接贴代码,看看是如何实现的.

public static void main(String[] args) {
		EditorInEmail eie = new EditorInEmail();
		eie.addMenuItem();
	}
	
	/**
	 * Constructor
	 */
	public EditorInEmail() {
		
	}
	
	/**
	 * Add the menu items to email view/edit
	 */
	private void addMenuItem() {
		//define 
		AttachmentMenuItem attachMemuItem = new AttachmentMenuItem(0);
		
		//add the defined menu item into email view.
		ApplicationMenuItemRepository.getInstance()
			.addMenuItem(ApplicationMenuItemRepository.MENUITEM_EMAIL_EDIT
                          , attachMemuItem);
	}

下面是菜单的实现.

public class AttachmentMenuItem extends ApplicationMenuItem {

	public AttachmentMenuItem(int order) {
		super(order);
	}
	/**
	 * Override 
	 */
	public Object run(Object context) {
		//看起来这里有点难度,如何得到这个email窗体呢?
		
		//获取当前的UiApplication.
		UiApplication uiApp = UiApplication.getUiApplication();
		
		//狗日的,隐藏的够深的,screen的类型为
                //net.rim.device.apps.internal.blackberryemail.email.EmailEditorScreen
		//所以还是有个编辑email的窗体.
		Screen screen = uiApp.getActiveScreen();
		
		//让我试图在screen里加一个东西吧.
		screen.add(new EditField("Tips:","hello, I am embeddedd in Email Editor"));
		
		return context;
	}
	
	/**
	 * Returns a string which is the name of menu item.
	 */
	public String toString() {
		return "Add attachments";
	}
}

简要介绍一下思路.

  1. 在email编辑器的菜单上加入一个菜单
  2. 再实现这个菜单
  3. 最重要的是如何实现这个菜单.首先得到这个email编辑器窗体,其实就是当前active的窗体,如何得到,上面已经介绍方法了.有意思的是,这个窗体的类是net.rim.device.apps.internal.blackberryemail.email.EmailEditorScreen,你明白什么意思了吗.既然知道窗体了,加入field那就再简单不过了.

总结一下,其实很多功能不是你做不到,二是想不到.我很欣赏BM的这种精神.

5条评论

  1. net.rim.device.apps.internal.blackberryemail.email.EmailEditorScreen,
    API里没看到这个类耶

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注