Lawris
Lawris

Reputation: 1035

Realtime status bar view

I have a status bar application and when I'm opening it, it shows me informations but if these informations are changing (percentage here), I don't see it directly. I must reopen it to make it shows new informations.

Here I open the app one time it's 90% :

Opening the app a fist time

Then I wait some time and reopen it, it's already 100% :

Opening the app a second time

Is there a way to show "in real time" labels and stuff in a status bar application ?

Upvotes: 1

Views: 110

Answers (1)

Adrian Sluyters
Adrian Sluyters

Reputation: 2241

Having come across it before:

https://github.com/adamhartford/PopStatusItem

Does quite well, appears to be thread friendly (having tested with async threads) on the popup item.. Edit

addition as the user needs the actual status bar Image/text updated as opposed to the popup...

    let sysStatusBar = NSStatusBar.systemStatusBar()
    dispatch_async(dispatch_main(){
        let dele = NSApp.delegate as? AppDelegate
        dele.statusBarValue = 100.0
            // from the delegate or a singleton method, have statusbarValue observed
            //      and update the App.delegate.statusBarItem.image accordingly.
            //      make sure it happens on the main thread... then the image / text
            //      will update...
    }

What you're doing is updating the delegate where you've added the NSStatusBarItem and updating the image there. IN my example, I update the "statusBarValue" but if you just add a binding or an observer to the value, you can just as easily update the image.

ONCE AGAIN Make sure this happens on the main thread, or the UI is just going to ignore your updates. So updates from background threads etc... need to call out on the main thread.

Upvotes: 1

Related Questions