Re-implemented the showing of meetings (Task id 1166). Corrected the errortable order...
[qtmeetings] / src / BusinessLogic / Engine.cpp
index 25c3048..99225bf 100644 (file)
@@ -108,7 +108,7 @@ void Engine::closeApplication()
 void Engine::observedEventDetected()
 {
        qDebug() << "Engine::observedEventDetected()";
-       iWindowManager->showWeeklyView();
+       iWindowManager->refreshMeetings( iMeetings );
        // prepare to restart idle counter
        if ( iIdleTimeCounter->isActive() )
        {
@@ -217,50 +217,21 @@ void Engine::fetchMeetingDetails( Meeting *aMeeting )
        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() );
 }