21 #ifndef AKONADI_FREEBUSYMANAGER_P_H 
   22 #define AKONADI_FREEBUSYMANAGER_P_H 
   24 #include "etmcalendar.h" 
   25 #include "mailscheduler_p.h" 
   27 #include <kcalcore/freebusy.h> 
   28 #include <kcalcore/icalformat.h> 
   30 #include <QtCore/QPointer> 
   31 #include <QtDBus/QDBusContext> 
   32 #include <QtDBus/QDBusInterface> 
   43 class FreeBusyManager;
 
   45 class FreeBusyManagerPrivate : 
public QObject
 
   49     FreeBusyManager *
const q_ptr;
 
   50     Q_DECLARE_PUBLIC(FreeBusyManager)
 
   55         FreeBusyProviderRequest(
const QString &provider);
 
   63         Status mRequestStatus;
 
   64         QSharedPointer<QDBusInterface> mInterface;
 
   67     struct FreeBusyProvidersRequestsQueue
 
   69         explicit FreeBusyProvidersRequestsQueue(
const QString &start = QString(),
 
   70                                                 const QString &end = QString());
 
   72         FreeBusyProvidersRequestsQueue(
const KDateTime &start, 
const KDateTime &end);
 
   76         QList<FreeBusyProviderRequest> mRequests;
 
   78         KCalCore::FreeBusy::Ptr mResultingFreeBusy;
 
   82     Akonadi::ETMCalendar::Ptr mCalendar;
 
   83     KCalCore::ICalFormat mFormat;
 
   85     QStringList mRetrieveQueue;
 
   86     QMap<KUrl, QString> mFreeBusyUrlEmailMap;
 
   87     QMap<QString, FreeBusyProvidersRequestsQueue> mProvidersRequestsByEmail;
 
   90     QDateTime mNextUploadTime;
 
   92     bool mUploadingFreeBusy;
 
   95     QPointer<QWidget > mParentWidgetForMailling;
 
   98     QPointer<QWidget>  mParentWidgetForRetrieval;
 
  101     FreeBusyManagerPrivate(FreeBusyManager *q);
 
  102     void checkFreeBusyUrl();
 
  103     QString freeBusyDir() 
const;
 
  104     void fetchFreeBusyUrl(
const QString &email);
 
  105     QString freeBusyToIcal(
const KCalCore::FreeBusy::Ptr &);
 
  106     KCalCore::FreeBusy::Ptr iCalToFreeBusy(
const QByteArray &freeBusyData);
 
  107     KCalCore::FreeBusy::Ptr ownerFreeBusy();
 
  108     QString ownerFreeBusyAsString();
 
  109     void processFreeBusyDownloadResult(KJob *_job);
 
  110     void processFreeBusyUploadResult(KJob *_job);
 
  111     void uploadFreeBusy();
 
  112     QStringList getFreeBusyProviders() 
const;
 
  113     void queryFreeBusyProviders(
const QStringList &providers, 
const QString &email);
 
  114     void queryFreeBusyProviders(
const QStringList &providers, 
const QString &email,
 
  115                                 const KDateTime &start, 
const KDateTime &end);
 
  118     void processRetrieveQueue();
 
  119     void contactSearchJobFinished(KJob *_job);
 
  120     void finishProcessRetrieveQueue(
const QString &email, 
const KUrl &url);
 
  121     void onHandlesFreeBusy(
const QString &email, 
bool handles);
 
  122     void onFreeBusyRetrieved(
const QString &email, 
const QString &freeBusy,
 
  123                              bool success, 
const QString &errorText);
 
  124     void processMailSchedulerResult(Akonadi::Scheduler::Result result, 
const QString &errorMsg);
 
  125     void fbCheckerJobFinished(KJob*);
 
  128     void freeBusyUrlRetrieved(
const QString &email, 
const KUrl &url);
 
  131 class FbCheckerJob : 
public KJob
 
  135     explicit FbCheckerJob(
const QList<KUrl> &urlsToCheck, QObject *parent = 0);
 
  136     virtual void start();
 
  138     KUrl validUrl() 
const;
 
  141     void onGetJobFinished(KJob *job);
 
  142     void dataReceived(KIO::Job *, 
const QByteArray &data);
 
  146     QList<KUrl> mUrlsToCheck;
 
  153 #endif // FREEBUSYMANAGER_P_H