From: Mikko Siren Date: Wed, 27 May 2009 13:10:04 +0000 (+0300) Subject: Merged the engine X-Git-Url: https://vcs.maemo.org/git/?p=qtmeetings;a=commitdiff_plain;h=0d915d945a75d2d9781e2aff98f43a1b1201f79d Merged the engine --- 0d915d945a75d2d9781e2aff98f43a1b1201f79d diff --cc src/BusinessLogic/Engine.cpp index 1a79851,dc62dc3..07563eb --- a/src/BusinessLogic/Engine.cpp +++ b/src/BusinessLogic/Engine.cpp @@@ -95,6 -100,23 +95,26 @@@ void Engine::closeApplication( QTimer::singleShot( 1000, QApplication::instance(), SLOT( quit() )); } ++<<<<<<< HEAD:src/BusinessLogic/Engine.cpp ++======= + void Engine::observedEventDetected() + { + qDebug() << "Engine::observedEventDetected()"; + if ( !iIdleTimeCounter->isActive() ) + { + iWindowManager->weeklyView()->showCurrentWeek(); + } + iWindowManager->showWeeklyView(); + // prepare to restart idle counter + if (iIdleTimeCounter->isActive() ) + { + iIdleTimeCounter->stop(); + } + // (re)start idle counter + iIdleTimeCounter->start(); + } + ++>>>>>>> 60b7802da53961d1998e276858bbc5e404b98a05:src/BusinessLogic/Engine.cpp Room* Engine::defaultRoom() { qDebug() << "Engine::defaultRoom()"; @@@ -178,213 -200,130 +198,190 @@@ void Engine::fetchMeetings( fetchMeetings(iClock->datetime(), iClock->datetime().addDays( 7), room); } - bool Engine::isMeetingInList(const QList &aList, const Meeting *aMeeting) + void Engine::fetchMeetingDetails(Meeting *aMeeting) { - qDebug() - << "Engine::isMeetingInList( const QList &, const Meeting * )"; - for (int i = 0; i < aList.count(); i++) - { - if (aMeeting->equals( *(aList.at(i))) ) - { - return true; - } - } - return false; + qDebug() << "Engine::fetchMeetingDetails( Meeting* )"; - iWindowManager->showProgressBar(tr("Please Wait"), true); ++/* iWindowManager->showProgressBar(tr("Please Wait"), true); + iWindowManager->updateProgressBar(tr("Fetching Meeting Details...") ); + connect(iWindowManager, + SIGNAL( progressBarCancelled() ), this, + SLOT( fetchMeetingDetailsCancelled() )); - iCommunication->fetchMeetingDetails( *aMeeting); ++ iCommunication->fetchMeetingDetails( *aMeeting); */ ++ ++ iCommunication->fetchMeetingDetails( *aMeeting ); } - void Engine::meetingsFetched(const QList &aMeetings) + void Engine::meetingsFetched( const QList &aMeetings ) { qDebug() << "Engine::meetingsFetched( const QList & )"; - // check if there is any new meeting in the list came from the server -> added - for (int i = 0; i < aMeetings.count(); i++) - { - // if the (i)th meeting is not in the local meeting list - if ( !isMeetingInList(iMeetings, aMeetings.at(i) ) ) - { - // add to the local database =) - Meeting* m = new Meeting( *(aMeetings.at( i )) ); - iMeetings.append(m); - } + for ( int i = 0; i < iMeetings.count(); ++i ) { + Meeting* m = iMeetings.takeAt( i ); + delete m; } - - // check if there is any meeting NOT in the list came from the server -> deleted - for (int i = 0; i < iMeetings.count(); i++) - { - // if the (i)th meeting is in the local but NOT in the server's meeting list - if ( !isMeetingInList(aMeetings, iMeetings.at(i) ) ) - { - Meeting* m = iMeetings.takeAt(i); - // delete the meeting from the local list - delete m; - } + iMeetings.clear(); + for ( int i = 0; i < aMeetings.count(); ++i ) { + Meeting* m = new Meeting( *(aMeetings.at( i )) ); + iMeetings.append( m ); } - iWindowManager->refreshMeetings( iMeetings ); // refresh room status info roomStatusInfoNeeded(defaultRoom() ); } -void Engine::meetingDetailsFetched(Meeting &aDetailedMeeting) +void Engine::errorHandler( int aCode, const QString &aAddInfo ) +{ + if ( iWindowManager != 0 ) + { + iWindowManager->error( ErrorMapper::codeToString( aCode, aAddInfo ) ); + } +} + +void Engine::fetchMeetings( const QDateTime &aFrom, const QDateTime &aUntil, const Room *aIn ) +{ + qDebug() + << "Engine::fetchMeetings( const QDateTime &, const QDateTime &, const Room * )"; + iCommunication->fetchMeetings(aFrom, aUntil, *aIn); +} + - void Engine::fetchMeetingDetails(Meeting *aMeeting) - { - qDebug() << "[Engine::fetchMeetingDetails] "; - Meeting tempMeeting(aMeeting->primaryId(), aMeeting->room(), aMeeting->startsAt(), aMeeting->endsAt() ); - iCommunication->fetchMeetingDetails( tempMeeting ); - // Meeting tempMeeting = aMeeting; - // iCommunication->fetchMeetingDetails( tempMeeting ); - } - +void Engine::cancelFetchMeetingDetails() +{ + iCommunication->cancelFetchMeetingDetails(); +} + +void Engine::shownWeekChanged( QDate aFrom ) { - qDebug() << "Engine::meetingDetailsFetched( Meeting & )"; - iWindowManager->closeProgressBar(); - iWindowManager->showMeetingInfo( &aDetailedMeeting); + qDebug() << "[Engine::shownWeekChanged] "; + QDateTime from( aFrom ); + QDateTime to( aFrom.addDays( 7 ), QTime( 23, 59 ) ); + qDebug() << "[Engine::shownWeekChanged] "; + iCommunication->fetchMeetings( from, to, *defaultRoom() ); +// fetchMeetings( from, to, iWindowManager->weeklyView()->currentRoom() ); } -void Engine::errorHandler(int aCode, const QString &aAddInfo) +void Engine::changeDeviceMode( bool aChange ) { - qDebug() << "Engine::ErrorHandler, aCode: " << aCode; - // inform UI about the problem - if( aCode >= 100 && aCode <= 150 ) { //communication errors - //we don't want these to close operation changing - qDebug() << "CommunicationManager signaled an error:" << aCode; - iWindowManager->closeProgressBar(); + if ( aChange ) + { + connect( iDevice, SIGNAL( changingModeFailed() ), this, SLOT( changeModeFailed() ) ); + iAutoRefresh->stop(); // Stop the meeting update } - iWindowManager->error(ErrorMapper::codeToString(aCode, aAddInfo) ); + iDevice->changeMode( aChange ); } -void Engine::currentRoomChanged(Room *aCurrentRoom) +void Engine::changeModeFailed() { - qDebug() << "Engine::currentRoomChanged to " << aCurrentRoom->name(); - QDateTime from(iWindowManager->weeklyView()->beginnigOfShownWeek() ); - QDateTime to(from.addDays( 8) ); - fetchMeetings(from, to, aCurrentRoom); + qDebug() << "Engine::progressBarCancelled()"; + iDevice->changeMode( false ); + iAutoRefresh->start(); //we start the metting updating } -void Engine::fetchMeetings(const QDateTime &aFrom, const QDateTime &aUntil, const Room *aIn) +void Engine::initUserInterface() { - qDebug() - << "Engine::fetchMeetings( const QDateTime &, const QDateTime &, const Room * )"; - iCommunication->fetchMeetings(aFrom, aUntil, *aIn); + qDebug() << "[Engine::initUserInterface] "; + + // Initialize the window manager and connect what ever signals can be connected + iWindowManager = new WindowManager; + // Create the UIManager which internally handles most of the UI actions + iUIManager = new UIManager( this, iWindowManager ); + + connect( iWindowManager, SIGNAL( eventDetected() ), this, SLOT( handleViewEvent() ) ); + connect( iWindowManager, SIGNAL( previousViewRestored() ), iUIManager, SLOT( previousViewRestored() ) ); + connect( iWindowManager, SIGNAL( dialogActivated() ), this, SLOT( dialogActivated() ) ); + connect( iWindowManager, SIGNAL( dialogDeactivated() ), this, SLOT( dialogDeactivated() ) ); + + // Show the UI + iWindowManager->setWindowState( Qt::WindowMaximized ); + iWindowManager->show(); + iUIManager->showMainView(); + + qDebug() << "[Engine::initUserInterface] "; +} + +void Engine::handleViewEvent() +{ + if ( iIdleTimeCounter != 0 ) + { + // Restart the idle time counter when view event is received + iIdleTimeCounter->stop(); + iIdleTimeCounter->start(); + } } -void Engine::shownWeekChanged(QDate aFrom) +void Engine::initConfiguration() { - qDebug() << "Engine::shownWeekChanged( QDate )"; - QDateTime from(aFrom); - QDateTime to(aFrom.addDays( 7), QTime( 23, 59) ); - qDebug() << "Engine::shownWeekChanged " << aFrom.toString("d.m. h:mm") - << " to " << to.toString("d.m. h:mm"); - fetchMeetings(from, to, iWindowManager->weeklyView()->currentRoom() ); + iConfiguration = Configuration::instance(); + if ( iConfiguration == 0 ) + { + QTimer::singleShot( 0, this, SLOT( closeApplication() ) ); + } } -void Engine::changeModeOrdered(DeviceManager::OperationMode aMode) +void Engine::connectSignals() { - qDebug() << "Engine::changeModeOrdered( DeviceManager::OperationMode )"; - QString message = tr( "You are about to change operation mode to %1." ) - .arg(iDevice->operationModeToString(aMode) ); + // Connect engine objects signals to UIManager + connect( iClock, SIGNAL( tick( QDateTime ) ), iUIManager, SLOT( updateTime( QDateTime ) ) ); + connect( iIdleTimeCounter, SIGNAL( timeout() ) , iUIManager, SLOT( roomStatusIndicatorRequested() ) ); + + iUIManager->connectDeviceManager( iDevice ); + iUIManager->connectCommunicationManager( iCommunication ); +} - iWindowManager->showPasswordDialog(iConfiguration->adminPassword(), message); +void Engine::initCommunication() +{ + // initialize communication + iCommunication = new CommunicationManager( *(iConfiguration->connectionSettings()) ); + connect( iCommunication, SIGNAL( error( int, CommunicationManager::CommunicationType ) ), + this, SLOT( errorHandler( int ) ) ); + connect( iCommunication, SIGNAL( meetingsFetched( const QList& ) ), + this, SLOT( meetingsFetched( const QList& ) ) ); } -void Engine::passwordEntered(PasswordDialog::PasswordStatus aPasswordStatus) +void Engine::initDevice() { - qDebug() << "Engine::passwordEntered( PasswordDialog::PasswordStatus )"; - iWindowManager->closePasswordDialog(); + // create device manager + iDevice = new DeviceManager( iConfiguration->startupSettings() ); + connect( iDevice, SIGNAL( error( int, const QString& ) ), this, SLOT( errorHandler( int, const QString& ) ) ); + iDevice->initDeviceManager(); +} - switch (aPasswordStatus) +void Engine::dialogActivated() +{ + if ( iIdleTimeCounter != 0 ) { - case PasswordDialog::Correct: - { - iAutoRefresh->stop(); //we stop the metting updating - iWindowManager->showProgressBar( "Changing current operation mode." ); - connect(iDevice, SIGNAL( changingMode( const QString & ) ), iWindowManager, SLOT( updateProgressBar( const QString & ) )); - connect( iDevice, SIGNAL( changingMode( const QString & ) ), - iWindowManager, SLOT( updateProgressBar( const QString & ) ) ); - connect( iDevice, SIGNAL( changeModeFailed() ), this, SLOT( changeModeFailed() ) ); - iDevice->changeMode( true); - break; - } - case PasswordDialog::Incorrect: - { - iWindowManager->error(tr("Incorrect password.") ); - iDevice->changeMode( false); - break; - } - default: //case PasswordDialog::Canceled - { - iDevice->changeMode( false); - } + iIdleTimeCounter->stop(); } } -void Engine::changeModeFailed() +void Engine::dialogDeactivated() { - qDebug() << "Engine::changeModeFailed()"; - iWindowManager->closeProgressBar(); - iAutoRefresh->start(); //we start the metting updating + if ( iIdleTimeCounter != 0 ) + { + iIdleTimeCounter->start(); + } } -void Engine::fetchMeetingDetailsCancelled() +void Engine::previousViewRestored() { - iCommunication->cancelFetchMeetingDetails(); - iWindowManager->closeProgressBar(); + if ( iIdleTimeCounter != 0 ) + { + iIdleTimeCounter->start(); + } +} + +void Engine::stopIdleTimeCounter() +{ + if ( iIdleTimeCounter != 0 ) + { + iIdleTimeCounter->stop(); + } +} + +void Engine::startIdleTimeCounter() +{ + if ( iIdleTimeCounter != 0 ) + { + iIdleTimeCounter->start(); + } } +