diff options
-rw-r--r-- | Swift/Controllers/ProfileController.cpp | 1 | ||||
-rw-r--r-- | Swift/Controllers/ShowProfileController.cpp | 17 | ||||
-rw-r--r-- | Swift/Controllers/ShowProfileController.h | 4 | ||||
-rw-r--r-- | Swift/QtUI/QtProfileWindow.cpp | 4 | ||||
-rw-r--r-- | Swiften/Network/GConfProxyProvider.cpp | 2 |
5 files changed, 23 insertions, 5 deletions
diff --git a/Swift/Controllers/ProfileController.cpp b/Swift/Controllers/ProfileController.cpp index d000164..1a92f29 100644 --- a/Swift/Controllers/ProfileController.cpp +++ b/Swift/Controllers/ProfileController.cpp @@ -48,6 +48,7 @@ void ProfileController::handleUIEvent(UIEvent::ref event) { gettingVCard = true; updateDialogStatus(); vcardManager->requestOwnVCard(); + profileWindow->setError(""); profileWindow->show(); } diff --git a/Swift/Controllers/ShowProfileController.cpp b/Swift/Controllers/ShowProfileController.cpp index b379141..a7d7d04 100644 --- a/Swift/Controllers/ShowProfileController.cpp +++ b/Swift/Controllers/ShowProfileController.cpp @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2014-2016 Isode Limited. + * Copyright (c) 2014-2017 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ @@ -17,6 +17,7 @@ #include <Swiften/VCards/VCardManager.h> +#include <Swift/Controllers/Intl.h> #include <Swift/Controllers/UIEvents/ShowProfileForRosterItemUIEvent.h> #include <Swift/Controllers/UIEvents/UIEventStream.h> #include <Swift/Controllers/UIInterfaces/ProfileWindowFactory.h> @@ -26,6 +27,7 @@ namespace Swift { ShowProfileController::ShowProfileController(VCardManager* vcardManager, ProfileWindowFactory* profileWindowFactory, UIEventStream* uiEventStream) : vcardManager(vcardManager), profileWindowFactory(profileWindowFactory), uiEventStream(uiEventStream) { uiEventStream->onUIEvent.connect(boost::bind(&ShowProfileController::handleUIEvent, this, _1)); vcardManager->onVCardChanged.connect(boost::bind(&ShowProfileController::handleVCardChanged, this, _1, _2)); + vcardManager->onVCardRetrievalError.connect(boost::bind(&ShowProfileController::handleVCardRetrievalError, this, _1, _2)); } ShowProfileController::~ShowProfileController() { @@ -34,6 +36,7 @@ ShowProfileController::~ShowProfileController() { delete jidWndPair.second; } + vcardManager->onVCardRetrievalError.disconnect(boost::bind(&ShowProfileController::handleVCardRetrievalError, this, _1, _2)); vcardManager->onVCardChanged.disconnect(boost::bind(&ShowProfileController::handleVCardChanged, this, _1, _2)); uiEventStream->onUIEvent.disconnect(boost::bind(&ShowProfileController::handleUIEvent, this, _1)); } @@ -55,6 +58,7 @@ void ShowProfileController::handleUIEvent(UIEvent::ref event) { } else { newProfileWindow->setProcessing(true); } + newProfileWindow->setError(""); newProfileWindow->show(); } else { openedProfileWindows[showProfileEvent->getJID()]->show(); @@ -76,4 +80,15 @@ void ShowProfileController::handleProfileWindowAboutToBeClosed(const JID& profil openedProfileWindows.erase(profileJid); } +void ShowProfileController::handleVCardRetrievalError(const JID& jid, ErrorPayload::ref /* error */) { + if (openedProfileWindows.find(jid) == openedProfileWindows.end()) { + return; + } + + auto profileWindow = openedProfileWindows[jid]; + profileWindow->setError(QT_TRANSLATE_NOOP("", "Failed to retrieve recent profile for user.")); + profileWindow->setProcessing(false); + profileWindow->show(); +} + } diff --git a/Swift/Controllers/ShowProfileController.h b/Swift/Controllers/ShowProfileController.h index 4f23c19..0d01ba1 100644 --- a/Swift/Controllers/ShowProfileController.h +++ b/Swift/Controllers/ShowProfileController.h @@ -5,13 +5,14 @@ */ /* - * Copyright (c) 2016 Isode Limited. + * Copyright (c) 2016-2017 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once +#include <Swiften/Elements/ErrorPayload.h> #include <Swiften/Elements/VCard.h> #include <Swiften/JID/JID.h> @@ -32,6 +33,7 @@ namespace Swift { void handleUIEvent(UIEvent::ref event); void handleVCardChanged(const JID&, VCard::ref); void handleProfileWindowAboutToBeClosed(const JID& profileJid); + void handleVCardRetrievalError(const JID& jid, ErrorPayload::ref error); private: VCardManager* vcardManager; diff --git a/Swift/QtUI/QtProfileWindow.cpp b/Swift/QtUI/QtProfileWindow.cpp index 80e275b..10326bb 100644 --- a/Swift/QtUI/QtProfileWindow.cpp +++ b/Swift/QtUI/QtProfileWindow.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2016 Isode Limited. + * Copyright (c) 2011-2017 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ @@ -74,7 +74,6 @@ void QtProfileWindow::setEnabled(bool b) { void QtProfileWindow::setEditable(bool b) { ui->throbberLabel->setVisible(b); - ui->errorLabel->setVisible(b); ui->savePushButton->setVisible(b); ui->vcard->setEditable(b); updateTitle(); @@ -103,6 +102,7 @@ void QtProfileWindow::setError(const std::string& error) { else { ui->errorLabel->setText(""); } + ui->errorLabel->setVisible(!error.empty()); } void QtProfileWindow::show() { diff --git a/Swiften/Network/GConfProxyProvider.cpp b/Swiften/Network/GConfProxyProvider.cpp index 40cd97c..eade450 100644 --- a/Swiften/Network/GConfProxyProvider.cpp +++ b/Swiften/Network/GConfProxyProvider.cpp @@ -17,7 +17,7 @@ #include <iostream> -export "C" { +extern "C" { #include <gconf/gconf-client.h> } |