mirror of
https://github.com/ElectronNET/Electron.NET.git
synced 2026-07-10 10:48:33 +00:00
Add dynamic tray menu update functionality
Introduced a `SetMenuItems` method in `Tray.cs` to enable updating the tray's context menu dynamically. This method clears existing menu items, adds new ones, and registers click handlers. Added XML documentation for the method.
This commit is contained in:
@@ -50,11 +50,7 @@ module.exports = (socket) => {
|
||||
const trayIcon = electron_1.nativeImage.createFromPath(image);
|
||||
tray.value = new electron_1.Tray(trayIcon);
|
||||
if (menuItems) {
|
||||
const menu = electron_1.Menu.buildFromTemplate(menuItems);
|
||||
addMenuItemClickConnector(menu.items, (id) => {
|
||||
electronSocket.emit('trayMenuItemClicked', id);
|
||||
});
|
||||
tray.value.setContextMenu(menu);
|
||||
applyContextMenu(menuItems);
|
||||
}
|
||||
});
|
||||
socket.on('tray-destroy', () => {
|
||||
@@ -62,6 +58,11 @@ module.exports = (socket) => {
|
||||
tray.value.destroy();
|
||||
}
|
||||
});
|
||||
socket.on('set-contextMenu', (menuItems) => {
|
||||
if (menuItems && tray.value) {
|
||||
applyContextMenu(menuItems);
|
||||
}
|
||||
});
|
||||
socket.on('tray-setImage', (image) => {
|
||||
if (tray.value) {
|
||||
tray.value.setImage(image);
|
||||
@@ -118,6 +119,13 @@ module.exports = (socket) => {
|
||||
});
|
||||
}
|
||||
});
|
||||
function applyContextMenu(menuItems) {
|
||||
const menu = electron_1.Menu.buildFromTemplate(menuItems);
|
||||
addMenuItemClickConnector(menu.items, (id) => {
|
||||
electronSocket.emit('trayMenuItemClicked', id);
|
||||
});
|
||||
tray.value.setContextMenu(menu);
|
||||
}
|
||||
function addMenuItemClickConnector(menuItems, callback) {
|
||||
menuItems.forEach((item) => {
|
||||
if (item.submenu && item.submenu.items.length > 0) {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -59,12 +59,7 @@ export = (socket: Socket) => {
|
||||
tray.value = new Tray(trayIcon);
|
||||
|
||||
if (menuItems) {
|
||||
const menu = Menu.buildFromTemplate(menuItems);
|
||||
|
||||
addMenuItemClickConnector(menu.items, (id) => {
|
||||
electronSocket.emit('trayMenuItemClicked', id);
|
||||
});
|
||||
tray.value.setContextMenu(menu);
|
||||
applyContextMenu(menuItems);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -74,6 +69,12 @@ export = (socket: Socket) => {
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('set-contextMenu', (menuItems) => {
|
||||
if (menuItems && tray.value) {
|
||||
applyContextMenu(menuItems);
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('tray-setImage', (image) => {
|
||||
if (tray.value) {
|
||||
tray.value.setImage(image);
|
||||
@@ -136,6 +137,14 @@ export = (socket: Socket) => {
|
||||
}
|
||||
});
|
||||
|
||||
function applyContextMenu(menuItems) {
|
||||
const menu = Menu.buildFromTemplate(menuItems);
|
||||
addMenuItemClickConnector(menu.items, (id) => {
|
||||
electronSocket.emit('trayMenuItemClicked', id);
|
||||
});
|
||||
tray.value.setContextMenu(menu);
|
||||
}
|
||||
|
||||
function addMenuItemClickConnector(menuItems, callback) {
|
||||
menuItems.forEach((item) => {
|
||||
if (item.submenu && item.submenu.items.length > 0) {
|
||||
|
||||
Reference in New Issue
Block a user