diff options
Diffstat (limited to 'Swift/QtUI/QtChatWindow.cpp')
-rw-r--r-- | Swift/QtUI/QtChatWindow.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/Swift/QtUI/QtChatWindow.cpp b/Swift/QtUI/QtChatWindow.cpp index 314e36c..730195c 100644 --- a/Swift/QtUI/QtChatWindow.cpp +++ b/Swift/QtUI/QtChatWindow.cpp @@ -61,6 +61,9 @@ const QString QtChatWindow::ButtonFileTransferCancel = QString("filetransfer-can const QString QtChatWindow::ButtonFileTransferSetDescription = QString("filetransfer-setdescription"); const QString QtChatWindow::ButtonFileTransferSendRequest = QString("filetransfer-sendrequest"); const QString QtChatWindow::ButtonFileTransferAcceptRequest = QString("filetransfer-acceptrequest"); +const QString QtChatWindow::ButtonScreenSharingCancel = QString("screensharing-cancel"); +const QString QtChatWindow::ButtonScreenSharingStop = QString("screensharing-stop"); +const QString QtChatWindow::ButtonScreenSharingAcceptRequest = QString("screensharing-acceptrequest"); const QString QtChatWindow::ButtonMUCInvite = QString("mucinvite"); @@ -685,6 +688,47 @@ void QtChatWindow::setWhiteboardSessionStatus(std::string id, const ChatWindow:: messageLog_->setWhiteboardSessionStatus(QString::fromStdString(id), state); } +std::string QtChatWindow::addScreenSharing(const std::string& senderName, bool incoming) +{ + SWIFT_LOG(debug) << "addScreenSharing" << std::endl; + QString ss_id = QString("ft%1").arg(P2QSTRING(boost::lexical_cast<std::string>(idCounter_++))); + + QString htmlString; + if (incoming) { + htmlString = P2QSTRING(senderName) + " shares his screen with you" + "<br/>" + + "<div id='" + ss_id + "'>" + + buildChatWindowButton(tr("Accept"), ButtonScreenSharingAcceptRequest, ss_id) + + buildChatWindowButton(tr("Cancel"), ButtonScreenSharingCancel, ss_id) + + "</div>"; + } else { + htmlString = tr("Sharing screen with ") + contact_ + "<br/>" + + "<div id='" + ss_id + "'>" + + buildChatWindowButton(tr("Cancel"), ButtonScreenSharingCancel, ss_id) + + "</div>"; + } + + bool appendToPrevious = appendToPreviousCheck(PreviousMessageWasFileTransfer, senderName, !incoming); + if (lastLineTracker_.getShouldMoveLastLine()) { + /* should this be queued? */ + messageLog_->addLastSeenLine(); + /* if the line is added we should break the snippet */ + appendToPrevious = false; + } + QString qAvatarPath = "qrc:/icons/avatar.png"; + std::string id = "ssmessage" + boost::lexical_cast<std::string>(idCounter_++); + messageLog_->addMessage(boost::shared_ptr<ChatSnippet>(new MessageSnippet(htmlString, Qt::escape(P2QSTRING(senderName)), B2QDATE(boost::posix_time::second_clock::local_time()), qAvatarPath, !incoming, appendToPrevious, theme_, P2QSTRING(id)))); + + previousMessageWasSelf_ = !incoming; + previousSenderName_ = P2QSTRING(senderName); + previousMessageKind_ = PreviousMessageWasFileTransfer; + return Q2PSTRING(ss_id); +} + +void QtChatWindow::setScreenSharingStatus(std::string id, const ScreenSharing::SCState state, const std::string& msg) +{ + messageLog_->setScreenSharingStatus(QString::fromStdString(id), state, QString::fromStdString(msg)); +} + void QtChatWindow::handleHTMLButtonClicked(QString id, QString encodedArgument1, QString encodedArgument2, QString encodedArgument3) { QString arg1 = decodeButtonArgument(encodedArgument1); QString arg2 = decodeButtonArgument(encodedArgument2); @@ -731,6 +775,15 @@ void QtChatWindow::handleHTMLButtonClicked(QString id, QString encodedArgument1, QString id = arg1; onWhiteboardWindowShow(); } + else if (id.startsWith(ButtonScreenSharingAcceptRequest)) { + onScreenSharingAccept(Q2PSTRING(arg1)); + } + else if (id.startsWith(ButtonScreenSharingCancel)) { + onScreenSharingCancel(Q2PSTRING(arg1)); + } + else if (id.startsWith(ButtonScreenSharingStop)) { + onScreenSharingStop(Q2PSTRING(arg1)); + } else if (id.startsWith(ButtonMUCInvite)) { QString roomJID = arg1; QString password = arg2; |