void Widget::clearContactsList() { QList<Friend*> friends = FriendList::getAllFriends(); for (Friend* f : friends) removeFriend(f); for (Group* g : GroupList::groupList) removeGroup(g); }
void NetworkConnection::addBlock(PlayerListing * player) { if(player->friendWatchType == PlayerListing::friended) removeFriend(player); else if(player->friendWatchType == PlayerListing::watched) removeWatch(player); player->friendWatchType = PlayerListing::blocked; blockedList.push_back(new FriendWatchListing(player->name)); }
void Widget::clearContactsList() { QList<Friend*> friends = FriendList::getAllFriends(); for (Friend* f : friends) removeFriend(f, true); QList<Group*> groups = GroupList::getAllGroups(); for (Group* g : groups) removeGroup(g, true); }
void NetworkConnection::addWatch(PlayerListing * player) { if(player->friendWatchType == PlayerListing::friended) removeFriend(player); else if(player->friendWatchType == PlayerListing::blocked) removeBlock(player); player->friendWatchType = PlayerListing::watched; watchedList.push_back(new FriendWatchListing(player->name, friendwatch_notify_default)); emit playerListingReceived(player); }
//READ---------------------------------------------------------------------------------- void MainThread::Read() { qCritical()<<"READ "; QTcpSocket* sock= ((QTcpSocket*)(this->sender())); QByteArray array=sock->readAll(); QString buffer = array; int id; id=cl->ID(sock); qCritical()<<buffer; if (!buffer.contains("#/")) { sock->disconnectFromHost(); return; } QStringList strList=buffer.split("#/"); if (strList.isEmpty()) return; QStringListIterator iter(strList); while(iter.hasNext()) { QString buf=iter.next(); if( buf.contains(structure.prefix+ structure.key+ structure.separator+structure.login+ structure.prefix) ) { qCritical()<<"RES2"; QSharedPointer<IMessage> mes(new Message(buf)); mes->AddPart(keys.s,QString::number(cl->ID(sock))); emit authentification(mes); return; } if( buf.contains(structure.prefix+structure.key+structure.separator+structure.send+structure.prefix)) { QSharedPointer<IMessage> mes(new Message(buf)); mes->AddPart(keys.s,QString::number(cl->ID(sock))); emit send(mes); return; } if( buf.contains(structure.prefix+structure.key+structure.separator+structure.addfriend+structure.prefix)) { addFriend(sock, id, buf); return; } if( buf.contains(structure.prefix+structure.key+structure.separator+structure.removefriend+structure.prefix)) { removeFriend(sock, id, buf); return; } } }
void ContentDialog::onChatroomWidgetClicked(GenericChatroomWidget *widget, bool group) { if (group) { ContentDialog* contentDialog = new ContentDialog(settingsWidget); contentDialog->show(); if (widget->getFriend() != nullptr) { removeFriend(widget->getFriend()->getFriendID()); Widget::getInstance()->addFriendDialog(widget->getFriend(), contentDialog); } else { removeGroup(widget->getGroup()->getGroupId()); Widget::getInstance()->addGroupDialog(widget->getGroup(), contentDialog); } contentDialog->raise(); contentDialog->activateWindow(); return; } // If we clicked on the currently active widget, don't reload and relayout everything if (activeChatroomWidget == widget) return; contentLayout->clear(); if (activeChatroomWidget != nullptr) activeChatroomWidget->setAsInactiveChatroom(); activeChatroomWidget = widget; widget->setChatForm(contentLayout); widget->setAsActiveChatroom(); widget->resetEventFlags(); widget->updateStatusLight(); updateTitle(widget); if (widget->getFriend()) widget->getFriend()->getFriendWidget()->updateStatusLight(); else widget->getGroup()->getGroupWidget()->updateStatusLight(); }
/** Constructor */ SecurityItem::SecurityItem(FeedHolder *parent, uint32_t feedId, std::string gpgId, std::string sslId, uint32_t type, bool isHome) :QWidget(NULL), mParent(parent), mFeedId(feedId), mSslId(sslId), mGpgId(gpgId), mType(type), mIsHome(isHome) { /* Invoke the Qt Designer generated object setup routine */ setupUi(this); messageframe->setVisible(false); sendmsgButton->setEnabled(false); quickmsgButton->setEnabled(false); chatButton->setEnabled(false); addFriendButton->setEnabled(false); removeFriendButton->setEnabled(false); removeFriendButton->hide(); peerDetailsButton->setEnabled(false); /* general ones */ connect( expandButton, SIGNAL( clicked( void ) ), this, SLOT( toggle ( void ) ) ); connect( clearButton, SIGNAL( clicked( void ) ), this, SLOT( removeItem ( void ) ) ); /* specific ones */ connect( chatButton, SIGNAL( clicked( void ) ), this, SLOT( openChat ( void ) ) ); connect( actionNew_Message, SIGNAL( triggered( ) ), this, SLOT( sendMsg ( void ) ) ); connect( quickmsgButton, SIGNAL( clicked( ) ), this, SLOT( togglequickmessage() ) ); connect( cancelButton, SIGNAL( clicked( ) ), this, SLOT( togglequickmessage() ) ); connect( sendmsgButton, SIGNAL( clicked( ) ), this, SLOT( sendMessage() ) ); connect(addFriendButton, SIGNAL(clicked()), this, SLOT(addFriend())); connect(removeFriendButton, SIGNAL(clicked()), this, SLOT(removeFriend())); connect(peerDetailsButton, SIGNAL(clicked()), this, SLOT(peerDetails())); connect(NotifyQt::getInstance(), SIGNAL(friendsChanged()), this, SLOT(updateItem())); QMenu *msgmenu = new QMenu(); msgmenu->addAction(actionNew_Message); quickmsgButton->setMenu(msgmenu); avatar->setId(mSslId, false); small(); updateItemStatic(); updateItem(); }
void Monster::onCreatureLeave(Creature* creature) { // std::cout << "onCreatureLeave - " << creature->getName() << std::endl; if (getMaster() == creature) { //Take random steps and only use defense abilities (e.g. heal) until its master comes back isMasterInRange = false; } //update friendList if (isFriend(creature)) { removeFriend(creature); } //update targetList if (isOpponent(creature)) { removeTarget(creature); if (targetList.empty()) { updateIdleStatus(); } } }
/** Constructor */ SecurityItem::SecurityItem(FeedHolder *parent, uint32_t feedId, const RsPgpId &gpgId, const RsPeerId &sslId, const std::string &sslCn, const std::string& ip_address,uint32_t type, bool isHome) : FeedItem(NULL), mParent(parent), mFeedId(feedId), mGpgId(gpgId), mSslId(sslId), mSslCn(sslCn), mIP(ip_address), mType(type), mIsHome(isHome) { /* Invoke the Qt Designer generated object setup routine */ setupUi(this); //quickmsgButton->hide(); chatButton->hide(); removeFriendButton->setEnabled(false); removeFriendButton->hide(); peerDetailsButton->setEnabled(false); friendRequesttoolButton->hide(); requestLabel->hide(); /* general ones */ connect( expandButton, SIGNAL( clicked( void ) ), this, SLOT( toggle ( void ) ) ); connect( clearButton, SIGNAL( clicked( void ) ), this, SLOT( removeItem ( void ) ) ); /* specific ones */ connect( chatButton, SIGNAL( clicked( void ) ), this, SLOT( openChat ( void ) ) ); //connect( quickmsgButton, SIGNAL( clicked( ) ), this, SLOT( sendMsg() ) ); connect( removeFriendButton, SIGNAL(clicked()), this, SLOT(removeFriend())); connect( peerDetailsButton, SIGNAL(clicked()), this, SLOT(peerDetails())); connect( friendRequesttoolButton, SIGNAL(clicked()), this, SLOT(friendRequest())); connect(NotifyQt::getInstance(), SIGNAL(friendsChanged()), this, SLOT(updateItem())); avatar->setId(ChatId(mSslId)); expandFrame->hide(); updateItemStatic(); updateItem(); }
void Widget::removeFriend(int friendId) { removeFriend(FriendList::findFriend(friendId)); }
void FriendWidget::contextMenuEvent(QContextMenuEvent * event) { if (!active) setBackgroundRole(QPalette::Highlight); installEventFilter(this); // Disable leave event. QPoint pos = event->globalPos(); ToxId id = FriendList::findFriend(friendId)->getToxId(); QString dir = Settings::getInstance().getAutoAcceptDir(id); QMenu menu; QAction* openChatWindow = nullptr; QAction* removeChatWindow = nullptr; ContentDialog* contentDialog = ContentDialog::getFriendDialog(friendId); bool notAlone = contentDialog != nullptr && contentDialog->chatroomWidgetCount() > 1; if (contentDialog == nullptr || notAlone) openChatWindow = menu.addAction(tr("Open chat in new window")); if (contentDialog != nullptr && contentDialog->hasFriendWidget(friendId, this)) removeChatWindow = menu.addAction(tr("Remove chat from this window")); menu.addSeparator(); QMenu* inviteMenu = menu.addMenu(tr("Invite to group","Menu to invite a friend to a groupchat")); QAction* newGroupAction = inviteMenu->addAction(tr("To new group")); inviteMenu->addSeparator(); QMap<QAction*, Group*> groupActions; for (Group* group : GroupList::getAllGroups()) { int maxNameLen = 30; QString name = group->getGroupWidget()->getName(); if ( name.length() > maxNameLen ) { name = name.left(maxNameLen).trimmed() + ".."; } QAction* groupAction = inviteMenu->addAction(tr("Invite to group '%1'").arg(name)); groupActions[groupAction] = group; } int circleId = Settings::getInstance().getFriendCircleID(FriendList::findFriend(friendId)->getToxId()); CircleWidget *circleWidget = CircleWidget::getFromID(circleId); QMenu* circleMenu = nullptr; QAction* newCircleAction = nullptr; QAction *removeCircleAction = nullptr; QMap<QAction*, int> circleActions; FriendListWidget *friendList; if (circleWidget == nullptr) friendList = qobject_cast<FriendListWidget*>(FriendList::findFriend(friendId)->getFriendWidget()->parentWidget()); else friendList = qobject_cast<FriendListWidget*>(circleWidget->parentWidget()); circleMenu = menu.addMenu(tr("Move to circle...", "Menu to move a friend into a different circle")); newCircleAction = circleMenu->addAction(tr("To new circle")); if (circleId != -1) removeCircleAction = circleMenu->addAction(tr("Remove from circle '%1'").arg(Settings::getInstance().getCircleName(circleId))); circleMenu->addSeparator(); QList<QAction*> circleActionList; for (int i = 0; i < Settings::getInstance().getCircleCount(); ++i) { if (i != circleId) { circleActionList.push_back(new QAction(tr("Move to circle \"%1\"").arg(Settings::getInstance().getCircleName(i)), circleMenu)); circleActions[circleActionList.back()] = i; } } std::sort(circleActionList.begin(), circleActionList.end(), [](const QAction* lhs, const QAction* rhs) -> bool { QCollator collator; collator.setNumericMode(true); return collator.compare(lhs->text(), rhs->text()) < 0; }); circleMenu->addActions(circleActionList); QAction* setAlias = menu.addAction(tr("Set alias...")); menu.addSeparator(); QAction* autoAccept = menu.addAction(tr("Auto accept files from this friend", "context menu entry")); autoAccept->setCheckable(true); autoAccept->setChecked(!dir.isEmpty()); menu.addSeparator(); QAction* removeFriendAction = nullptr; if (contentDialog == nullptr || !contentDialog->hasFriendWidget(friendId, this)) removeFriendAction = menu.addAction(tr("Remove friend", "Menu to remove the friend from our friendlist")); menu.addSeparator(); QAction* aboutWindow = menu.addAction(tr("Show details")); QAction* selectedItem = menu.exec(pos); removeEventFilter(this); if (!active) setBackgroundRole(QPalette::Window); if (selectedItem) { if (selectedItem == setAlias) { nameLabel->editBegin(); } else if (selectedItem == removeFriendAction) { emit removeFriend(friendId); return; } else if (selectedItem == openChatWindow) { emit chatroomWidgetClicked(this, true); return; } else if (selectedItem == removeChatWindow) { ContentDialog* contentDialog = ContentDialog::getFriendDialog(friendId); contentDialog->removeFriend(friendId); return; } else if (selectedItem == autoAccept) { if (!autoAccept->isChecked()) { qDebug() << "not checked"; dir = QDir::homePath(); autoAccept->setChecked(false); Settings::getInstance().setAutoAcceptDir(id, ""); } else if (autoAccept->isChecked()) { dir = QFileDialog::getExistingDirectory(0, tr("Choose an auto accept directory","popup title"), dir, QFileDialog::DontUseNativeDialog); autoAccept->setChecked(true); qDebug() << "setting auto accept dir for" << friendId << "to" << dir; Settings::getInstance().setAutoAcceptDir(id, dir); } } else if (selectedItem == aboutWindow) { AboutUser *aboutUser = new AboutUser(id, Widget::getInstance()); aboutUser->setFriend(FriendList::findFriend(friendId)); aboutUser->show(); } else if (selectedItem == newGroupAction) { int groupId = Core::getInstance()->createGroup(); Core::getInstance()->groupInviteFriend(friendId, groupId); } else if (selectedItem == newCircleAction) { if (circleWidget != nullptr) circleWidget->updateStatus(); if (friendList != nullptr) friendList->addCircleWidget(FriendList::findFriend(friendId)->getFriendWidget()); else Settings::getInstance().setFriendCircleID(id, Settings::getInstance().addCircle()); } else if (groupActions.contains(selectedItem)) { Group* group = groupActions[selectedItem]; Core::getInstance()->groupInviteFriend(friendId, group->getGroupId()); } else if (removeCircleAction != nullptr && selectedItem == removeCircleAction) { if (friendList != nullptr) friendList->moveWidget(FriendList::findFriend(friendId)->getFriendWidget(), FriendList::findFriend(friendId)->getStatus(), true); else Settings::getInstance().setFriendCircleID(id, -1); if (circleWidget) { circleWidget->updateStatus(); Widget::getInstance()->searchCircle(circleWidget); } } else if (circleActions.contains(selectedItem)) { CircleWidget* circle = CircleWidget::getFromID(circleActions[selectedItem]); if (circle != nullptr) { circle->addFriendWidget(FriendList::findFriend(friendId)->getFriendWidget(), FriendList::findFriend(friendId)->getStatus()); circle->setExpanded(true); Widget::getInstance()->searchCircle(circle); Settings::getInstance().savePersonal(); } else Settings::getInstance().setFriendCircleID(id, circleActions[selectedItem]); if (circleWidget != nullptr) { circleWidget->updateStatus(); Widget::getInstance()->searchCircle(circleWidget); } } } }
void FriendWidget::contextMenuEvent(QContextMenuEvent * event) { QPoint pos = event->globalPos(); QString id = Core::getInstance()->getFriendAddress(friendId); QString dir = Settings::getInstance().getAutoAcceptDir(id); QMenu menu; QMenu* inviteMenu = menu.addMenu(tr("Invite to group","Menu to invite a friend to a groupchat")); QAction* copyId = menu.addAction(tr("Copy friend ID","Menu to copy the Tox ID of that friend")); QMap<QAction*, Group*> groupActions; for (Group* group : GroupList::groupList) { QAction* groupAction = inviteMenu->addAction(group->widget->getName()); groupActions[groupAction] = group; } if (groupActions.isEmpty()) inviteMenu->setEnabled(false); QAction* setAlias = menu.addAction(tr("Set alias...")); menu.addSeparator(); QAction* autoAccept = menu.addAction(tr("Auto accept files from this friend", "context menu entry")); autoAccept->setCheckable(true); autoAccept->setChecked(!dir.isEmpty()); menu.addSeparator(); QAction* removeFriendAction = menu.addAction(tr("Remove friend", "Menu to remove the friend from our friendlist")); QAction* selectedItem = menu.exec(pos); if (selectedItem) { if (selectedItem == copyId) { emit copyFriendIdToClipboard(friendId); return; } else if (selectedItem == setAlias) { setFriendAlias(); } else if (selectedItem == removeFriendAction) { hide(); show(); //Toggle visibility to work around bug of repaintEvent() not being fired on parent widget when this is hidden hide(); emit removeFriend(friendId); return; } else if (selectedItem == autoAccept) { if (!autoAccept->isChecked()) { qDebug() << "not checked"; dir = QDir::homePath(); autoAccept->setChecked(false); Settings::getInstance().setAutoAcceptDir(id, ""); } if (autoAccept->isChecked()) { dir = QFileDialog::getExistingDirectory(0, tr("Choose an auto accept directory","popup title"), dir); autoAccept->setChecked(true); qDebug() << "FriendWidget: setting auto accept dir for" << friendId << "to" << dir; Settings::getInstance().setAutoAcceptDir(id, dir); } } else if (groupActions.contains(selectedItem)) { Group* group = groupActions[selectedItem]; Core::getInstance()->groupInviteFriend(friendId, group->groupId); } } }