Bug 71076 - Notification when you go offline is wrong in chatwindow
Summary: Notification when you go offline is wrong in chatwindow
Status: RESOLVED FIXED
Alias: None
Product: kopete
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Compiled Sources Linux
: LO minor
Target Milestone: ---
Assignee: Kopete Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-12-22 23:54 UTC by Casey Allen Shobe
Modified: 2004-02-07 19:15 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Casey Allen Shobe 2003-12-22 23:54:00 UTC
Version:            (using KDE Devel)
Installed from:    Compiled sources
OS:          Linux

System Message 17:43:36
SomeLinuxGuy has changed their status to Offline.
 System Message 17:43:36
Chris Hammock has changed their status to Offline.

Only one of us went offline, and it was me.  Thus Kopete shouldn't tell me that the person I was chatting with went offline, too.
Comment 1 Jason Keirstead 2003-12-22 23:59:16 UTC
Subject: Re: [Kopete-devel]  New: Notification when you go offline is wrong in chatwindow

On December 22, 2003 06:54 pm, Casey Allen Shobe wrote:

> Only one of us went offline, and it was me.  Thus Kopete shouldn't tell me
> that the person I was chatting with went offline, too.

When you go offline, everyone goes offline.

Thats how IM works...

Comment 2 Casey Allen Shobe 2003-12-23 00:28:27 UTC
Subject: Re: [Kopete-devel]  Notification when you go offline is wrong in chatwindow

Monday 22 December 2003 17:59
> When you go offline, everyone goes offline.

Uhh....no.  When I go offline, everyone else stays on chatting or whatever 
until they feel like signing off themselves.  Just because Kopete cannot see 
them as online anymore does not mean that they are really not online.

> Thats how IM works...

Only if you're on a whole lot of crack.

Comment 3 Jason Keirstead 2003-12-23 00:32:18 UTC
Well I don't understand what you expect to happen here.. should Kopete communicate via some fictional networking protocol that doesn't require a TCP connection to see if the users are online or not?

Or do you want all the users to always be marked online even when you aren't connected?

Really, this is a pretty bizzare bug report that is impossible to resolve.

Comment 4 Thiago Macieira 2003-12-23 00:51:01 UTC
Just make it NOT say "MyContact is now off-line". Perhaps a more descriptive "Disconnected; connection to user not available".
Comment 5 Jason Keirstead 2003-12-23 01:01:26 UTC
But Kopete does not have any idea at this point in the code *why* the contact is offline.

All the chatview knows is "hey, this guy is offline".

It doesn't know why.

Comment 6 Casey Allen Shobe 2003-12-23 01:20:36 UTC
> But Kopete does not have any idea at this point in the code *why* the
> contact is offline.

That is irrelevant.  This bug does not have to be fixed today, and that fix can be made, in time.

> Well I don't understand what you expect to happen here.. should Kopete
> communicate via some fictional networking protocol that doesn't require a
> TCP connection to see if the users are online or not?

What I would expect to see is "You have gone offline" or as Thiago suggested, "Disconnected; connection to user not available".  I would want to see *one* message, not two.
Comment 7 Olivier Goffart 2003-12-23 09:46:46 UTC
Originaly, i set status to Unknown when we are offline. But this has been quickly reverted.

I think like you Casey, When we are offline, everybody contact's status should be set to unknown.
Comment 8 Jason Keirstead 2003-12-23 13:33:19 UTC
Subject: Re: [Kopete-devel]  Notification when you go offline is wrong in chatwindow

> ------- Additional Comments From ogoffart@tiscalinet.be  2003-12-23 09:46
> -------
 Originaly, i set status to Unknown when we are offline. But this
> has been quickly reverted. 
> I think like you Casey, When we are offline, everybody contact's status
> should be set to unknown.
 _______________________________________________

- This would be contrary to every IM client known to man

- This would mean that the "show only online contacts" would not work, since unknown is always shown

- If you tried to fix the above by changing it to not show unknown *or* online, SMS and WInpopup users
will *never* show online

Anyways, this is not what Unknown was intended for. Unknown is for when you *can't* know the other
guy's status, not that you *don't* know because you aren't connected.

Why would you care about someones status when you are disconnected anyway?

Comment 9 Casey Allen Shobe 2003-12-23 13:36:24 UTC
> When we are offline, everybody contact's status should be set to unknown.

I'm not sure if that is necessary (though as you might guess, I do agree with it), I just don't think we need to see "other user changed status" when *we* go offline, whether that's "user has gone offline" or "user's status is now unknown".

