掌桥专利:专业的专利平台
掌桥专利
首页

一种控件状态更新方法、装置、设备和存储介质

文献发布时间:2023-06-19 11:29:13


一种控件状态更新方法、装置、设备和存储介质

技术领域

本发明涉及控件显示更新技术领域,尤其涉及一种控件状态更新方法、装置、设备和存储介质。

背景技术

在GIS、测绘等相关领域的软件中,显示界面经常会包含大量的菜单按钮、工具按钮等控件。这些按钮会随着软件状态的改变,比如打开工程之后修改工程的按钮由不可用状态转变为可用状态,外部设备连接到软件后由原来的连接按钮变为断开连接按钮等。

现有的控件状态更新方法通常是在软件界面被某个操作触发之后,直接调用所有与该操作关联的控件来改变控件的状态。但随着控件数量的增多,软件结构复杂程度增加,各个控件之间存在相互影响,此时若是直接调用全部控件来进行控件状态的更新,容易导致软件耦合性增加,可读性下降,软件响应速度较慢甚至崩溃,不便于用户进行持续性操作。

发明内容

本发明提供了一种控件状态更新方法、装置、设备和存储介质,解决了现有的控件状态更新方法由于控件数量增加与软件结构日渐复杂所导致的软件耦合性增加,可读性下降,软件响应较慢的技术问题。

有鉴于此,本发明第一方面提供了一种控件状态更新方法,应用于测绘系统,所述测绘系统包括多个系统控件,所述方法包括:

实时监听是否发生状态变更事件;

当监听到发生所述状态变更事件时,根据所述状态变更事件更新预设的状态字典;

根据更新后的所述状态字典,对订阅所述状态变更事件的所述系统控件进行状态更新。

可选地,还包括:

当接收到针对新建控件的订阅请求时,根据所述订阅请求确定待添加状态变更事件;

在所述状态字典中增加所述待添加状态变更事件对应的待添加状态信息和当前键值;

在所述状态变更事件中增加所述待添加状态变更事件;

跳转执行所述实时监听是否发生状态变更事件的步骤。

可选地,所述当监听到发生所述状态变更事件时,根据所述状态变更事件更新预设的状态字典的步骤,包括:

当监听到发生所述状态变更事件时,检索预设的状态字典;所述状态字典包括多个状态信息和对应的键值;

从多个所述状态信息和多个所述键值中确定所述状态变更事件对应的目标状态信息和目标键值;

根据所述状态变更事件调整所述目标键值为更新键值,以更新所述状态字典。

可选地,所述根据更新后的所述状态字典,对订阅所述状态变更事件的所述系统控件进行状态更新的步骤,包括:

从更新后的所述状态字典中获取所述更新键值和所述目标状态信息,确定所述更新键值对应的目标控件状态;

获取订阅所述状态变更事件的所述系统控件中所述目标状态信息的当前控件状态;

若所述当前控件状态与所述目标控件状态不同,则更新所述当前控件状态为所述目标控件状态。

本发明第二方面还提供了一种控件状态更新装置,应用于测绘系统,所述测绘系统包括多个系统控件,所述装置包括:

事件监听模块,用于实时监听是否发生状态变更事件;

状态字典更新模块,用于当监听到发生所述状态变更事件时,根据所述状态变更事件更新预设的状态字典;

控件状态更新模块,用于根据更新后的所述状态字典,对订阅所述状态变更事件的所述系统控件进行状态更新。

可选地,还包括:

待添加事件确定模块,用于当接收到针对新建控件的订阅请求时,根据所述订阅请求确定待添加状态变更事件;

状态信息与键值增加模块,用于在所述状态字典中增加所述待添加状态变更事件对应的待添加状态信息和当前键值;

事件增加模块,用于在所述状态变更事件中增加所述待添加状态变更事件;

跳转模块,用于跳转执行所述实时监听是否发生状态变更事件的步骤。

可选地,所述状态字典更新模块,包括:

字典检索子模块,用于当监听到发生所述状态变更事件时,检索预设的状态字典;所述状态字典包括多个状态信息和对应的键值;

目标信息确定子模块,用于从多个所述状态信息和多个所述键值中确定所述状态变更事件对应的目标状态信息和目标键值;

字典更新子模块,用于根据所述状态变更事件调整所述目标键值为更新键值,以更新所述状态字典。

可选地,所述控件状态更新模块,包括:

目标控件状态确定子模块,用于从更新后的所述状态字典中获取所述更新键值和所述目标状态信息,确定所述更新键值对应的目标控件状态;

