buildRequest(GET_MESSAGES, QHash<QString, QString>());
}
-void SituareService::fetchPeopleWithSimilarInterest(const GeoCoordinate &southWestCoordinates,
- const GeoCoordinate &northEastCoordinates)
+void SituareService::fetchPeopleWithSimilarInterest(const qreal distance)
{
qDebug() << __PRETTY_FUNCTION__;
- //Request sent to server does not need the UID
- QByteArray arr = m_database->getInterestingPeople(613374451,
- southWestCoordinates,
- northEastCoordinates);
+ const int TO_KM_DIVIDER = 1000;
+ QHash<QString, QString> parameters;
+ parameters.insert("distance", degreesToString(distance / TO_KM_DIVIDER));
- parseInterestingPeopleData(arr);
+ buildRequest(GET_PEOPLE_WITH_SIMILAR_INTEREST, parameters);
}
void SituareService::fetchPopularTags()
return SituareService::RequestRemoveMessage;
else if (url.toString().contains(SEND_MESSAGE))
return SituareService::RequestSendMessage;
+ else if (url.toString().contains(GET_PEOPLE_WITH_SIMILAR_INTEREST))
+ return SituareService::RequestGetPeopleWithSimilarInterest;
else
return SituareService::RequestUnknown;
}
emit imageReady(id, AvatarImage::create(image, AvatarImage::Small));
}
-void SituareService::parseInterestingPeopleData(const QByteArray &jsonReply)
+void SituareService::parseInterestingPeopleData(const QVariant &interestingPeopleData)
{
qDebug() << __PRETTY_FUNCTION__;
- QJson::Parser parser;
- bool ok;
+ QVariant people = interestingPeopleData.toMap();
- QVariantMap result = parser.parse(jsonReply, &ok).toMap();
+ QList<User> friends;
+ QList<User> others;
- if (!ok) {
- emit error(ErrorContext::SITUARE, SituareError::INVALID_JSON);
- return;
- } else {
- QVariant people = result["people"];
+ foreach (QVariant personVariant, people.toMap().value("friends").toList()) {
+ User user;
+ QMap<QString, QVariant> person = personVariant.toMap();
+ user.setUserId(person["uid"].toString());
+ user.setName(person["name"].toString());
+ user.setProfileImage(AvatarImage::create(
+ QPixmap(":/res/images/empty_avatar.png"), AvatarImage::Small));
+ user.setProfileImageUrl(person["pic_square"].toUrl());
+ user.setTimestamp(person["timestamp"].toString());
+ user.setTags(person["tags"].toString());
+ user.setAddress(person["address"].toString());
+ user.setNote(person["note"].toString());
- QList<User> friends;
- QList<User> others;
+ bool latOk;
+ qreal latitude = person["lat"].toReal(&latOk);
+ bool lonOk;
+ qreal longitude = person["lon"].toReal(&lonOk);
- foreach (QVariant personVariant, people.toMap().value("friends").toList()) {
- User user;
- QMap<QString, QVariant> person = personVariant.toMap();
- user.setUserId(person["uid"].toString());
- user.setName(person["name"].toString());
- user.setProfileImage(AvatarImage::create(
- QPixmap(":/res/images/empty_avatar.png"), AvatarImage::Small));
- user.setProfileImageUrl(person["image_url"].toUrl());
- user.setTags(person["tags"].toList());
-
- bool latOk;
- qreal latitude = person["latitude"].toReal(&latOk);
- bool lonOk;
- qreal longitude = person["longitude"].toReal(&lonOk);
-
- if (latOk && lonOk) {
- user.setCoordinates(GeoCoordinate(latitude, longitude));
-
- //This should be from the server
- GeoCoordinate myCoord(65.008, 25.5523);
- qreal meters = myCoord.distanceTo(user.coordinates());
- qreal value;
- QString unit;
- if (meters < 1000) {
- value = meters;
- unit = "m";
- } else {
- value = meters/1000;
- unit = "km";
- }
- user.setDistance(value, unit);
+ if (latOk && lonOk) {
+ user.setCoordinates(GeoCoordinate(latitude, longitude));
+
+ qreal meters = person["distance"].toReal() * 1000;
+ qreal value;
+ QString unit;
+ if (meters < 1000) {
+ value = meters;
+ unit = "m";
+ } else {
+ value = meters/1000;
+ unit = "km";
}
-
- friends.append(user);
-
- //Remove comment when the actual server is used
- //emit fetchImage(user.userId(), user.profileImageUrl());
+ user.setDistance(value, unit);
}
- foreach (QVariant personVariant, people.toMap().value("others").toList()) {
- User user;
- QMap<QString, QVariant> person = personVariant.toMap();
- user.setUserId(person["uid"].toString());
- user.setName(person["name"].toString());
- user.setProfileImage(AvatarImage::create(
- QPixmap(":/res/images/empty_avatar.png"), AvatarImage::Small));
- user.setProfileImageUrl(person["image_url"].toUrl());
- user.setTags(person["tags"].toList());
+ friends.append(user);
- others.append(user);
+ //Remove comment when the actual server is used
+ //emit fetchImage(user.userId(), user.profileImageUrl());
+ }
- //Remove comment when the actual server is used
- //emit fetchImage(user.userId(), user.profileImageUrl());
- }
+ foreach (QVariant personVariant, people.toMap().value("others").toList()) {
+ User user;
+ QMap<QString, QVariant> person = personVariant.toMap();
+ user.setUserId(person["uid"].toString());
+ user.setName(person["name"].toString());
+ user.setProfileImage(AvatarImage::create(
+ QPixmap(":/res/images/empty_avatar.png"), AvatarImage::Small));
+ user.setProfileImageUrl(person["pic_square"].toUrl());
+ user.setTimestamp(person["timestamp"].toString());
+ user.setTags(person["tags"].toString());
+
+ others.append(user);
- emit interestingPeopleReceived(friends, others);
+ emit fetchImage(user.userId(), user.profileImageUrl());
}
+
+ emit interestingPeopleReceived(friends, others);
}
void SituareService::parseReply(const QByteArray &jsonReply, RequestName requestName)
parseMessagesData(resultData);
else if (requestName == SituareService::RequestSendMessage)
emit updateWasSuccessful((SituareService::SuccessfulSendMessage));
+ else if (requestName == SituareService::RequestGetPeopleWithSimilarInterest)
+ parseInterestingPeopleData(resultData);
}
}
}
{
qDebug() << __PRETTY_FUNCTION__;
- if (m_database->sendMessage(613374451, receiverId.toULongLong(), message, coordinates))
- emit updateWasSuccessful(SituareService::SuccessfulSendMessage);
+ QHash<QString, QString> parameters;
+ parameters.insert("rid", receiverId);
+ parameters.insert("message", message);
+
+ if (coordinates.isValid()) {
+ parameters.insert("lat", degreesToString(coordinates.latitude()));
+ parameters.insert("lon", degreesToString(coordinates.longitude()));
+ }
+
+ buildRequest(SEND_MESSAGE, parameters);
}
void SituareService::sendRequest(const QString &requestUrl)
connect(m_showContactButton, SIGNAL(clicked()),
this, SLOT(requestSelectedFriendContactDialog()));
+ ImageButton *messageButton = new ImageButton(":/res/images/chat_btn.png",
+ ":/res/images/chat_btn_s.png",
+ ":/res/images/chat_btn_d.png", this);
+ connect(messageButton, SIGNAL(clicked()),
+ this, SLOT(messageButtonPressed()));
+
m_clearGroupFilteringButton = new ImageButton(":res/images/filtered.png",
":res/images/filtered_s.png",
":res/images/filtered_d.png", this);
m_itemButtonsLayout->addWidget(m_routeButton);
m_itemButtonsLayout->addWidget(m_showContactButton);
+ m_itemButtonsLayout->addWidget(messageButton);
m_genericButtonsLayout->addWidget(m_clearGroupFilteringButton);
showEmptyPanel(true);
m_friendListView->clearItemSelection();
}
+void FriendListPanel::messageButtonPressed()
+{
+ qDebug() << __PRETTY_FUNCTION__;
+
+ FriendListItem *item = dynamic_cast<FriendListItem *>(m_friendListView->selectedItem());
+
+ if (item) {
+ m_friendListView->clearItemSelection();
+ emit requestMessageDialog(QPair<QString, QString>(item->facebookId(),
+ item->title()));
+ }
+}
+
void FriendListPanel::requestSelectedFriendContactDialog()
{
qDebug() << __PRETTY_FUNCTION__;