GroupChatForm::GroupChatForm(Group* chatGroup) : group(chatGroup), inCall{false} { nusersLabel = new QLabel(); tabber = new TabCompleter(msgEdit, group); fileButton->setEnabled(false); if (group->isAvGroupchat()) { videoButton->setEnabled(false); videoButton->setObjectName("grey"); } else { videoButton->setVisible(false); callButton->setVisible(false); volButton->setVisible(false); micButton->setVisible(false); } nameLabel->setText(group->getGroupWidget()->getName()); nusersLabel->setFont(Style::getFont(Style::Medium)); nusersLabel->setText(GroupChatForm::tr("%1 users in chat","Number of users in chat").arg(group->getPeersCount())); nusersLabel->setObjectName("statusLabel"); avatar->setPixmap(Style::scaleSvgImage(":/img/group_dark.svg", avatar->width(), avatar->height()), Qt::transparent); msgEdit->setObjectName("group"); namesListLayout = new FlowLayout(0,5,0); QStringList names(group->getPeerList()); for (const QString& name : names) { QLabel *l = new QLabel(name); l->setTextFormat(Qt::PlainText); namesListLayout->addWidget(l); } headTextLayout->addWidget(nusersLabel); headTextLayout->addLayout(namesListLayout); headTextLayout->addStretch(); nameLabel->setMinimumHeight(12); nusersLabel->setMinimumHeight(12); connect(sendButton, SIGNAL(clicked()), this, SLOT(onSendTriggered())); connect(msgEdit, SIGNAL(enterPressed()), this, SLOT(onSendTriggered())); connect(msgEdit, &ChatTextEdit::tabPressed, tabber, &TabCompleter::complete); connect(msgEdit, &ChatTextEdit::keyPressed, tabber, &TabCompleter::reset); connect(callButton, &QPushButton::clicked, this, &GroupChatForm::onCallClicked); connect(micButton, SIGNAL(clicked()), this, SLOT(onMicMuteToggle())); connect(volButton, SIGNAL(clicked()), this, SLOT(onVolMuteToggle())); connect(nameLabel, &CroppingLabel::textChanged, this, [=](QString text, QString orig) {if (text != orig) emit groupTitleChanged(group->getGroupId(), text.left(128));} ); setAcceptDrops(true); }
ChatForm::ChatForm(Friend* chatFriend) : f(chatFriend) , callId(0) { nameLabel->setText(f->getDisplayedName()); avatar->setPixmap(QPixmap(":/img/contact_dark.png"), Qt::transparent); statusMessageLabel = new CroppingLabel(); statusMessageLabel->setObjectName("statusLabel"); statusMessageLabel->setFont(Style::getFont(Style::Medium)); statusMessageLabel->setMinimumHeight(Style::getFont(Style::Medium).pixelSize()); isTypingLabel = new QLabel(); QFont font = isTypingLabel->font(); font.setItalic(true); font.setPixelSize(8); isTypingLabel->setFont(font); typingTimer.setSingleShot(true); QVBoxLayout* mainLayout = dynamic_cast<QVBoxLayout*>(layout()); mainLayout->insertWidget(1, isTypingLabel); netcam = new NetCamView(); timer = nullptr; headTextLayout->addWidget(statusMessageLabel); headTextLayout->addStretch(); callDuration = new QLabel(); headTextLayout->addWidget(callDuration, 1, Qt::AlignCenter); callDuration->hide(); menu.addAction(tr("Load History..."), this, SLOT(onLoadHistory())); connect(Core::getInstance(), &Core::fileSendStarted, this, &ChatForm::startFileSend); connect(sendButton, &QPushButton::clicked, this, &ChatForm::onSendTriggered); connect(fileButton, &QPushButton::clicked, this, &ChatForm::onAttachClicked); connect(callButton, &QPushButton::clicked, this, &ChatForm::onCallTriggered); connect(videoButton, &QPushButton::clicked, this, &ChatForm::onVideoCallTriggered); connect(msgEdit, &ChatTextEdit::enterPressed, this, &ChatForm::onSendTriggered); connect(msgEdit, &ChatTextEdit::textChanged, this, &ChatForm::onTextEditChanged); connect(micButton, SIGNAL(clicked()), this, SLOT(onMicMuteToggle())); connect(volButton, SIGNAL(clicked()), this, SLOT(onVolMuteToggle())); connect(chatWidget, &ChatAreaWidget::onFileTranfertInterract, this, &ChatForm::onFileTansBtnClicked); connect(Core::getInstance(), &Core::fileSendFailed, this, &ChatForm::onFileSendFailed); connect(this, SIGNAL(chatAreaCleared()), this, SLOT(clearReciepts())); connect(nameLabel, &CroppingLabel::textChanged, this, [=](QString text, QString orig) {if (text != orig) emit aliasChanged(text);} ); connect(&typingTimer, &QTimer::timeout, this, [=]{Core::getInstance()->sendTyping(f->getFriendID(), false);}); setAcceptDrops(true); }
void ChatForm::onAvStart(uint32_t FriendId, int CallId, bool video) { if (FriendId != f->getFriendID()) return; qDebug() << "onAvStart"; audioInputFlag = true; audioOutputFlag = true; callId = CallId; callButton->disconnect(); videoButton->disconnect(); if (video) { callButton->setObjectName("grey"); callButton->setToolTip(""); videoButton->setObjectName("red"); videoButton->setToolTip(tr("End video call")); connect(videoButton, SIGNAL(clicked()), this, SLOT(onHangupCallTriggered())); showNetcam(); } else { callButton->setObjectName("red"); callButton->setToolTip(tr("End audio call")); videoButton->setObjectName("grey"); videoButton->setToolTip(""); connect(callButton, SIGNAL(clicked()), this, SLOT(onHangupCallTriggered())); } callButton->style()->polish(callButton); videoButton->style()->polish(videoButton); micButton->setObjectName("green"); micButton->style()->polish(micButton); micButton->setToolTip(tr("Mute microphone")); volButton->setObjectName("green"); volButton->style()->polish(volButton); volButton->setToolTip(tr("Mute call")); connect(micButton, SIGNAL(clicked()), this, SLOT(onMicMuteToggle())); connect(volButton, SIGNAL(clicked()), this, SLOT(onVolMuteToggle())); startCounter(); }
ChatForm::ChatForm(Friend* chatFriend) : f(chatFriend) , audioInputFlag(false) , audioOutputFlag(false) , callId(0) { nameLabel->setText(f->getName()); avatar->setPixmap(QPixmap(":/img/contact_dark.png"), Qt::transparent); statusMessageLabel = new CroppingLabel(); statusMessageLabel->setObjectName("statusLabel"); statusMessageLabel->setFont(Style::getFont(Style::Medium)); statusMessageLabel->setMinimumHeight(Style::getFont(Style::Medium).pixelSize()); netcam = new NetCamView(); timer = nullptr; headTextLayout->addWidget(statusMessageLabel); headTextLayout->addStretch(); callDuration = new QLabel(); headTextLayout->addWidget(callDuration, 1, Qt::AlignCenter); callDuration->hide(); menu.addAction(tr("Load History..."), this, SLOT(onLoadHistory())); connect(Core::getInstance(), &Core::fileSendStarted, this, &ChatForm::startFileSend); connect(sendButton, &QPushButton::clicked, this, &ChatForm::onSendTriggered); connect(fileButton, &QPushButton::clicked, this, &ChatForm::onAttachClicked); connect(callButton, &QPushButton::clicked, this, &ChatForm::onCallTriggered); connect(videoButton, &QPushButton::clicked, this, &ChatForm::onVideoCallTriggered); connect(msgEdit, &ChatTextEdit::enterPressed, this, &ChatForm::onSendTriggered); connect(micButton, SIGNAL(clicked()), this, SLOT(onMicMuteToggle())); connect(volButton, SIGNAL(clicked()), this, SLOT(onVolMuteToggle())); connect(chatWidget, &ChatAreaWidget::onFileTranfertInterract, this, &ChatForm::onFileTansBtnClicked); connect(Core::getInstance(), &Core::fileSendFailed, this, &ChatForm::onFileSendFailed); setAcceptDrops(true); }
GroupChatForm::GroupChatForm(Group* chatGroup) : group(chatGroup), inCall{false} { nusersLabel = new QLabel(); tabber = new TabCompleter(msgEdit, group); fileButton->setEnabled(false); if (group->isAvGroupchat()) { videoButton->setEnabled(false); videoButton->setObjectName("grey"); } else { videoButton->setVisible(false); callButton->setVisible(false); volButton->setVisible(false); micButton->setVisible(false); } nameLabel->setText(group->getGroupWidget()->getName()); nusersLabel->setFont(Style::getFont(Style::Medium)); nusersLabel->setObjectName("statusLabel"); retranslateUi(); avatar->setPixmap(Style::scaleSvgImage(":/img/group_dark.svg", avatar->width(), avatar->height())); msgEdit->setObjectName("group"); namesListLayout = new FlowLayout(0,5,0); QStringList names(group->getPeerList()); for (QString& name : names) { QLabel *l = new QLabel(); QString tooltip = correctNames(name); if (tooltip.isNull()) { l->setToolTip(tooltip); } l->setText(name); l->setTextFormat(Qt::PlainText); namesListLayout->addWidget(l); } headTextLayout->addWidget(nusersLabel); headTextLayout->addLayout(namesListLayout); headTextLayout->addStretch(); nameLabel->setMinimumHeight(12); nusersLabel->setMinimumHeight(12); connect(sendButton, SIGNAL(clicked()), this, SLOT(onSendTriggered())); connect(msgEdit, SIGNAL(enterPressed()), this, SLOT(onSendTriggered())); connect(msgEdit, &ChatTextEdit::tabPressed, tabber, &TabCompleter::complete); connect(msgEdit, &ChatTextEdit::keyPressed, tabber, &TabCompleter::reset); connect(callButton, &QPushButton::clicked, this, &GroupChatForm::onCallClicked); connect(micButton, SIGNAL(clicked()), this, SLOT(onMicMuteToggle())); connect(volButton, SIGNAL(clicked()), this, SLOT(onVolMuteToggle())); connect(nameLabel, &CroppingLabel::editFinished, this, [=](const QString& newName) { if (!newName.isEmpty()) { nameLabel->setText(newName); emit groupTitleChanged(group->getGroupId(), newName.left(128)); } }); setAcceptDrops(true); Translator::registerHandler(std::bind(&GroupChatForm::retranslateUi, this), this); }