void Engine::observedEventDetected()
{
qDebug() << "Engine::observedEventDetected()";
- iWindowManager->showWeeklyView();
+ iWindowManager->refreshMeetings( iMeetings );
// prepare to restart idle counter
if ( iIdleTimeCounter->isActive() )
{
iCommunication->fetchMeetingDetails( *aMeeting );
}
-bool Engine::isMeetingInList( const QList<Meeting*> &aList, const Meeting *aMeeting )
-{
- qDebug() << "Engine::isMeetingInList( const QList<Meeting*> &, const Meeting * )";
- for ( int i = 0; i < aList.count(); i++ )
- {
- if ( aMeeting->equals( *(aList.at( i )) ) )
- {
- return true;
- }
- }
- return false;
-}
-
void Engine::meetingsFetched( const QList<Meeting*> &aMeetings )
{
qDebug() << "Engine::meetingsFetched( const QList<Meeting*> & )";
- // 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 );
- // and signal the changes
- iWindowManager->insertMeeting( 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 );
- // signal the changes
- iWindowManager->deleteMeeting( m );
- // 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() );
}