/** * Inform the rest of the program that a user has just left and * remove it. */ void SessionState::partUser(const QStringList& tokens) { int id = tokens.at(1).toInt(); if(users_.contains(id)) { emit userLeft(id); users_.remove(id); } else { qWarning() << "Got PART message for a user (" << id << ") who isn't part of the session."; } }
void ConferenceTask::parseUserLeft( YMSGTransfer *t ) { kdDebug(YAHOO_RAW_DEBUG) ; QString room = t->firstParam( 57 ); QString who = t->firstParam( 56 ); if( !who.isEmpty() && !room.isEmpty() ) emit userLeft( who, room ); }
void Chat::removeChatParticipant(QSharedPointer<const User> participant) { QMutexLocker locker(&usersMutex); if (!users.contains(participant->getName())) { QLOG_ERROR() << QString("Remove non-participant user '%1' from chat '%2'") .arg(participant->getName()).arg(chatID); return; } users.remove(participant->getName()); emit userLeft(participant); }
MyChat::MyChat(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flags) { QHostAddress addr; Settings st(&myNick, &addr); st.exec(); setupUi(this); lineEdit->setFocusPolicy(Qt::StrongFocus); textEdit->setReadOnly(true); listWidget->setFocusPolicy(Qt::NoFocus); engine = new NetworkEngine(myNick, addr); connect(lineEdit, SIGNAL(returnPressed()), this, SLOT(returnPressed())); connect(engine, SIGNAL(newMessage(QString,QString)), this, SLOT(appendMessage(QString,QString))); connect(engine, SIGNAL(newUser(QString)), this, SLOT(newUser(QString))); connect(engine, SIGNAL(userLeft(QString)), this, SLOT(userLeft(QString))); tableFormat.setBorder(0); newUser(myNick); }
ChatWidget::ChatWidget(QSharedPointer<Session> session, QSharedPointer<Chat> chat, QWidget *parent) : QWidget(parent), ui(new Ui::ChatWidget) { setAttribute(Qt::WA_DeleteOnClose, true); ui->setupUi(this); qRegisterMetaType<QSharedPointer<const User> >("QSharedPointer<const User>"); qRegisterMetaType<QObject *>("QObject *"); d_chat = chat; d_session = session; pList = new UserModel(d_session); ui->lvParticipants->setModel(pList); QListIterator<QSharedPointer<const User> > it(d_chat->getUserList()); while (it.hasNext()) { userJoined(it.next()); } connect(ui->leMessage, SIGNAL(returnPressed()), this, SLOT(returnPressed())); connect(d_chat.data(), SIGNAL(messageReceived(QSharedPointer<const User>, QString)), this, SLOT(messageReceived(QSharedPointer<const User>, QString))); connect(d_chat.data(), SIGNAL(userJoined(QSharedPointer<const User>)), this, SLOT(userJoined(QSharedPointer<const User>))); connect(d_chat.data(), SIGNAL(userLeft(QSharedPointer<const User>)), this, SLOT(userLeft(QSharedPointer<const User>))); connect(d_chat.data(), SIGNAL(leaveChatCompleted(bool, QString)), this, SLOT(leaveChatCompleted(bool, QString))); connect(d_chat.data(), SIGNAL(inviteCompleted(bool, QString)), this, SLOT(inviteCompleted(bool, QString))); connect(d_chat.data(), SIGNAL(sendCompleted(bool, QString)), this, SLOT(sendCompleted(bool, QString))); connect(d_session.data(), SIGNAL(retrieveUserCompleted(QSharedPointer<const User>, const QObject *, bool, QString)), this, SLOT(invite(QSharedPointer<const User>, const QObject *, bool, QString))); }
void ChatTests::testLeaveChatReinvite() { QSignalSpy spy(session2.data(), SIGNAL(invitationReceived(QSharedPointer<Chat>))); QVERIFY(spy.isValid()); QVERIFY(spy.isEmpty()); QSignalSpy spy4(chat.data(), SIGNAL(userJoined(QSharedPointer<const User>))); QVERIFY(spy4.isValid()); QVERIFY(spy4.isEmpty()); QSharedPointer<const User> u(new User(TEMP_SESSION_USER2, WORKING_DIR "public.pem")); chat->invite(u); waitForResult(spy); waitForResult(spy4); QList<QVariant> arguments = spy.takeFirst(); QSharedPointer<Chat> chat2 = arguments.at(0).value<QSharedPointer<Chat> >(); QSignalSpy spy2(chat2.data(), SIGNAL(leaveChatCompleted(bool, QString))); QVERIFY(spy2.isValid()); QVERIFY(spy2.isEmpty()); QSignalSpy spy3(chat.data(), SIGNAL(userLeft(QSharedPointer<const User>))); QVERIFY(spy3.isValid()); QVERIFY(spy3.isEmpty()); chat2->leaveChat(); waitForResult(spy2); waitForResult(spy3); QCOMPARE(spy2.count(), 1); QList<QVariant> arguments2 = spy2.takeFirst(); QVERIFY2(arguments2.at(0) == true, arguments2.at(1).toString().toStdString().c_str()); QCOMPARE(spy3.count(), 1); QList<QVariant> arguments3 = spy3.takeFirst(); QSharedPointer<const User> u2 = arguments3.at(0).value<QSharedPointer<const User> >(); QCOMPARE(u2->getName(), QString(TEMP_SESSION_USER2)); QSignalSpy spy9(session2.data(), SIGNAL(invitationReceived(QSharedPointer<Chat>))); QVERIFY(spy9.isValid()); QVERIFY(spy9.isEmpty()); chat->invite(u); waitForResult(spy9); QCOMPARE(spy9.count(), 1); }
void TabUserLists::processUserLeftEvent(const Event_UserLeft &event) { QString userName = QString::fromStdString(event.name()); if (buddyList->getUsers().keys().contains(userName)) soundEngine->playSound("buddy_leave"); if (allUsersList->deleteUser(userName)) { ignoreList->setUserOnline(userName, false); buddyList->setUserOnline(userName, false); ignoreList->sortItems(); buddyList->sortItems(); emit userLeft(userName); } }
void GroupManager::handleLeave(ccn_upcall_info *info) { debug("leave interest received"); // /ndn/broadcast/conference/conference-name/leave/username char *leaver = NULL; leaver = ccn_name_comp_to_str(info->interest_ccnb, info->interest_comps, 5); // get leaver QString user = leaver; //pGroupManager->deleteRemoteUser(user); RemoteUser *rmUser = qhRemoteUsers[user]; if (rmUser == NULL) return; rmUser->setLeft(); userLeft(rmUser); debug(QString("remote user %1 left\n").arg(user)); if (leaver != NULL) { free((void *)leaver); leaver = NULL; } }
void GroupManager::checkAlive() { QHash<QString, RemoteUser *>::iterator i = qhRemoteUsers.begin(); debug("check alive timer triggered"); while (i != qhRemoteUsers.end()) { RemoteUser * ru = i.value(); if (ru != NULL && ru->isStaled()) { if (!ru->hasLeft()) { userLeft(ru); } delete ru; i = qhRemoteUsers.erase(i); debug("check alive: remote user staled:"); } else { debug("check alive: nothing yet"); i++; } } }