添加声音设置选项,修复RPC超时不抛出异常的BUG

This commit is contained in:
fangxiang 2021-12-22 10:22:31 +08:00
parent 810f213bc2
commit 54742f2d8d
5 changed files with 205 additions and 150 deletions

View File

@ -52,7 +52,7 @@ export default class ClientConnection {
password?: string | null
) {
this.reconnectTo(url, user_name, password);
setTimeout(() => {
setInterval(() => {
this.checkRpcTimeout();
}, 1000);
}
@ -102,6 +102,8 @@ export default class ClientConnection {
const current_datetime = new Date().getTime();
this.rpc_map.forEach((v, k, m) => {
if (current_datetime - v.send_timestamp > v.timeout_timestamp) {
v.reject();
m.delete(k);
}
});
}
@ -635,29 +637,15 @@ export default class ClientConnection {
public async setSystemNetwork(
request: Protocol.SetSystemNetworkRequestEntity
) {
try {
return await this.doRpc<Protocol.SetSystemNetworkResponseEntity>(request);
} catch (e) {
console.error(e);
}
return await this.doRpc<Protocol.SetSystemNetworkResponseEntity>(request);
}
public async setSystemGraphics(
request: Protocol.SetSystemGraphicsRequestEntity
) {
try {
return await this.doRpc<Protocol.SetSystemGraphicsResponseEntity>(
request
);
} catch (e) {
console.error(e);
}
return await this.doRpc<Protocol.SetSystemGraphicsResponseEntity>(request);
}
public async setSystemOther(request: Protocol.SetSystemOtherRequestEntity) {
try {
return await this.doRpc<Protocol.SetSystemOtherResponseEntity>(request);
} catch (e) {
console.error(e);
}
return await this.doRpc<Protocol.SetSystemOtherResponseEntity>(request);
}
public async getSupportResolutions() {
try {

View File

@ -293,110 +293,161 @@
<q-tab-panel name="other" class="_panel">
<q-card class="fit">
<q-card-section>
<q-form ref="other_form" @submit="applyOther">
<q-list>
<q-item>
<q-item-section avatar class="width_5_3">{{
$t("use ntp") + ":"
}}</q-item-section>
<q-item-section>
<q-select
v-model="use_ntp"
:loading="loading"
:disable="loading"
:options="[$t('enable'), $t('disable')]"
/>
</q-item-section>
</q-item>
<q-item v-if="use_ntp == $t('enable')">
<q-item-section avatar class="width_5_3">{{
$t("ntp server") + ":"
}}</q-item-section>
<q-item-section>
<q-input
v-model="ntp_server"
:loading="loading"
:disable="loading"
:rules="[
(val) =>
(val && val.length > 0) ||
$t('Please type something'),
]"
lazy-rules
/>
</q-item-section>
</q-item>
<q-item v-if="use_ntp == $t('enable')">
<q-item-section avatar class="width_5_3">{{
$t("ntp sync delay(S)") + ":"
}}</q-item-section>
<q-item-section>
<q-input
v-model="ntp_sync_delay"
:loading="loading"
:disable="loading"
type="number"
:rules="[
(val) =>
(val != null &&
val != undefined &&
val.toString().length > 0) ||
$t('Please type something'),
]"
lazy-rules
/>
</q-item-section>
</q-item>
<q-item v-if="use_ntp == $t('disable')">
<q-item-section avatar class="width_5_3">{{
$t("current datetime") + ":"
}}</q-item-section>
<q-item-section>
<q-input
v-model="current_date"
:loading="loading"
:disable="loading"
type="date"
:rules="[
(val) =>
(val && val.length > 0) ||
$t('Please type something'),
]"
lazy-rules
/>
</q-item-section>
<q-item-section>
<q-input
v-model="current_time"
:loading="loading"
:disable="loading"
type="time"
:rules="[
(val) =>
(val && val.length > 0) ||
$t('Please type something'),
]"
lazy-rules
/>
</q-item-section>
</q-item>
<q-item>
<q-item-section avatar class="width_5_3">{{
$t("time zone") + ":"
}}</q-item-section>
<q-item-section>
<q-select
v-model="time_zone"
:loading="loading"
:disable="loading"
:options="time_zone_options"
/>
</q-item-section>
</q-item>
</q-list>
</q-form>
</q-card-section>
<q-scroll-area style="height: 55vh">
<q-card-section>
<q-form ref="other_form" @submit="applyOther">
<q-list>
<q-item>
<q-item-section avatar class="width_5_3">{{
$t("output audio card") + ":"
}}</q-item-section>
<q-item-section>
<q-select
v-model="output_audio_card"
:loading="loading"
:disable="loading"
:options="output_audio_card_options"
emit-value
map-options
/>
</q-item-section>
</q-item>
<q-item>
<q-item-section avatar class="width_5_3">{{
$t("muted") + ":"
}}</q-item-section>
<q-item-section>
<q-select
v-model="system_muted"
:loading="loading"
:disable="loading"
:options="[$t('on'), $t('off')]"
/>
</q-item-section>
</q-item>
<q-item v-if="system_muted == $t('off')">
<q-item-section avatar class="width_5_3">{{
$t("volume") + ":"
}}</q-item-section>
<q-item-section>
<q-input
v-model="system_volume"
:loading="loading"
:disable="loading"
type="number"
:rules="[
(val) =>
(val != null &&
val != undefined &&
val.toString().length > 0) ||
$t('Please type something'),
]"
lazy-rules
/>
</q-item-section>
</q-item>
<q-item>
<q-item-section avatar class="width_5_3">{{
$t("use ntp") + ":"
}}</q-item-section>
<q-item-section>
<q-select
v-model="use_ntp"
:loading="loading"
:disable="loading"
:options="[$t('enable'), $t('disable')]"
/>
</q-item-section>
</q-item>
<q-item v-if="use_ntp == $t('enable')">
<q-item-section avatar class="width_5_3">{{
$t("ntp server") + ":"
}}</q-item-section>
<q-item-section>
<q-input
v-model="ntp_server"
:loading="loading"
:disable="loading"
:rules="[
(val) =>
(val && val.length > 0) ||
$t('Please type something'),
]"
lazy-rules
/>
</q-item-section>
</q-item>
<q-item v-if="use_ntp == $t('enable')">
<q-item-section avatar class="width_5_3">{{
$t("ntp sync delay(S)") + ":"
}}</q-item-section>
<q-item-section>
<q-input
v-model="ntp_sync_delay"
:loading="loading"
:disable="loading"
type="number"
:rules="[
(val) =>
(val != null &&
val != undefined &&
val.toString().length > 0) ||
$t('Please type something'),
]"
lazy-rules
/>
</q-item-section>
</q-item>
<q-item v-if="use_ntp == $t('disable')">
<q-item-section avatar class="width_5_3">{{
$t("current datetime") + ":"
}}</q-item-section>
<q-item-section>
<q-input
v-model="current_date"
:loading="loading"
:disable="loading"
type="date"
:rules="[
(val) =>
(val && val.length > 0) ||
$t('Please type something'),
]"
lazy-rules
/>
</q-item-section>
<q-item-section>
<q-input
v-model="current_time"
:loading="loading"
:disable="loading"
type="time"
:rules="[
(val) =>
(val && val.length > 0) ||
$t('Please type something'),
]"
lazy-rules
/>
</q-item-section>
</q-item>
<q-item>
<q-item-section avatar class="width_5_3">{{
$t("time zone") + ":"
}}</q-item-section>
<q-item-section>
<q-select
v-model="time_zone"
:loading="loading"
:disable="loading"
:options="time_zone_options"
/>
</q-item-section>
</q-item>
</q-list>
</q-form>
</q-card-section>
</q-scroll-area>
</q-card>
</q-tab-panel>
@ -734,6 +785,13 @@ export default defineComponent({
let output_board_resolution = ref("");
let output_board_resolution_options = ref(["1", "2", "3"]);
let system_muted = ref($t.t("off"));
let system_volume = ref(100);
let output_audio_card_options = ref([
{ label: "3.5mm", value: "3.5mm" },
{ label: "HDMI1", value: "HDMI1" },
]);
let output_audio_card = ref(output_audio_card_options.value[0].value);
let use_ntp = ref($t.t("enable"));
let ntp_server = ref("");
let ntp_sync_delay = ref(180);
@ -836,6 +894,14 @@ export default defineComponent({
const refresh_other = () => {
const config = GlobalData.getInstance()?.applicationConfig;
if (config) {
output_audio_card.value = config.output_audio_card;
let muted = parseInt(config.system_muted.toString());
if (isNaN(muted)) {
muted = 0;
}
system_muted.value = muted ? $t.t("on") : $t.t("off");
system_volume.value = config.system_volume;
use_ntp.value =
config.use_ntp != "0" ? $t.t("enable") : $t.t("disable");
ntp_server.value = config.ntp_server;
@ -881,6 +947,7 @@ export default defineComponent({
};
const applyNetwork = async () => {
loading.value = true;
const request = new Protocol.SetSystemNetworkRequestEntity();
request.auto_ip = auto_ip.value == $t.t("enable");
request.ip_address = ip_address.value;
@ -918,10 +985,12 @@ export default defineComponent({
(success ? $t.t("success") : $t.t("fail")) +
"!",
position: "top",
timeout: 1000,
timeout: 2500,
});
loading.value = false;
};
const applyGraphics = async () => {
loading.value = true;
const request = new Protocol.SetSystemGraphicsRequestEntity();
request.brightness = brightness.value;
request.contrast = contrast.value;
@ -945,7 +1014,7 @@ export default defineComponent({
(success ? $t.t("success") : $t.t("fail")) +
"!",
position: "top",
timeout: 1000,
timeout: 2500,
});
if (
old_resolution != device_resolution.value ||
@ -965,10 +1034,17 @@ export default defineComponent({
});
} catch {}
}
loading.value = false;
};
const applyOther = async () => {
loading.value = true;
const request = new Protocol.SetSystemOtherRequestEntity();
request.system_volume = parseInt(system_volume.value.toString());
request.system_muted = system_muted.value == $t.t("on");
request.output_audio_card = output_audio_card.value;
request.use_ntp = use_ntp.value == $t.t("enable");
request.ntp_sync_delay = ntp_sync_delay.value;
request.ntp_server = ntp_server.value;
@ -996,11 +1072,13 @@ export default defineComponent({
(success ? $t.t("success") : $t.t("fail")) +
"!",
position: "top",
timeout: 1000,
timeout: 2500,
});
loading.value = false;
};
const applyOutputBoard = async () => {
loading.value = true;
const request = new Protocol.SetOutputBoardSettingRequestEntity();
request.wall_col = output_board_wall_col.value;
request.wall_row = output_board_wall_row.value;
@ -1026,8 +1104,9 @@ export default defineComponent({
(success ? $t.t("success") : $t.t("fail")) +
"!",
position: "top",
timeout: 1000,
timeout: 2500,
});
loading.value = false;
};
const apply = () => {
@ -1047,30 +1126,6 @@ export default defineComponent({
break;
}
};
const apply1 = async () => {
loading.value = true;
try {
switch (tab.value) {
case "network":
await applyNetwork();
break;
case "graphics":
await applyGraphics();
break;
case "other":
await applyOther();
break;
case "output_board":
await applyOutputBoard();
break;
}
} catch (e) {
console.log(e);
}
loading.value = false;
};
const restoreOutputBoard = () => {
GlobalData.getInstance().getCurrentClient()?.restoreOutputBoard();
};
@ -1093,6 +1148,10 @@ export default defineComponent({
device_resolution_options,
output_board_resolution,
output_board_resolution_options,
output_audio_card,
output_audio_card_options,
system_muted,
system_volume,
use_ntp,
ntp_server,
ntp_sync_delay,

View File

@ -22,4 +22,7 @@ export default class ApplicationConfigEntity {
graphics_contrast: number = 100;
graphics_hue: number = 100;
device_rotate: number = 0;
system_volume: number = 100;
system_muted: number = 0;
output_audio_card: string = "";
}

View File

@ -1197,6 +1197,9 @@ export namespace Protocol {
}
export class SetSystemOtherRequestEntity extends Protocol.PacketEntity {
system_muted: boolean = false;
system_volume: number = 100;
output_audio_card: string = "";
use_ntp: boolean = false;
ntp_server: string = "ntp.ntsc.ac.cn";
ntp_sync_delay: number = 60;

View File

@ -263,4 +263,6 @@ export default {
"set output board": "设置输出板",
"major graphics parameters have been changed and need to be restarted to take effect. Restart the system":
"重要图形参数已更改,需要重启后生效,是否重启",
"output audio card": "输出声卡",
muted: "静音",
};