From: Sami Rämö Date: Tue, 28 Sep 2010 06:14:45 +0000 (+0300) Subject: Moving login related stuff from Engine to FacebookAuthentication X-Git-Url: https://vcs.maemo.org/git/?p=situare;a=commitdiff_plain;h=5b963aaca69b27d664a17ce789581d3deadbe205 Moving login related stuff from Engine to FacebookAuthentication --- diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 5525ca6..a58716a 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -127,8 +127,6 @@ SituareEngine::SituareEngine() m_mapEngine->init(); m_ui->show(); -// m_facebookAuthenticator->start(); - m_gps->setMode(GPSPosition::Default); initializeGpsAndAutocentering(); @@ -138,8 +136,7 @@ SituareEngine::SituareEngine() m_contactManager = new ContactManager(this); m_contactManager->requestContactGuids(); - ///< @todo just for testing the login browser - login(); + m_facebookAuthenticator->login(); } SituareEngine::~SituareEngine() @@ -358,34 +355,6 @@ void SituareEngine::locationSearch(QString location) m_geocodingService->requestLocation(location); } -void SituareEngine::login() -{ - qWarning() << __PRETTY_FUNCTION__; - - FacebookLoginBrowser *browser = m_ui->buildFacebookLoginBrowser(); - - connect(browser, SIGNAL(loadFinished(bool)), - m_facebookAuthenticator, SLOT(loadFinished(bool))); - - connect(browser, SIGNAL(urlChanged(QUrl)), - m_facebookAuthenticator, SLOT(urlChanged(QUrl))); - -// browser->load(QUrl("https://graph.facebook.com/oauth/authorize?client_id=4197c64da2fb6b927236feaea32d7d81&redirect_uri=http://www.facebook.com/connect/login_success.html&display=touch&type=user_agent")); - - QString url = "https://www.facebook.com/login.php?"; - url.append("api_key=cf77865a5070f2c2ba3b52cbf3371579&"); ///< @todo hard coded test server api key - url.append("cancel_url=http://www.facebook.com/connect/login_failure.html&"); - url.append("display=touch&"); - url.append("fbconnect=1&"); - url.append("next=http://www.facebook.com/connect/login_success.html&"); - url.append("return_session=1&"); - url.append("session_version=3&"); - url.append("v=1.0&"); - url.append("req_perms=publish_stream"); - - browser->load(QUrl(url)); -} - void SituareEngine::loggedIn() { qWarning() << __PRETTY_FUNCTION__; @@ -404,7 +373,7 @@ void SituareEngine::loginActionPressed() logout(); m_situareService->clearUserData(); } else { - login(); + m_facebookAuthenticator->login(); } } else { @@ -640,8 +609,11 @@ void SituareEngine::signalsFromFacebookAuthenticator() connect(m_facebookAuthenticator, SIGNAL(loginUsingCookies()), m_ui, SLOT(loginUsingCookies())); + connect(m_facebookAuthenticator, SIGNAL(buildLoginBrowser()), + m_ui, SLOT(buildFacebookLoginBrowser())); + connect(m_facebookAuthenticator, SIGNAL(loggedIn(QString)), - m_situareService, SLOT(updateAccessToken(QString))); + m_situareService, SLOT(updateSession(QString))); connect(m_facebookAuthenticator, SIGNAL(loggedIn(QString)), this, SLOT(loggedIn())); @@ -691,6 +663,9 @@ void SituareEngine::signalsFromMainWindow() connect(m_ui, SIGNAL(updateCredentials(QUrl)), m_facebookAuthenticator, SLOT(updateCredentials(QUrl))); + connect(m_ui, SIGNAL(loginBrowserCreated(FacebookLoginBrowser*)), + m_facebookAuthenticator, SLOT(setBrowser(FacebookLoginBrowser*))); + // signals from map view connect(m_ui, SIGNAL(mapViewScrolled(SceneCoordinate)), m_mapEngine, SLOT(setCenterPosition(SceneCoordinate))); diff --git a/src/engine/engine.h b/src/engine/engine.h index 145e3f2..26f16c6 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -89,8 +89,6 @@ public slots: */ void locationSearch(QString location); - void login(); - /** * @brief Slot to intercept signal when Login/Logout action is pressed * diff --git a/src/facebookservice/facebookauthentication.cpp b/src/facebookservice/facebookauthentication.cpp index df51d8d..d52a992 100644 --- a/src/facebookservice/facebookauthentication.cpp +++ b/src/facebookservice/facebookauthentication.cpp @@ -36,18 +36,29 @@ #include "common.h" #include "error.h" #include "facebookcommon.h" +#include "ui/facebookloginbrowser.h" #include "facebookauthentication.h" const QString REDIRECT_URI = "http://www.facebook.com/connect/login_success.html"; FacebookAuthentication::FacebookAuthentication(QObject *parent) - : QObject(parent) + : QObject(parent), + m_browser(0) { qDebug() << __PRETTY_FUNCTION__; } +void FacebookAuthentication::browserDestroyed() +{ + qWarning() << __PRETTY_FUNCTION__; + + ///< @todo (HIGH) Is newer called! + + m_browser = 0; +} + void FacebookAuthentication::clearAccountInformation(bool keepUsername) { qDebug() << __PRETTY_FUNCTION__; @@ -72,6 +83,13 @@ void FacebookAuthentication::loadFinished(bool ok) ///< @todo show browsed window if url != redirect url } +void FacebookAuthentication::login() +{ + qWarning() << __PRETTY_FUNCTION__; + + emit buildLoginBrowser(); +} + QString FacebookAuthentication::parseSession(const QUrl &url) { qWarning() << __PRETTY_FUNCTION__; @@ -90,6 +108,39 @@ QString FacebookAuthentication::parseSession(const QUrl &url) return QString(); } +void FacebookAuthentication::setBrowser(FacebookLoginBrowser *browser) +{ + qWarning() << __PRETTY_FUNCTION__; + + m_browser = browser; + + if (m_browser) { + connect(m_browser, SIGNAL(loadFinished(bool)), + this, SLOT(loadFinished(bool))); + + connect(m_browser, SIGNAL(urlChanged(QUrl)), + this, SLOT(urlChanged(QUrl))); + + connect(m_browser, SIGNAL(destroyed()), + this, SLOT(browserDestroyed())); + + // browser->load(QUrl("https://graph.facebook.com/oauth/authorize?client_id=4197c64da2fb6b927236feaea32d7d81&redirect_uri=http://www.facebook.com/connect/login_success.html&display=touch&type=user_agent")); + + QString url = "https://www.facebook.com/login.php?"; + url.append("api_key=cf77865a5070f2c2ba3b52cbf3371579&"); ///< @todo hard coded test server api key + url.append("cancel_url=http://www.facebook.com/connect/login_failure.html&"); + url.append("display=popup&"); + url.append("fbconnect=1&"); + url.append("next=http://www.facebook.com/connect/login_success.html&"); + url.append("return_session=1&"); + url.append("session_version=3&"); + url.append("v=1.0&"); + url.append("req_perms=publish_stream"); + + m_browser->load(QUrl(url)); + } +} + void FacebookAuthentication::urlChanged(const QUrl &url) { qWarning() << __PRETTY_FUNCTION__ << url.toString(); diff --git a/src/facebookservice/facebookauthentication.h b/src/facebookservice/facebookauthentication.h index aa29199..0d3cbfa 100644 --- a/src/facebookservice/facebookauthentication.h +++ b/src/facebookservice/facebookauthentication.h @@ -26,6 +26,8 @@ #include +class FacebookLoginBrowser; + /** * @brief FacebookAuthentication class takes care of parsing and handling of credentials for * Facebook. Other components of Situare application needs credentials to communicate with @@ -50,6 +52,9 @@ public: /******************************************************************************* * MEMBER FUNCTIONS AND SLOTS ******************************************************************************/ +public: + void login(); + public slots: /** @@ -59,10 +64,13 @@ public slots: */ void clearAccountInformation(bool keepUsername = false); + void setBrowser(FacebookLoginBrowser *browser); + private: QString parseSession(const QUrl &url); private slots: + void browserDestroyed(); void loadFinished(bool ok); @@ -72,6 +80,7 @@ private slots: * SIGNALS ******************************************************************************/ signals: + void buildLoginBrowser(); /** * @brief Signals error @@ -83,18 +92,11 @@ signals: void loggedIn(const QString session); - /** - * @brief Signals when credentials are invalid new login is needed - * - */ - void newLoginRequest(); - /******************************************************************************* * DATA MEMBERS ******************************************************************************/ private: - - + FacebookLoginBrowser *m_browser; }; #endif // FACEBOOKAUTHENTICATION_H diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 0ed3202..8d5b3cf 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -169,7 +169,7 @@ void MainWindow::buildCrosshair() this, SLOT(mapCenterHorizontalShiftingChanged(int))); } -FacebookLoginBrowser* MainWindow::buildFacebookLoginBrowser() +void MainWindow::buildFacebookLoginBrowser() { qWarning() << __PRETTY_FUNCTION__; @@ -178,7 +178,7 @@ FacebookLoginBrowser* MainWindow::buildFacebookLoginBrowser() m_facebookLoginBrowser->show(); - return m_facebookLoginBrowser; + emit loginBrowserCreated(m_facebookLoginBrowser); } void MainWindow::buildFriendListPanel() diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index 70070e5..1e353c3 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -93,16 +93,12 @@ private: * MEMBER FUNCTIONS AND SLOTS ******************************************************************************/ public: - FacebookLoginBrowser* buildFacebookLoginBrowser(); - /** * @brief Clears cookie jar * */ void clearCookieJar(); - void destroyFacebookLoginBrowser(); - /** * @brief * @@ -160,6 +156,10 @@ public: const QString username(); public slots: + void buildFacebookLoginBrowser(); + + void destroyFacebookLoginBrowser(); + /** * @brief Builds information box with message. * @@ -534,6 +534,8 @@ signals: */ void loginActionPressed(); + void loginBrowserCreated(FacebookLoginBrowser *); + /** * @brief MapView has been resized *