Changed something cannot remember what
[qtmeetings] / src / BusinessLogic / Engine.h
index 47b2a4d..3efc471 100644 (file)
@@ -4,18 +4,23 @@
 #include <QObject>
 #include <QDateTime>
 #include "Room.h"
+#include "WindowManager.h"
+#include "DeviceManager.h"
+#include "PasswordDialog.h"
 
 class QTimer;
 class Clock;
 class Configuration;
 class CommunicationManager;
 class Meeting;
-class DeviceManager;
+class UIManager;
 
 //! BusinessLogic class. Contains all the business logic of the application.
 /*!
- * BusinessLogic class. Contains all the business logic of the application. It is responsible
- * for connecting user interface to lower application layers (IO).
+ * BusinessLogic class. Contains all the business logic of the application. This class handles
+ * the logic of the application according received calls to the slots. This class also maintains
+ * the instances of managers, timers and its own set of meeting list. The managers handles
+ * their tasks in more detailed manner.
  */
 class Engine : public QObject
 {
@@ -29,94 +34,33 @@ public:
        Engine();
        //! Destructor.
        virtual ~Engine();
-
-       //! Gets the clock instance used by the object to get up-to-date date and time info.
-       /*!
-        * Gets the clock instance used by the object to get up-to-date date and time info.
-        * \return Pointer to the Clock instance.
-        */
-       Clock* clock();
-       //! Gets the application's configuration.
-       /*!
-        * Gets the application's configuration.
-        * \return Pointer to the Configuration instance.
-        */
-       Configuration* configuration();
        //! Gets default room of the application.
        /*!
         * Gets default room of the application.
         * \return Pointer to the default Room instance.
         */
        Room* defaultRoom();
-       //! Gets the deviceManager instance
-       /*!
-        * Gets the deviceManager instance.
-        * \return Pointer to the deviceManager instance.
-        */
-       DeviceManager* deviceManager();
 
 signals:
-       //! Signal. Emitted if initialization of the current instance failed.
-       /*!
-        * Signal. Emitted if initialization of the current instance failed, if reading of the configuration
-        * was not successful. It's purpose to inform the userinterface that the Engine is not ready for
-        * controlling the application, application must be shut down.
-        */
-       void initializationFailed();
-       //! Signal. Emitted if the availability information of the specified room changed.
-       /*!
-        * Signal. Emitted if the availability information of the specified room changed.
-        * \param aRoom The Room instance which availability changed.
-        * \param aStatus The status of the room.
-        * \param aUntil Time until the spacified status is valid.
-        */
-       void roomStatusChanged( Room *aRoom, Room::Status aStatus, QTime aUntil );
-       //! Signal. Emitted if new meeting was found on the server.
-       /*!
-        * Signal. Emitted if new meeting was found on the server.
-        * \param aMeeting The new meeting which was added.
-        */
-       void meetingAdded( Meeting *aMeeting );
-       //! Signal. Emitted if meeting was deleted on the server.
-       /*!
-        * Signal. Emitted if meeting was deleted on the server.
-        * \param aMeeting The meeting which was deleted.
-        */
-       void meetingDeleted( Meeting *aMeeting );
-       //! Signal. Emitted error occured and error message must be shown on UI.
+
+private slots:
+       //! Slot. Closes the application.
        /*!
-        * Signal. Emitted error occured and error message must be shown on UI.
-        * \param aErrorMessage The message.
+        * Slot. Closes the application.
         */
-       void error( const QString &aErrorMessage );
-
-       void meetingDetailsFetched( Meeting *aDetailedMeeting );
-
-public slots:
+       void closeApplication();
        //! Slot. Checks actual availability information of the specified room.
        /*!
         * Slot. Checks actual availability information of the specified room.
         * \param aRoom The room which availability information is needed.
         */
        void roomStatusInfoNeeded( Room *aRoom );
-       //! Slot. Fetches meetings from the server.
+       //! Slot. Asks the communication to fetch new meeting data.
        /*!
-        * Slot. Fetches meetings from the server, exact parameters are specified in the parameter list.
-        * \param aFrom Time from when the meetings need to be fetched.
-        * \param aUntil Time until when the meetings need to be fetched.
-        * \param aIn The room which meetings need to be fetched.
+        * Slot. Asks the communication to fetch new meeting data.
+        * \param aCurrentRoom The current room.
         */
-       void fetchMeetings( const QDateTime &aFrom, const QDateTime &aUntil, Room *aIn );
-       
-       void fetchMeetingDetails( Meeting * );
-       
-       /*!
-        * Slot. Sets the current meeting room iCurrentRoom.
-        * \param aCurrentRoom
-        */
-       void currentRoomChanged( Room *aCurrentRoom );
-
-private slots:
+       void shownWeekChanged( QDate aDate );
        //! Slot. Handles errors.
        /*!
         * Slot. Handles errors and informs the UI by emitting the error() signal with the message in
@@ -125,12 +69,6 @@ private slots:
         * \param aAddInfo Possible addition info.
         */
        void errorHandler( int aCode, const QString &aAddInfo = "" );
-       //! Slot. Fetches meetings from the server.
-       /*!
-        * Slot. Fetches meetings from the server. Parameters are hard coded: the meetings of the default
-        * room from current and +/- 2 weeks are fetched.
-        */
-       void fetchMeetings();
        //! Slot. Saves fetched meetings to the current instance's local storage.
        /*!
         * Slot. Saves fetched meetings to the current instance's local storage. Meetings are soted in a
@@ -139,17 +77,53 @@ private slots:
         * \param aMeetings The list of freshly fetched meetings.
         */
        void meetingsFetched( const QList<Meeting*>& );
-       
-       void meetingDetailsFetched( Meeting &aDetailedMeeting );
-       
        //! Slot. Checks the availability of all the rooms.
        /*!
         * Slot. Checks the availability of all the rooms by iterating through the current object's local
         * room storage and calling the roomStatusInfoNeeded() separately on each of them.
         */
        void checkStatusOfAllRooms();
+       //! Slot for receiving the failure event of operation mode changing.
+       /*!
+        * Slot. Receives the failure event of operation mode changing.
+        */
+       void changeModeFailed();
+       //! Slot for receiving the cancel event of the progress bar.
+       /*!
+        *  Receives the cancel event of the progress bar when meeting details requested.
+        */
+       void fetchMeetingDetails( Meeting *aMeeting );
+       void cancelFetchMeetingDetails();
+       
+       void handleViewEvent();
+       void previousViewRestored();
+       
+       //! Slot for dialog activation signal.
+       /*!
+        * This slot is used to inform that dialog is activated. It stops
+        * the idle time counter so screensaver is not activated while the
+        * dialog is displayed.
+        */
+       void dialogActivated();
+       //! Slot for dialog deactivation signal.
+       /*!
+        * This slot is used to inform that dialog is deactivated. It restarts
+        * the idle time counter so that the screensaver is being activated again
+        * as needed.
+        */
+       void dialogDeactivated();
+       
+       void stopIdleTimeCounter();
+       void startIdleTimeCounter();
 
+       void changeDeviceMode( bool aChange );
+       
+       void currentRoomChanged( Room *aRoom );
+       
 private:
+       // Make the UIManager as friendly class so it can connect to private slots.
+       friend class UIManager;
+       
        //! Provides the index of the Meeting instance which is at the specified time.
        /*!
         * Provides the index of the Meeting instance which is at the specified time. If there are
@@ -168,28 +142,66 @@ private:
         * \return Index of the meeting if found; otherwise, -1.
         */
        int indexOfMeetingAfter( Room *aRoom, QDateTime aAfter );
-       //! Indicates if the QList contains the Meeting or not.
+       //! Slot. Fetches meetings from the server.
+       /*!
+        * Slot. Fetches meetings from the server, exact parameters are specified in the parameter list.
+        * \param aFrom Time from when the meetings need to be fetched.
+        * \param aUntil Time until when the meetings need to be fetched.
+        * \param aIn The room which meetings need to be fetched.
+        */
+       void fetchMeetings( const QDateTime &aFrom, const QDateTime &aUntil, const Room *aIn );
+       //! Initialize configuration package.
+       /*!
+        * This method initializes configuration classes and
+        * connects signals from and to the engine.
+        */
+       void initConfiguration();
+       //! Initialize device package.
+       /*!
+        * This method initializes device manager and
+        * connects signals from and to the engine.
+        */
+       void initDevice();
+       //! Initialize communication package.
        /*!
-        * Indicates if the QList contains the Meeting or not.
-        * \param aList List of meetings.
-        * \param aMeeting The meeting which is seeked in the list for.
-        * \return True if contains; otherwise, false.
+        * This method initializes the communication manager and
+        * connects signals from and to the engine.
         */
-       static bool isMeetingInList( const QList<Meeting*> &aList, const Meeting *aMeeting );
+       void initCommunication();
+       //! Initialize user interface package.
+       /*!
+        * This method initializes the user interface and
+        * connects signals from and to the engine. This method
+        * makes the window manager visible and shows weekly
+        * view as the first view.
+        */
+       void initUserInterface();
+       //! Connects signal between objects.
+       /*!
+        * Signals that could not be connected while initializing different
+        * packages are connected here.
+        */
+       void connectSignals();
+       
+       bool isMeetingInList(const QList<Meeting*> &aList, const Meeting *aMeeting);
 
 private:
        static QTime endOfTheDay;
 
+       WindowManager *iWindowManager;
+       
+       QTimer *iIdleTimeCounter;
        Clock *iClock;
        Configuration *iConfiguration;
        CommunicationManager *iCommunication;
        DeviceManager *iDevice;
+       UIManager *iUIManager;
 
        QTimer *iAutoRefresh;
 
        QList<Meeting*> iMeetings;
-
-       Room *iCurrentRoom;     /*! Not owned */
+       
+       Room *iCurrentRoom;
 };
 
 #endif /*ENGINE_H_*/