一种创建会话窗口的方法及装置的制作方法

文档序号:7745845阅读:185来源:国知局
专利名称:一种创建会话窗口的方法及装置的制作方法
技术领域
本发明涉及计算机领域,特别涉及一种创建会话窗口的方法及装置。
背景技术
会话窗口是即时通信软件的重要组成部分。在即时通信软件中,会话窗口的基本功能是为联系人提供信息交流的界面。其中,建立一个窗口并在该窗口中设置编辑区域,再为该窗口建立聊天信道,就得到具有基本功能的会话窗口。另外,如果需要在会话窗口中承载丰富的应用,则在具有基本功能的会话窗口上加载实现应用的插件并设置每个插件之间进行交互的交互代码。在实现本发明的过程中,发明人发现现有技术至少存在以下问题如果需要改变会话窗口的布局、升级会话窗口中的部分插件或通过修改原会话窗口的部分插件开发出新的会话窗口,则需要修改原会话窗口中的每个插件之间的交互代码,如此增加了开发难度和成本。

发明内容
为了能够减轻开发难度以及减少开发成本,本发明提供了一种创建会话窗口的方法及装置。所述技术方案如下—种创建会话窗口的方法,其特征在于,所述方法包括接收创建请求,所述创建请求中携带会话类型;创建母板以及获取所述会话类型对应的脚本描述,所述脚本描述中至少包括会话区子控件;将所述脚本描述中描述的每个子控件填充在所述母板中;在所述母板中注册所述每个子控件,使所述每个子控件与所述母板交互,将所述母板粘贴在窗口得到会话窗口,并为所述会话窗口建立聊天通道。所述将所述脚本描述中描述的每个子控件填充在所述母板中,具体包括通过对所述脚本描述进行解析,获取所述每个子控件的标识和所述每个子控件的布局信息;根据所述会话类型和所述每个子控件的标识,获取所述每个子控件的界面部分和逻辑部分;根据所述每个子控件的布局信息,将所述每个子控件的界面部分填充在所述母板中,并对所述每个子控件的界面部分和逻辑部分进行绑定。所述根据所述会话类型和所述每个子控件的标识,获取所述每个子控件的界面部分和逻辑部分,具体包括根据所述每个子控件的标识,从标识与界面部分的对应关系中查找所述每个子控件的界面部分;根据所述会话类型和所述每个子控件的标识,从标识、会话类型与逻辑部分的对应关系中查找所述每个子控件的逻辑部分。所述子控件包括界面部分和逻辑部分,且任意两个子控件通过所述母板进行交互。所述方法还包括 在所述会话窗口中,如果所述母板接收到事件,查询所述母板中的每个子控件,如果查询出能够处理所述事件的子控件,则将所述事件交于所述查询的子控件处理。一种创建会话窗口的装置,所述装置包括接收模块,用于接收创建请求,所述创建请求中携带会话类型;创建模块,用于创建母板以及获取所述会话类型对应的脚本描述,所述脚本描述中至少包括会话区子控件;填充模块,用于将所述脚本描述中描述的每个子控件填充在所述母板中;注册模块,用于在所述母板中注册所述每个子控件,使所述每个子控件与所述母板交互,将所述母板粘贴在窗口得到会话窗口,并为所述会话窗口建立聊天通道。所述填充模块具体包括第一获取单元,用于通过对所述脚本描述进行解析,获取所述每个子控件的标识和所述每个子控件的布局信息;第二获取单元,用于根据所述会话类型和所述每个子控件的标识,获取所述每个子控件的界面部分和逻辑部分;填充单元,用于根据所述每个子控件的布局信息,将所述每个子控件的界面部分填充在所述母板中,并对所述每个子控件的界面部分和逻辑部分进行绑定。 所述第二获取单元具体包括第一查找子单元,用于根据所述每个子控件的标识,从标识与界面部分的对应关系中查找所述每个子控件的界面部分;第二查找子单元,用于根据所述会话类型和所述每个子控件的标识,从标识、会话类型与逻辑部分的对应关系中查找所述每个子控件的逻辑部分。所述子控件包括界面部分和逻辑部分,且任意两个子控件通过所述母板进行交互。所述装置还包括查询模块,用于在所述会话窗口中,如果所述母板接收到事件,查询所述母板中的每个子控件,如果查询出能够处理所述事件的子控件,则将所述事件交于所述查询的子控件处理。通过创建母板,并将脚本描述中描述的每个子控件填充在母板中,通过将每个子控件注册在母板中,使得每个子控件与母板直接互交,再将母板放置在窗口中得到会话窗口,其中,会话窗口中的每个子控件相互独立,任意两个子控件通过母板进行交互,还可以通过子控件承载插件使会话窗口具有丰富的应用。由于会话窗口中任意两个子控件之间不存在交互代码,因此改变原会话窗口的布局时,不需要修改每个子控件之间的交互代码;如果升级原会话窗口或在原会话窗口中开发新会话窗口,则只要对升级的部分或修改的部分所在的子控件进行修改,而该子控件与其他子控件相互独立,所以其他部分继承原会话窗口,如此减轻开发难度和减少开发成本。


