De macOS Dock is iets moois ... en zeker vanuit het applicatie ontwikkel perspectief.
Je kunt een icon in de Dock laten stuiteren, om de gebruiks aandacht te vragen, of een nummer of korte tekst toevoegen als feedback voor de gebruiker, ook al is de applicatie niet zichtbaar.
Maar hoe doen we dat in Lazarus Pascal?
Naar aanleiding van deze post in het Lazarus Forum en wat prullen, hier de oplossing voor zowel het stuiteren als tekst toevoegen.
Als eerste moeten we de compiler in ObjectiveC1 mode zetten. Je kunt dat doen door het volgende ergens bovenin de unit te zetten.
{$modeswitch ObjectiveC1}
Vervolgens hebben we de units MacOSAll en CocoaAll nodig.
uses ... ,MacOSAll, CocoaAll ...;
Stuiteren Dock Icon ...
1. Stuiter 1x:
NSApplication.sharedApplication.requestUserAttention(NSInformationalRequest);
2. Stuiter tot de applicatie (form) focus krijgt (dit werkt alleen als de applicatie nog niet de focus heeft!):
NSApplication.sharedApplication.requestUserAttention(NSCriticalRequest);
3. Handmatig het stuiteren stoppen doe je als volgt.
Eerst moet je de request opslaan, en het stuiteren als volgt activeren
AttentionRequestID : NSInteger;
...
AttentionRequestID := NSApplication.sharedApplication.requestUserAttention(NSCriticalRequest);
...
en stoppen van het stuiteren vervolgens met:
NSApplication.sharedApplication.cancelUserAttentionRequest(AttentionRequestID);
Tekst toevoegen aan de Dock Icon (b.v. een nummer of een percentage) ...
In dit voorbeeld voeg ik de tekst "100%" toe, maar je kunt vanalles gebruiken, als je het maar kort houdt (weinig ruimte).
NSApplication.sharedApplication.dockTile.setBadgeLabel(NSStr(Pchar('100%')));
Je verwijdert de tekst weer uit met:
NSApplication.sharedApplication.dockTile.setBadgeLabel(nil);