void HistoryGUIClient::slotViewHistory() { // Original Code, but this any segfault if anything in this pipe is NULL - Tejas Dinkar //Kopete::MetaContact *m = Kopete::ChatSessionManager::self()->activeView()->msgManager()->members().first()->metaContact(); //The same as above but with some checking KopeteView *view= Kopete::ChatSessionManager::self()->activeView(); if (!view) { kDebug()<<"Unable to Get Active View!"; return; } Kopete::ChatSession *session = view->msgManager(); if (!session) { kDebug()<<"Unable to Get Active Session!"; return; } Kopete::Contact *contact = session->members().first(); if (!contact) { kDebug()<<"Unable to get contact!"; return; } Kopete::MetaContact *m = contact->metaContact(); if(m) { HistoryDialog* dialog = new HistoryDialog(m); dialog->setObjectName( QLatin1String("HistoryDialog") ); } }
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 Kopete::ChatSession::addContact( const Kopete::Contact *c, bool suppress ) { //kDebug( 14010 ) ; if ( d->contacts.contains( (Kopete::Contact*)c ) ) { kDebug( 14010 ) << "Contact already exists"; // emit contactAdded( c, suppress ); } else { if ( d->contacts.count() == 1 && d->isEmpty ) { kDebug( 14010 ) << " F****R ZONE "; /* We have only 1 contact before, so the status of the message manager was given from that contact status */ Kopete::Contact *old = d->contacts.first(); d->contacts.removeAll( old ); d->contacts.append( (Kopete::Contact*)c ); disconnect( old, SIGNAL(onlineStatusChanged(Kopete::Contact*,Kopete::OnlineStatus,Kopete::OnlineStatus)), this, SLOT(slotOnlineStatusChanged(Kopete::Contact*,Kopete::OnlineStatus,Kopete::OnlineStatus)) ); disconnect( old, SIGNAL(statusMessageChanged(Kopete::Contact*)), this, SIGNAL(statusMessageChanged(Kopete::Contact*)) ); if ( old->metaContact() ) { disconnect( old->metaContact(), SIGNAL(displayNameChanged(QString,QString)), this, SLOT(slotUpdateDisplayName()) ); disconnect( old->metaContact(), SIGNAL(photoChanged()), this, SIGNAL(photoChanged()) ); } else disconnect( old, SIGNAL(propertyChanged(Kopete::PropertyContainer*,QString,QVariant,QVariant)), this, SLOT(slotUpdateDisplayName()) ); disconnect( old, SIGNAL(propertyChanged(Kopete::PropertyContainer*,QString,QVariant,QVariant)), this, SLOT(slotContactPropertyChanged(Kopete::PropertyContainer*,QString,QVariant,QVariant)) ); emit contactAdded( c, suppress ); emit contactRemoved( old, QString() ); } else {
Kopete::ChatSession* Kopete::Transfer::chatSession() const { Kopete::Contact *c = d->info.contact(); return ( c ) ? c->manager() : 0; }