EvanZhu0721 / 公开仓库
SBMS
SBMS complete the calculation rules for the default logical desktop topology relationship and the physical dimensions of the displays in the Windows multi-screen collaboration system.
文件
../ pagescontrols.slint16.0 KBlaunch-intro.slint7.9 KBquick-access.slint13.9 KBremove-group-dialog.slint3.2 KBseven-segment.slint4.4 KBtheme.slint2.1 KBtray-icon.svg314 Bui/quick-access.slint13.9 KB
1
import { MainPage } from "pages/main.slint";2
import { ScreenSizePage } from "pages/screen-size.slint";3
import { StreamPage } from "pages/stream.slint";4
import { GeometryPage } from "pages/geometry.slint";5
import { DiagnosticsPage } from "pages/diagnostics.slint";6
import { RemoveGroupDialog } from "remove-group-dialog.slint";7
import { LaunchIntro } from "launch-intro.slint";8
import { MdTokens } from "theme.slint";9
10
export enum QuickAccessPage {11
main,12
screen-size,13
stream,14
geometry,15
diagnostics,16
}17
18
export component QuickAccess inherits Window {19
title: "SBMS Quick Access";20
width: 384px;21
height: 544px;22
background: MdTokens.surface;23
always-on-top: true;24
no-frame: true;25
26
in-out property <QuickAccessPage> page: QuickAccessPage.main;27
in-out property <bool> intro-active: false;28
in-out property <int> intro-stage: 0;29
in-out property <[string]> display-names;30
in-out property <[string]> display-labels;31
in-out property <[string]> display-ids;32
in-out property <int> selected-display: -1;33
in property <bool> stream-only: false;34
in-out property <[string]> tab-labels;35
in-out property <[string]> tab-details;36
in-out property <[int]> tab-indices;37
in property <int> active-group-index: 0;38
in property <int> group-count: 1;39
in property <int> max-group-count: 1;40
in-out property <int> pending-remove-index: -1;41
in-out property <[string]> reference-names;42
in-out property <[string]> reference-labels;43
in-out property <[string]> reference-ids;44
in-out property <int> selected-reference: -1;45
in property <bool> reference-manual: false;46
in property <bool> reference-action-enabled: false;47
in-out property <int> sizing-strategy: 0;48
in property <string> state: "Stopped";49
in property <string> state-detail: "Choose a target screen to begin";50
in property <bool> running: false;51
in property <bool> busy: false;52
in property <bool> restart-available: false;53
in property <string> error-text: "";54
in property <int> mapping-fps: 0;55
in property <bool> mapping-fps-valid: false;56
in property <bool> mapping-fps-error: false;57
in property <bool> mapping-fps-nan: false;58
in property <string> screen-size-target: "";59
in property <string> screen-size-native-mode: "";60
in property <string> screen-size-detected-mm: "Not reported";61
in property <string> screen-size-detected-inches: "";62
in-out property <string> screen-size-manual-inches: "";63
in-out property <int> screen-size-aspect-ratio: 0;64
in property <string> screen-size-effective-mm: "";65
in property <string> screen-size-effective-inches: "";66
in property <string> screen-size-source: "";67
in property <string> screen-size-error: "";68
in property <bool> screen-size-valid: true;69
in property <bool> screen-size-save-blocked: false;70
in property <string> diagnostic-summary: "";71
in property <string> diagnostic-text: "No diagnostic records are available.";72
in property <string> diagnostic-path: "";73
in property <string> diagnostic-action-error: "";74
in property <bool> geometry-valid: false;75
in property <bool> geometry-save-blocked: false;76
in property <bool> geometry-configured: false;77
in property <string> geometry-summary: "3840 × 2160";78
in property <string> geometry-summary-detail: "Driver · 240 Hz";79
in property <string> geometry-result: "Enter display measurements";80
in property <string> geometry-result-detail: "All values use pixels or millimetres";81
in property <string> geometry-error: "";82
in-out property <string> reference-width: "";83
in-out property <string> reference-height: "";84
in-out property <string> reference-diagonal: "";85
in-out property <int> reference-aspect-ratio: 0;86
in-out property <int> reference-rotation: 0;87
in property <string> reference-width-suggestion: "";88
in property <string> reference-width-suffix: "";89
in property <string> reference-height-suggestion: "";90
in property <string> reference-height-suffix: "";91
in-out property <string> stream-width: "3840";92
in-out property <string> stream-height: "2160";93
in-out property <string> stream-diagonal: "";94
in-out property <string> stream-refresh: "60";95
in-out property <int> stream-aspect-ratio-index: 1;96
in-out property <int> stream-rotation: 0;97
in property <string> stream-width-suggestion: "";98
in property <string> stream-width-suffix: "";99
in property <string> stream-height-suggestion: "";100
in property <string> stream-height-suffix: "";101
in property <string> stream-aspect-ratio: "";102
in property <string> stream-result: "Configure the streaming screen";103
in property <string> stream-result-detail: "Reference geometry determines the virtual mode";104
in property <string> stream-error: "";105
in property <bool> sunshine-panel-enabled: false;106
in property <int> sunshine-state: 0;107
in property <int> sunshine-port: 0;108
in property <string> sunshine-lan-ip: "--";109
in property <[string]> profile-names;110
in property <string> active-profile-name: "default";111
in property <bool> profile-saving: false;112
in property <int> max-profile-count: 3;113
114
callback start();115
callback stop();116
callback restart-mapping();117
callback display-selected();118
callback reference-selected();119
callback strategy-selected();120
callback calculate-geometry();121
callback open-manual-geometry();122
callback dismiss();123
callback close-geometry();124
callback geometry-edited();125
callback save-geometry();126
callback open-diagnostics();127
callback close-diagnostics();128
callback open-log-folder();129
callback tab-selected(int);130
callback tab-wheel(int);131
callback add-group();132
callback remove-group(int);133
callback open-stream-config();134
callback close-stream-config();135
callback stream-edited();136
callback save-stream-config();137
callback open-sunshine-panel();138
callback open-display-settings();139
callback disable-launch-intro();140
callback open-project-home();141
callback open-profile-directory();142
callback open-screen-size();143
callback close-screen-size();144
callback screen-size-edited();145
callback reset-screen-size();146
callback reread-screen-size();147
callback save-screen-size();148
callback create-profile(string);149
callback rename-profile(string, string);150
callback delete-profile(string);151
callback activate-profile(string);152
153
if root.page == QuickAccessPage.main : MainPage {154
visible: !root.intro-active;155
width: parent.width;156
height: parent.height;157
display-names: root.display-names;158
display-labels: root.display-labels;159
display-ids: root.display-ids;160
selected-display <=> root.selected-display;161
stream-only: root.stream-only;162
tab-labels: root.tab-labels;163
tab-details: root.tab-details;164
tab-indices: root.tab-indices;165
active-group-index: root.active-group-index;166
group-count: root.group-count;167
max-group-count: root.max-group-count;168
pending-remove-index <=> root.pending-remove-index;169
reference-names: root.reference-names;170
reference-labels: root.reference-labels;171
reference-ids: root.reference-ids;172
selected-reference <=> root.selected-reference;173
reference-manual: root.reference-manual;174
reference-action-enabled: root.reference-action-enabled;175
sizing-strategy <=> root.sizing-strategy;176
state: root.state;177
state-detail: root.state-detail;178
running: root.running;179
busy: root.busy;180
restart-available: root.restart-available;181
error-text: root.error-text;182
mapping-fps: root.mapping-fps;183
mapping-fps-valid: root.mapping-fps-valid;184
mapping-fps-error: root.mapping-fps-error;185
mapping-fps-nan: root.mapping-fps-nan;186
geometry-configured: root.geometry-configured;187
geometry-summary: root.geometry-summary;188
geometry-summary-detail: root.geometry-summary-detail;189
sunshine-panel-enabled: root.sunshine-panel-enabled;190
sunshine-state: root.sunshine-state;191
sunshine-port: root.sunshine-port;192
sunshine-lan-ip: root.sunshine-lan-ip;193
profile-names: root.profile-names;194
active-profile-name: root.active-profile-name;195
profile-saving: root.profile-saving;196
max-profile-count: root.max-profile-count;197
198
start => { root.start(); }199
stop => { root.stop(); }200
restart-mapping => { root.restart-mapping(); }201
display-selected => { root.display-selected(); }202
reference-selected => { root.reference-selected(); }203
strategy-selected => { root.strategy-selected(); }204
calculate-geometry => { root.calculate-geometry(); }205
open-manual-geometry => { root.open-manual-geometry(); }206
dismiss => { root.dismiss(); }207
open-diagnostics => { root.open-diagnostics(); }208
tab-selected(index) => { root.tab-selected(index); }209
tab-wheel(delta) => { root.tab-wheel(delta); }210
add-group => { root.add-group(); }211
open-stream-config => { root.open-stream-config(); }212
open-sunshine-panel => { root.open-sunshine-panel(); }213
open-display-settings => { root.open-display-settings(); }214
open-profile-directory => { root.open-profile-directory(); }215
open-screen-size => { root.open-screen-size(); }216
create-profile(name) => { root.create-profile(name); }217
rename-profile(old-name, new-name) => { root.rename-profile(old-name, new-name); }218
delete-profile(name) => { root.delete-profile(name); }219
activate-profile(name) => { root.activate-profile(name); }220
}221
222
if root.page == QuickAccessPage.screen-size : ScreenSizePage {223
width: parent.width;224
height: parent.height;225
screen-size-target: root.screen-size-target;226
screen-size-native-mode: root.screen-size-native-mode;227
screen-size-detected-mm: root.screen-size-detected-mm;228
screen-size-detected-inches: root.screen-size-detected-inches;229
screen-size-manual-inches <=> root.screen-size-manual-inches;230
screen-size-aspect-ratio <=> root.screen-size-aspect-ratio;231
screen-size-effective-mm: root.screen-size-effective-mm;232
screen-size-effective-inches: root.screen-size-effective-inches;233
screen-size-source: root.screen-size-source;234
screen-size-error: root.screen-size-error;235
screen-size-valid: root.screen-size-valid;236
screen-size-save-blocked: root.screen-size-save-blocked;237
238
close-screen-size => { root.close-screen-size(); }239
screen-size-edited => { root.screen-size-edited(); }240
reset-screen-size => { root.reset-screen-size(); }241
reread-screen-size => { root.reread-screen-size(); }242
save-screen-size => { root.save-screen-size(); }243
}244
245
if root.page == QuickAccessPage.stream : StreamPage {246
width: parent.width;247
height: parent.height;248
stream-width <=> root.stream-width;249
stream-height <=> root.stream-height;250
stream-diagonal <=> root.stream-diagonal;251
stream-refresh <=> root.stream-refresh;252
stream-aspect-ratio-index <=> root.stream-aspect-ratio-index;253
stream-rotation <=> root.stream-rotation;254
stream-width-suggestion: root.stream-width-suggestion;255
stream-width-suffix: root.stream-width-suffix;256
stream-height-suggestion: root.stream-height-suggestion;257
stream-height-suffix: root.stream-height-suffix;258
stream-aspect-ratio: root.stream-aspect-ratio;259
stream-result: root.stream-result;260
stream-result-detail: root.stream-result-detail;261
stream-error: root.stream-error;262
263
close-stream-config => { root.close-stream-config(); }264
stream-edited => { root.stream-edited(); }265
save-stream-config => { root.save-stream-config(); }266
}267
268
if root.page == QuickAccessPage.geometry : GeometryPage {269
width: parent.width;270
height: parent.height;271
stream-only: root.stream-only;272
geometry-valid: root.geometry-valid;273
geometry-save-blocked: root.geometry-save-blocked;274
geometry-result: root.geometry-result;275
geometry-result-detail: root.geometry-result-detail;276
geometry-error: root.geometry-error;277
reference-width <=> root.reference-width;278
reference-height <=> root.reference-height;279
reference-diagonal <=> root.reference-diagonal;280
reference-aspect-ratio <=> root.reference-aspect-ratio;281
reference-rotation <=> root.reference-rotation;282
reference-width-suggestion: root.reference-width-suggestion;283
reference-width-suffix: root.reference-width-suffix;284
reference-height-suggestion: root.reference-height-suggestion;285
reference-height-suffix: root.reference-height-suffix;286
sizing-strategy <=> root.sizing-strategy;287
288
close-geometry => { root.close-geometry(); }289
geometry-edited => { root.geometry-edited(); }290
strategy-selected => { root.strategy-selected(); }291
save-geometry => { root.save-geometry(); }292
}293
294
if root.page == QuickAccessPage.diagnostics : DiagnosticsPage {295
width: parent.width;296
height: parent.height;297
diagnostic-summary: root.diagnostic-summary;298
diagnostic-text: root.diagnostic-text;299
diagnostic-path: root.diagnostic-path;300
diagnostic-action-error: root.diagnostic-action-error;301
302
close-diagnostics => { root.close-diagnostics(); }303
open-log-folder => { root.open-log-folder(); }304
}305
306
if root.pending-remove-index >= 0 : RemoveGroupDialog {307
width: parent.width;308
height: parent.height;309
pending-remove-index <=> root.pending-remove-index;310
remove-group(index) => { root.remove-group(index); }311
}312
313
LaunchIntro {314
z: 100;315
width: parent.width;316
height: parent.height;317
active: root.intro-active;318
stage: root.intro-stage;319
disable-forever => { root.disable-launch-intro(); }320
open-project-home => { root.open-project-home(); }321
}322
}323