mirror of
https://github.com/ElectronNET/Electron.NET.git
synced 2026-02-11 05:34:34 +00:00
53 lines
1.5 KiB
C#
53 lines
1.5 KiB
C#
using ElectronNET.API.Entities;
|
|
using ElectronNET.API.Extensions;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using Newtonsoft.Json.Serialization;
|
|
using System.Collections.Generic;
|
|
|
|
namespace ElectronNET.API
|
|
{
|
|
public sealed class Tray
|
|
{
|
|
private static Tray _tray;
|
|
|
|
internal Tray() { }
|
|
|
|
internal static Tray Instance
|
|
{
|
|
get
|
|
{
|
|
if (_tray == null)
|
|
{
|
|
_tray = new Tray();
|
|
}
|
|
|
|
return _tray;
|
|
}
|
|
}
|
|
|
|
public IReadOnlyCollection<MenuItem> Items { get { return _items.AsReadOnly(); } }
|
|
private List<MenuItem> _items = new List<MenuItem>();
|
|
|
|
public void Show(string image, MenuItem[] menuItems)
|
|
{
|
|
menuItems.AddMenuItemsId();
|
|
BridgeConnector.Socket.Emit("create-tray", image, JArray.FromObject(menuItems, _jsonSerializer));
|
|
_items.AddRange(menuItems);
|
|
|
|
BridgeConnector.Socket.Off("trayMenuItemClicked");
|
|
BridgeConnector.Socket.On("trayMenuItemClicked", (id) => {
|
|
MenuItem menuItem = _items.GetMenuItem(id.ToString());
|
|
menuItem?.Click();
|
|
});
|
|
}
|
|
|
|
private JsonSerializer _jsonSerializer = new JsonSerializer()
|
|
{
|
|
ContractResolver = new CamelCasePropertyNamesContractResolver(),
|
|
NullValueHandling = NullValueHandling.Ignore,
|
|
DefaultValueHandling = DefaultValueHandling.Ignore
|
|
};
|
|
}
|
|
}
|