Added automatic retries to call listener.
[jenirok] / src / daemon / calllistener.cpp
index 061c83a..16ee0d5 100644 (file)
@@ -37,7 +37,7 @@ namespace
 
 QDBusConnection CallListener::systemBus_ = QDBusConnection::systemBus();
 
-CallListener::CallListener(): eniro_(0), contactManager_(0), box_(0), label_(0)
+CallListener::CallListener(): eniro_(0), contactManager_(0), box_(0), label_(0), retries_(-1)
 {
 }
 
@@ -124,6 +124,8 @@ void CallListener::search(Eniro::SearchDetails const& details)
     else
     {
         showResult(tr("Searching..."));
+        retries_ = 0;
+        currentSearch_ = details;
         eniro_->search(details);
     }
 
@@ -146,7 +148,17 @@ void CallListener::requestFinished(QVector <Eniro::Result> const& results,
     if(error)
     {
         qDebug() << "Error: " << eniro_->errorString();
-        message = tr("Search failed:") + " " + eniro_->errorString() + ".";
+
+        if(retries_ < NUMBER_OF_RETRIES && retries_ >= 0)
+        {
+               retries_++;
+               eniro_->search(currentSearch_);
+               return;
+        }
+        else
+        {
+               message = tr("Search failed:") + " " + eniro_->errorString() + ".";
+        }
     }
     else if(results.size() == 0)
     {
@@ -160,6 +172,8 @@ void CallListener::requestFinished(QVector <Eniro::Result> const& results,
         Cache::instance().addItem(result);
     }
 
+    retries_ = -1;
+
     timedMessage_ = message;
 
     // Show banner after small delay