Changed search to retry automatically couple of times before failing.
[jenirok] / src / common / dastelefonbuch.cpp
old mode 100755 (executable)
new mode 100644 (file)
index da890f8..68352e1
@@ -106,6 +106,14 @@ void DasTelefonbuch::addNumbers(SearchData* searchData,
                            QString const& data,
                            int index)
 {
+    if(data.isEmpty())
+    {
+        qDebug() << "Server returned no data";
+        setError(CONNECTION_FAILURE, "Server returned no data");
+        emitRequestFinished(searchData, true, index);
+        return;
+    }
+
     if(data.indexOf("<span>1&nbsp;Gesamttreffer</span>") > 0)
     {
         addOnlyNumber(searchData, data, index);
@@ -113,10 +121,10 @@ void DasTelefonbuch::addNumbers(SearchData* searchData,
     }
 
     int pos = 0;
-    QRegExp rx("<table.*class=\"bg-01 entry(.*)</table>");
-    QRegExp name("<div class=\"long hide\">(.*)</a>");
-    QRegExp number("<td class=\"col4\">(.*)</td>");
-    QRegExp address("<td class=\"col2\">(.*)</td>.*<td class=\"col3\">(.*)</td>");
+    static QRegExp rx("<table.*class=\"bg-01 entry(.*)</table>");
+    static QRegExp name("<div class=\"long hide\">(.*)</a>");
+    static QRegExp number("<td class=\"col4\">(.*)</td>");
+    static QRegExp address("<td class=\"col2\">(.*)</td>.*<td class=\"col3\">(.*)</td>");
 
     rx.setMinimal(true);
     name.setMinimal(true);
@@ -197,9 +205,9 @@ void DasTelefonbuch::addOnlyNumber(SearchData* searchData,
                               QString const& data,
                               int index)
 {
-    QRegExp name("<div class=\"long hide\">(.*) (.*)</a>");
-    QRegExp number("<td class=\"col4\">(.*)</td>");
-    QRegExp address("<td class=\"col2\">(.*)</td>.*<td class=\"col3\">(.*)</td>");
+    static QRegExp name("<div class=\"long hide\">(.*) (.*)</a>");
+    static QRegExp number("<td class=\"col4\">(.*)</td>");
+    static QRegExp address("<td class=\"col2\">(.*)</td>.*<td class=\"col3\">(.*)</td>");
     name.setMinimal(true);
     number.setMinimal(true);
     address.setMinimal(true);
@@ -254,6 +262,7 @@ bool DasTelefonbuch::formatResult(QString& name, QString& number,
     city = htmlEntityDecode(city);
     result.street = street.trimmed();
     result.city = city.trimmed();
+    result.country = "Germany";
 
     if(!result.name.isEmpty() && (!getFindNumber() || !result.number.isEmpty()))
     {