void NowListeningPlugin::slotOutgoingMessage(Kopete::Message& msg) { // Only do stuff if autoadvertising is on if(!NowListeningConfig::self()->chatAdvertising()) return; QString originalBody = msg.plainBody(); // If it is a /media message, don't process it if(originalBody.startsWith(NowListeningConfig::self()->header())) return; // What will be sent QString newBody; // Getting the list of contacts the message will be sent to to determine if at least // one of them has never gotten the current music information. Kopete::ContactPtrList dest = msg.to(); bool mustSendAnyway = false; for( Kopete::Contact *c = dest.first() ; c ; c = dest.next() ) { const QString& cId = c->contactId(); if( 0 == d->m_musicSentTo.contains( cId ) ) { mustSendAnyway = true; // The contact will get the music information so we put it in the list. d->m_musicSentTo.push_back( cId ); } } bool newTrack = newTrackPlaying(); // We must send the music information if someone has never gotten it or the track(s) // has changed since it was last sent. if ( mustSendAnyway || newTrack ) { QString advert = mediaPlayerAdvert(false); // false since newTrackPlaying() did the update if( !advert.isEmpty() ) newBody = originalBody + "<br>" + advert; // If we send because the information has changed since it was last sent, we must // rebuild the list of contacts the latest information was sent to. if( newTrack ) { d->m_musicSentTo.clear(); for( Kopete::Contact *c = dest.first() ; c ; c = dest.next() ) { d->m_musicSentTo.push_back( c->contactId() ); } } } // If the body has been modified, change the message if( !newBody.isEmpty() ) { msg.setBody( newBody, Kopete::Message::RichText ); } }
void TextEffectPlugin::slotOutgoingMessage( Kopete::Message& msg ) { if(msg.direction() != Kopete::Message::Outbound) return; QStringList colors=m_config->colors(); if(m_config->colorChar() || m_config->colorWords() || m_config->lamer() || m_config->waves() ) { QString original=msg.plainBody(); QString resultat; unsigned int c=0; bool wavein=false; for(unsigned int f=0;f<original.length();f++) { QChar x=original[f]; if(f==0 || m_config->colorChar() || (m_config->colorWords() && x==' ' )) { if(f!=0) resultat+="</font>"; resultat+="<font color=\""; resultat+=colors[c]; if(m_config->colorRandom()) c=rand()%colors.count(); else { c++; if(c >= colors.count()) c=0; } resultat+="\">"; } switch (x.latin1()) { case '>': resultat+=">"; break; case '<': resultat+="<"; break; case '&': resultat+="&"; break; case '\n': resultat+="<br>"; case 'a': case 'A': if(m_config->lamer()) { resultat+="4"; break; } //else, go to the default, all other case have this check case 'e': case 'E': if(m_config->lamer()) { resultat+="3"; break; }//else, go to the default, all other case have this check case 'i': case 'I': if(m_config->lamer()) { resultat+="1"; break; }//else, go to the default, all other case have this check case 'l': case 'L': if(m_config->lamer()) { resultat+="|"; break; }//else, go to the default, all other case have this check case 't': case 'T': if(m_config->lamer()) { resultat+="7"; break; }//else, go to the default, all other case have this check case 's': case 'S': if(m_config->lamer()) { resultat+="5"; break; }//else, go to the default, all other case have this check case 'o': case 'O': if(m_config->lamer()) { resultat+="0"; break; }//else, go to the default, all other case have this check default: if(m_config->waves()) { resultat+= wavein ? x.lower() : x.upper(); wavein=!wavein; } else resultat+=x; break; } } if( m_config->colorChar() || m_config->colorWords() ) resultat+="</font>"; msg.setBody(resultat,Kopete::Message::RichText); } if(m_config->colorLines()) { if(m_config->colorRandom()) { last_color=rand()%colors.count(); } else { last_color++; if(last_color >= colors.count()) last_color=0; } msg.setFg(QColor (colors[last_color])); } }