Added option to skip the leading zero of an incoming call.
[jenirok] / src / daemon / calllistener.h
index 41ea53e..b58f3cb 100644 (file)
 #include <QtDBus/QDBusConnection>
 #include <QtDBus/QDBusObjectPath>
 #include "informationbox.h"
-#include "eniro.h"
-#include "contactmanager.h"
+#include "source.h"
 
 class CallListener: public QObject
 {
-
     Q_OBJECT
 
 public:
     CallListener();
     ~CallListener();
-    void begin();
+    bool begin();
     void end();
-    static const int REQUEST_TIMEOUT = 15000;
-    static const int BANNER_DELAY = 400;
+    static const int REQUEST_TIMEOUT = 8000;
+    static const int BANNER_DELAY = 350;
+    static const int SEARCH_RETRIES = 2;
+    static const int CONNECT_RETRIES = 1;
+    static const int CONNECTION_LOOKUP_RETRIES = 7;
+    static const int GPRS_SCANS = 2;
+    static const int WLAN_SCANS = 4;
+    static const int WAIT_BETWEEN_RETRIES = 400;
+    static const int ERROR_BANNER_TIMEOUT = 4500;
+
+protected:
+    virtual void timerEvent(QTimerEvent* event);
 
 private slots:
-    void requestFinished(QVector <Eniro::Result> const& results, Eniro::SearchDetails const& details, bool error);
+    void requestFinished(QVector <Source::Result> const& results, Source::SearchDetails const& details, bool error);
     void incomingCall(QDBusObjectPath path, QString numbe);
     void callTerminate();
     void showTimedMessage();
+    void handleAnswer();
+    void closeConnection();
 
 private:
     Q_DISABLE_COPY(CallListener);
 
-    void search(Eniro::SearchDetails const& details);
+    struct CallDetails
+    {
+        QString number;
+        Source::Result result;
+        bool answered;
+        unsigned int time;
+    };
+
+    void search(Source::SearchDetails const& details);
     void showResult(QString const& text);
-    void showDelayedResult(QString const& text);
+    void showDelayedResult(QString const& text, int delay);
+    void searchInit();
+    void searchClose();
+    bool handleConnection();
+    void showError(QString const& msg, int delay = 0);
+    bool is3g();
+    void sleep(int ms);
+    void sendRetrySignal(QString const& iap, bool retry);
     QString createResult(QString const& name, QString const& street, QString const& city);
     QString timedMessage_;
-    Eniro* eniro_;
-    ContactManager* contactManager_;
+    Source* source_;
+    Source::SourceId sourceId_;
+    QMap<QString, QString> sourceConfig_;
+    bool closeConnection_;
+    bool initialized_;
     InformationBox* box_;
     QLabel* label_;
     static QDBusConnection systemBus_;
+    int retries_;
+    int timer_;
+    CallDetails* currentCall_;
+    bool ignoreFirstZero_;
 };
 
 #endif // CALLLISTENER_H