当前控件状态确定子模块,用于获取订阅所述状态变更事件的所述系统控件中所述目标状态信息的当前控件状态;

状态更新子模块,用于若所述当前控件状态与所述目标控件状态不同,则更新所述当前控件状态为所述目标控件状态。

本发明第三方面还提供了一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如本发明第一方面任一项所述的控件状态更新方法的步骤。

本发明第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被所述处理器执行时实现如本发明第一方面任一项所述的控件状态更新方法。

从以上技术方案可以看出,本发明具有以下优点:

本发明通过测绘系统实时监听当前时刻是否发生状态变更事件,若是发生状态变更事件,则可以根据状态变更事件对预创建在测绘系统的状态字典进行更新,而后根据更新后的状态字典,对订阅了状态变更事件的系统控件进行状态更新。从而解决现有的控件状态更新方法由于控件数量增加与软件结构日渐复杂所导致的软件耦合性增加,可读性下降,软件响应较慢的技术问题,进而降低软件耦合性,提高软件可读性和响应速度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本发明实施例一提供的一种控件状态更新方法的步骤流程图;

图2为本发明实施例二提供的一种控件状态更新方法的步骤流程图;

图3为本发明实施例三提供的一种控件状态更新装置的流程示意图;

图4为本发明实施例四提供的一种控件状态更新装置的结构框图。

具体实施方式

本发明实施例提供了一种控件状态更新方法、装置、设备和存储介质,用于解决现有的控件状态更新方法由于控件数量增加与软件结构日渐复杂所导致的软件耦合性增加,可读性下降,软件响应较慢的技术问题。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1,图1为本发明实施例一提供的一种控件状态更新方法的步骤流程图。

本发明提供的一种控件状态更新方法,应用于测绘系统,测绘系统包括多个系统控件,包括:

步骤101,实时监听是否发生状态变更事件;

测绘系统指的是能够提供空间数据的采集、管理、编辑、浏览、查询、分析、制图输出等功能,能够快速适应外业成图、内业编辑、成果输出、数据建库、空间分析、二次开发等各种应用场景的系统,例如GIS(Geographic Information System,地理信息系统)、信息化测绘软件(WalkISurvey)和CAD(Computer Aided Design,计算机辅助设计)等。

状态变更事件指的是当系统接收到外部触发时,系统状态由于该外部触发所出现的变更事件。外部触发的类型包括但不限于连接外设、断开外设、打开文件、关闭文件、关闭当前工程或创建工程等事件。

在本申请实施例中,为能够及时得知系统状态的变更,可以对状态变更事件的发生进行实时监听,以确定每个时刻的系统状态。

步骤102,当监听到发生状态变更事件时,根据状态变更事件更新预设的状态字典;

当监听到当前时刻发生了状态变更事件,说明当前时刻系统状态出现了变更,而系统中的系统控件的控件状态需要响应于状态变更事件进行更新。

为此在本申请实施例中预创建了状态字典,以记录每一系统控件的当前控件状态。此时可以根据状态变更事件对状态字典进行更新,以提供改变系统控件的控件状态的数据基础。

值得一提的是,状态字典中包括有系统的全部状态信息,每个状态信息均对应具有至少一个键值,每个键值代表在不同情况下状态信息所显示的状态。

步骤103,根据更新后的状态字典,对订阅状态变更事件的系统控件进行状态更新。

在状态字典更新后,由于系统状态的变更可能并不涉及到全部系统控件的控件状态变更。为节省资源消耗,可以根据更新后的状态字典,从中获取到系统控件的最新控件状态,对订阅了该状态变更事件的系统控件进行状态更新。

在本申请实施例中,通过测绘系统实时监听当前时刻是否发生状态变更事件,若是发生状态变更事件,则可以根据状态变更事件对预创建在测绘系统的状态字典进行更新,而后根据更新后的状态字典,对订阅了状态变更事件的系统控件进行状态更新。从而解决现有的控件状态更新方法由于控件数量增加与软件结构日渐复杂所导致的软件耦合性增加,可读性下降,软件响应较慢的技术问题,进而降低软件耦合性,提高软件可读性和响应速度。

请参阅图2,图2为本发明实施例二提供的一种控件状态更新方法的步骤流程图。

本发明提供的一种控件状态更新方法,应用于测绘系统,测绘系统包括多个系统控件,包括:

步骤201,实时监听是否发生状态变更事件;