图1是本发明实施例1提供的一种创建会话窗口的方法流程图;图2是本发明实施例2提供的一种创建会话窗口的方法流程图;图3是本发明实施例2提供的第一种母板示意图;图4是本发明实施例2提供的第二种母板示意图;图5是本发明实施例3提供的一种创建会话窗口的方法流程图;图6是本发明实施例4提供的一种创建会话窗口的装置示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。实施例1如图1所示,本发明实施例1提供了一种创建会话窗口的方法,包括步骤101 接收创建请求,其中,该创建请求中携带会话类型;步骤102 创建母板并获取该会话类型对应的脚本描述,其中,脚本描述中至少包括ChatMsg (会话区)子控件;步骤103 将该脚本描述中描述的每个子控件填充在母板中;步骤104 通过在母板中注册每个子控件使每个子控件与母板交互,将母板粘贴在窗口得到会话窗口,并为会话窗口建立聊天通道。 其中,母板中的任意两个子控件都相互独立且不可以直接交互。ChatMsg具有实现编辑界面的功能,在母板中填充ChatMsg子控件,可以使创建的会话窗口具有编辑界面,联系人可以在该编辑界面中进行信息交流。在本发明实施例中,通过创建母板,并将脚本描述中描述的每个子控件填充在母板中,通过将每个子控件注册在母板中,使得每个子控件与母板直接互交,再将母板放置在窗口中得到会话窗口,其中,会话窗口中的每个子控件相互独立,任意两个子控件通过母板进行交互,还可以通过子控件承载插件使会话窗口具有丰富的应用。由于会话窗口中任意两个子控件之间不存在交互代码,因此改变原会话窗口的布局时,不需要修改每个子控件之间的交互代码;如果升级原会话窗口或在原会话窗口中开发新会话窗口,则只要对升级的部分或修改的部分所在的子控件进行修改,而该子控件与其他子控件相互独立,所以其他部分继承原会话窗口,如此减轻开发难度和减少开发成本,且使得会话窗口具有高内聚低耦合的特性。实施例2如图2所示,本发明实施例提供了一种创建会话窗口的方法,包括步骤201 接收会话请求,其中,该会话请求中携带会话类型;其中,会话请求是由外部事件引起的,会话类型包括好友类型、群类型、讨论组类型或临时会话类型等。例如,对于用于聊天的即时通信软件,在该即时通信软件的主面板的好友列表中,用户利用鼠标等双击某个好友的头像,该主面板生成会话请求并在会话请求中携带会话类型为好友类型。其中,外部事件为用户双击该好友的头像。
步骤202 创建母板,根据会话请求中携带的会话类型获取该会话类型对应的脚本描述,其中,母板包括界面部分和逻辑部分;其中,母板为一个控件,在母板中可以填充其他的子控件。在本实施例中,分别以对象的形式实现母板中的界面部分和逻辑部分,界面部分提供了会话窗口的轮廓,如图3 所示的一种母板的界面部分。其中,技术人员事先建立并存储每种会话类型对应的脚本描述。在脚本描述中事先规定用于填充母板的每个子控件的控件名,以及在母板中各子控件的布局信息。因此, 脚本描述包括两部分内容一部分规定用于填充母板的所有子控件的控件名,另一部分为每个子控件的布局信息包括位置、大小、间隙或底图等。脚本描述可以是XMUExtensible Markup Language,可扩展标记语言)代码,并以XML文件的形式存在。如下所示的即时通信软件中的好友类型所对应的脚本描述,该脚本描述的代码为〈Control name = “ MainBorad" ><DockPanel><ProfileCtrl name =<ToolbarCtrl name =<SidebarCtrl name =<PromptCtrl name = 〃<BottomCtrl name ="<ChatMsgCtrl name =</DockPanel>〈/Control〉上述脚本描述中描述了六个子控件的控件名分别为“Pr0file”、“T00lbar”、 “Sidebar”、“Prompt”、“BottomFrame”和“ChatMsg”,以及每个子控件在母板中的位置分别为 “Top,,、“Top,,、“Right,,、“Top,,、“Bottom,,和 “Fi 11 ”。其中,在本实施例中,技术人员可以根据不同的即时通信软件产品的要求,在脚本描述中设置用于填充母板的子控件以及每个子控件的布局,从而能够满足即时通信软件产品的个性化要求。步骤203 通过对获取的脚本描述进行解析,获取用于填充母板的所有子控件的控件名,以及每个子控件的布局信息;其中,由于会话窗口的基本功能是为联系人提供信息交流的界面,因此,每种会话类型对应的脚本描述都存在实现基本功能的ChatMsg子控件。例如,从步骤202中的好友类型对应的脚本描述中获取用于填充母板的每个子控件的控件名分别为 Profile,,、“Toolbar,,、“Sidebar,,、“Prompt,,、“BottomFrame” 和“ ChatMsg ”,以及每个子控件在母板中的位置分别为“ Top ”、“ Top ”、“ Ri ght ”、“ Top ”、 "Bottom,,禾口 “Fill”。步骤204 根据获取的每个控件名,获取每个子控件的界面部分,并利用每个子控件的界面部分填充母板;具体地,根据获取的每个控件名,从控件名与界面部分的对应关系中查找每个子控件的界面部分,根据每个子控件的布局信息,将每个子控件的界面部分填充在母板中。
“ProfileCtrl" dock=" Top" /> “ToolbarCtrl “ dock=" Top" /> “SidebarCtrl “ dock=" Right" /> PromptCtrl “ dock = “ Top" /> BottomCtrl “ dock=" Bottom" /> “ChatMsgCtrl“ dock = “ Fill" />
其中,参照脚本描述中描述的每个子控件的顺序,依次将每个子控件的界面部分填充在母板中。另外,每个子控件包括界面部分和逻辑部分,在本实施例中以对象的数据结构来实现界面部分和逻辑部分。其中,对于同一控件名可以对应多种会话类型的子控件,但每个子控件的界面部分都相同而逻辑部分都互不相同。例如,对于“I^rofile”子控件,好友类型的“ftOfile”子控件和群类型的“I^rofile”子控件的界面部分都相同而逻辑部分互不相同。技术人员事先开发每个子控件对应的一个界面部分和对应的一个或多个逻辑部分;并将界面部分和逻辑部分分开存储。其中,技术人员事先存储控件名与界面部分的对应关系如表1所示,以及控件名、会话类型与逻辑部分的三者对应关系如表2所示。表 1
控件名界面部分ProfileProfile的界面部分SidebarSidebar的界面部分表2
控件名会话类型逻辑部分Profile好友类型好友类型的ft"ofile的逻辑部分Sidebar好友类型好友类型的Sidebar的逻辑部分Profile群类型群类类型的ftOfile的逻辑部分其中,通过将每个子控件的界面部分填充整个母板,使得整个母板被划分成多个区域,每个子控件即为一个区域。例如,根据控件名“1^0打16”、“1100让&1~”、“51(16卜&1~”、叩1~011^^”、“80 011^仪1116,,和 “ChatMsg”从如表1所示的控件名与界面部分,分别获取“Profile”子控件、“Toolbar”子控件、“Sidebar”子控件、“ftx)mpt”子控件、“BottomFrame”子控件和“ChatMsg”子控件的界面部分;然后参照脚本描述中的每个子控件的顺序,首先根据“ftOfile”子控件的位置 “Top”,将“Profile”子控件的界面部分填充在如图3所示母板的顶部;然后根据“Toolbar” 子控件的位置“Top”,将“Toolbar”子控件的界面部分填充在母板的剩下部分的顶部;再根据“Sidebar”子控件的位置“Right”,将“Sidebar”子控件的界面部分填充在母板的剩下部分的右边。按上述相同的方法分别将剩下的每个子控件的界面部分填充在如图3所示的母板中,得到的填充后的母板如图4所示。其中,在如图4所示的母板中,Profile为资料区,Toolbar为顶部按扭区,Sidebar为扩展区,Prompt为提示区和ChatMsgCtrl为会话区。步骤205 根据获取的每个控件名和携带的会话类型,获取每个子控件的逻辑部分,并将每个子控件的逻辑部分绑定在其自身的界面部分上;具体地,根据获取的每个控件名和携带的会话类型,从控件名、会话类型与逻辑部分的三者对应关系中查找每个子控件的逻辑部分,在母板中将每个子控件的逻辑部分与其自身的界面部分进行绑定。例如,根据获取的控件名“Profile”,从如表2所示的控件名、会话类型和逻辑部分的三者对应关系中,查找“Profile”子控件的逻辑部分,在如图4所示的母板中将 “I^ofile”子控件的逻辑部分与界面部分进行绑定。按上述相同的方法对剩下的每个子控件的界面部分和逻辑部分进行绑定。其中,在实现具体的某个即时通信软件产品时,为了能够使会话窗口承载更多丰富的应用,将实现应用的插件加载到母板中的子控件上。其中,子控件的界面部分可以承载插件的图标等,子控件的逻辑部分提供接口功能,可以与插件进行交互。将子控件的界面部分与逻辑部分绑定在一起,就可以实现当用户单击界面部分承载的插件的图标时,逻辑部分与插件进行交互并运行插件。步骤206 通过在母板中注册每个子控件,使每个子控件能够与母板直接交互,建立窗口,并将母板放置在建立的窗口中,得到会话窗口 ;其中,在母板中注册每个子控件的步骤具体为在母板的逻辑部分中为每个子控件设置一个指针,该指针用于母板与子控件进行交互。在本实施例中,母板中的每个子控件都是相互独立地,任意两个子控件不可以直接进行交互。如果两个子控件需要交互信息,则其中一个子控件先与母板的逻辑部分进行交互信息,母板的逻辑部分通过指针调用另一个子控件,再与另一个子控件进行交互信息,如此完成该两子控件进行交互信息。其中,在本实施例中,每个子控件都为自定义控件,在母板中每个子控件都相互独立且不可以直接交互,而通过将每个子控件注册在母板中,使得每个子控件都可以直接与母板交互,而任意两个子控件都通过母板进行交互。其中,由于控件不能够单独显示,所以母板以及母板中填充的子控件不能单独地显示,因此,必须将母板放置在窗口中,才能以会话窗口的形式显示。另外,在本实施例中, 也可以当接收到会话请求后就建立窗口,如此,在本步骤中当在母板注册完每个子控件后, 直接将母板放置在会话窗口中。步骤207 为该会话窗口建立聊天信道,其中,该会话窗口至少能够为联系人提供信息交流的界面。其中,先建立一个kssion (会话),将整个会话窗口粘贴在建立的kssion中,由 kssion建立聊天信道并维护聊天信道。另外,Session还负责会话窗口与即时通信软件的主面板之间的信息交互。进一步地,对于即时通信软件,由于可以同时存在多个会话窗口,每个会话窗口对应一个kssion,为了便于管理每个kssion,因此设置Session管理器并将建立的新 Session注册在该kssion管理器中。进一步地,当会话窗口的母板接收到某个事件时,母板根据注册在自身的每个子控件的指针,查询每个子控件,如果查询出能够处理该事件的子控件,则将该事件交于查询出的子控件处理。进一步地,如果需要使会话窗口中具有丰富的应用,则可以将插件加载到会话窗口中的子控件中,使会话窗口承载更多丰富的应用。例如,需要在会话窗口中承载联系人的虚拟形象这个应用,则在会话窗口中,只要将联系人的虚拟形象加载到Sidebar的界面部分,并通过Sidebar的逻辑部分与实现虚拟形象的插件进行交互。其中,由于会话窗口中的每个子控件是互相独立且不可以直接交互,所以会话窗口中的任意一个子控件中的插件与其他子控件中的插件相互独立且不可以直接交互,任意两子控件通过母板进行交互,所以当需要改变会话窗口的布局时,只要改变会话窗口中的子控件的布局,且改变布局后不需要对会话窗口中各插件的交互代码进行修改,如此减少开发成本;当对某个即时通信软件产品的会话窗口进行升级时,只需要对升级的部分所在的子控件进行修改,其他的部分继承原会话窗口,如此减轻新功能开发难度且减少开发成本;当在某个即时通信软件产口的会话窗口的基础上开发另一个会话窗口时,只要对修改的部分所在的子控件进行修改,而其他的部分继承原会话窗口,如此减轻新产品开发难度且减少开发成本。其中,在即时通信软件中,可以同时创建多个会话窗口,每个会话窗口的会话类型可以不全相同,在本实施例中,可以为该即时通信软件创建一个树,在该树中,每个叶子节点用于标识创建的会话窗口 ;会话类型都相同的叶子节点具有公共的父节点,该父节点用于标识这些叶子节点所属的会话类型;每个用于标识会话类型的节点具有公共的父节点, 该父节点用于标识该即时通信软件。其中,树中的每个节点的数据结构可以为接口。其中,在本实施例中,可以对创建的母板进行横向切割,采用分层的方式将母板分解成展示层、逻辑层和数据通信层等,然后,通过展示层承载每个子控件的界面部分,数据通信层负责与子控件交互并进行会话消息的收发,逻辑层负责将展示层和数据通信层连接起来。在本发明实施例中,在脚本描述中设置用于填充母板的每个子控件,并将每个子控件填充在母板中,将母板放置在窗口中得到会话窗口。由于会话窗口中的每个子控件相互独立,任意两个子控件中承载的插件也相互独立,因此改变原会话窗口的布局时,不需要修改每个插件之间的交互代码,在原会话窗口中开发新会话窗口,则只要对修改的部分所在的子控件进行修改,而其他的部分继承原会话窗口,如此减轻开发难度和减少开发成本, 且使得会话窗口具有高内聚低耦合的特性。实施3如图5所示,本发明实施例提供了一种创建会话窗口的方法,包括步骤301 接收创建请求,其中,该创建请求中携带会话类型;其中,会话请求是由外部事件引起的,会话类型包括好友类型、群类型、讨论组类型或临时会话类型等。例如,对于用于聊天的即时通信软件,在该即时通信软件的主面板的好友列表中,用户利用鼠标等双击某个好友的头像,该主面板生成会话请求并在会话请求中携带会话类型为好友类型。其中,外部事件为用户双击该好友的头像。步骤302 根据创建请求中携带的会话类型创建对应的母板,以及获取该会话类型对应的脚本描述;其中,技术人员事先建立并存储每种会话类型对应的脚本描述。在脚本描述中事先规定用于填充母板的每个子控件的控件ID,以及每个子控件在母板中的布局信息。所以在本实施例中,脚本描述包括两部分内容分别为一部分为用于填充母板的每个子控件的控件ID,另一部分为每个子控件的布局信息包括位置、大小、间隙或底图等。如下所示的即时通信软件中的好友类型所对应的脚本描述,该脚本描述的代码为
权利要求
1.一种创建会话窗口的方法,其特征在于,所述方法包括接收创建请求,所述创建请求中携带会话类型;创建母板以及获取所述会话类型对应的脚本描述,所述脚本描述中至少包括会话区子控件;将所述脚本描述中描述的每个子控件填充在所述母板中;在所述母板中注册所述每个子控件,使所述每个子控件与所述母板交互,将所述母板粘贴在窗口得到会话窗口,并为所述会话窗口建立聊天通道。
2.如权利要求1所述的方法,其特征在于,所述将所述脚本描述中描述的每个子控件填充在所述母板中,具体包括通过对所述脚本描述进行解析,获取所述每个子控件的标识和所述每个子控件的布局 fn息;根据所述会话类型和所述每个子控件的标识,获取所述每个子控件的界面部分和逻辑部分;根据所述每个子控件的布局信息,将所述每个子控件的界面部分填充在所述母板中, 并对所述每个子控件的界面部分和逻辑部分进行绑定。
3.如权利要求2所述的方法,其特征在于,所述根据所述会话类型和所述每个子控件的标识,获取所述每个子控件的界面部分和逻辑部分,具体包括根据所述每个子控件的标识,从标识与界面部分的对应关系中查找所述每个子控件的界面部分;根据所述会话类型和所述每个子控件的标识,从标识、会话类型与逻辑部分的对应关系中查找所述每个子控件的逻辑部分。
4.如权利要求1-3任意一项权利要求所述的方法,其特征在于,所述子控件包括界面部分和逻辑部分,且任意两个子控件通过所述母板进行交互。
5.如权利要求1-3任意一项权利要求所述的方法,其特征在于,所述方法还包括在所述会话窗口中,如果所述母板接收到事件,查询所述母板中的每个子控件,如果查询出能够处理所述事件的子控件,则将所述事件交于所述查询的子控件处理。
6.一种创建会话窗口的装置,其特征在于,所述装置包括接收模块,用于接收创建请求,所述创建请求中携带会话类型;创建模块,用于创建母板以及获取所述会话类型对应的脚本描述,所述脚本描述中至少包括会话区子控件;填充模块,用于将所述脚本描述中描述的每个子控件填充在所述母板中;注册模块,用于在所述母板中注册所述每个子控件,使所述每个子控件与所述母板交互,将所述母板粘贴在窗口得到会话窗口,并为所述会话窗口建立聊天通道。
7.如权利要求6所述的装置,其特征在于,所述填充模块具体包括第一获取单元,用于通过对所述脚本描述进行解析,获取所述每个子控件的标识和所述每个子控件的布局信息;第二获取单元,用于根据所述会话类型和所述每个子控件的标识,获取所述每个子控件的界面部分和逻辑部分;填充单元,用于根据所述每个子控件的布局信息,将所述每个子控件的界面部分填充在所述母板中,并对所述每个子控件的界面部分和逻辑部分进行绑定。
8.如权利要求7所述的装置,其特征在于,所述第二获取单元具体包括第一查找子单元,用于根据所述每个子控件的标识,从标识与界面部分的对应关系中查找所述每个子控件的界面部分;第二查找子单元,用于根据所述会话类型和所述每个子控件的标识,从标识、会话类型与逻辑部分的对应关系中查找所述每个子控件的逻辑部分。
9.如权利要求6-8任意一项权利要求所述的装置,其特征在于,所述子控件包括界面部分和逻辑部分,且任意两个子控件通过所述母板进行交互。
10.如权利要求6-8任意一项权利要求所述的装置,其特征在于,所述装置还包括 查询模块,用于在所述会话窗口中,如果所述母板接收到事件,查询所述母板中的每个子控件,如果查询出能够处理所述事件的子控件,则将所述事件交于所述查询的子控件处理。
全文摘要
本发明公开了一种创建会话窗口的方法及装置,属于计算机领域。所述方法包括接收创建请求,所述创建请求中携带会话类型;创建母板以及获取所述会话类型对应的脚本描述,所述脚本描述中至少包括会话区子控件;将所述脚本描述中描述的每个子控件填充在所述母板中;在所述母板中注册所述每个子控件,使所述每个子控件与所述母板交互,将所述母板粘贴在窗口得到会话窗口,并为所述会话窗口建立聊天通道。所述装置包括接收模块、创建模块、填充模块和注册模块。本发明能够减轻开发新会话窗口的难度以及减少开发成本。
文档编号H04L12/58GK102214090SQ201010144498
公开日2011年10月12日 申请日期2010年4月9日 优先权日2010年4月9日
发明者刘晓宇, 李斌, 栾涛, 王文涛, 陈曦 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1