From 65d562ee74341605b2007fa38976d23c01ad721e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gerard=20Gasc=C3=B3n?=
<52170489+GerardGascon@users.noreply.github.com>
Date: Fri, 28 Jun 2024 14:39:52 +0200
Subject: [PATCH] feat: added preprocessor directive for platform dependant
compilation
---
SlidePresenter/ControllerSlidePresenter.csproj | 12 +++++++++++-
SlidePresenter/InputSender/LinuxInputSender.cs | 13 +++++++++++++
SlidePresenter/InputSender/MacInputSender.cs | 13 +++++++++++++
SlidePresenter/InputSender/WindowsInputSender.cs | 6 ++++--
SlidePresenter/SlideSwitcher.cs | 7 +++++++
5 files changed, 48 insertions(+), 3 deletions(-)
create mode 100644 SlidePresenter/InputSender/LinuxInputSender.cs
create mode 100644 SlidePresenter/InputSender/MacInputSender.cs
diff --git a/SlidePresenter/ControllerSlidePresenter.csproj b/SlidePresenter/ControllerSlidePresenter.csproj
index 66a3144..d6e90c1 100644
--- a/SlidePresenter/ControllerSlidePresenter.csproj
+++ b/SlidePresenter/ControllerSlidePresenter.csproj
@@ -8,13 +8,23 @@
SwitchSlidePresenter
+
+ OS_WINDOWS
+
+
+ OS_LINUX
+
+
+ OS_MAC
+
+
-
+
diff --git a/SlidePresenter/InputSender/LinuxInputSender.cs b/SlidePresenter/InputSender/LinuxInputSender.cs
new file mode 100644
index 0000000..5f084eb
--- /dev/null
+++ b/SlidePresenter/InputSender/LinuxInputSender.cs
@@ -0,0 +1,13 @@
+#if OS_LINUX
+namespace SwitchSlidePresenter.InputSender;
+
+public class LinuxInputSender : IInputSender {
+ public void NextSlide() {
+
+ }
+
+ public void PreviousSlide() {
+
+ }
+}
+#endif
\ No newline at end of file
diff --git a/SlidePresenter/InputSender/MacInputSender.cs b/SlidePresenter/InputSender/MacInputSender.cs
new file mode 100644
index 0000000..32f8fb3
--- /dev/null
+++ b/SlidePresenter/InputSender/MacInputSender.cs
@@ -0,0 +1,13 @@
+#if OS_MAC
+namespace SwitchSlidePresenter.InputSender;
+
+public class MacInputSender : IInputSender {
+ public void NextSlide() {
+
+ }
+
+ public void PreviousSlide() {
+
+ }
+}
+#endif
\ No newline at end of file
diff --git a/SlidePresenter/InputSender/WindowsInputSender.cs b/SlidePresenter/InputSender/WindowsInputSender.cs
index bcde5ed..233bd3c 100644
--- a/SlidePresenter/InputSender/WindowsInputSender.cs
+++ b/SlidePresenter/InputSender/WindowsInputSender.cs
@@ -1,4 +1,5 @@
-using System.Runtime.InteropServices;
+#if OS_WINDOWS
+using System.Runtime.InteropServices;
using Win32Api;
namespace SwitchSlidePresenter.InputSender;
@@ -44,4 +45,5 @@ public class WindowsInputSender : IInputSender {
Win32Api.Win32Api.SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(typeof(Input)));
}
-}
\ No newline at end of file
+}
+#endif
\ No newline at end of file
diff --git a/SlidePresenter/SlideSwitcher.cs b/SlidePresenter/SlideSwitcher.cs
index 004c51a..7c02e10 100644
--- a/SlidePresenter/SlideSwitcher.cs
+++ b/SlidePresenter/SlideSwitcher.cs
@@ -4,7 +4,14 @@ namespace SwitchSlidePresenter;
public class SlideSwitcher : IDisposable {
private readonly IGamepadReader? _reader;
+
+#if OS_WINDOWS
private readonly IInputSender _inputSender = new WindowsInputSender();
+#elif OS_MAC
+ private readonly IInputSender _inputSender = new MacInputSender();
+#elif OS_LINUX
+ private readonly IInputSender _inputSender = new LinuxInputSender();
+#endif
public SlideSwitcher(IGamepadReader? reader) {
_reader = reader;