Changed daemon to auto disconnect if network connection was initialized by itself.
[jenirok] / src / daemon / calllistener.cpp
index 1237b7c..840d849 100644 (file)
@@ -65,7 +65,6 @@ void CallListener::begin()
                        SLOT(callTerminate()));
 
     contactManager_ = new ContactManager;
-    connectionManager_ = new ConnectionManager;
 
     eniro_ = new Eniro(Eniro::stringToSite(Settings::instance()->get("site")));
 
@@ -125,14 +124,21 @@ void CallListener::search(Eniro::SearchDetails const& details)
     {
 
         showDelayedResult(createResult(result.name,
-                                 result.street,
-                                 result.city), BANNER_DELAY);
+                                       result.street,
+                                       result.city), BANNER_DELAY);
     }
     else
     {
-        showResult(tr("Searching..."));
         retries_ = 0;
-        currentSearch_ = details;
+        currentSearch_ = details.query;
+
+        if(connectionManager_)
+        {
+            delete connectionManager_;
+            connectionManager_ = 0;
+        }
+
+        connectionManager_ = new ConnectionManager;
 
         if(!connectionManager_->isConnected())
         {
@@ -144,6 +150,7 @@ void CallListener::search(Eniro::SearchDetails const& details)
             closeConnection_ = false;
         }
 
+        showDelayedResult(tr("Searching..."), 200);
         eniro_->search(details);
     }
 
@@ -153,8 +160,6 @@ void CallListener::requestFinished(QVector <Eniro::Result> const& results,
                                    Eniro::SearchDetails const& details,
                                    bool error)
 {
-    qDebug() << "Found: " << results.size();
-
     // If box is not visible, the call must have been terminated already
     if(!box_->isVisible())
     {
@@ -170,7 +175,7 @@ void CallListener::requestFinished(QVector <Eniro::Result> const& results,
         if(retries_ < NUMBER_OF_RETRIES && retries_ >= 0)
         {
             retries_++;
-            eniro_->search(currentSearch_);
+            eniro_->search(Eniro::SearchDetails(currentSearch_));
             return;
         }
         else
@@ -184,23 +189,27 @@ void CallListener::requestFinished(QVector <Eniro::Result> const& results,
     }
     else
     {
-        message = createResult(results.at(0).name, results.at(0).street, results.at(0).city);
+        message = createResult(results.at(0).name, results.at(0).street,
+                               results.at(0).city);
         Eniro::Result result = results.at(0);
         result.number = details.query;
         Cache::instance().addItem(result);
     }
 
     retries_ = -1;
+    currentSearch_ = "";
+    timedMessage_ = "";
+
+    showResult(message);
 
-    if(closeConnection_)
+    if(closeConnection_ && connectionManager_)
     {
-        connectionManager_->disconnect();
+        connectionManager_->disconnect(true);
         closeConnection_ = false;
     }
 
-    timedMessage_ = message;
-
-    showResult(message);
+    delete connectionManager_;
+    connectionManager_ = 0;
 
 }
 
@@ -231,6 +240,7 @@ void CallListener::showResult(QString const& text)
     {
         box_->hide();
     }
+
     box_->show();
 }
 
@@ -266,11 +276,14 @@ void CallListener::callTerminate()
         box_->hide();
     }
 
-    if(closeConnection_)
+    if(closeConnection_ && connectionManager_)
     {
-        connectionManager_->disconnect();
+        connectionManager_->disconnect(true);
         closeConnection_ = false;
     }
+
+    delete connectionManager_;
+    connectionManager_ = 0;
 }
 
 void CallListener::showDelayedResult(QString const& text, int delay)