X-Git-Url: http://git.maemo.org/git/?p=jenirok;a=blobdiff_plain;f=src%2Fcommon%2Fmobil1881.cpp;h=69327b04b185e3696cd133b4dd4781aab137dd63;hp=e57816d84b0d7fccc4c84ebd89a7a9079e6ff2f6;hb=d93782e7a5ae0fc072d094fd645cf415a34a2244;hpb=11dc201fad01443c74fd221774881e1daad94ea3 diff --git a/src/common/mobil1881.cpp b/src/common/mobil1881.cpp index e57816d..69327b0 100644 --- a/src/common/mobil1881.cpp +++ b/src/common/mobil1881.cpp @@ -47,12 +47,28 @@ void Mobil1881::search(Source::SearchDetails const& details) { resetTimeout(); - int id = sendQuery(details, 1); - SearchData* newData = new SearchData; newData->details = details; - newData->searchIds.insert(id); newData->currentPage = 1; + newData->finishedSearches = 0; + + if(details.type == Source::BOTH) + { + newData->totalSearches = 2; + Source::SearchDetails tmpDetails = details; + tmpDetails.type = Source::PERSONS; + int id1 = sendQuery(tmpDetails, 1); + tmpDetails.type = Source::YELLOW_PAGES; + int id2 = sendQuery(tmpDetails, 1); + newData->searchIds.insert(id1); + newData->searchIds.insert(id2); + } + else + { + newData->totalSearches = 1; + int id = sendQuery(details, 1); + newData->searchIds.insert(id); + } pendingSearches_.push_back(newData); } @@ -79,7 +95,6 @@ void Mobil1881::handleHttpError(int id) if(pendingSearches_.at(i) && pendingSearches_.at(i)->searchIds.find(id) != pendingSearches_.at(i)->searchIds.end()) { - setError(Source::CONNECTION_FAILURE, http_.errorString()); emitRequestFinished(pendingSearches_.at(i), true, i); break; @@ -91,6 +106,12 @@ void Mobil1881::addNumbers(SearchData* searchData, QString const& data, int index) { + if(data.isEmpty()) + { + qDebug() << "Server returned no data"; + qDebug() << "Headers: " << http_.lastResponse().toString(); + } + if(data.indexOf("Last ned vCard") > 0) { addOnlyNumber(searchData, data, index); @@ -98,10 +119,10 @@ void Mobil1881::addNumbers(SearchData* searchData, } int pos = 0; - QRegExp rx("(.*)"); - QRegExp name("
(.*)
"); - QRegExp address("
(.*),
(.*)
"); - QRegExp number("
(.*)
"); + static QRegExp rx("(.*)"); + static QRegExp name("
(.*)
"); + static QRegExp address("
(.*),
(.*)
"); + static QRegExp number("
(.*)
"); rx.setMinimal(true); name.setMinimal(true); address.setMinimal(true); @@ -150,20 +171,26 @@ void Mobil1881::addNumbers(SearchData* searchData, } + searchData->finishedSearches++; + if(searchData->results.size() >= maxResults) { emitRequestFinished(searchData, false, index); + + if(searchData->totalSearches > 1) + { + abort(); + } } else { - if(data.indexOf("Neste") > 0) { searchData->currentPage++; int id = sendQuery(searchData->details, searchData->currentPage); searchData->searchIds.insert(id); } - else + else if(searchData->finishedSearches >= searchData->totalSearches) { emitRequestFinished(searchData, false, index); } @@ -175,9 +202,9 @@ void Mobil1881::addOnlyNumber(SearchData* searchData, QString const& data, int index) { - QRegExp name("
(.*)
"); - QRegExp number("class=\"srlttxt\">(.*)"); - QRegExp address("class=\"srlttxt\">(.*),
(.*)
"); + static QRegExp name("
(.*)
"); + static QRegExp number("class=\"srlttxt\">(.*)"); + static QRegExp address("class=\"srlttxt\">(.*),
(.*)
"); name.setMinimal(true); number.setMinimal(true); address.setMinimal(true); @@ -231,6 +258,7 @@ bool Mobil1881::formatResult(QString& name, QString& number, city = htmlEntityDecode(city); result.street = street.trimmed(); result.city = city.trimmed(); + result.country = "Norway"; if(!result.name.isEmpty() && (!getFindNumber() || !result.number.isEmpty())) {