Merge branch 'master' into stacked_friends
[situare] / src / map / friendlocationitem.h
1 /*
2    Situare - A location system for Facebook
3    Copyright (C) 2010  Ixonos Plc. Authors:
4
5        Ville Tiensuu - ville.tiensuu@ixonos.com
6
7    Situare is free software; you can redistribute it and/or
8    modify it under the terms of the GNU General Public License
9    version 2 as published by the Free Software Foundation.
10
11    Situare is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with Situare; if not, write to the Free Software
18    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
19    USA.
20 */
21
22 #ifndef FRIENDLOCATIONITEM_H
23 #define FRIENDLOCATIONITEM_H
24
25
26 #include <QObject>
27 #include <QUrl>
28
29 #include "baselocationitem.h"
30
31 /**
32 * @brief Class that shows friends location icons on the map
33 *
34 * @class FriendLocationItem friendlocationitem.h "map/friendlocationitem.h"
35 * @author Ville Tiensuu.
36 */
37 class FriendLocationItem : public BaseLocationItem
38 {
39     Q_OBJECT
40
41 public:
42
43     /**
44     * @brief Constructor of FriendLocationItem.
45     *        Sets position to specified location.
46     *        Loads and sets default pixmap that is show on the map.
47     *        Sets default Z-value.
48     *        Sets offset so that achor of the picture is at the origin. this feature is
49     *        needed to center icon on the middle of the location.
50     *        Sets item to ignore transformations. this feature is needed to make icon on the map
51     *        immune to scaling
52     *
53     * @param icon Friends Facebook profile picture, friendsLocation Position in QPoinF, parent
54     * @param friendsLocation Location of friend
55     * @param parent Parent
56     */
57     FriendLocationItem(const QPixmap &icon, const QPointF &friendsLocation, QObject *parent = 0);
58
59 /*******************************************************************************
60 * MEMBER FUNCTIONS AND SLOTS
61 ******************************************************************************/
62 public:
63
64     bool isPartOfGroup() const;
65
66     /**
67     * @brief getter for friends profile image URL
68     *
69     * @return QUrl friends profile images URL
70     */
71     QUrl profileImageUrl() const;
72
73     /**
74     * @brief sets profile image URL for friend
75     *
76     * @param url frieds profile image URL
77     */
78     void setProfileImageUrl(const QUrl &url);
79
80     void setPartOfGroup(bool value);
81
82     /**
83     * @brief sets name for friend.
84     *
85     * @param userId friends user identity
86     */
87     void setUserId(const QString &userId);
88
89     /**
90     * @brief getter for m_userId
91     *
92     * @return QString friends user identity
93     */
94     QString userId() const;
95
96 protected:
97
98     /**
99     * @brief method that detects when friend icon is clicked
100     *
101     * @param event detects the mouse click (or touch in Maemo)
102     */
103      void mousePressEvent(QGraphicsSceneMouseEvent *event);
104
105  /*******************************************************************************
106  * SIGNALS
107  ******************************************************************************/
108 signals:
109
110    /**
111    * @brief signal is emitted when friends icon is clicked on the map
112    *
113    * @param m_userId friends user identity
114    */
115    void iconClicked(QString m_userId);
116
117 /*******************************************************************************
118 * DATA MEMBERS
119 ******************************************************************************/
120 private:
121     bool m_partOfGroup;
122     QString m_userId; ///< Friends user ID
123     QUrl m_profileImageUrl; ///< Friends Facebook profile image URL
124 };
125
126 #endif // FRIENDLOCATIONITEM_H