X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2FBusinessLogic%2FEngine.h;h=65690a1a9e9bec61ef4b8d34260584f609efb5ba;hb=51d64b3d9f4cacc447c74e5811e692fbe9b4137f;hp=22a1ea2aa0e758e81372f24b102f04c1aa0dd071;hpb=56f763c68a2ff56d344ef150b7378ca417d08b36;p=qtmeetings diff --git a/src/BusinessLogic/Engine.h b/src/BusinessLogic/Engine.h index 22a1ea2..65690a1 100644 --- a/src/BusinessLogic/Engine.h +++ b/src/BusinessLogic/Engine.h @@ -5,13 +5,15 @@ #include #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. /*! @@ -37,9 +39,13 @@ public: */ Room* defaultRoom(); + bool connected(); + QTime lastUpdated(); + QString errorMessage(); + signals: - void meetingDetailsFetched( Meeting *aDetailedMeeting ); + void roomStatusChanged( Room::Status aStatus, QTime aUntil ); private slots: //! Slot. Closes the application. @@ -53,17 +59,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. @@ -78,12 +73,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 @@ -92,46 +81,64 @@ private slots: * \param aMeetings The list of freshly fetched meetings. */ void meetingsFetched( const QList& ); - - 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 for receiving the failure event of operation mode changing. /*! - * Slot. Asks Window manager to pop up a confirmation dialog. - * \param aMode The operation mode to be changed to + * Slot. Receives the failure event of operation mode changing. */ - void changeModeOrdered( DeviceManager::OperationMode aMode ); - //! Slot. Fetches meeting details from the server. + void changeModeFailed(); + //! Slot for receiving the cancel event of the progress bar. /*! - * Slot. Fetches meeting details from the server. - * \param aMeeting The meeting. + * Receives the cancel event of the progress bar when meeting details requested. */ void fetchMeetingDetails( Meeting *aMeeting ); - //! Slot for receiving the status of the entered password + void cancelFetchMeetingDetails(); + + void handleViewEvent(); + void previousViewRestored(); + + //! Slot for dialog activation signal. /*! - * 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. + * 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 passwordEntered( PasswordDialog::PasswordStatus aPasswordStatus ); - //! Slot for receiving the failure event of operation mode changing. + void dialogActivated(); + //! Slot for dialog deactivation signal. /*! - * Slot. Receives the failure event of operation mode changing. + * 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 changeModeFailed(); - //! Slot for receiving the cancel event of the progress bar. - /*! - * Receives the cancel event of the progress bar when meeting details requested. + void dialogDeactivated(); + + void stopIdleTimeCounter(); + void startIdleTimeCounter(); + + void changeDeviceMode(); + + void currentRoomChanged( Room *aRoom ); + + void tick( QDateTime aCurrentDateTime ); + + /** + * Updates the current rooms info. + */ + void updateRoomInfo(); + /** + * */ - void fetchMeetingDetailsCancelled(); + void configurationChanged(); 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 @@ -150,36 +157,69 @@ 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. - /*! - * 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. - */ - static bool isMeetingInList( const QList &aList, const Meeting *aMeeting ); //! 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 aWeek Week for which the meetings need to be fetched. + * \param aYear Year for which 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 ); + void fetchMeetings( const int aWeek, const int aYear, 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 &aList, const Meeting *aMeeting); + private: static QTime endOfTheDay; - - WindowManager *iWindowManager; + QTimer *iIdleTimeCounter; Clock *iClock; + QDate iCurrentDate; Configuration *iConfiguration; CommunicationManager *iCommunication; + WindowManager *iWindowManager; DeviceManager *iDevice; + UIManager *iUIManager; QTimer *iAutoRefresh; QList iMeetings; + + Room *iCurrentRoom; + bool iCommunicationFailed; + QString iCommunicationError; + QTime iLastCommunication; }; #endif /*ENGINE_H_*/