增加替换窗口、轮询窗口的功能

This commit is contained in:
fangxiang 2022-07-27 19:29:05 +08:00
parent 95f667bfc8
commit 228c814f3d
6 changed files with 104 additions and 98 deletions

View File

@ -615,6 +615,26 @@ export default class ClientConnection {
this.ws?.send(JSON.stringify(data));
}
public replaceWindow(data: Protocol.ReplaceWindowRequestEntity) {
this.ws?.send(JSON.stringify(data));
}
public replaceWindow2(
window_id: number,
signal_source: string,
polling?: boolean,
ext_data?: string
) {
this.replaceWindow(
new Protocol.ReplaceWindowRequestEntity(
window_id,
signal_source,
polling,
ext_data
)
);
}
public openPolling(data: Protocol.OpenPollingRequestEntity) {
this.ws?.send(JSON.stringify(data));
}

View File

@ -79,6 +79,10 @@ export namespace Protocol {
return Commands.PROTOCOL_PREFIX + "OpenWindow";
}
public static get kReplaceWindow() {
return Commands.PROTOCOL_PREFIX + "ReplaceWindow";
}
public static get kOpenPolling() {
return Commands.PROTOCOL_PREFIX + "OpenPolling";
}
@ -458,6 +462,7 @@ export namespace Protocol {
Commands.kResizeWindow,
Commands.kSetWindowGeometry,
Commands.kOpenWindow,
Commands.kReplaceWindow,
Commands.kOpenPolling,
Commands.kCloseWindow,
Commands.kTopWindow,
@ -791,6 +796,26 @@ export namespace Protocol {
}
}
export class ReplaceWindowRequestEntity extends PacketEntity {
window_id: number = 0;
signal_source: string = "";
ext_data: string = "";
polling: boolean = false;
constructor(
window_id: number,
signal_source: string,
polling?: boolean,
ext_data?: string
) {
super();
this.command = Commands.kReplaceWindow;
this.window_id = window_id;
this.signal_source = signal_source ?? "";
this.polling = typeof polling != "boolean" ? false : polling;
this.ext_data = ext_data ?? "";
}
}
export class OpenPollingRequestEntity extends PacketEntity {
polling_uuid: string = "";
x: number = 0;

View File

@ -331,4 +331,5 @@ export default {
"send power on command": "Send Power On Command",
"send power off command": "Send Power Off Command",
"set subtitle success": "Set OSD Success",
"stop polling": "Stop Signal Loop",
};

View File

@ -732,20 +732,6 @@ export default defineComponent({
let width = window.width;
let height = window.height;
client.closeWindow(window.window_id);
const open_window_request =
new Protocol.OpenPollingRequestEntity(
evt.data.uuid,
x,
y,
width,
height
);
open_window_request.muted = window.muted;
open_window_request.volume = window.volume;
open_window_request.paused = window.paused;
open_window_request.play_speed = window.play_speed;
setTimeout(() => {
if (!window) {
return;
@ -753,21 +739,16 @@ export default defineComponent({
switch (evt.type) {
case "polling":
{
const open_polling_request =
new Protocol.OpenPollingRequestEntity(
evt.data.uuid,
x,
y,
width,
height
);
open_polling_request.muted = window.muted;
open_polling_request.volume = window.volume;
open_polling_request.paused = window.paused;
open_polling_request.play_speed = window.play_speed;
GlobalData.getInstance()
.getCurrentClient()
?.openPolling(open_polling_request);
if (signal_sources.length) {
const signal_source = signal_sources[0];
if (signal_source) {
client?.replaceWindow2(
window.window_id,
evt.data.uuid,
true
);
}
}
}
break;
@ -776,24 +757,13 @@ export default defineComponent({
if (signal_sources.length) {
const signal_source = signal_sources[0];
if (signal_source) {
const open_window_request =
new Protocol.OpenWindowRequestEntity(
signal_source.uuid,
x,
y,
width,
height
);
open_window_request.muted = window.muted;
open_window_request.volume = window.volume;
open_window_request.paused = window.paused;
open_window_request.play_speed =
window.play_speed;
client?.openWindow(open_window_request);
client?.replaceWindow2(
window.window_id,
signal_source.uuid
);
}
}
}
break;
}
}, 50);

View File

@ -884,12 +884,6 @@ export default defineComponent({
}
}
if (find_flag) {
GlobalData.getInstance()
.getCurrentClient()
?.closeWindow(find_window);
}
setTimeout(() => {
if (!window) {
return;
@ -897,42 +891,54 @@ export default defineComponent({
switch (type) {
case "polling":
{
const open_polling_request =
new Protocol.OpenPollingRequestEntity(
uuid,
x,
y,
width,
height
);
open_polling_request.muted = muted;
open_polling_request.paused = paused;
open_polling_request.play_speed = play_speed;
GlobalData.getInstance()
.getCurrentClient()
?.openPolling(open_polling_request);
if (find_flag) {
GlobalData.getInstance()
.getCurrentClient()
?.replaceWindow2(find_window, uuid, true);
} else {
const open_polling_request =
new Protocol.OpenPollingRequestEntity(
uuid,
x,
y,
width,
height
);
open_polling_request.muted = muted;
open_polling_request.paused = paused;
open_polling_request.play_speed = play_speed;
GlobalData.getInstance()
.getCurrentClient()
?.openPolling(open_polling_request);
}
}
break;
case "signal_source":
{
const open_window_request =
new Protocol.OpenWindowRequestEntity(
uuid,
x,
y,
width,
height
);
open_window_request.muted = muted;
open_window_request.paused = paused;
open_window_request.play_speed = play_speed;
if (signal_sources.length) {
const signal_source = signal_sources[0];
if (signal_source) {
GlobalData.getInstance()
.getCurrentClient()
?.openWindow(open_window_request);
if (find_flag) {
GlobalData.getInstance()
.getCurrentClient()
?.replaceWindow2(find_window, uuid);
} else {
const open_window_request =
new Protocol.OpenWindowRequestEntity(
uuid,
x,
y,
width,
height
);
open_window_request.muted = muted;
open_window_request.paused = paused;
open_window_request.play_speed = play_speed;
GlobalData.getInstance()
.getCurrentClient()
?.openWindow(open_window_request);
}
}
}
}
@ -1253,27 +1259,9 @@ export default defineComponent({
.getCurrentClient()
?.addSignalSource(entity);
if (response && response.success) {
const open_window_request =
new Protocol.OpenWindowRequestEntity(
response.uuid,
old_window.x,
old_window.y,
old_window.width,
old_window.height
);
open_window_request.muted = old_window.muted;
open_window_request.volume = old_window.volume;
open_window_request.paused = old_window.paused;
open_window_request.play_speed = old_window.play_speed;
GlobalData.getInstance()
.getCurrentClient()
?.closeWindow(old_window.window_id);
GlobalData.getInstance()
.getCurrentClient()
?.openWindow(open_window_request);
?.replaceWindow2(old_window.window_id, response.uuid);
}
} catch {}
}

View File

@ -425,7 +425,9 @@ export default store(function (/* { ssrContext } */) {
},
pushWindow(state: StateInterface, playload?: WindowOpenNotifyEntity) {
if (playload) {
if (state.windows.find((e) => e && e.uuid == playload.uuid)) {
if (
state.windows.find((e) => e && e.window_id == playload.window_id)
) {
return;
}
try {