测绘系统指的是能够提供空间数据的采集、管理、编辑、浏览、查询、分析、制图输出等功能,能够快速适应外业成图、内业编辑、成果输出、数据建库、空间分析、二次开发等各种应用场景的系统,例如GIS(Geographic Information System,地理信息系统)、信息化测绘软件(WalkISurvey)和CAD(Computer Aided Design,计算机辅助设计)等。

状态变更事件指的是当系统接收到外部触发时,系统状态由于该外部触发所出现的变更事件。外部触发的类型包括但不限于连接外设、断开外设、打开文件、关闭文件、关闭当前工程或创建工程等事件。

在本申请实施例中,为能够及时得知测绘系统中的状态变更,可以对状态变更事件的发生进行实时监听,以确定每个时刻的系统状态。

值得一提的是,为进一步节省资源消耗和提高系统响应速度,状态变更事件可以通过唯一标识符的形式进行表示,例如采用ON_DEVICE_CONNECTED代表测绘系统的外设连接状态改变的事件。

步骤202,当监听到发生状态变更事件时,根据状态变更事件更新预设的状态字典;

可选地,步骤202可以包括以下子步骤S11-S13:

S11、当监听到发生状态变更事件时,检索预设的状态字典;状态字典包括多个状态信息和对应的键值;

S12、从多个状态信息和多个键值中确定状态变更事件对应的目标状态信息和目标键值;

S13、根据状态变更事件调整目标键值为更新键值,以更新状态字典。

值得一提的是,状态字典包括多个状态信息和对应的键值,其中每个状态信息可以对应具有至少一个键值,以存储整个测绘系统的全部状态信息。

在本申请实施例中,当测绘系统监听到状态变更事件时,可以对预设的状态字典进行检索操作,从状态字典中确定到状态变更事件所对应的目标状态信息和目标键值,以确定状态变更事件所影响到的状态信息是哪些,需要修改的键值是哪些;再根据状态变更事件的变更内容,将目标键值调整为更新键值,以实现对状态字典的更新。

例如,在状态字典中,状态信息is_connected=1代表外设已连接,1为目标键值,当状态变更事件为外设断开时,此时可以把目标键值调整为0,以表示外设已断开;状态信息is_project_opened=1代表工程被打开,1为目标键值,当状态变更事件为关闭工程时,此时可以把目标键值调整为0,以表示当前无工程被打开,本申请实施例对目标键值的具体数值设置并不限制。

步骤203,根据更新后的状态字典,对订阅状态变更事件的系统控件进行状态更新。

进一步地,步骤203可以包括以下子步骤S21-S23:

S21、从更新后的状态字典中获取更新键值和目标状态信息,确定更新键值对应的目标控件状态;

S22、获取订阅状态变更事件的系统控件中目标状态信息的当前控件状态;

S23、若当前控件状态与目标控件状态不同,则更新当前控件状态为目标控件状态。

在本申请的一个示例中,在对状态字典进行更新后,从更新后的状态字典中获取到更新键值和目标状态信息,此时可以基于预先设置的键值与控件状态之间的唯一对应关系,确定更新键值对应的目标控件状态。

而在具体实现中,同一系统控件可能同时存在多个状态信息,例如是否显示名称、是否显示图标、是否连接外设等。此时需要确定更新键值所更改的目标控件状态是哪个,可以先根据状态字典中的目标状态信息,从订阅了状态变更事件的系统控件中定位待改变的状态信息,再获取该状态信息的当前控件状态。最后若是当前控件状态与目标控件状态不同,则可以将当前状态更新为目标控件状态,以完成对系统控件的状态更新。

步骤204,当接收到针对新建控件的订阅请求时,根据订阅请求确定待添加状态变更事件;

在本申请实施例中,用户还可以对测绘系统进行控件创建,以增加新的功能按钮或属性显示控件等,当在测绘系统中创建了新建控件后,可以进一步输入针对新建控件需要关联的状态变更事件的订阅请求,当测绘系统接收到该订阅请求后,可以对订阅请求进行解析,以得到新建控件所需要的待添加状态变更事件。

其中,待添加状态变更事件指的是当测绘系统发生某个状态变更时,需要改变新建控件的控件状态的操作事件。

步骤205,在状态字典中增加待添加状态变更事件对应的待添加状态信息和当前键值;

在得到待添加状态变更事件后,为使后续新建控件的控件状态能够被变更,可以在状态字典中增加待添加状态变更事件所对应的待添加状态信息和当前键值。

其中,当前键值所反映的是新建控件当前的控件状态,具体可以包括多个键值以对应的待添加状态信息的不同状态。

步骤206,在状态变更事件中增加待添加状态变更事件;

