Cleanup & intro OSX

This commit is contained in:
Luis von der Eltz
2021-01-31 15:40:50 +01:00
commit e13f197ff0
20 changed files with 1620 additions and 0 deletions
+87
View File
@@ -0,0 +1,87 @@
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using DesktopNotifications;
using DesktopNotifications.FreeDesktop;
using DesktopNotifications.Windows;
using Example.Win32;
namespace Example
{
internal class Program
{
[DllImport("shell32.dll", SetLastError = true)]
internal static extern void SetCurrentProcessExplicitAppUserModelID(
[MarshalAs(UnmanagedType.LPWStr)] string appId);
private static INotificationManager CreateManager()
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
return new FreeDesktopNotificationManager();
}
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
const string AppName = "DesktopNotificationsExample";
SetCurrentProcessExplicitAppUserModelID(AppName);
using var shortcut = new ShellLink
{
TargetPath = Process.GetCurrentProcess().MainModule.FileName,
Arguments = string.Empty,
AppUserModelID = AppName
};
var appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
var startMenuPath = Path.Combine(appData, @"Microsoft\Windows\Start Menu\Programs");
var shortcutFile = Path.Combine(startMenuPath, $"{AppName}.lnk");
shortcut.Save(shortcutFile);
return new WindowsNotificationManager(AppName);
}
throw new PlatformNotSupportedException();
}
private static async Task Main(string[] args)
{
using var manager = CreateManager();
manager.NotificationActivated += ManagerOnNotificationActivated;
manager.NotificationDismissed += ManagerOnNotificationDismissed;
await manager.Initialize();
var notification = new Notification
{
Title = "Hello World!",
Body = "Isn't this awesome?",
Buttons =
{
("Yes", "answer_yes"),
("No", "answer_no"),
("Maybe", "answer_maybe")
}
};
await manager.ShowNotification(notification);
await Task.Delay(10_000);
}
private static void ManagerOnNotificationDismissed(object? sender, NotificationDismissedEventArgs e)
{
Console.WriteLine($"Notification dismissed: {e.Reason}");
}
private static void ManagerOnNotificationActivated(object? sender, NotificationActivatedEventArgs e)
{
Console.WriteLine($"Notification activated: {e.ActionId}");
}
}
}