Exemple #1
0
/**
 * 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 );
}
Exemple #3
0
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);
}
Exemple #4
0
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);
}
Exemple #5
0
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)));
}
Exemple #6
0
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++;
		}

	}
}