Merged and got it partly working
[qtmeetings] / src / BusinessLogic / Engine.h
index 14d2740..90f6342 100644 (file)
@@ -5,13 +5,15 @@
 #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.
 /*!
@@ -39,8 +41,6 @@ public:
 
 signals:
 
-       void meetingDetailsFetched( Meeting *aDetailedMeeting );        
-
 private slots:
        //! Slot. Closes the application.
        /*!
@@ -53,17 +53,6 @@ private slots:
         * \param aRoom The room which availability information is needed.
         */
        void roomStatusInfoNeeded( Room *aRoom );
-       //! Slot. Indicates that some user event has happened.
-       /*!
-        * Slot. Indicates that some user event has happened.
-        */
-       void observedEventDetected();
-       //! Slot. Asks the communication to fetch new meeting data.
-       /*!
-        * Slot. Asks the communication to fetch new meeting data.
-        * \param aCurrentRoom The current room.
-        */
-       void currentRoomChanged( Room *aCurrentRoom );
        //! Slot. Asks the communication to fetch new meeting data.
        /*!
         * Slot. Asks the communication to fetch new meeting data.
@@ -92,34 +81,12 @@ 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 popping up the confirmation dialog to change the current operation mode
-       /*!
-        * Slot. Asks Window manager to pop up a confirmation dialog.
-        * \param aMode The operation mode to be changed to
-        */
-       void changeModeOrdered( DeviceManager::OperationMode aMode );
-       //! Slot. Fetches meeting details from the server.
-       /*!
-        * Slot. Fetches meeting details from the server.
-        * \param aMeeting The meeting.
-        */
-       void fetchMeetingDetails( Meeting *aMeeting );
-       //! Slot for receiving the status of the entered password
-       /*!
-        * Slot. Receives the status of the entered password and makes the DeviceManager to change the
-        * operation mode if the password is correct.
-        * \param aPasswordStatus The status of the password.
-        */
-       void passwordEntered( PasswordDialog::PasswordStatus aPasswordStatus );
        //! Slot for receiving the failure event of operation mode changing.
        /*!
         * Slot. Receives the failure event of operation mode changing.
@@ -129,9 +96,36 @@ private slots:
        /*!
         *  Receives the cancel event of the progress bar when meeting details requested.
         */
-       void fetchMeetingDetailsCancelled();
+       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 );
+       
 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
@@ -158,16 +152,52 @@ private:
         * \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.
+       /*!
+        * This method initializes the communication manager and
+        * connects signals from and to the engine.
+        */
+       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;