Bug 284517

Summary: Make KDE-Telepathy activity aware
Product: [Unmaintained] telepathy Reporter: Elias Probst <mail>
Component: generalAssignee: Telepathy Bugs <kde-telepathy-bugs>
Status: RESOLVED FIXED    
Severity: wishlist CC: ddomenichelli, kde, peter, simonandric5, smithjd15
Priority: NOR    
Version: git-latest   
Target Milestone: Future   
Platform: Gentoo Packages   
OS: Linux   
Latest Commit: Version Fixed In: 18.04
Sentry Crash Report:

Description Elias Probst 2011-10-20 07:21:33 UTC
Version:           git-latest (using KDE 4.7.2) 
OS:                Linux

Currently, Telepathy-KDE doesn't work well at all when using KDE's activities and looking at the things happening from a usability point-of-view.

Reproducible: Didn't try

Steps to Reproduce:
1. set up multiple activities in KDE (e.g. work, personal, ...)
2. use Telepathy KDE with multiple accounts which are activity related (e.g. personal, work, ...)

Actual Results:  
- Opening new chat windows often switches the current activity to a completely different one
- I see personal contacts in my work related activity and the other way round
- When switching to my work activity, my personal contacts still see me as "Available" unless I manually switch my personal account to "Not Available"
...

Expected Results:  
This bug probably needs to be split up into several sub-bugs while using this one as meta-bug to keep track of the implementation. For now I left all this in one bug until the basic discussion about the features is settled.

## Accounts KCM
- Make it possible to assign 1 or more activities to an account in the accounts KCM
- Add configuration option to each account to which status this account should switch when not using an assigned activity

## Presence Applet
- Only set the presence for the current activity's accounts
- Only show the current activity's accounts

## Telepathy kded module
- Switch the presence of accounts based on the current activity + assigned accounts and the configured status for currently unused activities (see 'Accounts KCM')

## Contact list
- only show the current activity's accounts

## Text UI
- group chats by activity's accounts and don't mix the grouping throughout different activities, e.g. when opening a new chat window for a contact, but there's already a chat window for another contact on another activity, don't switch to this one, as it isn't in the same activity. Open a new window in the current activity instead.

## Filetransfer handler
- maintain one standard download folder per activity
Comment 1 David Edmundson 2011-10-20 11:28:15 UTC
I agree we need to fix some things, constantly switching activities is bad, but this definitely needs further discussion.

As a real user, I'm often in my work activity, but want to be online for if any regular friend wants to chat to me. Having 2 conversations with a work colleague and a friend shouldn't bounce me between activities either.

As for the filetransfer handler I don't want to have to remember which activity I was in when I received a file in order to try and find it again. We intend to add Nepomuk metadata to a file when it finishes downloading (with sender information) maybe it could just tag the activity on there.

From a usability POV done wrong this has the potential to make things a million times more confusing if contacts start "randomly" appearing and disappearing and conversations appear and different activities.
Comment 2 Elias Probst 2011-10-20 11:43:57 UTC
(In reply to comment #1)
> I agree we need to fix some things, constantly switching activities is bad, but
> this definitely needs further discussion.
Agreed!

> As a real user, I'm often in my work activity, but want to be online for if any
> regular friend wants to chat to me. Having 2 conversations with a work
> colleague and a friend shouldn't bounce me between activities either.
The current issue is:
- display the contact list on all activities
- open a chat window to chat with a friend in the "Personal" activity
- continue doing your work in the "Work" activity for a while
- click on a "Work" related contact in your contact list and it bounces you to the completely unrelated "Personal" activity, which is simply confusing and adds unneeded additional steps to untangle the situation (split tab from window, move window back to work activity, switch current activity back to work activity)

By limiting the scope for auto-grouping chats to the current activity this wouldn't happen.
For people not using activities at all or not assigning activities to accounts, this wouldn't affect them at all.

> As for the filetransfer handler I don't want to have to remember which activity
> I was in when I received a file in order to try and find it again. We intend to
> add Nepomuk metadata to a file when it finishes downloading (with sender
> information) maybe it could just tag the activity on there.
I agree with using Nepomuk for tagging filetransfers - that makes more sense. It needs to be investigated what's the proper way to tag the activity - I don't know what's the right ontology here ( http://www.semanticdesktop.org/ontologies/ ). But as activities are already stored in Nepomuk, this shouldn't be that hard to find out/implement.

> From a usability POV done wrong this has the potential to make things a million
> times more confusing if contacts start "randomly" appearing and disappearing
> and conversations appear and different activities.
I agree that this could cause confusion to some users, but I'd say: don't apply the suggested "Activity Behaviour" unless the user explicitely assigns activities to accounts.

The current situation is pretty bad here as I have ~40 personal contacts (2 accounts), ~60 work contacts (1 account) and there's no proper way to keep this information separated somehow (before there were activities, I had said: 1 tab in the contact list per account).
Comment 3 Elias Probst 2012-02-02 12:48:02 UTC
Another use-case to be taken care of, once there's activity AND metacontact support:

My contact list contains a lot of people of which I have multiple contacts:
- a business contact
- a personal contact

When clicking on a metacontact, which contains a contact I have added through my "Work" account and one which I have added through my "Personal" account, the priority of the contact chosen when sending him a message should depend on the current activity, e.g.
- When being in the "Work" activity, send the message to the contact of which the account is assigned to the "Work" activity

An example:

My accounts:
- eliasp@personal.foo (assigned activity/ies: "Personal")
- eliasp@work.com (assigned activity/ies: "Work")

My colleague "John Doe" is a metacontact on my list.

I have added "John Doe" twice, once in each account:
- eliasp@personal.foojohn.doe@gmail.com
- eliasp@work.comjohn.doe@work.com

I'm currently on the work activity and click on "John Doe" in the contact list.
The message will be addressed to "john.doe@work.com" using "eliasp@work.com" as the transporting account.
Comment 4 Elias Probst 2012-02-03 12:13:46 UTC
Another very good idea from a user in #kde-telepathy:

<tetris4> Hey all, wanted to know if there is a way for ktp-contact-list to sign me out when I stop the activity it is in

In the context of the previous ideas/comments in this bug this means:
- Sign out an account, as soon as all activities assigned to this account are stopped.
Comment 5 Daniele E. Domenichelli 2012-02-03 12:49:15 UTC
*** Bug 292433 has been marked as a duplicate of this bug. ***
Comment 6 Daniele E. Domenichelli 2012-02-03 12:54:43 UTC
As I said in Bug 292433, I'd like to one day to have status for each account configurable using activities.
Comment 7 Daniele E. Domenichelli 2012-06-07 07:35:23 UTC
Another idea could be to associate contacts/groups to activities and have an option in the contact list plasmoid to display only the contact associated to the current activity.
In this way if you put the plasmoid in a panel, you will have an automatic contact filtering by activity
Comment 8 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 293443, 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