From 9475a61e40857303ad98fe789bb8464a0cbc4090 Mon Sep 17 00:00:00 2001 From: Jussi Laitinen Date: Sat, 13 Aug 2011 17:46:49 +0300 Subject: [PATCH] Get user tags from server instead of temp db --- src/engine/engine.cpp | 5 ++++- src/situareservice/situarecommon.h | 1 + src/situareservice/situareservice.cpp | 27 ++++++++++++++++++++++----- src/situareservice/situareservice.h | 33 +++++++++++++++++++++++---------- src/ui/mainwindow.cpp | 3 +++ src/ui/mainwindow.h | 7 +++++++ src/ui/userinfopanel.cpp | 7 +++++++ src/ui/userinfopanel.h | 7 +++++++ 8 files changed, 74 insertions(+), 16 deletions(-) diff --git a/src/engine/engine.cpp b/src/engine/engine.cpp index 1658c1b..ba35d6c 100644 --- a/src/engine/engine.cpp +++ b/src/engine/engine.cpp @@ -842,6 +842,9 @@ void SituareEngine::signalsFromSituareService() connect(m_situareService, SIGNAL(userDataChanged(User*, QList&)), this, SLOT(userDataChanged(User*, QList&))); + connect(m_situareService, SIGNAL(userTagsReceived(QHash&)), + m_ui, SIGNAL(userTagsReceived(QHash&))); + connect(m_situareService, SIGNAL(updateWasSuccessful(SituareService::SuccessfulMethod)), this, SLOT(updateWasSuccessful(SituareService::SuccessfulMethod))); @@ -854,7 +857,6 @@ void SituareEngine::signalsFromSituareService() connect(m_situareService, SIGNAL(messagesReceived(QList&, QList &)), this, SLOT(setProgressIndicatorDisabled())); - connect(m_situareService, SIGNAL(messagesReceived(QList&, QList &)), m_ui, SIGNAL(messagesReceived(QList&, QList&))); @@ -905,4 +907,5 @@ void SituareEngine::userDataChanged(User *user, QList &friendsList) emit userLocationReady(user); emit friendsLocationsReady(friendsList); + m_situareService->getTags(); } diff --git a/src/situareservice/situarecommon.h b/src/situareservice/situarecommon.h index d9325b9..85dacb8 100644 --- a/src/situareservice/situarecommon.h +++ b/src/situareservice/situarecommon.h @@ -49,6 +49,7 @@ const QString REMOVE_MESSAGE = "removeMessage.php"; const QString GET_PEOPLE_WITH_SIMILAR_INTEREST = "getInterestingPeople.php"; const QString GET_POPULAR_TAGS = "getPopularTags.php"; const QString ADD_TAGS = "addTags.php"; +const QString GET_TAGS = "getTags.php"; // Cookies const QString COOKIE = "Cookie"; diff --git a/src/situareservice/situareservice.cpp b/src/situareservice/situareservice.cpp index eef5991..27bf49b 100644 --- a/src/situareservice/situareservice.cpp +++ b/src/situareservice/situareservice.cpp @@ -227,15 +227,18 @@ SituareService::RequestName SituareService::getRequestName(const QUrl &url) cons return SituareService::RequestGetPopularTags; else if (url.toString().contains(ADD_TAGS)) return SituareService::RequestAddTags; + else if (url.toString().contains(GET_TAGS)) + return SituareService::RequestGetTags; else return SituareService::RequestUnknown; } -QHash SituareService::getTags(const QString &userId) +void SituareService::getTags() { qDebug() << __PRETTY_FUNCTION__; - return m_database->getTags(userId.toInt()); + QHash parameters; + buildRequest(GET_TAGS, parameters); } void SituareService::imageReceived(const QString &id, const QPixmap &image) @@ -353,6 +356,8 @@ void SituareService::parseReply(const QByteArray &jsonReply, RequestName request parsePopularTagsData(resultData); else if (requestName == SituareService::RequestAddTags) emit updateWasSuccessful(SituareService::SuccessfulAddTags); + else if (requestName == SituareService::RequestGetTags) + parseUserTagsData(resultData); } } } @@ -513,9 +518,6 @@ void SituareService::parseUserData(const QVariant &userData) } tmpFriendsList.clear(); - //REMOVE WHEN NOT NEEDED! get user tags and set tags to the user - m_user->setTags(getTags(m_user->userId())); - emit userDataChanged(m_user, m_friendsList); // set silhouette image to imageUrlList for downloading @@ -608,6 +610,21 @@ void SituareService::parsePopularTagsData(const QVariant &popularTagsData) emit popularTagsReceived(popularTags); } +void SituareService::parseUserTagsData(const QVariant &userTagsData) +{ + qDebug() << __PRETTY_FUNCTION__; + + QVariantMap result = userTagsData.toMap(); + QHash userTags; + + foreach (QVariant tagVariant, result["user_tags"].toList()) { + QMap tag = tagVariant.toMap(); + userTags.insert(tag["tid"].toString(), tag["name"].toString()); + } + + emit userTagsReceived(userTags); +} + void SituareService::removeMessage(const QString &id) { qDebug() << __PRETTY_FUNCTION__; diff --git a/src/situareservice/situareservice.h b/src/situareservice/situareservice.h index bd2e19e..146fb74 100644 --- a/src/situareservice/situareservice.h +++ b/src/situareservice/situareservice.h @@ -62,7 +62,8 @@ private: RequestSendMessage, RequestGetPeopleWithSimilarInterest, RequestGetPopularTags, - RequestAddTags}; + RequestAddTags, + RequestGetTags }; public: @@ -92,6 +93,13 @@ public: * MEMBER FUNCTIONS AND SLOTS ******************************************************************************/ /** + * @brief Retriesves user tags. + * + * @return QStringList list of tags + */ + void getTags(); + + /** * @brief Retrieves people with similart interest (same tags). * * People is searched from area defined by maximum distance @@ -237,15 +245,6 @@ private: SituareService::RequestName getRequestName(const QUrl &url) const; /** - * @brief Temporary method to get tags. - * - * Tags are fetch from local database instead of Situare server. - * @param userId - * @return QStringList list of tags - */ - QHash getTags(const QString &userId); - - /** * @brief Parses interesting people data from JSON string * * @param interestingPeopleData interesting people data QVariant tree @@ -281,6 +280,13 @@ private: void parseReverseGeoData(const QVariant &reverseGeoData); /** + * @brief Parses user tags data from JSON string + * + * @param userTagsData user tags data QVariant tree + */ + void parseUserTagsData(const QVariant &userTagsData); + + /** * @brief Parses user and friend data from JSON string * * @param userData user data QVariant tree @@ -373,6 +379,13 @@ signals: */ void userDataChanged(User *user, QList &friendList); + /** + * @brief Signals when getTags request is finished + * + * @param userTags list of user tags + */ + void userTagsReceived(QHash &userTags); + /******************************************************************************* * DATA MEMBERS ******************************************************************************/ diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index f0f9c78..0d59333 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -560,6 +560,9 @@ void MainWindow::buildUserInfoPanel() connect(m_userInfoPanel, SIGNAL(requestPopularTags()), this, SIGNAL(requestPopularTags())); + + connect(this, SIGNAL(userTagsReceived(QHash&)), + m_userInfoPanel, SLOT(userTagsReceived(QHash&))); } void MainWindow::buildZoomButtonPanel() diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index ee71579..3f4a965 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -688,6 +688,13 @@ signals: void userImageReady(const QString &id, const QPixmap &image); /** + * @brief Signals when getTags request is finished + * + * @param userTags list of user tags + */ + void userTagsReceived(QHash &userTags); + + /** * @brief Dragging mode triggered. */ void draggingModeTriggered(); diff --git a/src/ui/userinfopanel.cpp b/src/ui/userinfopanel.cpp index 0368917..a8df3ad 100644 --- a/src/ui/userinfopanel.cpp +++ b/src/ui/userinfopanel.cpp @@ -149,3 +149,10 @@ void UserInfoPanel::userDataReceived(User *user) m_userInfo->show(); } } + +void UserInfoPanel::userTagsReceived(QHash &userTags) +{ + qDebug() << __PRETTY_FUNCTION__; + + m_userInfo->setTags(userTags); +} diff --git a/src/ui/userinfopanel.h b/src/ui/userinfopanel.h index a6c2a42..5d5253e 100644 --- a/src/ui/userinfopanel.h +++ b/src/ui/userinfopanel.h @@ -73,6 +73,13 @@ public slots: */ void userDataReceived(User *user); + /** + * @brief Slot to populate user tags + * + * @param userTags list of user tags + */ + void userTagsReceived(QHash &userTags); + private slots: /** * @brief Sets user's image. -- 1.7.9.5