mirror of
https://github.com/immense/Remotely.git
synced 2025-10-26 11:27:15 +00:00
Made remote audio toggle-able. Fixed monitor selection buttons.
This commit is contained in:
parent
70eec05c23
commit
85d1f0fb3d
@ -39,11 +39,24 @@ namespace Remotely.Desktop.Win.ViewModels
|
||||
Conductor.ViewerRemoved += ViewerRemoved;
|
||||
Conductor.ViewerAdded += ViewerAdded;
|
||||
Conductor.ScreenCastRequested += ScreenCastRequested;
|
||||
Conductor.AudioToggled += AudioToggled;
|
||||
CursorIconWatcher = new CursorIconWatcher(Conductor);
|
||||
CursorIconWatcher.OnChange += CursorIconWatcher_OnChange;
|
||||
AudioCapturer = new AudioCapturer(Conductor);
|
||||
}
|
||||
|
||||
private void AudioToggled(object sender, bool toggleOn)
|
||||
{
|
||||
if (toggleOn)
|
||||
{
|
||||
AudioCapturer.Start();
|
||||
}
|
||||
else
|
||||
{
|
||||
AudioCapturer.Stop();
|
||||
}
|
||||
}
|
||||
|
||||
public static MainWindowViewModel Current { get; private set; }
|
||||
|
||||
public AudioCapturer AudioCapturer { get; private set; }
|
||||
@ -216,7 +229,6 @@ namespace Remotely.Desktop.Win.ViewModels
|
||||
}
|
||||
await Conductor.CasterSocket.SendCursorChange(CursorIconWatcher.GetCurrentCursor(), new List<string>() { screenCastRequest.ViewerID });
|
||||
ScreenCaster.BeginScreenCasting(screenCastRequest.ViewerID, screenCastRequest.RequesterName, capturer, Conductor);
|
||||
AudioCapturer.Start();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@ -17,6 +17,8 @@ namespace Remotely.ScreenCast.Core
|
||||
{
|
||||
public class Conductor
|
||||
{
|
||||
public event EventHandler<bool> AudioToggled;
|
||||
|
||||
public event EventHandler<ScreenCastRequest> ScreenCastInitiated;
|
||||
|
||||
public event EventHandler<ScreenCastRequest> ScreenCastRequested;
|
||||
@ -26,16 +28,16 @@ namespace Remotely.ScreenCast.Core
|
||||
public event EventHandler<Viewer> ViewerAdded;
|
||||
|
||||
public event EventHandler<string> ViewerRemoved;
|
||||
|
||||
public Dictionary<string, string> ArgDict { get; set; }
|
||||
public CasterSocket CasterSocket { get; private set; }
|
||||
public HubConnection Connection { get; private set; }
|
||||
public string CurrentDesktopName { get; set; }
|
||||
public string Host { get; private set; }
|
||||
public AppMode Mode { get; private set; }
|
||||
public CasterSocket CasterSocket { get; private set; }
|
||||
public string RequesterID { get; private set; }
|
||||
public string ServiceID { get; private set; }
|
||||
public ConcurrentDictionary<string, Viewer> Viewers { get; } = new ConcurrentDictionary<string, Viewer>();
|
||||
|
||||
public Task Connect()
|
||||
{
|
||||
Connection = new HubConnectionBuilder()
|
||||
@ -97,6 +99,11 @@ namespace Remotely.ScreenCast.Core
|
||||
timer.Start();
|
||||
}
|
||||
|
||||
internal void InvokeAudioToggled(bool toggleOn)
|
||||
{
|
||||
AudioToggled?.Invoke(null, toggleOn);
|
||||
}
|
||||
|
||||
internal void InvokeScreenCastInitiated(ScreenCastRequest viewerIdAndRequesterName)
|
||||
{
|
||||
ScreenCastInitiated?.Invoke(null, viewerIdAndRequesterName);
|
||||
|
||||
@ -163,6 +163,11 @@ namespace Remotely.ScreenCast.Core.Sockets
|
||||
}
|
||||
});
|
||||
|
||||
Connection.On("ToggleAudio", (bool toggleOn) =>
|
||||
{
|
||||
Conductor.InvokeAudioToggled(toggleOn);
|
||||
});
|
||||
|
||||
|
||||
Connection.On("TouchDown", (string viewerID) =>
|
||||
{
|
||||
|
||||
@ -41,6 +41,7 @@ namespace Remotely.ScreenCast.Win
|
||||
Conductor.Connect().Wait();
|
||||
Conductor.SetMessageHandlers(new WinInput());
|
||||
Conductor.ScreenCastInitiated += ScreenCastInitiated;
|
||||
Conductor.AudioToggled += AudioToggled;
|
||||
AudioCapturer = new AudioCapturer(Conductor);
|
||||
CursorIconWatcher = new CursorIconWatcher(Conductor);
|
||||
CursorIconWatcher.OnChange += CursorIconWatcher_OnChange;
|
||||
@ -57,6 +58,18 @@ namespace Remotely.ScreenCast.Win
|
||||
}
|
||||
}
|
||||
|
||||
private static void AudioToggled(object sender, bool toggledOn)
|
||||
{
|
||||
if (toggledOn)
|
||||
{
|
||||
AudioCapturer.Start();
|
||||
}
|
||||
else
|
||||
{
|
||||
AudioCapturer.Stop();
|
||||
}
|
||||
}
|
||||
|
||||
private static void CheckForRelaunch()
|
||||
{
|
||||
|
||||
@ -94,7 +107,6 @@ namespace Remotely.ScreenCast.Win
|
||||
}
|
||||
await Conductor.CasterSocket.SendCursorChange(CursorIconWatcher.GetCurrentCursor(), new List<string>() { screenCastRequest.ViewerID });
|
||||
ScreenCaster.BeginScreenCasting(screenCastRequest.ViewerID, screenCastRequest.RequesterName, capturer, Conductor);
|
||||
AudioCapturer.Start();
|
||||
}
|
||||
|
||||
public static async void CursorIconWatcher_OnChange(object sender, CursorInfo cursor)
|
||||
|
||||
@ -250,7 +250,7 @@
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>if $(ConfigurationName) == Debug (
|
||||
if $(PlatformName) == AnyCPU (
|
||||
if $(PlatformName) == Any CPU (
|
||||
md "$(SolutionDir)Agent\bin\Debug\netcoreapp2.2\ScreenCast\"
|
||||
copy /y "$(TargetDir)\*" "$(SolutionDir)Agent\bin\Debug\netcoreapp2.2\ScreenCast\"
|
||||
)
|
||||
|
||||
@ -1 +1 @@
|
||||
2019.06.20.1643
|
||||
2019.06.21.1714
|
||||
|
||||
@ -51,6 +51,7 @@
|
||||
|
||||
<div>
|
||||
<button id="inviteButton" class="option-button">Invite Others <i class="fas fa-user-plus"></i></button>
|
||||
<button id="audioButton" class="option-button">Audio <i class="fas fa-volume-up"></i></button>
|
||||
<button id="fileTransferButton" class="option-button">File Transfer <i class="fas fa-file-upload"></i></button>
|
||||
<button id="ctrlAltDelButton" class="option-button">Ctrl+Alt+Del <i class="fas fa-sign-in-alt"></i></button>
|
||||
<button id="keyboardButton" hidden="hidden" class="option-button">Keyboard <i class="fas fa-keyboard"></i></button>
|
||||
|
||||
@ -195,6 +195,10 @@ namespace Remotely.Server.Services
|
||||
{
|
||||
await RCDeviceHub.Clients.Client(ScreenCasterID).SendAsync("QualityChange", qualityLevel, Context.ConnectionId);
|
||||
}
|
||||
public async Task SendToggleAudio(bool toggleOn)
|
||||
{
|
||||
await RCDeviceHub.Clients.Client(ScreenCasterID).SendAsync("ToggleAudio", toggleOn);
|
||||
}
|
||||
public async Task Tap(double percentX, double percentY)
|
||||
{
|
||||
await RCDeviceHub.Clients.Client(ScreenCasterID).SendAsync("Tap", percentX, percentY, Context.ConnectionId);
|
||||
|
||||
@ -46,6 +46,11 @@ button[disabled] {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.horizontal-bar-button {
|
||||
height: 35px;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.menu-options-header {
|
||||
text-align: center;
|
||||
color: lightgray;
|
||||
@ -121,10 +126,6 @@ button[disabled] {
|
||||
transition: all 250ms;
|
||||
}
|
||||
|
||||
.horizontal-button-bar .bar-button {
|
||||
margin: 0 5px 0 5px;
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
#screenViewer {
|
||||
max-width: 99vw;
|
||||
|
||||
@ -82,20 +82,23 @@ export class RCBrowserSockets {
|
||||
SendQualityChange(qualityLevel) {
|
||||
this.Connection.invoke("SendQualityChange", qualityLevel);
|
||||
}
|
||||
SendToggleAudio(toggleOn) {
|
||||
this.Connection.invoke("SendToggleAudio", toggleOn);
|
||||
}
|
||||
ApplyMessageHandlers(hubConnection) {
|
||||
hubConnection.on("ScreenCount", (primaryScreenIndex, screenCount) => {
|
||||
document.querySelector("#screenSelectBar").innerHTML = "";
|
||||
for (let i = 0; i < screenCount; i++) {
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = `Monitor ${i}`;
|
||||
button.classList.add("bar-button");
|
||||
button.classList.add("horizontal-bar-button");
|
||||
if (i == primaryScreenIndex) {
|
||||
button.classList.add("toggled");
|
||||
}
|
||||
document.querySelector("#screenSelectBar").appendChild(button);
|
||||
button.onclick = (ev) => {
|
||||
this.SendSelectScreen(i);
|
||||
document.querySelectorAll("#screenSelectBar .bar-button").forEach(button => {
|
||||
document.querySelectorAll("#screenSelectBar .horizontal-bar-button").forEach(button => {
|
||||
button.classList.remove("toggled");
|
||||
});
|
||||
ev.currentTarget.classList.add("toggled");
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -90,20 +90,23 @@ export class RCBrowserSockets {
|
||||
SendQualityChange(qualityLevel: number) {
|
||||
this.Connection.invoke("SendQualityChange", qualityLevel);
|
||||
}
|
||||
SendToggleAudio(toggleOn: boolean) {
|
||||
this.Connection.invoke("SendToggleAudio", toggleOn);
|
||||
}
|
||||
private ApplyMessageHandlers(hubConnection) {
|
||||
hubConnection.on("ScreenCount", (primaryScreenIndex: number, screenCount: number) => {
|
||||
document.querySelector("#screenSelectBar").innerHTML = "";
|
||||
for (let i = 0; i < screenCount; i++) {
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = `Monitor ${i}`;
|
||||
button.classList.add("bar-button");
|
||||
button.classList.add("horizontal-bar-button");
|
||||
if (i == primaryScreenIndex) {
|
||||
button.classList.add("toggled");
|
||||
}
|
||||
document.querySelector("#screenSelectBar").appendChild(button);
|
||||
button.onclick = (ev: MouseEvent) => {
|
||||
this.SendSelectScreen(i);
|
||||
document.querySelectorAll("#screenSelectBar .bar-button").forEach(button => {
|
||||
document.querySelectorAll("#screenSelectBar .horizontal-bar-button").forEach(button => {
|
||||
button.classList.remove("toggled");
|
||||
});
|
||||
(ev.currentTarget as HTMLButtonElement).classList.add("toggled");
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { ConnectToClient, RemoteControl } from "./RemoteControl.js";
|
||||
import { FloatMessage } from "../UI.js";
|
||||
import { RemoteControlMode } from "../Enums/RemoteControlMode.js";
|
||||
export var AudioButton = document.getElementById("audioButton");
|
||||
export var MenuButton = document.getElementById("menuButton");
|
||||
export var MenuFrame = document.getElementById("menuFrame");
|
||||
export var SessionIDInput = document.getElementById("sessionIDInput");
|
||||
@ -79,6 +80,11 @@ export function ApplyInputHandlers(sockets) {
|
||||
ScreenViewer.style.maxHeight = "unset";
|
||||
}
|
||||
});
|
||||
AudioButton.addEventListener("click", (ev) => {
|
||||
AudioButton.classList.toggle("toggled");
|
||||
var toggleOn = AudioButton.classList.contains("toggled");
|
||||
sockets.SendToggleAudio(toggleOn);
|
||||
});
|
||||
DisconnectButton.addEventListener("click", (ev) => {
|
||||
ConnectButton.removeAttribute("disabled");
|
||||
RemoteControl.RCBrowserSockets.Connection.stop();
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -5,6 +5,7 @@ import { FloatMessage } from "../UI.js";
|
||||
import { RemoteControlMode } from "../Enums/RemoteControlMode.js";
|
||||
import { Point } from "../Models/Point.js";
|
||||
|
||||
export var AudioButton = document.getElementById("audioButton") as HTMLButtonElement;
|
||||
export var MenuButton = document.getElementById("menuButton") as HTMLButtonElement;
|
||||
export var MenuFrame = document.getElementById("menuFrame") as HTMLDivElement;
|
||||
export var SessionIDInput = document.getElementById("sessionIDInput") as HTMLInputElement;
|
||||
@ -88,6 +89,11 @@ export function ApplyInputHandlers(sockets: RCBrowserSockets) {
|
||||
ScreenViewer.style.maxHeight = "unset";
|
||||
}
|
||||
})
|
||||
AudioButton.addEventListener("click", (ev) => {
|
||||
AudioButton.classList.toggle("toggled");
|
||||
var toggleOn = AudioButton.classList.contains("toggled");
|
||||
sockets.SendToggleAudio(toggleOn);
|
||||
})
|
||||
DisconnectButton.addEventListener("click", (ev) => {
|
||||
ConnectButton.removeAttribute("disabled");
|
||||
RemoteControl.RCBrowserSockets.Connection.stop();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user