#include <QObject>
#include <QTime>
+#include <QPair>
#include "coordinates/geocoordinate.h"
+#include "situareservice/situareservice.h"
class QTimer;
class Application;
+class ContactManager;
class FacebookAuthentication;
class FacebookCredentials;
class GeocodingService;
class MapEngine;
class MCE;
class NetworkAccessManager;
+class Route;
class RoutingService;
class SituareService;
class User;
/**
* @brief Slot to intercept signal from successful location update
*
+ * @param successfulMethod which method was successful
*/
- void updateWasSuccessful();
+ void updateWasSuccessful(SituareService::SuccessfulMethod successfulMethod);
/**
* @brief Slot to intercept signal when new user data is available.
void enableAutomaticLocationUpdate(bool enabled, int updateIntervalMsecs = 0);
/**
- * @brief Slot to intercept signal when user's/friend's image is downloaded
+ * @brief Slot for image ready
*
- * @param user Instance of user/friend
+ * @param id image ID
+ * @param image image pixmap
*/
- void imageReady(User *user);
+ void imageReady(const QString &id, const QPixmap &image);
/**
* @brief Requests automatic update.
void requestAutomaticUpdateIfMoved(GeoCoordinate position);
/**
+ * @brief Requests interesting people from current map viewport.
+ *
+ * Interesting people is defined by people with same tags as user has.
+ */
+ void requestInterestingPeople();
+
+ /**
+ * @brief Route is parsed and is ready for further processing.
+ *
+ * @param route Route item containing parsed route details
+ */
+ void routeParsed(Route &route);
+
+ /**
+ * @brief Routes to geo coordinates.
+ *
+ * Uses map center coordinates as start point.
+ * @param endPointCoordinates end point geo coordinates
+ */
+ void routeTo(const GeoCoordinate &endPointCoordinates);
+
+ /**
+ * @brief Route to current cursor position
+ */
+ void routeToCursor();
+
+ /**
+ * @brief Requests to send a message to a person.
+ *
+ * Adds coordinates to to message if selected.
+ * @param receiverId Facebook user ID
+ * @param message message text
+ * @param addCoordinates true if coordinates should be added, false otherwise
+ */
+ void requestSendMessage(const QString &receiverId, const QString &message, bool addCoordinates);
+
+ /**
* @brief Slot for setting auto centering state.
*
* Calls gps to send last known position
void setPowerSaving(bool enabled);
/**
+ * @brief Shows contact dialog.
+ *
+ * Calls MainWindow showContactDialog with contact guid defined by contact's Facebook ID.
+ * @param facebookId contact's facebookId
+ */
+ void showContactDialog(const QString &facebookId);
+
+ /**
+ * @brief Shows message dialog.
+ *
+ * If contact is a friend, show contact dialog instead.
+ * @param receiver receiver facebook ID and name
+ */
+ void showMessageDialog(const QPair<QString, QString> &receiver);
+
+ /**
* @brief Automatic update interval timer timeout.
*
* Requests update location if user has moved.
*
* Does set power saving state.
*
- * @param mainWindowIsTopmost True if MainWindow is the topmost one
+ * @param isMainWindow True if MainWindow is the topmost one
*/
void topmostWindowChanged(bool isMainWindow);
*
* @param user Instance of friend
*/
- void friendImageReady(User *user);
+ void friendImageReady(const QString &id, const QPixmap &image);
/**
* @brief Emited when location request is parsed and is ready for further processing
void locationDataParsed(QList<Location> &result);
/**
+ * @brief Signals when users's image is ready
+ *
+ * @param user Instance of friend
+ */
+ void userImageReady(const QString &id, const QPixmap &image);
+
+ /**
* @brief Signals when new user data is ready
*
* @param user Instance of User
QTimer *m_automaticUpdateIntervalTimer; ///< Automatic update interval timer
+ ContactManager *m_contactManager; ///< Instance of contact manager
FacebookAuthentication *m_facebookAuthenticator; ///< Instance for facebook authenticator
GeocodingService *m_geocodingService; ///< Instance of the geocoding service
GeoCoordinate m_lastUpdatedGPSPosition; ///< Last updated GPS position