summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swift/QtUI/QtChatWindow.cpp')
-rw-r--r--Swift/QtUI/QtChatWindow.cpp53
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;