Xojo Conferences
XDCMay2019MiamiUSA

Platforms to show: All Mac Windows Linux Cross-Platform

/MacFrameworks/UserNotification example
Function:
Required plugins for this example: MBS MacBase Plugin, MBS MacCocoa Plugin, MBS MacFrameworks Plugin, MBS Main Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /MacFrameworks/UserNotification example
This example is the version from Sat, 11th Sep 2015.
Project "UserNotification example.rbp"
Class App Inherits Application
Const kEditClear = "&Löschen"
Const kFileQuit = "Beenden"
Const kFileQuitShortcut = ""
EventHandler Sub Open() System.DebugLog CurrentMethodName End EventHandler
Sub Constructor() System.DebugLog CurrentMethodName a = new MyNSApplicationDelegateMBS End Sub
Property a As MyNSApplicationDelegateMBS
End Class
Class MainWindow Inherits Window
Control iTitle Inherits TextField
ControlInstance iTitle Inherits TextField
End Control
Control Label1 Inherits Label
ControlInstance Label1 Inherits Label
End Control
Control Label2 Inherits Label
ControlInstance Label2 Inherits Label
End Control
Control isubtitle Inherits TextField
ControlInstance isubtitle Inherits TextField
End Control
Control iinformativeText Inherits TextField
ControlInstance iinformativeText Inherits TextField
End Control
Control Label3 Inherits Label
ControlInstance Label3 Inherits Label
End Control
Control iactionButtonTitle Inherits TextField
ControlInstance iactionButtonTitle Inherits TextField
End Control
Control Label4 Inherits Label
ControlInstance Label4 Inherits Label
End Control
Control iotherButtonTitle Inherits TextField
ControlInstance iotherButtonTitle Inherits TextField
End Control
Control Label5 Inherits Label
ControlInstance Label5 Inherits Label
End Control
Control PushButton1 Inherits PushButton
ControlInstance PushButton1 Inherits PushButton
EventHandler Sub Action() dim n as NSUserNotificationMBS = Create m.deliverNotification n End EventHandler
End Control
Control PushButton2 Inherits PushButton
ControlInstance PushButton2 Inherits PushButton
EventHandler Sub Action() dim n as NSUserNotificationMBS = Create dim d as new date d.Second = d.Second + 10 n.deliveryDate = d m.scheduleNotification n End EventHandler
End Control
Control PushButton3 Inherits PushButton
ControlInstance PushButton3 Inherits PushButton
EventHandler Sub Action() list m.scheduledNotifications End EventHandler
End Control
Control PushButton4 Inherits PushButton
ControlInstance PushButton4 Inherits PushButton
EventHandler Sub Action() list m.deliveredNotifications End EventHandler
End Control
Control Listbox1 Inherits Listbox
ControlInstance Listbox1 Inherits Listbox
End Control
Control Label6 Inherits Label
ControlInstance Label6 Inherits Label
End Control
EventHandler Sub Open() if NSUserNotificationMBS.Available = false then MsgBox "NSUserNotification is not available." quit end if m = new NSUserNotificationCenterMBS d = new MyNSUserNotificationCenterDelegateMBS End EventHandler
Function Create() As NSUserNotificationMBS dim n as new NSUserNotificationMBS n.Title = iTitle.text n.informativeText = iinformativeText.text if iactionButtonTitle.text.len>0 then n.actionButtonTitle = iactionButtonTitle.text n.hasActionButton = true end if n.otherButtonTitle = iotherButtonTitle.Text n.subtitle = isubtitle.Text Return n End Function
Sub list(d() as NSUserNotificationMBS) if UBound(d) = -1 then MsgBox "no notifications." Return end if dim lines() as string for each n as NSUserNotificationMBS in d lines.Append n.description next MsgBox Join(lines,EndOfLine) End Sub
Property d As MyNSUserNotificationCenterDelegateMBS
Property m As NSUserNotificationCenterMBS
End Class
MenuBar MenuBar1
MenuItem FileMenu = "&Ablage"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Bearbeiten"
MenuItem EditUndo = "&Rückgängig"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "&Ausschneiden"
MenuItem EditCopy = "&Kopieren"
MenuItem EditPaste = "&Einfügen"
MenuItem EditClear = "#App.kEditClear"
MenuItem UntitledMenu0 = "-"
MenuItem EditSelectAll = "&Alles auswählen"
End MenuBar
Class MyNSUserNotificationCenterDelegateMBS Inherits NSUserNotificationCenterDelegateMBS
EventHandler Sub didActivateNotification(center as NSUserNotificationCenterMBS, notification as NSUserNotificationMBS) dim a as integer = notification.activationType dim m as string Select case a case notification.NSUserNotificationActivationTypeNone case notification.NSUserNotificationActivationTypeContentsClicked m = " with click on contents" case notification.NSUserNotificationActivationTypeActionButtonClicked m = " with click on action button" end Select MainWindow.listbox1.AddRow "Activate: "+notification.Title+m End EventHandler
EventHandler Sub didDeliverNotification(center as NSUserNotificationCenterMBS, notification as NSUserNotificationMBS) MainWindow.listbox1.AddRow "Deliver: "+notification.Title End EventHandler
EventHandler Function shouldPresentNotification(center as NSUserNotificationCenterMBS, notification as NSUserNotificationMBS) As boolean MainWindow.listbox1.AddRow "Should present: "+notification.Title Return true End EventHandler
End Class
Class MyNSApplicationDelegateMBS Inherits NSApplicationDelegateMBS
EventHandler Sub applicationDidFinishLaunching(Notification as NSNotificationMBS) System.DebugLog CurrentMethodName Notification.Print dim userInfo as Dictionary = Notification.userInfo dim key as string = NSApplicationMBS.NSApplicationLaunchUserNotificationKey if userInfo.HasKey(key) then dim UserNotification as NSUserNotificationMBS = userInfo.Lookup(key, nil) if UserNotification <> nil then MsgBox "Notification clicked with title: "+UserNotification.title+" and text: "+UserNotification.informativeText else MsgBox "no notification?" end if end if End EventHandler
End Class
End Project

Feedback, Comments & Corrections

The items on this page are in the following plugins: MBS MacFrameworks Plugin.




Links
MBS FileMaker Plugins