/* oscaruserinfo.cpp - Oscar Protocol Plugin Copyright (c) 2002 by Tom Linsky Kopete (c) 2002 by the Kopete developers ************************************************************************* * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ************************************************************************* */ #include "aimuserinfo.h" #include "aimaccount.h" #include "aimcontact.h" #include "aimprotocol.h" #include #include #include #include #include #include #include #include #include #include #include #include AIMUserInfoDialog::AIMUserInfoDialog( Kopete::Contact *c, AIMAccount *acc, bool modal, TQWidget *parent, const char* name ) : KDialogBase( parent, name, modal, i18n( "User Information on %1" ) .arg( c->property( Kopete::Global::Properties::self()->nickName() ).value().toString() ), Cancel | Ok , Ok, true ) { kdDebug(14200) << k_funcinfo << "for contact '" << c->contactId() << "'" << endl; m_contact = c; mAccount = acc; mMainWidget = new AIMUserInfoWidget(this, "aimuserinfowidget"); setMainWidget(mMainWidget); TQObject::connect(this, TQ_SIGNAL(okClicked()), this, TQ_SLOT(slotSaveClicked())); TQObject::connect(this, TQ_SIGNAL(user1Clicked()), this, TQ_SLOT(slotUpdateClicked())); TQObject::connect(this, TQ_SIGNAL(cancelClicked()), this, TQ_SLOT(slotCloseClicked())); TQObject::connect(c, TQ_SIGNAL(updatedProfile()), this, TQ_SLOT(slotUpdateProfile())); mMainWidget->txtScreenName->setText( c->contactId() ); TQString nickName = c->property( Kopete::Global::Properties::self()->nickName() ).value().toString(); if( nickName.isEmpty() ) mMainWidget->txtNickName->setText( c->contactId() ); else mMainWidget->txtNickName->setText( nickName ); if(m_contact == mAccount->myself()) // edit own account profile { mMainWidget->lblWarnLevel->hide(); mMainWidget->txtWarnLevel->hide(); mMainWidget->lblIdleTime->hide(); mMainWidget->txtIdleTime->hide(); mMainWidget->lblOnlineSince->hide(); mMainWidget->txtOnlineSince->hide(); mMainWidget->txtAwayMessage->hide(); mMainWidget->lblAwayMessage->hide(); userInfoView=0L; mMainWidget->userInfoFrame->setFrameStyle(TQFrame::NoFrame | TQFrame::Plain); TQVBoxLayout *l = new TQVBoxLayout(mMainWidget->userInfoFrame); userInfoEdit = new KTextEdit(TQString(), TQString(), mMainWidget->userInfoFrame, "userInfoEdit"); userInfoEdit->setTextFormat(PlainText); AIMMyselfContact* aimmc = dynamic_cast( c ); if ( aimmc ) userInfoEdit->setText( aimmc->userProfile() ); else userInfoEdit->setText( TQString() ); setButtonText(Ok, i18n("&Save Profile")); showButton(User1, false); l->addWidget(userInfoEdit); } else { userInfoEdit=0L; mMainWidget->userInfoFrame->setFrameStyle(TQFrame::NoFrame | TQFrame::Plain); TQVBoxLayout *l = new TQVBoxLayout(mMainWidget->userInfoFrame); userInfoView = new KTextBrowser(mMainWidget->userInfoFrame, "userInfoView"); userInfoView->setTextFormat(AutoText); userInfoView->setNotifyClick(true); TQObject::connect( userInfoView, TQ_SIGNAL(urlClick(const TQString&)), this, TQ_SLOT(slotUrlClicked(const TQString&))); TQObject::connect( userInfoView, TQ_SIGNAL(mailClick(const TQString&, const TQString&)), this, TQ_SLOT(slotMailClicked(const TQString&, const TQString&))); showButton(Cancel, false); setButtonText(Ok, i18n("&Close")); setEscapeButton(Ok); l->addWidget(userInfoView); if(m_contact->isOnline()) { // Update the user view to indicate that we're requesting the user's profile userInfoView->setText(i18n("Requesting User Profile, please wait...")); } TQTimer::singleShot(0, this, TQ_SLOT(slotUpdateProfile())); } } AIMUserInfoDialog::~AIMUserInfoDialog() { kdDebug(14200) << k_funcinfo << "Called." << endl; } void AIMUserInfoDialog::slotUpdateClicked() { kdDebug(14200) << k_funcinfo << "Called." << endl; TQString newNick = mMainWidget->txtNickName->text(); TQString currentNick = m_contact->property( Kopete::Global::Properties::self()->nickName() ).value().toString(); if ( !newNick.isEmpty() && ( newNick != currentNick ) ) { //m_contact->rename(newNick); //emit updateNickname(newNick); setCaption(i18n("User Information on %1").arg(newNick)); } } void AIMUserInfoDialog::slotSaveClicked() { kdDebug(14200) << k_funcinfo << "Called." << endl; if (userInfoEdit) { // editable mode, set profile TQString newNick = mMainWidget->txtNickName->text(); TQString currentNick = m_contact->property( Kopete::Global::Properties::self()->nickName() ).value().toString(); if(!newNick.isEmpty() && ( newNick != currentNick ) ) { //m_contact->rename(newNick); //emit updateNickname(newNick); setCaption(i18n("User Information on %1").arg(newNick)); } mAccount->setUserProfile(userInfoEdit->text()); } emit closing(); } void AIMUserInfoDialog::slotCloseClicked() { kdDebug(14200) << k_funcinfo << "Called." << endl; emit closing(); } void AIMUserInfoDialog::slotUpdateProfile() { kdDebug(14152) << k_funcinfo << "Got User Profile." << endl; AIMProtocol* p = static_cast( mAccount->protocol() ); TQString awayMessage = m_contact->property( p->awayMessage ).value().toString(); mMainWidget->txtAwayMessage->setText( awayMessage ); if ( awayMessage.isNull() ) { mMainWidget->txtAwayMessage->hide(); mMainWidget->lblAwayMessage->hide(); } else { mMainWidget->txtAwayMessage->show(); mMainWidget->lblAwayMessage->show(); } TQString onlineSince = m_contact->property("onlineSince").value().toString(); //TQString onlineSince = m_details.onlineSinceTime().toString(); mMainWidget->txtOnlineSince->setText( onlineSince ); AIMContact* c = static_cast( m_contact ); mMainWidget->txtIdleTime->setText(c->formattedIdleTime()); mMainWidget->txtWarnLevel->setText(TQString::number(c->warningLevel())); TQString contactProfile = m_contact->property( p->clientProfile ).value().toString(); if ( contactProfile.isNull() ) { contactProfile = i18n("No user information provided"); } if(userInfoEdit) { userInfoEdit->setText(contactProfile); } else if(userInfoView) { userInfoView->setText(contactProfile); } } void AIMUserInfoDialog::slotUrlClicked(const TQString &url) { new KRun(KURL(url)); } void AIMUserInfoDialog::slotMailClicked(const TQString&, const TQString &address) { new KRun(KURL(address)); } #include "aimuserinfo.moc"