2 Situare - A location system for Facebook
3 Copyright (C) 2010 Ixonos Plc. Authors:
5 Henri Lampela - henri.lampela@ixonos.com
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.
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.
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,
23 #ifndef SITUARESERVICE_H
24 #define SITUARESERVICE_H
27 #include "../facebookservice/facebookcredentials.h"
28 #include "../user/user.h"
29 #include "imagefetcher.h"
31 class QNetworkAccessManager;
33 class QNetworkRequest;
38 * @brief SituareService class for communicating with Situare server
40 * @author Henri Lampela
41 * @class SituareService situareservice.h "situareservice/situareservice.h"
43 class SituareService : public QObject
50 * @brief Default constructor
52 * @param parent instance of parent
53 * @param manager instance of QNetworkAccessManager
55 SituareService(QObject *parent = 0, QNetworkAccessManager *manager = 0);
63 /*******************************************************************************
64 * MEMBER FUNCTIONS AND SLOTS
65 ******************************************************************************/
68 * @brief Retrieves location user and friends information from Situare server
71 void fetchLocations();
74 * @brief Translates coordinates to street address via Situare server
76 * @param coordinates coordinates to be translated
78 void reverseGeo(const QPointF &coordinates);
81 * @brief Updates location to the Situare server
83 * @param coordinates current cordinates
84 * @param status message
85 * @param publish publish location on Facebook wall (true/false)
87 void updateLocation(const QPointF &coordinates, const QString &status, const bool &publish);
92 * @brief Public slot, which indicates when http request has been completed
94 * @param reply storage for http reply
96 void requestFinished(QNetworkReply *reply);
99 * @brief Public slot, which indicates when facebook credentials are ready
101 * @param credentials New credentials
103 void credentialsReady(const FacebookCredentials &credentials);
108 * @brief Forms a http url
110 * @param baseUrl Server url
111 * @param phpScript Server script
112 * @param urlParameters optional parameters for url
113 * @return QUrl formed url
115 QUrl formUrl(const QString &baseUrl, const QString &phpScript, QString urlParameters = 0);
118 * @brief Forms url parameters
120 * @param coordinates current coordinates
121 * @param status optional status message
122 * @param publish optional publish location on Facebook wall (true/false)
125 QString formUrlParameters(const QPointF &coordinates, QString status = 0, QString publish = 0);
128 * @brief Parses user and friend data from JSON string
130 * @param jsonReply JSON string
132 void parseUserData(const QByteArray &jsonReply);
135 * @brief Sends http request
137 * @param url destination
138 * @param cookieType type of the cookie
139 * @param cookie http cookie
141 void sendRequest(const QUrl &url, const QString &cookieType, const QString &cookie);
144 * @brief Requests ImageFetcher if user/friend has a profile image
145 * uses members: m_user and m_friendsList
148 void addProfileImages();
153 * @brief Slot for received images
155 * @param url Image url
156 * @param image Received image
158 void imageReceived(const QUrl &url, const QPixmap &image);
160 /*******************************************************************************
162 ******************************************************************************/
167 * @brief Signals error
169 * @param error error message
171 void error(const QString &error);
174 * @brief Signal for image fetching
176 * @param url Image url
178 void fetchImage(const QUrl &url);
181 * @brief Signals when address data is retrieved
183 * @param address Street address
185 void reverseGeoReady(const QString &address);
188 * @brief Signals when user data is retrieved
190 * @param user instance of user
191 * @param friendList list of friends
193 void userDataChanged(User *user, QList<User *> &friendList);
195 /*******************************************************************************
197 ******************************************************************************/
201 FacebookCredentials m_credentials; ///< handle for FacebookCredentials
202 QList<QNetworkReply *> m_currentRequests; ///< List of current http requests
203 QNetworkAccessManager *m_networkManager; ///< Pointer to QNetworkAccessManager
204 ImageFetcher *m_imageFetcher;
206 User *m_user; ///< Pointer to User
207 QList<User *> m_friendsList; ///< List of friends(User)
208 int m_visited; ///< Indicates number of friends with profile images
209 int m_nbrOfImages; ///< Indicates number of friends whose profile images have been downloaded
210 bool m_defaultImage; ///< Indicates if some of the friends or the user does not have a profile image
213 #endif // SITUARESERVICE_H