From: <it_...@us...> - 2007-11-25 00:18:58
|
Revision: 2212 http://kmess.svn.sourceforge.net/kmess/?rev=2212&view=rev Author: it_amroth Date: 2007-11-24 16:19:02 -0800 (Sat, 24 Nov 2007) Log Message: ----------- Always set up as chat window caption the first participant's name when creating a new chat. Modified Paths: -------------- trunk/kmess/ChangeLog trunk/kmess/kmess/chat/chatwindow.cpp trunk/kmess/kmess/chat/chatwindow.h trunk/kmess/kmess/network/msnswitchboardconnection.cpp trunk/kmess/kmess/network/msnswitchboardconnection.h Modified: trunk/kmess/ChangeLog =================================================================== --- trunk/kmess/ChangeLog 2007-11-24 21:35:29 UTC (rev 2211) +++ trunk/kmess/ChangeLog 2007-11-25 00:19:02 UTC (rev 2212) @@ -2,6 +2,8 @@ 2007-11-24 (Valerio) * Changed base class to the Transfer Window, partially rewritten to be more reliable; added an UI file for its interface. + * Always set up as chat window caption the first participant's name when creating the new chat. Also improved + the code by moving&fixing getCaption() from MsnSwitchboardConnection to ChatWindow. 2007-11-22 (Valerio) * Fixed a crash when closing applications. Modified: trunk/kmess/kmess/chat/chatwindow.cpp =================================================================== --- trunk/kmess/kmess/chat/chatwindow.cpp 2007-11-24 21:35:29 UTC (rev 2211) +++ trunk/kmess/kmess/chat/chatwindow.cpp 2007-11-25 00:19:02 UTC (rev 2212) @@ -231,12 +231,9 @@ { ContactAction *contactAction; - if ( msnSwitchboardConnection_ != 0 ) - { - // Avoid newlines which cause problems to the UI layout. - caption_ = msnSwitchboardConnection_->getCaption().replace( "\n", " " ); - setCaption( caption_ ); - } + // Avoid newlines which cause problems to the UI layout. + caption_ = getCaption().replace( "\n", " " ); + setCaption( caption_ ); if( ! participants_.contains( handle ) ) { @@ -287,11 +284,9 @@ contactAction->setInChat( false ); } - if( msnSwitchboardConnection_ != 0 ) - { - caption_ = msnSwitchboardConnection_->getCaption().replace( "\n", "" ); - setCaption( caption_ ); - } + // Change the caption to remove the contact who has left + caption_ = getCaption().replace( "\n", "" ); + setCaption( caption_ ); participants_.remove( handle ); @@ -546,6 +541,60 @@ +// Return a list of the contacts in the chat to be used as window caption +QString ChatWindow::getCaption() +{ + QStringList activeContacts; + + // The chat has no switchboard connection.. it is not even a chat! + if( msnSwitchboardConnection_ == 0 ) + { + // If the last contact is empty, it's probably a test chat window. + if( ! lastContact_.isEmpty() ) + { + activeContacts << lastContact_; + } + } + else + { + // Query the switchboard for the list of participants + activeContacts = msnSwitchboardConnection_->getContactsInChat(); + } + + // How many people are there in here? + switch( activeContacts.count() ) + { + // The chat is empty + case 0: + return i18n("Chat"); + break; + + // One contact is connected; or the only contact of the session has left + case 1: + return i18n( "%1 - Chat" ) + .arg( currentAccount_->getContactFriendlyNameByHandle( activeContacts[0] ) ); + break; + + // Two contacts are connected + case 2: + return i18n( "%1 and %2 - Chat" ) + .arg( currentAccount_->getContactFriendlyNameByHandle( activeContacts[0] ) ) + .arg( currentAccount_->getContactFriendlyNameByHandle( activeContacts[1] ) ); + break; + + // Three or more contacts are connected + default: + return i18n( "%1 et al. - Chat" ) + .arg( currentAccount_->getContactFriendlyNameByHandle( activeContacts[0] ) ); + break; + } + + // We can't arrive here. Is there a clean way to avoid the useless compiler warning? + return QString::null; +} + + + // Return the contact action with the given handle ContactAction* ChatWindow::getContactActionByHandle(const QString& handle) { @@ -617,6 +666,9 @@ startDate_ = QDate::currentDate(); startTime_ = QTime::currentTime(); + // Update the chat window caption with the contact name + update(); + initialized_ = true; return true; } @@ -1813,9 +1865,7 @@ // An event requires the window to update its properties void ChatWindow::update() { - if( KMESS_NULL(msnSwitchboardConnection_) ) return; - - caption_ = msnSwitchboardConnection_->getCaption().replace( "\n", " " ); + caption_ = getCaption().replace( "\n", " " ); setCaption( caption_ ); } Modified: trunk/kmess/kmess/chat/chatwindow.h =================================================================== --- trunk/kmess/kmess/chat/chatwindow.h 2007-11-24 21:35:29 UTC (rev 2211) +++ trunk/kmess/kmess/chat/chatwindow.h 2007-11-25 00:19:02 UTC (rev 2212) @@ -176,6 +176,8 @@ void emoticonButtonPressed(); // Forward the application command to the ChatMaster void forwardAppCommand(QString cookie, QString contact, QString command); + // Return a list of the contacts in the chat to be used as window caption + QString getCaption(); // Invite a contact to the chat void inviteContact(QString handle); // Notify the user of a received nudge Modified: trunk/kmess/kmess/network/msnswitchboardconnection.cpp =================================================================== --- trunk/kmess/kmess/network/msnswitchboardconnection.cpp 2007-11-24 21:35:29 UTC (rev 2211) +++ trunk/kmess/kmess/network/msnswitchboardconnection.cpp 2007-11-25 00:19:02 UTC (rev 2212) @@ -547,41 +547,6 @@ -// Get the switchboard to make a list of the contacts in the chat -QString MsnSwitchboardConnection::getCaption() -{ - QString caption; - QString contactString; - - // Make a list of the contacts in the chat - if( contactsInChat_.count() == 0 ) - { - // Pretend the chat is still active, it will re-connect when the user or contact starts typing again. - return i18n("%1 - Chat") - .arg( currentAccount_->getContactFriendlyNameByHandle(lastContact_) ); - } - else if( contactsInChat_.count() == 1 ) - { - return i18n("%1 - Chat") - .arg( currentAccount_->getContactFriendlyNameByHandle(contactsInChat_[0]) ); - } - else if ( contactsInChat_.count() == 2 ) - { - return i18n("%1 and %2 - Chat") - .arg( currentAccount_->getContactFriendlyNameByHandle(contactsInChat_[0]) ) - .arg( currentAccount_->getContactFriendlyNameByHandle(contactsInChat_[1]) ); - } - else if ( contactsInChat_.count() > 2 ) - { - return i18n("%1 et al. - Chat") - .arg( currentAccount_->getContactFriendlyNameByHandle(contactsInChat_[0]) ); - } - - return i18n("Chat"); -} - - - // Make a list of the contacts in the chat QStringList MsnSwitchboardConnection::getContactsInChat() const { Modified: trunk/kmess/kmess/network/msnswitchboardconnection.h =================================================================== --- trunk/kmess/kmess/network/msnswitchboardconnection.h 2007-11-24 21:35:29 UTC (rev 2211) +++ trunk/kmess/kmess/network/msnswitchboardconnection.h 2007-11-25 00:19:02 UTC (rev 2212) @@ -64,8 +64,6 @@ virtual void closeConnection(); // Clean up, close the connection, destroy this object void closeConnectionLater(bool autoDelete = false); - // Get the switchboard to make a list of the contacts in the chat - QString getCaption(); // Make a list of the contacts in the chat QStringList getContactsInChat() const; // Return the first contact the chat started with. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |