Get user tags from server instead of temp db
authorJussi Laitinen <jussi.laitinen@ixonos.com>
Sat, 13 Aug 2011 14:46:49 +0000 (17:46 +0300)
committerJussi Laitinen <jussi.laitinen@ixonos.com>
Sat, 13 Aug 2011 14:46:49 +0000 (17:46 +0300)
src/engine/engine.cpp
src/situareservice/situarecommon.h
src/situareservice/situareservice.cpp
src/situareservice/situareservice.h
src/ui/mainwindow.cpp
src/ui/mainwindow.h
src/ui/userinfopanel.cpp
src/ui/userinfopanel.h

index 1658c1b..ba35d6c 100644 (file)
@@ -842,6 +842,9 @@ void SituareEngine::signalsFromSituareService()
     connect(m_situareService, SIGNAL(userDataChanged(User*, QList<User*>&)),
             this, SLOT(userDataChanged(User*, QList<User*>&)));
 
+    connect(m_situareService, SIGNAL(userTagsReceived(QHash<QString,QString>&)),
+            m_ui, SIGNAL(userTagsReceived(QHash<QString,QString>&)));
+
     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<Message>&, QList<Message> &)),
             this, SLOT(setProgressIndicatorDisabled()));
 
-
     connect(m_situareService, SIGNAL(messagesReceived(QList<Message>&, QList<Message> &)),
             m_ui, SIGNAL(messagesReceived(QList<Message>&, QList<Message>&)));
 
@@ -905,4 +907,5 @@ void SituareEngine::userDataChanged(User *user, QList<User *> &friendsList)
 
     emit userLocationReady(user);
     emit friendsLocationsReady(friendsList);
+    m_situareService->getTags();
 }
index d9325b9..85dacb8 100644 (file)
@@ -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";
index eef5991..27bf49b 100644 (file)
@@ -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<QString, QString> SituareService::getTags(const QString &userId)
+void SituareService::getTags()
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    return m_database->getTags(userId.toInt());
+    QHash<QString, QString> 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<QString, QString> userTags;
+
+    foreach (QVariant tagVariant, result["user_tags"].toList()) {
+        QMap<QString, QVariant> tag = tagVariant.toMap();
+        userTags.insert(tag["tid"].toString(), tag["name"].toString());
+    }
+
+    emit userTagsReceived(userTags);
+}
+
 void SituareService::removeMessage(const QString &id)
 {
     qDebug() << __PRETTY_FUNCTION__;
index bd2e19e..146fb74 100644 (file)
@@ -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<QString, QString> 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<User *> &friendList);
 
+    /**
+    * @brief Signals when getTags request is finished
+    *
+    * @param userTags list of user tags
+    */
+    void userTagsReceived(QHash<QString, QString> &userTags);
+
 /*******************************************************************************
  * DATA MEMBERS
  ******************************************************************************/
index f0f9c78..0d59333 100644 (file)
@@ -560,6 +560,9 @@ void MainWindow::buildUserInfoPanel()
 
     connect(m_userInfoPanel, SIGNAL(requestPopularTags()),
             this, SIGNAL(requestPopularTags()));
+
+    connect(this, SIGNAL(userTagsReceived(QHash<QString,QString>&)),
+            m_userInfoPanel, SLOT(userTagsReceived(QHash<QString,QString>&)));
 }
 
 void MainWindow::buildZoomButtonPanel()
index ee71579..3f4a965 100644 (file)
@@ -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<QString, QString> &userTags);
+
+    /**
     * @brief Dragging mode triggered.
     */
     void draggingModeTriggered();
index 0368917..a8df3ad 100644 (file)
@@ -149,3 +149,10 @@ void UserInfoPanel::userDataReceived(User *user)
         m_userInfo->show();
     }
 }
+
+void UserInfoPanel::userTagsReceived(QHash<QString, QString> &userTags)
+{
+    qDebug() << __PRETTY_FUNCTION__;
+
+    m_userInfo->setTags(userTags);
+}
index a6c2a42..5d5253e 100644 (file)
@@ -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<QString, QString> &userTags);
+
 private slots:
     /**
     * @brief Sets user's image.