[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdenetwork/kopete/kopete/chatwindow
From: Olivier Goffart <ogoffart () kde ! org>
Date: 2005-01-29 9:31:04
Message-ID: 20050129093104.D37201CFF9 () office ! kde ! org
[Download RAW message or body]
CVS commit by ogoffart:
Store the xml QString internally instead of the Kopete::Message
That fix the crash when someone leave a chat in a groupchat.
BUG: 97082
Also fix the saving to text, by adding the contactId
M +18 -22 chatmessagepart.cpp 1.17
M +1 -2 chatmessagepart.h 1.9
--- kdenetwork/kopete/kopete/chatwindow/chatmessagepart.cpp #1.16:1.17
@@ -265,14 +265,16 @@ void ChatMessagePart::save()
{
stream << QString::fromLatin1( "<document>" );
- for ( MessageMap::Iterator it = messageMap.begin(); it != \
messageMap.end(); ++it )
- stream << (*it).asXML().toString();
+ stream << messageMap.join("\n");
stream << QString::fromLatin1( "</document>\n" );
}
else if ( dlg.currentFilter() == QString::fromLatin1( "text/plain" ) \
) {
- for( MessageMap::Iterator it = messageMap.begin(); it != \
messageMap.end(); ++it) + for( QStringList::Iterator it = \
messageMap.begin(); it != messageMap.end(); ++it) {
- stream << "[" << KGlobal::locale()->formatDateTime( \
(*it).timestamp(), true, true );
- stream << "] " << (*it).plainBody() << '\n';
+ QDomDocument doc;
+ doc.setContent(*it);
+ stream << "[" << \
doc.elementsByTagName("message").item(0).toElement().attribute("formattedTimestamp"); \
+ stream << "] " << \
doc.elementsByTagName("contact").item(0).toElement().attribute("contactId") ; + \
stream << ": " << doc.elementsByTagName("body").item(0).toElement().text() << "\n"; \
} }
@@ -345,18 +347,21 @@ void ChatMessagePart::appendMessage( Kop
message.setBody( message.parsedBody() , Kopete::Message::ParsedHTML );
- messageMap.insert( ++messageId, message );
+ message.setBgOverride( d->bgOverride );
+ message.setFgOverride( d->fgOverride );
+ message.setRtfOverride( d->rtfOverride );
+
+ messageMap.append( message.asXML().toString() );
+
+ uint bufferLen = (uint)KopetePrefs::prefs()->chatViewBufferSize();
// transform all messages every time. needed for Adium style.
#ifdef TRANSFORM_ALL_MESSAGES
+ if ( messageMap.count() >= bufferLen )
+ messageMap.pop_front();
+
d->refreshtimer.start(50,true); //let 50ms delay in the case several message \
are appended in the same time. return;
#else
- uint bufferLen = (uint)KopetePrefs::prefs()->chatViewBufferSize();
-
- message.setBgOverride( d->bgOverride );
- message.setFgOverride( d->fgOverride );
- message.setRtfOverride( d->rtfOverride );
-
QDomDocument domMessage = message.asXML();
domMessage.documentElement().setAttribute( QString::fromLatin1( "id" ), \
QString::number( messageId ) ); @@ -422,14 +427,5 @@ void \
ChatMessagePart::slotRefreshNodes()
QString xmlString = QString::fromLatin1( "<document>" );
- for( MessageMap::Iterator it = messageMap.begin(); it != messageMap.end(); \
++it)
- {
- (*it).setBgOverride( d->bgOverride );
- (*it).setFgOverride( d->fgOverride );
- (*it).setRtfOverride( d->rtfOverride );
-
- QDomDocument message = (*it).asXML();
- message.documentElement().setAttribute( QString::fromLatin1( "id" ), \
QString::number( it.key() ) );
- xmlString += message.toString();
- }
+ xmlString += messageMap.join("\n");
xmlString += QString::fromLatin1( "</document>" );
--- kdenetwork/kopete/kopete/chatwindow/chatmessagepart.h #1.8:1.9
@@ -142,6 +142,5 @@ private:
unsigned long messageId;
- typedef QMap<unsigned long,Kopete::Message> MessageMap;
- MessageMap messageMap;
+ QStringList messageMap;
bool scrollPressed;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic