isHarryh / Ark-Pets

Arknights Desktop Pets | 明日方舟桌宠
https://arkpets.harryh.cn
GNU General Public License v3.0
519 stars 33 forks source link

[Feature Request] 系统托盘图标功能增强 #40

Closed MegaSteelX closed 9 months ago

MegaSteelX commented 1 year ago

1.请求添加多个ArkPets窗口时整合在同一个系统托盘图标的二级菜单中,而非目前添加多个系统托盘图标,造成一定的识别困难和图标拥挤 2.请求在系统托盘图标的一级菜单中添加打开ArkPets管理窗口的功能,避免目前只能从安装路径打开的麻烦

isHarryh commented 1 year ago

关于请求1:目前桌宠本体采用多实例,故每个桌宠具有独立的托盘。如果需要实现托盘整合,需要重构程序的实例逻辑。

关于请求2:这个功能可以考虑实现。(但在安装exe的情况下双击快捷方式也挺快的吧?)

isHarryh commented 9 months ago

本议题的所有特性已于 #59 得到初步实现,并于 #60 、 3253706fde859a316b3e08362dd57adb98c1df8c 、 7b2e8562579ebabbb102b40122cf3130463f03bc 中得到完善。

我们现在采用 基于 Socket 的 C/S 架构 进行进程间通信,以实现 集成托盘。经过仔细商榷,现实现的集成托盘功能如下:

  1. 启动器运行时,其将作为服务器(SocketServer),而桌宠将作为客户端(SocketClient)。服务器的端口将在 8686 和其他事先约定的端口号中选择。
  2. 已启动的桌宠将被整合到一个托盘中(HostTray)。启动器将在用户点击最小化后隐藏到托盘,并可以通过左键单击托盘来再次弹出。
  3. HostTray 提供 角色管理 菜单,在这个菜单中,每个已启动的桌宠将有它们的子菜单。
  4. 启动器若没有运行,每个桌宠将分别创建自己的托盘。同时,桌宠会定期检查服务器是否在运行,并尝试重新连接。
  5. 启动器运行时再次打开新的启动器实例,则新的启动器实例将会激活已存在的实例(弹出其主界面窗口),以此实现启动器的单实例化。