Changes to logout prosess and login state storing, logout bug fix
[situare] / src / engine / engine.h
index cf927ef..4e1930a 100644 (file)
 
 #include <QObject>
 #include <QTime>
-#include <QPointF>
 
-#ifdef Q_WS_MAEMO_5
+#include "coordinates/geocoordinate.h"
+
+class QTimer;
+
 class Application;
-#endif
+class ContactManager;
 class FacebookAuthentication;
 class FacebookCredentials;
+class GeocodingService;
 class GPSPosition;
+class Location;
 class MainWindow;
 class MapEngine;
+class MCE;
 class NetworkAccessManager;
+class Route;
 class RoutingService;
 class SituareService;
 class User;
-class MCE;
-
-class QTimer;
 
 /**
 * @brief Engine class for Situare Application
@@ -59,7 +62,6 @@ public:
     /**
     * @brief Constructor
     *
-    * @param parent
     */
     SituareEngine();
 
@@ -81,10 +83,11 @@ public slots:
     void error(const int context, const int error);
 
     /**
-    * @brief Slot to intercept signal when username is fetched from settings
+    * @brief Slot to intercept signal when location search is issued
     *
+    * @param location QString location
     */
-    void fetchUsernameFromSettings();
+    void locationSearch(QString location);
 
     /**
     * @brief Slot to intercept signal when Login/Logout action is pressed
@@ -96,18 +99,13 @@ public slots:
     * @brief Slot to intercept signal from successful login
     *
     */
-    void loginOk();
-
-    /**
-    * @brief Slot to intercept signal when user has cancelled login process
-    */
-    void loginProcessCancelled();
+    void onLogin();
 
     /**
     * @brief Changes application state when logged out
     *
     */
-    void logout();
+    void onLogout();
 
     /**
     * @brief Calls reverseGeo from SituareService to translate coordinates to street address
@@ -152,11 +150,16 @@ private:
     void initializeGpsAndAutocentering();
 
     /**
-      * @brief Connect signals coming from Facdebook authenticator
+      * @brief Connect signals coming from Facebook authenticator
       */
     void signalsFromFacebookAuthenticator();
 
     /**
+      * @brief Connect signals coming from GeocodingService
+      */
+    void signalsFromGeocodingService();
+
+    /**
       * @brief Connect signals coming from GPS
       */
     void signalsFromGPS();
@@ -177,6 +180,11 @@ private:
     void signalsFromMapView();
 
     /**
+      * @brief Connect signals coming from RoutingService
+      */
+    void signalsFromRoutingService();
+
+    /**
       * @brief Connect signals coming from Situare
       */
     void signalsFromSituareService();
@@ -195,20 +203,9 @@ private slots:
     void disableAutoCentering();
 
     /**
-    * @brief Slot for auto centering enabling.
-    *
-    * Calls gps to send last known position
-    *
-    * @param enabled true if auto centering was enabled, false otherwise
-    */
-    void enableAutoCentering(bool enabled);
-
-    /**
-    * @brief Slot for gps enabling.
-    *
-    * @param enabled true if gps should be enabled, false otherwise
+    * @brief Calls vibration feedback.
     */
-    void enableGPS(bool enabled);
+    void draggingModeTriggered();
 
     /**
     * @brief Enables automatic location update.
@@ -219,13 +216,6 @@ private slots:
     void enableAutomaticLocationUpdate(bool enabled, int updateIntervalMsecs = 0);
 
     /**
-    * @brief Slot for enabling power saving.
-    *
-    * @param enabled true if enabled, false otherwise
-    */
-    void enablePowerSave(bool enabled);
-
-    /**
     * @brief Slot to intercept signal when user's/friend's image is downloaded
     *
     * @param user Instance of user/friend
@@ -239,16 +229,64 @@ private slots:
     *
     * @param position geo coordinates
     */
-    void requestAutomaticUpdateIfMoved(QPointF position);
+    void requestAutomaticUpdateIfMoved(GeoCoordinate position);
+
+    /**
+    * @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 Slot for setting auto centering state.
+    *
+    * Calls gps to send last known position
+    *
+    * @param enabled true if auto centering was enabled, false otherwise
+    */
+    void setAutoCentering(bool enabled);
 
     /**
      * @brief Sets zoom level to default when first GPS location is received if autocentering
      * is enabled.
-     *
-     * @param latLonCoordinate own location
-     * @param accuracy accuracy of GPS location
      */
-    void setFirstStartZoomLevel(QPointF latLonCoordinate, qreal accuracy);
+    void setFirstStartZoomLevel();
+
+    /**
+    * @brief Slot for setting GPS state.
+    *
+    * @param enabled true if gps should be enabled, false otherwise
+    */
+    void setGPS(bool enabled);
+
+    /**
+    * @brief Slot for setting power saving state.
+    *
+    * @param enabled true if enabled, false otherwise
+    */
+    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 Automatic update interval timer timeout.
@@ -257,6 +295,15 @@ private slots:
     */
     void startAutomaticUpdate();
 
+    /**
+    * @brief Called when topmost window is changed
+    *
+    * Does set power saving state.
+    *
+    * @param isMainWindow True if MainWindow is the topmost one
+    */
+    void topmostWindowChanged(bool isMainWindow);
+
 /*******************************************************************************
  * SIGNALS
  ******************************************************************************/
@@ -275,6 +322,16 @@ signals:
     void clearUpdateLocationDialogData();
 
     /**
+    * @brief Signal when direction and distance from current map center point to current GPS
+    *        location is changed
+    *
+    * @param direction Direction in degrees
+    * @param distance Distance in meters
+    * @param draw Should the indicator triangle be drawn or not
+    */
+    void directionIndicatorValuesUpdate(qreal direction, qreal distance, bool draw);
+
+    /**
     * @brief Signals when new friends data is ready
     *
     * @param friendList List of User instances (friends)
@@ -289,6 +346,13 @@ signals:
     void friendImageReady(User *user);
 
     /**
+    * @brief Emited when location request is parsed and is ready for further processing
+    *
+    * @param result List of Location items
+    */
+    void locationDataParsed(QList<Location> &result);
+
+    /**
     * @brief Signals when new user data is ready
     *
     * @param user Instance of User
@@ -304,10 +368,12 @@ private:
     bool m_automaticUpdateRequest;      ///< Flag for automatic update request
     bool m_userMoved;                   ///< Flag for user move
 
-#ifdef Q_WS_MAEMO_5
-    Application *m_app;                              ///< Pointer to Application
-#endif
+    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
     GPSPosition *m_gps;                              ///< Instance of the gps position
     MainWindow *m_ui;                                ///< Instance of the MainWindow UI
     MapEngine *m_mapEngine;                          ///< MapEngine
@@ -315,10 +381,6 @@ private:
     RoutingService *m_routingService;  ///< Instance of the routing service
     SituareService *m_situareService;  ///< Instance of the situare server communication service
     MCE *m_mce;                        ///< Instance of the MCE
-
-    QTimer *m_automaticUpdateIntervalTimer; ///< Automatic update interval timer
-    QPointF m_lastUpdatedGPSPosition;       ///< Last updated GPS position
-
 };
 
 #endif // ENGINE_H