Added unit test for TagsDialog.
[situare] / src / user / user.h
index a281a43..cfb45f1 100644 (file)
 #ifndef USER_H
 #define USER_H
 
-#include <QPointF>
+#include <QPixmap>
 #include <QString>
 #include <QUrl>
 
+#include "coordinates/geocoordinate.h"
+
 /**
 * @brief Class to store user information (applies to friends also)
 *
@@ -37,12 +39,23 @@ class User
 public:
 
     /**
-    * @brief Default constructor, initializes member data
+    * @brief Constructor, initializes member data
     *
     */
-    User(const QString address, const QPointF coordinates, const QString name, const QString note,
-         const QUrl imageUrl, const QString timestamp, const bool type, const QString userId,
-         const QString units = 0, const double value = 0);
+    User(const QString &address, const GeoCoordinate &coordinates, const QString &name,
+         const QString &note, const QUrl &imageUrl, const QString &timestamp,
+         const bool &type, const QString &userId, const QString &units = 0,
+         const double &value = 0);
+
+    /**
+    * @brief Default constructor, initializes member data as NULL/0
+    *
+    */
+    User();
+
+    /*******************************************************************************
+     * MEMBER FUNCTIONS AND SLOTS
+     ******************************************************************************/
 
     /**
     * @brief Set address
@@ -56,7 +69,7 @@ public:
     *
     * @param coordinates coordinates
     */
-    void setCoordinates(const QPointF &coordinates);
+    void setCoordinates(const GeoCoordinate &coordinates);
 
     /**
     * @brief Set distance
@@ -67,6 +80,13 @@ public:
     void setDistance(const double &value, const QString &units);
 
     /**
+    * @brief Set name
+    *
+    * @param name user name
+    */
+    void setName(const QString &name);
+
+    /**
     * @brief Set note
     *
     * @param note note/status message
@@ -74,13 +94,34 @@ public:
     void setNote(const QString &note);
 
     /**
+    * @brief Set profile image
+    *
+    * @param image Image
+    */
+    void setProfileImage(const QPixmap &image);
+
+    /**
     * @brief Set download address for profile image
     *
-    * @param imageUrl image url
+    * @param imageUrl image url of big image
     */
     void setProfileImageUrl(const QUrl &imageUrl);
 
     /**
+    * @brief Sets user's tags.
+    *
+    * @param tags user's tags
+    */
+    void setTags(const QHash<QString, QString> &tags);
+
+    /**
+    * @brief Sets user's tags.
+    *
+    * @param tags user's tags
+    */
+    void setTags(const QList<QVariant> &tags);
+
+    /**
     * @brief Set timestamp for last status update, timestamp is in literal mode
     *
     * @param timestamp timestamp
@@ -88,18 +129,25 @@ public:
     void setTimestamp(const QString &timestamp);
 
     /**
+    * @brief Sets user's ID.
+    *
+    * @param userId user's ID
+    */
+    void setUserId(const QString &userId);
+
+    /**
     * @brief Get address
     *
     * @return QString address
     */
-    QString address() const;
+    const QString &address() const;
 
     /**
     * @brief Get coordinates
     *
-    * @return QPointF coordinates
+    * @return GeoCoordinate coordinates
     */
-    QPointF coordinates() const;
+    const GeoCoordinate &coordinates() const;
 
     /**
     * @brief Get distance and units
@@ -114,54 +162,74 @@ public:
     *
     * @return QString profile name
     */
-    QString name() const;
+    const QString &name() const;
 
     /**
     * @brief Get note/status message
     *
     * @return QString note
     */
-    QString note() const;
+    const QString &note() const;
+
+    /**
+    * @brief Get profile image
+    *
+    * @return QPixmap image
+    */
+    const QPixmap &profileImage() const;
 
     /**
     * @brief Get download address for profile image
     *
     * @return QString url
     */
-    QUrl profileImageUrl() const;
+    const QUrl &profileImageUrl() const;
+
+    /**
+    * @brief Returns user's tags.
+    *
+    * @return QStringList list of tags
+    */
+    const QHash<QString, QString> &tags() const;
 
     /**
     * @brief Get timestamp of last status update
     *
     * @return QString timestamp
     */
-    QString timestamp() const;
+    const QString &timestamp() const;
 
     /**
     * @brief Get user type
     *
     * @return bool user type (true = user, false = friend)
     */
-    bool type() const;
+    const bool &type() const;
 
     /**
     * @brief Get userId
     *
     * @return QString userId
     */
-    QString userId() const;
+    const QString &userId() const;
+
+    /*******************************************************************************
+     * DATA MEMBERS
+     ******************************************************************************/
 
 private:
     QString m_address; ///< placeholder for address information
-    QPointF m_coordinates; ///< placeholder for coordinates
+    GeoCoordinate m_coordinates; ///< placeholder for coordinates
     QString m_name; ///< placeholder for name
     QString m_note; ///< placeholder for note
     QUrl m_profileImageUrl; ///< placeholder for image url
+    QHash<QString, QString> m_tags;     ///< placeholder for tags
     QString m_timestamp; ///< placeholer for timestamp
     bool m_type; ///< placeholder for user type
     QString m_units; ///< placeholder for distance unit type
     QString m_userId; ///< placeholder for userId
     double m_value; ///< placeholder for distance value
+    QPixmap m_profileImage; ///< placeholder for image
 };