Global Presence

David Edmundson david at davidedmundson.co.uk
Sat Aug 6 22:35:34 UTC 2011


We had a little meeting today discussing "Global Presence", in
conjunction with the conversation with George G.

We can retrieve the globalPresence at run time from whichever the
"most online". If accounts don't connect - we get the notifications
and that should handle everything.

As for UI we think there should be one combo box with global presence.
when you hover over the gobal presence setting we can have a tooltip
that breaks it down on a per-account basis.

In a setting you can change back to the current view. MCorteel is
experimenting with some new UI ideas which show both at the same time.
We'll sort this basic functionality first, then we can maybe explore
these.

Rather than talking, I've just attached a bodged header file for a
class that calculates this.

/** Retrieves the current 'global presence' based on the current
status of all the accounts*/

class GlobalPresence
{
    public:
        //FIXME account set or AccountManager?
        GlobalPresence(const Tp::AccountSet &accounts);
        virtual ~GlobalPresence();

        /** The current global presence, this will return the most
'online' presence */
        //online > away > extended away > busy > offline

        //FIXME maybe this will make more sense as a simplePresenceType?
        Tp::Presence globalPresence() const;

        /** Returns Tp::Connecting if any account is connecting
         *  Otherwise Connected if any account is connected.
         *  Disconnected Otherwise
         */
        Tp::ConnectionStatus globalConnectionStatus() const;

        /** Try setting all accounts to the given presence
         * This may fail, watch the status of account for details.
         */
        void setGlobalPresence(const Tp::Presence presence);

    signals:
        globalPresenceChanged();
        globalConnectionStatusChanged();
}


More information about the KDE-Telepathy mailing list