diff options
| author | Richard Maudsley <richard.maudsley@isode.com> | 2014-05-02 09:19:23 (GMT) | 
|---|---|---|
| committer | Swift Review <review@swift.im> | 2014-07-09 09:03:34 (GMT) | 
| commit | acac7962ba04c083377f62f4265ecc754176f74e (patch) | |
| tree | fa2db718854d10c76e81fc54b0b1f2b33a12963f /Swift/Controllers/MainController.cpp | |
| parent | 8ab7ca17fdde8f8fb62a0c574478aa2c4c01a9bc (diff) | |
| download | swift-contrib-acac7962ba04c083377f62f4265ecc754176f74e.zip swift-contrib-acac7962ba04c083377f62f4265ecc754176f74e.tar.bz2 | |
Refactor AdHoc forms.
Test-Information:
Check that forms still open properly and can be submitted and canceled. Check that error message is displayed if disconnected when a form is open.
Change-Id: I23e35730b0decdfb5cf0592fc7234bf4643b6127
Diffstat (limited to 'Swift/Controllers/MainController.cpp')
| -rw-r--r-- | Swift/Controllers/MainController.cpp | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp index f16f8ad..79b7502 100644 --- a/Swift/Controllers/MainController.cpp +++ b/Swift/Controllers/MainController.cpp @@ -390,71 +390,71 @@ void MainController::handleConnected() {  #endif  #ifdef SWIFT_EXPERIMENTAL_WB  		discoInfo.addFeature(DiscoInfo::WhiteboardFeature);  #endif  		discoInfo.addFeature(DiscoInfo::MessageDeliveryReceiptsFeature);  		client_->getDiscoManager()->setCapsNode(CLIENT_NODE);  		client_->getDiscoManager()->setDiscoInfo(discoInfo);  		userSearchControllerChat_ = new UserSearchController(UserSearchController::StartChat, jid_, uiEventStream_, client_->getVCardManager(), uiFactory_, client_->getIQRouter(), rosterController_, contactSuggesterWithRoster_, client_->getAvatarManager(), client_->getPresenceOracle());  		userSearchControllerAdd_ = new UserSearchController(UserSearchController::AddContact, jid_, uiEventStream_, client_->getVCardManager(), uiFactory_, client_->getIQRouter(), rosterController_, contactSuggesterWithoutRoster_, client_->getAvatarManager(), client_->getPresenceOracle());  		adHocManager_ = new AdHocManager(JID(boundJID_.getDomain()), uiFactory_, client_->getIQRouter(), uiEventStream_, rosterController_->getWindow());  		chatsManager_->onImpromptuMUCServiceDiscovered.connect(boost::bind(&UserSearchController::setCanInitiateImpromptuMUC, userSearchControllerChat_, _1));  	}  	loginWindow_->setIsLoggingIn(false);  	client_->requestRoster();  	GetDiscoInfoRequest::ref discoInfoRequest = GetDiscoInfoRequest::create(JID(boundJID_.getDomain()), client_->getIQRouter());  	discoInfoRequest->onResponse.connect(boost::bind(&MainController::handleServerDiscoInfoResponse, this, _1, _2));  	discoInfoRequest->send();  	client_->getVCardManager()->requestOwnVCard();  	rosterController_->setJID(boundJID_);  	rosterController_->setEnabled(true);  	rosterController_->getWindow()->setStreamEncryptionStatus(client_->isStreamEncrypted());  	profileController_->setAvailable(true);  	contactEditController_->setAvailable(true);  	/* Send presence later to catch all the incoming presences. */  	sendPresence(statusTracker_->getNextPresence());  	/* Enable chats last of all, so rejoining MUCs has the right sent presence */  	assert(chatsManager_);  	chatsManager_->setOnline(true); - +	adHocManager_->setOnline(true);  }  void MainController::handleEventQueueLengthChange(int count) {  	dock_->setNumberOfPendingMessages(count);  }  void MainController::reconnectAfterError() {  	if (reconnectTimer_) {  		reconnectTimer_->stop();  	}  	performLoginFromCachedCredentials();  }  void MainController::handleChangeStatusRequest(StatusShow::Type show, const std::string &statusText) {  	boost::shared_ptr<Presence> presence(new Presence());  	if (show == StatusShow::None) {  		// Note: this is misleading, None doesn't mean unavailable on the wire.  		presence->setType(Presence::Unavailable);  		resetPendingReconnects();  		myStatusLooksOnline_ = false;  		offlineRequested_ = true;  	}  	else {  		offlineRequested_ = false;  		presence->setShow(show);  	}  	presence->setStatus(statusText);  	statusTracker_->setRequestedPresence(presence);  	if (presence->getType() != Presence::Unavailable) {  		profileSettings_->storeInt("lastShow", presence->getShow());  		profileSettings_->storeString("lastStatus", presence->getStatus());  	}  	if (presence->getType() != Presence::Unavailable && !client_->isAvailable()) {  		performLoginFromCachedCredentials();  	} else { @@ -570,70 +570,73 @@ void MainController::performLoginFromCachedCredentials() {  		client_->onConnected.connect(boost::bind(&MainController::handleConnected, this));  		client_->setSoftwareVersion(CLIENT_NAME, buildVersion);  		client_->getVCardManager()->onVCardChanged.connect(boost::bind(&MainController::handleVCardReceived, this, _1, _2));  		presenceNotifier_ = new PresenceNotifier(client_->getStanzaChannel(), notifier_, client_->getMUCRegistry(), client_->getAvatarManager(), client_->getNickResolver(), client_->getPresenceOracle(), networkFactories_->getTimerFactory());  		presenceNotifier_->onNotificationActivated.connect(boost::bind(&MainController::handleNotificationClicked, this, _1));  		eventNotifier_ = new EventNotifier(eventController_, notifier_, client_->getAvatarManager(), client_->getNickResolver());  		eventNotifier_->onNotificationActivated.connect(boost::bind(&MainController::handleNotificationClicked, this, _1));  		if (certificate_ && !certificate_->isNull()) {  			client_->setCertificate(certificate_);  		}  		boost::shared_ptr<Presence> presence(new Presence());  		presence->setShow(static_cast<StatusShow::Type>(profileSettings_->getIntSetting("lastShow", StatusShow::Online)));  		presence->setStatus(profileSettings_->getStringSetting("lastStatus"));  		statusTracker_->setRequestedPresence(presence);  	} else {  		/* In case we're in the middle of another login, make sure they don't overlap */  		client_->disconnect();  	}  	systemTrayController_->setConnecting();  	if (rosterController_) {  		rosterController_->getWindow()->setConnecting();  	}  	ClientOptions clientOptions = clientOptions_;  	bool eagle = settings_->getSetting(SettingConstants::FORGET_PASSWORDS);  	clientOptions.forgetPassword = eagle;  	clientOptions.useTLS = eagle ? ClientOptions::RequireTLS : clientOptions_.useTLS;  	client_->connect(clientOptions);  }  void MainController::handleDisconnected(const boost::optional<ClientError>& error) {  	if (rosterController_) {  		rosterController_->getWindow()->setStreamEncryptionStatus(false);  	} +	if (adHocManager_) { +		adHocManager_->setOnline(false); +	}  	if (settings_->getSetting(SettingConstants::FORGET_PASSWORDS)) {  		purgeCachedCredentials();  	}  	if (quitRequested_) {  		resetClient();  		loginWindow_->quit();  	}  	else if (error) {  		std::string message;  		std::string certificateErrorMessage;  		bool forceSignout = false;  		switch(error->getType()) {  			case ClientError::UnknownError: message = QT_TRANSLATE_NOOP("", "Unknown Error"); break;  			case ClientError::DomainNameResolveError: message = QT_TRANSLATE_NOOP("", "Unable to find server"); break;  			case ClientError::ConnectionError: message = QT_TRANSLATE_NOOP("", "Error connecting to server"); break;  			case ClientError::ConnectionReadError: message = QT_TRANSLATE_NOOP("", "Error while receiving server data"); break;  			case ClientError::ConnectionWriteError: message = QT_TRANSLATE_NOOP("", "Error while sending data to the server"); break;  			case ClientError::XMLError: message = QT_TRANSLATE_NOOP("", "Error parsing server data"); break;  			case ClientError::AuthenticationFailedError: message = QT_TRANSLATE_NOOP("", "Login/password invalid"); break;  			case ClientError::CompressionFailedError: message = QT_TRANSLATE_NOOP("", "Error while compressing stream"); break;  			case ClientError::ServerVerificationFailedError: message = QT_TRANSLATE_NOOP("", "Server verification failed"); break;  			case ClientError::NoSupportedAuthMechanismsError: message = QT_TRANSLATE_NOOP("", "Authentication mechanisms not supported"); break;  			case ClientError::UnexpectedElementError: message = QT_TRANSLATE_NOOP("", "Unexpected response"); break;  			case ClientError::ResourceBindError: message = QT_TRANSLATE_NOOP("", "Error binding resource"); break;  			case ClientError::SessionStartError: message = QT_TRANSLATE_NOOP("", "Error starting session"); break;  			case ClientError::StreamError: message = QT_TRANSLATE_NOOP("", "Stream error"); break;  			case ClientError::TLSError: message = QT_TRANSLATE_NOOP("", "Encryption error"); break;  			case ClientError::ClientCertificateLoadError: message = QT_TRANSLATE_NOOP("", "Error loading certificate (Invalid password?)"); break;  			case ClientError::ClientCertificateError: message = QT_TRANSLATE_NOOP("", "Certificate not authorized"); break;  			case ClientError::CertificateCardRemoved: message = QT_TRANSLATE_NOOP("", "Certificate card removed"); forceSignout = true; break;  			case ClientError::UnknownCertificateError: certificateErrorMessage = QT_TRANSLATE_NOOP("", "Unknown certificate"); break;  			case ClientError::CertificateExpiredError: certificateErrorMessage = QT_TRANSLATE_NOOP("", "Certificate has expired"); break;  			case ClientError::CertificateNotYetValidError: certificateErrorMessage = QT_TRANSLATE_NOOP("", "Certificate is not yet valid"); break;  			case ClientError::CertificateSelfSignedError: certificateErrorMessage = QT_TRANSLATE_NOOP("", "Certificate is self-signed"); break; | 
 Swift
 Swift