diff options
Diffstat (limited to 'Swift')
-rw-r--r-- | Swift/Controllers/FileTransfer/FileTransferController.cpp | 1 | ||||
-rw-r--r-- | Swift/Controllers/UIInterfaces/ChatWindow.h | 10 | ||||
-rw-r--r-- | Swift/QtUI/QtPlainChatView.cpp | 23 | ||||
-rw-r--r-- | Swift/QtUI/QtWebKitChatView.cpp | 14 |
4 files changed, 34 insertions, 14 deletions
diff --git a/Swift/Controllers/FileTransfer/FileTransferController.cpp b/Swift/Controllers/FileTransfer/FileTransferController.cpp index 076d3c0..f7ce8e6 100644 --- a/Swift/Controllers/FileTransfer/FileTransferController.cpp +++ b/Swift/Controllers/FileTransfer/FileTransferController.cpp @@ -145,12 +145,13 @@ void FileTransferController::handleFileTransferStateChange(FileTransfer::State s chatWindow->setFileTransferStatus(uiID, ChatWindow::FTFailed); return; case FileTransfer::State::WaitingForAccept: chatWindow->setFileTransferStatus(uiID, ChatWindow::WaitingForAccept); return; case FileTransfer::State::WaitingForStart: + chatWindow->setFileTransferStatus(uiID, ChatWindow::Initialisation); return; } assert(false); } void FileTransferController::handleProgressPercentageChange(int percentage) { diff --git a/Swift/Controllers/UIInterfaces/ChatWindow.h b/Swift/Controllers/UIInterfaces/ChatWindow.h index b1e2a11..0fa734c 100644 --- a/Swift/Controllers/UIInterfaces/ChatWindow.h +++ b/Swift/Controllers/UIInterfaces/ChatWindow.h @@ -86,13 +86,21 @@ namespace Swift { enum AckState {Pending, Received, Failed}; enum ReceiptState {ReceiptRequested, ReceiptReceived, ReceiptFailed}; enum OccupantAction {Kick, Ban, MakeModerator, MakeParticipant, MakeVisitor, AddContact, ShowProfile}; enum RoomAction {ChangeSubject, Configure, Affiliations, Destroy, Invite}; - enum FileTransferState {WaitingForAccept, Negotiating, Transferring, Canceled, Finished, FTFailed}; + enum FileTransferState { + Initialisation, ///< Collecting information required for sending the request out. + WaitingForAccept, ///< The file transfer request was send out. + Negotiating, ///< The other party accepted the file transfer request and a suitable transfer method is negotiated. + Transferring, ///< The negotiation was successful and the file is currently transferred. + Canceled, ///< Someone actively canceled the transfer. + Finished, ///< The file was transferred successfully. + FTFailed ///< The negotiation, the transfer itself or the verification failed. + }; enum WhiteboardSessionState {WhiteboardAccepted, WhiteboardTerminated, WhiteboardRejected}; enum BlockingState {BlockingUnsupported, IsBlocked, IsUnblocked}; enum Direction { UnknownDirection, DefaultDirection }; enum MUCType { StandardMUC, ImpromptuMUC }; enum TimestampBehaviour { KeepTimestamp, UpdateTimestamp }; enum RoomBookmarkState { RoomNotBookmarked, RoomBookmarked, RoomAutoJoined }; diff --git a/Swift/QtUI/QtPlainChatView.cpp b/Swift/QtUI/QtPlainChatView.cpp index 031a41d..eabf35f 100644 --- a/Swift/QtUI/QtPlainChatView.cpp +++ b/Swift/QtUI/QtPlainChatView.cpp @@ -3,28 +3,28 @@ * All rights reserved. * See the COPYING file for more information. */ #include <Swift/QtUI/QtPlainChatView.h> -#include <QTextEdit> -#include <QScrollBar> -#include <QVBoxLayout> -#include <QPushButton> -#include <QLabel> #include <QDialog> -#include <QProgressBar> #include <QFileDialog> #include <QInputDialog> +#include <QLabel> #include <QMenu> +#include <QProgressBar> +#include <QPushButton> +#include <QScrollBar> +#include <QTextEdit> +#include <QVBoxLayout> -#include <Swiften/Base/foreach.h> #include <Swiften/Base/FileSize.h> +#include <Swiften/Base/foreach.h> -#include <Swift/Controllers/UIEvents/UIEventStream.h> #include <Swift/Controllers/UIEvents/JoinMUCUIEvent.h> +#include <Swift/Controllers/UIEvents/UIEventStream.h> #include <Swift/QtUI/ChatSnippet.h> #include <Swift/QtUI/QtSwiftUtil.h> #include <Swift/QtUI/QtUtilities.h> namespace Swift { @@ -357,12 +357,19 @@ QtPlainChatView::FileTransfer::FileTransfer(QtPlainChatView* parent, bool sender return; } std::string status = msg; switch (state) { + case ChatWindow::Initialisation: { + status = "Preparing to send <i>"+ filename + "</i>..."; + FileTransfer::Action* cancel = new FileTransfer::Action("Cancel", ftId); + parent->connect(cancel, SIGNAL(clicked()), SLOT(fileTransferReject())); + layout_->addWidget(cancel); + break; + } case ChatWindow::WaitingForAccept: { status = "Waiting for user to accept <i>" + filename + "</i>..."; FileTransfer::Action* cancel = new FileTransfer::Action("Cancel", ftId); parent->connect(cancel, SIGNAL(clicked()), SLOT(fileTransferReject())); layout_->addWidget(cancel); break; diff --git a/Swift/QtUI/QtWebKitChatView.cpp b/Swift/QtUI/QtWebKitChatView.cpp index d6dc6f5..b7f96f6 100644 --- a/Swift/QtUI/QtWebKitChatView.cpp +++ b/Swift/QtUI/QtWebKitChatView.cpp @@ -435,24 +435,28 @@ void QtWebKitChatView::setFileTransferStatus(QString id, const ChatWindow::FileT if (ftElement.isNull()) { SWIFT_LOG(debug) << "Tried to access FT UI via invalid id! id = " << Q2PSTRING(id) << std::endl; return; } QString newInnerHTML = ""; - if (state == ChatWindow::WaitingForAccept) { - newInnerHTML = tr("Waiting for other side to accept the transfer.") + "<br/>" + + if (state == ChatWindow::Initialisation) { + newInnerHTML = tr("Preparing to send.") + "<br/>" + buildChatWindowButton(tr("Cancel"), ButtonFileTransferCancel, id); } - if (state == ChatWindow::Negotiating) { + else if (state == ChatWindow::WaitingForAccept) { + newInnerHTML = tr("Waiting for other side to accept the transfer.") + "<br/>" + + buildChatWindowButton(tr("Cancel"), ButtonFileTransferCancel, id); + } + else if (state == ChatWindow::Negotiating) { // replace with text "Negotiaging" + Cancel button - newInnerHTML = tr("Negotiating...") + "<br/>" + + newInnerHTML = tr("Negotiating...") + "<br/>" + buildChatWindowButton(tr("Cancel"), ButtonFileTransferCancel, id); } else if (state == ChatWindow::Transferring) { // progress bar + Cancel Button - newInnerHTML = "<div style=\"position: relative; width: 90%; height: 20px; border: 2px solid grey; -webkit-border-radius: 10px;\">" + newInnerHTML = "<div style=\"position: relative; width: 90%; height: 20px; border: 2px solid grey; -webkit-border-radius: 10px;\">" "<div class=\"progressbar\" style=\"width: 0%; height: 100%; background: #AAA; -webkit-border-radius: 6px;\">" "<div class=\"progressbar-value\" style=\"position: absolute; top: 0px; left: 0px; width: 100%; text-align: center; padding-top: 2px;\">" "0%" "</div>" "</div>" "</div>" + |