Integrated friendlistview with dev.
[situare] / src / situareservice / situareservice.cpp
index aaa9d83..7397908 100644 (file)
    USA.
 */
 
+#include <QtAlgorithms>
 #include <QDebug>
 #include <QtGlobal>
 #include <QStringList>
 #include <QPixmap>
+#include <QNetworkReply>
 #include "situareservice.h"
 #include "situarecommon.h"
 #include "../cookiehandler/cookiehandler.h"
@@ -33,8 +35,6 @@ SituareService::SituareService(QObject *parent, QNetworkAccessManager *manager)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    connect(&m_facebookAuthentication, SIGNAL(credentialsReady()), SLOT(credentialsReady()));
-
     connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), SLOT(requestFinished(QNetworkReply*)));
 
     m_imageFetcher = new ImageFetcher(new QNetworkAccessManager(this), this);
@@ -42,7 +42,7 @@ SituareService::SituareService(QObject *parent, QNetworkAccessManager *manager)
     connect(m_imageFetcher, SIGNAL(imageReceived(QUrl,QPixmap)), this,
             SLOT(imageReceived(QUrl, QPixmap)));
 
-    m_credentials = m_facebookAuthentication.loginCredentials();
+    m_user = NULL;
 }
 
 SituareService::~SituareService()
@@ -50,7 +50,16 @@ SituareService::~SituareService()
     qDebug() << __PRETTY_FUNCTION__;
 
     delete m_networkManager;
-    delete m_user;
+    m_networkManager = NULL;
+    if(m_user) {
+        delete m_user;
+        m_user = NULL;
+    }
+    delete m_imageFetcher;
+    m_imageFetcher = NULL;
+
+    qDeleteAll(m_friendsList.begin(), m_friendsList.end());
+    m_friendsList.clear();
 }
 
 void SituareService::fetchLocations()
@@ -226,10 +235,11 @@ void SituareService::requestFinished(QNetworkReply *reply)
     reply->deleteLater();
 }
 
-void SituareService::credentialsReady()
+void SituareService::credentialsReady(const FacebookCredentials &credentials)
 {
     qDebug() << __PRETTY_FUNCTION__;
-    m_credentials = m_facebookAuthentication.loginCredentials();
+    m_credentials = credentials;
+    
 }
 
 void SituareService::parseUserData(const QByteArray &jsonReply)
@@ -238,6 +248,7 @@ void SituareService::parseUserData(const QByteArray &jsonReply)
 
     m_visited = 0;
     m_nbrOfImages = 0;
+    qDeleteAll(m_friendsList.begin(), m_friendsList.end());
     m_friendsList.clear();
 
     QJson::Parser parser;
@@ -250,8 +261,6 @@ void SituareService::parseUserData(const QByteArray &jsonReply)
         exit (1);
     }
 
-    //QList<User *> friendsList;
-
     QVariant userVariant = result.value("user");
     QMap<QString, QVariant> userMap = userVariant.toMap();
 
@@ -272,6 +281,9 @@ void SituareService::parseUserData(const QByteArray &jsonReply)
 
       QUrl imageUrl = friendMap["profile_pic"].toUrl();
 
+//      if (imageUrl.isEmpty())
+//          imageUrl = QUrl("http://static.ak.fbcdn.net/pics/q_silhouette.gif");
+
       User *user = new User(friendMap["address"].toString(), coordinates, friendMap["name"].toString(),
                             friendMap["note"].toString(), imageUrl, friendMap["timestamp"].toString(),
                             false, friendMap["uid"].toString(), distanceMap["units"].toString(),
@@ -309,12 +321,12 @@ void SituareService::addProfileImages()
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    if(m_user->profileImageUrl() != QUrl("")) {
+    if(!m_user->profileImageUrl().isEmpty() && m_user->profileImageUrl().isValid()) {
         emit fetchImage(m_user->profileImageUrl());
     }
 
     for(int i=0;i<m_friendsList.count();i++) {
-        if(m_friendsList.at(i)->profileImageUrl() != QUrl("")) {
+        if(!m_friendsList.at(i)->profileImageUrl().isEmpty() && m_user->profileImageUrl().isValid()) {
             m_visited++; // indicates how many friends that have profile image
             emit fetchImage(m_friendsList.at(i)->profileImageUrl());
         }