diff options
Diffstat (limited to 'Swift/Controllers')
-rw-r--r-- | Swift/Controllers/BlockListController.cpp | 34 | ||||
-rw-r--r-- | Swift/Controllers/UIInterfaces/BlockListEditorWidget.h | 8 |
2 files changed, 37 insertions, 5 deletions
diff --git a/Swift/Controllers/BlockListController.cpp b/Swift/Controllers/BlockListController.cpp index d778883..9cd42f0 100644 --- a/Swift/Controllers/BlockListController.cpp +++ b/Swift/Controllers/BlockListController.cpp @@ -4,6 +4,12 @@ * See Documentation/Licenses/BSD-simplified.txt for more information. */ +/* + * Copyright (c) 2014 Kevin Smith and Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + #include <Swift/Controllers/BlockListController.h> #include <boost/bind.hpp> @@ -57,6 +63,7 @@ void BlockListController::handleUIEvent(boost::shared_ptr<UIEvent> rawEvent) { } blockListBeforeEdit = blockListManager_->getBlockList()->getItems(); blockListEditorWidget_->setCurrentBlockList(blockListBeforeEdit); + blockListEditorWidget_->setError(""); blockListEditorWidget_->show(); return; } @@ -85,12 +92,19 @@ void BlockListController::handleBlockResponse(GenericRequest<BlockPayload>::ref if (!error->getText().empty()) { errorMessage = str(format(QT_TRANSLATE_NOOP("", "%1%: %2%.")) % errorMessage % error->getText()); } - eventController_->handleIncomingEvent(boost::make_shared<ErrorEvent>(request->getReceiver(), errorMessage)); + if (blockListEditorWidget_ && originEditor) { + blockListEditorWidget_->setError(errorMessage); + blockListEditorWidget_->setBusy(false); + } + else { + eventController_->handleIncomingEvent(boost::make_shared<ErrorEvent>(request->getReceiver(), errorMessage)); + } } if (originEditor) { remainingRequests_--; - if (blockListEditorWidget_ && (remainingRequests_ == 0)) { + if (blockListEditorWidget_ && (remainingRequests_ == 0) && !error) { blockListEditorWidget_->setBusy(false); + blockListEditorWidget_->hide(); } } } @@ -103,12 +117,19 @@ void BlockListController::handleUnblockResponse(GenericRequest<UnblockPayload>:: if (!error->getText().empty()) { errorMessage = str(format(QT_TRANSLATE_NOOP("", "%1%: %2%.")) % errorMessage % error->getText()); } - eventController_->handleIncomingEvent(boost::make_shared<ErrorEvent>(request->getReceiver(), errorMessage)); + if (blockListEditorWidget_ && originEditor) { + blockListEditorWidget_->setError(errorMessage); + blockListEditorWidget_->setBusy(false); + } + else { + eventController_->handleIncomingEvent(boost::make_shared<ErrorEvent>(request->getReceiver(), errorMessage)); + } } if (originEditor) { remainingRequests_--; - if (blockListEditorWidget_ && (remainingRequests_ == 0)) { + if (blockListEditorWidget_ && (remainingRequests_ == 0) && !error) { blockListEditorWidget_->setBusy(false); + blockListEditorWidget_->hide(); } } } @@ -131,9 +152,12 @@ void BlockListController::handleSetNewBlockList(const std::vector<JID> &newBlock unblockRequest->onResponse.connect(boost::bind(&BlockListController::handleUnblockResponse, this, unblockRequest, _1, _2, jidsToUnblock, true)); unblockRequest->send(); } - if (!jidsToBlock.empty() || jidsToUnblock.empty()) { + if (!jidsToBlock.empty() || !jidsToUnblock.empty()) { assert(blockListEditorWidget_); blockListEditorWidget_->setBusy(true); + blockListEditorWidget_->setError(""); + } else { + blockListEditorWidget_->hide(); } } diff --git a/Swift/Controllers/UIInterfaces/BlockListEditorWidget.h b/Swift/Controllers/UIInterfaces/BlockListEditorWidget.h index 60a1c11..f8a4c59 100644 --- a/Swift/Controllers/UIInterfaces/BlockListEditorWidget.h +++ b/Swift/Controllers/UIInterfaces/BlockListEditorWidget.h @@ -4,6 +4,12 @@ * See Documentation/Licenses/BSD-simplified.txt for more information. */ +/* + * Copyright (c) 2014 Kevin Smith and Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + #pragma once #include <vector> @@ -20,9 +26,11 @@ namespace Swift { virtual ~BlockListEditorWidget() {} virtual void show() = 0; + virtual void hide() = 0; virtual void setCurrentBlockList(const std::vector<JID>& blockedJIDs) = 0; virtual void setBusy(bool isBusy) = 0; + virtual void setError(const std::string&) = 0; virtual std::vector<JID> getCurrentBlockList() const = 0; |