Bug 293443

Summary: KDED Module needs to work on a per-account presence basis, not global presence
Product: [Unmaintained] telepathy Reporter: David Edmundson <kde>
Component: kded-moduleAssignee: Telepathy Bugs <kde-telepathy-bugs>
Status: RESOLVED FIXED    
Severity: wishlist CC: ddomenichelli, mklapetek, simonandric5, smithjd15
Priority: NOR    
Version: unspecified   
Target Milestone: Future   
Platform: Unlisted Binaries   
OS: Linux   
Latest Commit: Version Fixed In: 18.04
Sentry Crash Report:

Description David Edmundson 2012-02-06 13:40:52 UTC
At some point we need to add back in per-account presence, especially if we are to put in the activity support DrDanz wants.

At the moment if one account is busy, another online when we auto away, and return both accounts will be set back to online. Which is wrong.

The real reason we disabled per account presence was in part because it clashed with the kded, so we need to fix this before we can move forwards.

Possibly a good time to do a refactor that we talked about.
Comment 1 Martin Klapetek 2012-02-07 09:57:43 UTC
Isn't the recent patch of yours to the global presence supposed to solve/help with this?

The thing with one busy and one online is wrong assumption to start with; we currently do not support that at all (as in you can't set it from our components unless you manually do so).

If we're to refactor kded, we should turn it into a bigger scope refactor/discussion, because either all components have to operate on global presence or all have to work with per-account presences, otherwise everything breaks and explodes and shoots you in the foot. Ok ok it just breaks.

We could probably introduce "activity account sets" and then operate on per-activity basis, ie. if you change presence from presence plasmoid or contact list, it modifies only the presence of those accounts that are in the current activity set and leaves the rest untouched. If you do not use activity you'd control all accounts as the set wouldn't be divided in the first place. This behavior is however imho a bit confusing and misleading (all presence controls says "Online" while three of your accounts in other activity are "Away").
Comment 2 David Edmundson 2012-02-07 10:14:09 UTC
"The thing with one busy and one online is wrong assumption to start with; we
currently do not support that at all "

I know, but at some point in the future we will need to do so. There are 3 things stopping us, the kded (this bug), the global presence bar, and the presence plasmoid. This one is the one we can solve with code so we can do it now, the rest need solving with design. 

It's not really a bug right now, just trying to plan for future. I'll mark as wishlist to show this.

My patch will help fix this notion of accounts not connecting, and them reconnecting, but that doesn't solve this issue of varying presence.
Comment 3 Daniele E. Domenichelli 2012-02-07 17:37:35 UTC
(In reply to comment #1)
> The thing with one busy and one online is wrong assumption to start with; we
> currently do not support that at all (as in you can't set it from our
> components unless you manually do so).

I just made a simply test, and it is actually possible to have a set of account with one state and a set of accounts "available", even I don't think that any user will ever use it, and probably this behavior is a bug...
The trick is just to disable some accounts from kcm, choose from the presence plasmoid the status, and then enable the disabled accounts from kcm.
Comment 4 Jamie Smith 2017-11-22 01:04:17 UTC
Git commit 20f845ce0c2e828700a79efd455f9700deafb1d7 by James D. Smith.
Committed on 22/11/2017 at 01:03.
Pushed by smithjd into branch 'master'.

Independent account presences.
Activities support.
Make unit testing compile.
Implement status message parser with Now Playing.
Status message parser unit testing.
REVIEW: 130192
Related: bug 284517, bug 294940, bug 297924, bug 334542

M  +5    -3    CMakeLists.txt
A  +208  -0    account-status-helper.cpp     [License: LGPL (v2.1+)]
A  +115  -0    account-status-helper.h     [License: LGPL (v2.1+)]
M  +31   -41   autoaway.cpp
M  +4    -8    autoaway.h
D  +0    -62   autoconnect.cpp
D  +0    -99   autoconnect.h
M  +0    -2    config/CMakeLists.txt
D  +0    -80   config/nowplaying-lineedit.cpp
D  +0    -43   config/nowplaying-lineedit.h
D  +0    -107  config/nowplaying-listwidget.cpp
D  +0    -50   config/nowplaying-listwidget.h
M  +34   -122  config/telepathy-kded-config.cpp
M  +0    -4    config/telepathy-kded-config.h
M  +10   -73   config/telepathy-kded-config.ui
M  +18   -27   screensaveraway.cpp
M  +2    -5    screensaveraway.h
M  +182  -149  status-handler.cpp
M  +24   -32   status-handler.h
A  +303  -0    status-message-parser.cpp     [License: LGPL (v2.1+)]
A  +97   -0    status-message-parser.h     [License: LGPL (v2.1+)]
M  +17   -13   telepathy-kded-module-plugin.cpp
M  +34   -22   telepathy-kded-module-plugin.h
M  +4    -1    telepathy-module.cpp
M  +0    -1    telepathy-module.h
M  +192  -236  telepathy-mpris.cpp
M  +33   -28   telepathy-mpris.h
M  +33   -11   tests/CMakeLists.txt
M  +3    -3    tests/status-handling-main.cpp
A  +132  -0    tests/status-message-parser.cpp     [License: LGPL (v2.1+)]

https://commits.kde.org/ktp-kded-module/20f845ce0c2e828700a79efd455f9700deafb1d7