An Unknown status would be very nice though.  Because sometimes I don't notice that an account has disconnected, and look at a metacontact thinking a couple different accounts are offline, when really they're unknown and *I'm* offline.  A simple question mark overlay on the icons for Unknown status would make this immediately clear.  But now I'm digressing far out of this bug report, so I'll open a new wishlist item.
Comment 10 Jason Keirstead 2003-12-23 14:24:32 UTC
These are now the same bug, there is no need having two in here.

*** This bug has been marked as a duplicate of 71113 ***
Comment 11 Casey Allen Shobe 2003-12-23 18:33:01 UTC
Didn't you read what I wrote at the top of the bug you marked this a duplicate of?  This is *NOT* a duplicate - this concerns two messages being printed in a chatwindow, nothing about what statuses may exist.
Comment 12 Martijn Klingens 2004-02-07 17:56:04 UTC
Somehow the original submitter of the bug got lost and is now replaced by 'Account Deleted'. Weird...
Comment 13 Martijn Klingens 2004-02-07 19:15:16 UTC
Subject: kdenetwork/kopete

CVS commit by mklingens: 

Add going Offline to the list of changes that should be suppressed; use
the suppressions also when displaying of events in the chat window is
enabled. Don't display an event for Connecting, there's Offline and the
various Online/Away states for that.

CCMAIL: 71076-done@bugs.kde.org

The fix is dependent on the suppression of status notifications, so it
can't easily get backported. It also adds a new string, but that is in
theory avoidable. However, the bug is fairly minor, so I personally
would like to keep this in HEAD only for Kopete 0.9.


  M +24 -14    kopete/chatwindow/chatview.cpp   1.121
  M +2 -1      libkopete/kopeteaccount.cpp   1.85


--- kdenetwork/kopete/kopete/chatwindow/chatview.cpp  #1.120:1.121
@@ -886,15 +886,24 @@ void ChatView::slotMarkMessageRead()
 }
 
-void ChatView::slotContactStatusChanged( KopeteContact *contact, const KopeteOnlineStatus & /* newStatus */ , const KopeteOnlineStatus & /* oldstatus */)
+void ChatView::slotContactStatusChanged( KopeteContact *contact, const KopeteOnlineStatus &newStatus, const KopeteOnlineStatus & /* oldstatus */)
 {
-        if(KopetePrefs::prefs()->showEvents() && contact)
+        if ( contact && KopetePrefs::prefs()->showEvents() )
+        {
+                if ( contact->account() && contact == contact->account()->myself() )
+                {
+                        // Separate notification for the 'self' contact
+                        if ( newStatus.status() != KopeteOnlineStatus::Connecting )
+                                sendInternalMessage( i18n( "You have changed your status to %1." ).arg( newStatus.description() ) );
+                }
+                else if ( !contact->account() || !contact->account()->suppressStatusNotification() )
         {
+                        // Don't send notifications when we just connected ourselves, i.e. when suppressions are still active
                 if( contact->metaContact() )
                 {
                         sendInternalMessage( i18n( "%2 has changed their status to %1." )
 #if QT_VERSION < 0x030200
-                                .arg(contact->onlineStatus().description() ).arg( contact->metaContact()->displayName() )
+                                        .arg( newStatus.description() ).arg( contact->metaContact()->displayName() )
 #else
-                                .arg(contact->onlineStatus().description(), contact->metaContact()->displayName() )
+                                        .arg( newStatus.description(), contact->metaContact()->displayName() )
 #endif
                         );
@@ -904,11 +913,12 @@ void ChatView::slotContactStatusChanged(
                         sendInternalMessage( i18n( "%2 has changed their status to %1." )
 #if QT_VERSION < 0x030200
-                                .arg( contact->onlineStatus().description() ).arg( contact->displayName() )
+                                        .arg( newStatus.description() ).arg( contact->displayName() )
 #else
-                                .arg( contact->onlineStatus().description(), contact->displayName() )
+                                        .arg( newStatus.description(), contact->displayName() )
 #endif
                         );
                 }
         }
+        }
 
         if(m_tabBar)

--- kdenetwork/kopete/libkopete/kopeteaccount.cpp  #1.84:1.85
@@ -606,5 +606,6 @@ void KopeteAccount::setMyself( KopeteCon
 void KopeteAccount::slotOnlineStatusChanged( KopeteContact * /* contact */, const KopeteOnlineStatus &newStatus, const KopeteOnlineStatus &oldStatus )
 {
-        if ( oldStatus.status() == KopeteOnlineStatus::Offline || oldStatus.status() == KopeteOnlineStatus::Connecting )
+        if ( oldStatus.status() == KopeteOnlineStatus::Offline || oldStatus.status() == KopeteOnlineStatus::Connecting ||
+                newStatus.status() == KopeteOnlineStatus::Offline )
         {
                 // Wait for five seconds until we treat status notifications for contacts as