#include <QDateTime>
#include <QDomDocument>
#include <QDebug>
+#include "../../Domain/Configuration/Configuration.h"
static const int ERROR_BASE=100;
-CommunicationManager::CommunicationManager( const ConnectionSettings &aConnection )
+
+CommunicationManager::CommunicationManager()
{
- iConnectionSettings = new ConnectionSettings( aConnection );
+
iModifyingCommunication = NULL;
- iFetchingCommunication = new Communication( aConnection );
+
+ iFetchingCommunication = new Communication();
if ( iFetchingCommunication )
{
SLOT( requestFinished( int, int ) )
);
}
+
}
CommunicationManager::~CommunicationManager()
{
- delete iConnectionSettings;
+ //delete iConnectionSettings;
delete iModifyingCommunication;
delete iFetchingCommunication;
while ( !iMeetings.isEmpty() )
delete iMeetings.takeFirst();
}
-void CommunicationManager::fetchMeetings( const QDateTime &aFrom, const QDateTime &aUntil, const Room &aIn )
+void CommunicationManager::fetchMeetings( const int aWeek, const int aYear, const Room &aIn )
{
//prevent making multiple simultaneous user availibility requests
+ //TODO: Would be nice to queue these requests instead of just aborting
const RequestData* rd = findRequest( GetUserAvailability );
if( rd )
return;
+
+ // Set from to beginning, 00:00 of the requested week
+ QDateTime from = QDateTime::currentDateTime();
+ from = from.addYears( aYear - from.date().year() );
+ from = from.addDays( -1*(from.date().dayOfWeek()-1) );
+ from = from.addDays( (aWeek - from.date().weekNumber())*7 );
+ QTime midnight = from.time();
+ midnight.setHMS( 0,0,0 );
+ from.setTime( midnight );
+ qDebug() << "CommunicationManager::fetchMeetings from: " << from.toString();
+
+ QDateTime until = from.addDays(7);
+ qDebug() << "CommunicationManager::fetchMeetings until: " << until.toString();
+
+
ReqMsgGetUserAvailability msg;
msg.setTimeZone();
- msg.setTimeWindow( aFrom, aUntil );
+ msg.setTimeWindow( from, until );
msg.addUser( aIn.address() );
int id = iFetchingCommunication->request( msg.getContentTypeForHeader(), msg.getMessage() );
void CommunicationManager::cancelFetchMeetingDetails()
{
- const RequestData *rd = NULL;
- for( rd = findRequest( GetCalendarItem );rd != NULL; )
- {
- int id = rd->requestId;
+ const RequestData *rd = findRequest( GetCalendarItem );
+ if( rd != NULL ) {
+ int id = rd->requestId;
iCancelledRequests.append( id );
- rd = findRequest( GetCalendarItem );
}
}
err = 10;
delete rd;
emit error( ERROR_BASE+(int)err, CommunicationManager::FetchingCommunication );
+ while ( !iMeetings.isEmpty() )
+ delete iMeetings.takeFirst();
+ emit meetingsFetched( iMeetings );
return;
}
int err = msg.getMeetingsFromResponse( iMeetings, *(rd->room) );
if( err )
+ {
emit error( ERROR_BASE+8, CommunicationManager::FetchingCommunication );
+ while ( !iMeetings.isEmpty() )
+ delete iMeetings.takeFirst();
+ emit meetingsFetched( iMeetings );
+ }
else
+ {
+ qDebug("*** COMMUNICATIONMANAGER ::: Meetings fetched!");
emit meetingsFetched( iMeetings );
+ }
break;
}
case ConvertId:
ResMsgGetCalendarItem msg( *response );
int err = msg.getMeetingDetailsFromResponse( *(rd->meeting) );
if( err )
+ {
emit error( ERROR_BASE+9, CommunicationManager::FetchingCommunication );
+ while ( !iMeetings.isEmpty() )
+ delete iMeetings.takeFirst();
+ emit meetingsFetched( iMeetings );
+ }
+
else
emit meetingDetailsFetched( *(rd->meeting) );
break;
}
return NULL;
}
+