summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Smith <git@kismith.co.uk>2010-04-12 14:16:23 (GMT)
committerKevin Smith <git@kismith.co.uk>2010-04-12 14:16:23 (GMT)
commit9470b2eb602489b290f8df1aaf515712d9ea3dbf (patch)
tree8c222a8a00dc6f6f7d7fd22fd98fa66e5bd003a2
parenta65372d1a0a85d04329cd91bcf6bdff2de492c80 (diff)
downloadswift-contrib-9470b2eb602489b290f8df1aaf515712d9ea3dbf.zip
swift-contrib-9470b2eb602489b290f8df1aaf515712d9ea3dbf.tar.bz2
Populate ErrorEvent for server disconnections.
Resolves: #303
-rw-r--r--Swift/Controllers/MainController.cpp8
-rw-r--r--Swift/Controllers/MainController.h2
-rw-r--r--Swift/QtUI/EventViewer/QtEventWindow.cpp2
3 files changed, 11 insertions, 1 deletions
diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp
index 1c83d1d..e20e9f8 100644
--- a/Swift/Controllers/MainController.cpp
+++ b/Swift/Controllers/MainController.cpp
@@ -161,6 +161,10 @@ void MainController::resetClient() {
void MainController::handleConnected() {
loginWindow_->setIsLoggingIn(false);
+ if (lastDisconnectError_) {
+ lastDisconnectError_->conclude();
+ lastDisconnectError_ = boost::shared_ptr<ErrorEvent>();
+ }
//FIXME: this freshLogin thing is temporary so I can see what's what before I split into a seperate method.
bool freshLogin = rosterController_ == NULL;
if (freshLogin) {
@@ -348,6 +352,10 @@ void MainController::handleError(const ClientError& error) {
if (!rosterController_) { //hasn't been logged in yet
signOut();
loginWindow_->setMessage(message);
+ } else {
+ message = "Disconnected from " + jid_.getDomain() + ": ";
+ lastDisconnectError_ = boost::shared_ptr<ErrorEvent>(new ErrorEvent(JID(jid_.getDomain()), message));
+ eventController_->handleIncomingEvent(lastDisconnectError_);
}
logout();
if (rosterController_) {
diff --git a/Swift/Controllers/MainController.h b/Swift/Controllers/MainController.h
index 0056c21..5ed3641 100644
--- a/Swift/Controllers/MainController.h
+++ b/Swift/Controllers/MainController.h
@@ -23,6 +23,7 @@
#include "Swiften/Elements/Presence.h"
#include "Swiften/Settings/SettingsProvider.h"
#include "Swiften/Elements/CapsInfo.h"
+#include "Swiften/Events/ErrorEvent.h"
#include "Swiften/Roster/XMPPRoster.h"
namespace Swift {
@@ -125,5 +126,6 @@ namespace Swift {
String password_;
String certificateFile_;
ChatListWindowFactory* chatListWindowFactory_;
+ boost::shared_ptr<ErrorEvent> lastDisconnectError_;
};
}
diff --git a/Swift/QtUI/EventViewer/QtEventWindow.cpp b/Swift/QtUI/EventViewer/QtEventWindow.cpp
index 65b946a..b32c4cf 100644
--- a/Swift/QtUI/EventViewer/QtEventWindow.cpp
+++ b/Swift/QtUI/EventViewer/QtEventWindow.cpp
@@ -53,7 +53,7 @@ void QtEventWindow::handleItemActivated(const QModelIndex& item) {
QtSubscriptionRequestWindow* window = QtSubscriptionRequestWindow::getWindow(subscriptionEvent, this);
window->show();
} else if (errorEvent) {
- errorEvent->onConclusion();
+ errorEvent->conclude();
} else {
qWarning() << "Trying to activate an unexpected event";
}