2 Situare - A location system for Facebook
3 Copyright (C) 2010 Ixonos Plc. Authors:
5 Kaj Wallin - kaj.wallin@ixonos.com
6 Henri Lampela - henri.lampela@ixonos.com
7 Jussi Laitinen - jussi.laitinen@ixonos.com
9 Situare is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License
11 version 2 as published by the Free Software Foundation.
13 Situare is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with Situare; if not, write to the Free Software
20 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
30 #include "facebookservice/facebookauthentication.h"
31 #include "situareservice/situareservice.h"
32 #include "ui/mainwindow.h"
34 class GPSPositionInterface;
37 * @brief Engine class for Situare Application
39 * This class handles all the underlaying login of the Situare
42 * @class SituareEngine engine.h "engine/engine.h"
44 class SituareEngine : public QObject
53 SituareEngine(QMainWindow *parent = 0);
60 /*******************************************************************************
61 * MEMBER FUNCTIONS AND SLOTS
62 ******************************************************************************/
65 * @brief Slot to intercept error signal from ImageFetcher and SituareService
67 * @param error Error message
69 void error(const QString &error);
72 * @brief Slot to intercept signal from successful login
77 * @brief Slot to receive location of crosshair
79 * @param ownLocation (Latitude and Longitude)
81 void receiveOwnLocation(QPointF ownLocation);
84 * @brief Calls reverseGeo from SituareService to translate coordinates to street address
87 void requestAddress();
90 * @brief Calls updateLocation from SituareService to send the location update to
93 * @param status Status message
94 * @param publish Publish on Facebook
96 void requestUpdateLocation(const QString &status, bool publish);
99 * @brief Slot to refresh user data
101 void refreshUserData();
104 * @brief Slot to intercept signal from successful location update
107 void updateWasSuccessful();
110 * @brief Slot to intercept signal when new user data is available.
111 * Splits User and friendsList data and emits them as two different signals.
113 * @param user instance of User
114 * @param friendsList list of User instances (friends)
116 void userDataChanged(User *user, QList<User *> &friendsList);
119 * @brief Slot for auto centering enabling.
121 * Calls gps to send last known position
122 * @param enabled true if auto centering was enabled, false otherwise
124 void enableAutoCentering(bool enabled);
127 * @brief Slot for gps enabling.
129 * @param enabled true if gps should be enabled, false otherwise
131 void enableGPS(bool enabled);
134 * @brief Slot to intercept signal when user has cancelled login process
136 void loginProcessCancelled();
138 /*******************************************************************************
140 ******************************************************************************/
143 * @brief Signals when new friends data is ready
145 * @param friendList List of User instances (friends)
147 void friendsLocationsReady(QList<User *> &friendList);
150 * @brief Signal causes mapengine to send updated location of crosshair.
153 void requestOwnLocation();
156 * @brief Signals when new user data is ready
158 * @param user Instance of User
160 void userLocationReady(User *user);
162 /*******************************************************************************
164 ******************************************************************************/
166 bool m_autoCenteringEnabled; ///< Auto centering enabled
167 bool m_gpsEnabled; ///< GPS enabled
168 FacebookAuthentication *m_facebookAuthenticator; ///< Instance for facebook authenticator
169 GPSPositionInterface *m_gps; ///< Instance of the gps position
170 MainWindow *m_ui; ///< Instance of the MainWindow UI
171 SituareService *m_situareService; ///< Instance of the situare server communication service
172 QPointF m_latestLocation; ///< Placeholder for user's latest asked location