feat(ui): implement Heartbeat on macOS
This commit is contained in:
parent
f494d46fee
commit
02b486dc7a
|
@ -35,5 +35,6 @@
|
||||||
- (void) showNotification: (NSString *) message withDelay:(double) delay;
|
- (void) showNotification: (NSString *) message withDelay:(double) delay;
|
||||||
- (IBAction) statusIconClick: (id) sender;
|
- (IBAction) statusIconClick: (id) sender;
|
||||||
- (IBAction) contextMenuClick: (id) sender;
|
- (IBAction) contextMenuClick: (id) sender;
|
||||||
|
- (void) heartbeatHandler: (NSTimer *)timer;
|
||||||
|
|
||||||
@end
|
@end
|
|
@ -33,6 +33,13 @@ void addSubMenu(NSMenu * parent, NSArray * items);
|
||||||
}
|
}
|
||||||
|
|
||||||
[[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self];
|
[[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self];
|
||||||
|
|
||||||
|
// Heartbeat timer setup
|
||||||
|
[NSTimer scheduledTimerWithTimeInterval:1.0
|
||||||
|
target:self
|
||||||
|
selector:@selector(heartbeatHandler:)
|
||||||
|
userInfo:nil
|
||||||
|
repeats:YES];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setIcon: (int32_t)iconIndex {
|
- (void) setIcon: (int32_t)iconIndex {
|
||||||
|
@ -88,6 +95,14 @@ void addSubMenu(NSMenu * parent, NSArray * items);
|
||||||
[[NSUserNotificationCenter defaultUserNotificationCenter] performSelector:@selector(removeDeliveredNotification:) withObject:notification afterDelay:delay];
|
[[NSUserNotificationCenter defaultUserNotificationCenter] performSelector:@selector(removeDeliveredNotification:) withObject:notification afterDelay:delay];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void) heartbeatHandler: (NSTimer *)timer {
|
||||||
|
UIEvent event = {};
|
||||||
|
event.event_type = UI_EVENT_TYPE_HEARTBEAT;
|
||||||
|
if (event_callback && rust_instance) {
|
||||||
|
event_callback(rust_instance, event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
// Menu utility methods
|
// Menu utility methods
|
||||||
|
|
|
@ -32,6 +32,7 @@ const MAX_ICON_COUNT: usize = 3;
|
||||||
|
|
||||||
const UI_EVENT_TYPE_ICON_CLICK: i32 = 1;
|
const UI_EVENT_TYPE_ICON_CLICK: i32 = 1;
|
||||||
const UI_EVENT_TYPE_CONTEXT_MENU_CLICK: i32 = 2;
|
const UI_EVENT_TYPE_CONTEXT_MENU_CLICK: i32 = 2;
|
||||||
|
const UI_EVENT_TYPE_HEARTBEAT: i32 = 3;
|
||||||
|
|
||||||
// Take a look at the native.h header file for an explanation of the fields
|
// Take a look at the native.h header file for an explanation of the fields
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
|
@ -234,6 +235,9 @@ impl From<RawUIEvent> for Option<UIEvent> {
|
||||||
UI_EVENT_TYPE_CONTEXT_MENU_CLICK => {
|
UI_EVENT_TYPE_CONTEXT_MENU_CLICK => {
|
||||||
return Some(UIEvent::ContextMenuClick(raw.context_menu_id));
|
return Some(UIEvent::ContextMenuClick(raw.context_menu_id));
|
||||||
}
|
}
|
||||||
|
UI_EVENT_TYPE_HEARTBEAT => {
|
||||||
|
return Some(UIEvent::Heartbeat);
|
||||||
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
|
|
||||||
#define UI_EVENT_TYPE_ICON_CLICK 1
|
#define UI_EVENT_TYPE_ICON_CLICK 1
|
||||||
#define UI_EVENT_TYPE_CONTEXT_MENU_CLICK 2
|
#define UI_EVENT_TYPE_CONTEXT_MENU_CLICK 2
|
||||||
|
#define UI_EVENT_TYPE_HEARTBEAT 3
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int32_t show_icon;
|
int32_t show_icon;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user