在本申请实施例中,在在状态字典中增加待添加状态变更事件对应的待添加状态信息和当前键值的同时,还可以在状态变更事件中增加待添加状态变更事件,以便于后续进行统一监听。

步骤207,跳转执行实时监听是否发生状态变更事件的步骤。

在状态变更事件中增加待添加状态变更事件后,说明此时系统也能够监听到该待添加状态变更事件,此时可以返回到步骤201,以继续持续实时监听系统内是否发生状态变更事件,进而判断是否需要对新建控件进行状态更新。

在本申请实施例中,通过测绘系统实时监听当前时刻是否发生状态变更事件,若是发生状态变更事件,则可以根据状态变更事件对预创建在测绘系统的状态字典进行更新,而后根据更新后的状态字典,对订阅了状态变更事件的系统控件进行状态更新。从而解决现有的控件状态更新方法由于控件数量增加与软件结构日渐复杂所导致的软件耦合性增加,可读性下降,软件响应较慢的技术问题,进而降低软件耦合性,提高软件可读性和响应速度。

请参阅图3,图3为本发明实施例三提供的一种控件状态更新装置的流程示意图。

本发明提供的一种控件状态更新装置,可以包括通知者IEventManager接口和多个观察者IEventHandler接口,预存有状态字典,状态字典中存储有测绘系统的所有状态信息,每个状态信息对应有至少一个键值,以表明该状态信息对应的系统控件的当前控件状态。

通过IEventManager接口对测绘系统的状态改变事件进行实时监听,当监听到状态改变事件时,对状态改变事件进行广播。其中,状态改变事件可以同步包括多个事件1、事件2、......、事件N等,对状态字典中的状态信息的键值进行更新,同时调用notify方法实例通知到订阅该状态改变事件的IEventHandler 1、IEventHandler2、……和IEventHandler N等。

IEventHandler接口响应于接收到的事件通知,从更新后的状态字典中确定更新后的键值对应的控件状态,对系统控件1、2、……、N进行状态更新,然后继续通过IEventManager接口对测绘系统的状态改变事件进行实时监听。

值得一提的是,本装置中还可以包括有EventRegisterHelper接口,用于接收各个系统控件对状态改变事件的订阅;IEventManager接口中还包括registerEventHandler方法实例,用于注册新建控件以及该新建控件订阅的待添加状态改变事件;以及unregisterEventHandler方法实例,用于取消所注册的系统控件和删除该系统控件订阅的某个状态改变事件。

请参阅图4,图4为本发明实施例四提供的一种控件状态更新装置的结构框图。

本发明实施例提供了一种控件状态更新装置,应用于测绘系统,测绘系统包括多个系统控件,装置包括:

事件监听模块401,用于实时监听是否发生状态变更事件;

状态字典更新模块402,用于当监听到发生状态变更事件时,根据状态变更事件更新预设的状态字典;

控件状态更新模块403,用于根据更新后的状态字典,对订阅状态变更事件的系统控件进行状态更新。

可选地,还包括:

待添加事件确定模块,用于当接收到针对新建控件的订阅请求时,根据订阅请求确定待添加状态变更事件;

状态信息与键值增加模块,用于在状态字典中增加待添加状态变更事件对应的待添加状态信息和当前键值;

事件增加模块,用于在状态变更事件中增加待添加状态变更事件;

跳转模块,用于跳转执行实时监听是否发生状态变更事件的步骤。

可选地,状态字典更新模块402,包括:

字典检索子模块,用于当监听到发生状态变更事件时,检索预设的状态字典;状态字典包括多个状态信息和对应的键值;

目标信息确定子模块,用于从多个状态信息和多个键值中确定状态变更事件对应的目标状态信息和目标键值;

字典更新子模块,用于根据状态变更事件调整目标键值为更新键值,以更新状态字典。

可选地,控件状态更新模块403,包括:

目标控件状态确定子模块,用于从更新后的状态字典中获取更新键值和目标状态信息,确定更新键值对应的目标控件状态;

当前控件状态确定子模块,用于获取订阅状态变更事件的系统控件中目标状态信息的当前控件状态;

状态更新子模块,用于若当前控件状态与目标控件状态不同,则更新当前控件状态为目标控件状态。

本发明实施例还提供了一种电子设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如本发明任一实施例所述的控件状态更新方法的步骤。

本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被所述处理器执行时实现如本发明任一实施例所述的控件状态更新方法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 一种控件状态更新方法、装置、设备和存储介质
  • 一种设备位置更新方法、装置、电子设备及存储介质
技术分类

06120112942349