USA.
*/
+#include <QtAlgorithms>
#include <QDebug>
#include <QtGlobal>
#include <QStringList>
+#include <QPixmap>
+#include <QNetworkReply>
#include "situareservice.h"
#include "situarecommon.h"
#include "../cookiehandler/cookiehandler.h"
{
qDebug() << __PRETTY_FUNCTION__;
- connect(&m_facebookAuthentication, SIGNAL(credentialsReady()), SLOT(credentialsReady()));
-
connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), SLOT(requestFinished(QNetworkReply*)));
- m_credentials = m_facebookAuthentication.loginCredentials();
+ m_imageFetcher = new ImageFetcher(new QNetworkAccessManager(this), this);
+ connect(this, SIGNAL(fetchImage(QUrl)), m_imageFetcher, SLOT(fetchImage(QUrl)));
+ connect(m_imageFetcher, SIGNAL(imageReceived(QUrl,QPixmap)), this,
+ SLOT(imageReceived(QUrl, QPixmap)));
+
+ m_user = NULL;
}
SituareService::~SituareService()
qDebug() << __PRETTY_FUNCTION__;
delete m_networkManager;
+ 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()
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)
{
qDebug() << __PRETTY_FUNCTION__;
+ m_visited = 0;
+ m_nbrOfImages = 0;
+ qDeleteAll(m_friendsList.begin(), m_friendsList.end());
+ m_friendsList.clear();
+
QJson::Parser parser;
bool ok;
exit (1);
}
- QList<User *> friendsList;
-
QVariant userVariant = result.value("user");
QMap<QString, QVariant> userMap = userVariant.toMap();
QUrl imageUrl = userMap["profile_pic"].toUrl();
- User user = User(userMap["address"].toString(), coordinates, userMap["name"].toString(),
+ m_user = new User(userMap["address"].toString(), coordinates, userMap["name"].toString(),
userMap["note"].toString(), imageUrl, userMap["timestamp"].toString(),
true, userMap["uid"].toString());
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(),
distanceMap["value"].toDouble());
- friendsList.append(user);
+ m_friendsList.append(user);
+ }
+ addProfileImages();
+}
+
+void SituareService::imageReceived(const QUrl &url, const QPixmap &image)
+{
+ qDebug() << __PRETTY_FUNCTION__;
+ qDebug() << "Image URL: " << url << " size :" << image.size();
+
+ if(m_user->profileImageUrl() == url) {
+ m_user->setProfileImage(image);
+ }
+
+ for(int i=0;i<m_friendsList.count();i++) {
+ if(m_friendsList.at(i)->profileImageUrl() == url) {
+ m_friendsList.at(i)->setProfileImage(image);
+ m_nbrOfImages++; // indicates how many friend profile images has been downloaded
+ }
+ }
+
+ if(m_nbrOfImages == m_visited) {
+ qDebug() << "m_nbrOfImages: " << m_nbrOfImages << " m_visited: " << m_visited;
+ qDebug() << "emit userDataChanged";
+ emit userDataChanged(m_user, m_friendsList);
+ }
+}
+
+void SituareService::addProfileImages()
+{
+ qDebug() << __PRETTY_FUNCTION__;
+
+ 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().isEmpty() && m_user->profileImageUrl().isValid()) {
+ m_visited++; // indicates how many friends that have profile image
+ emit fetchImage(m_friendsList.at(i)->profileImageUrl());
+ }
}
- emit userDataChanged(user, friendsList);
}