#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)
*
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 ¬e, const QUrl &imageUrl, const QString ×tamp,
+ 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
*
* @param coordinates coordinates
*/
- void setCoordinates(const QPointF &coordinates);
+ void setCoordinates(const GeoCoordinate &coordinates);
/**
* @brief Set distance
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
void setNote(const QString ¬e);
/**
+ * @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
void setTimestamp(const QString ×tamp);
/**
+ * @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
*
* @return QString profile name
*/
- QString name() const;
+ const QString &name() const;
/**
* @brief Get note/status message
*
* @return QString note
*/
- QString note() const;
+ const QString ¬e() 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 ×tamp() 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
};