{
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);
}
-void Mobil1881::handleHttpData(int id, QString const& data)
+void Mobil1881::handleHttpData(int id, QByteArray const& data)
{
+ QString decoded = QString::fromUtf8(data.data());
+
for(int i = 0; i < pendingSearches_.size(); i++)
{
if(pendingSearches_.at(i) && pendingSearches_.at(i)->searchIds.find(id) !=
pendingSearches_.at(i)->searchIds.end())
{
-
- addNumbers(pendingSearches_.at(i), data, i);
+ addNumbers(pendingSearches_.at(i), decoded, i);
break;
}
}
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;
QString const& data,
int index)
{
+ if(data.isEmpty())
+ {
+ qDebug() << "Server returned no data";
+ qDebug() << "Headers: " << http_.lastResponse().toString();
+ }
+
if(data.indexOf("<b>Last ned vCard</b>") > 0)
{
addOnlyNumber(searchData, data, index);
}
int pos = 0;
- QRegExp rx("<td valign=\"top\" width=\"99%\">(.*)</td>");
- QRegExp name("<div class=\"srln\">(.*)</div>");
- QRegExp address("<div class=\"srla\">(.*),<br/>(.*)</div>");
- QRegExp number("<div class=\"srlp\">(.*)</div>");
+ static QRegExp rx("<td valign=\"top\" width=\"99%\">(.*)</td>");
+ static QRegExp name("<div class=\"srln\">(.*)</div>");
+ static QRegExp address("<div class=\"srla\">(.*),<br/>(.*)</div>");
+ static QRegExp number("<div class=\"srlp\">(.*)</div>");
rx.setMinimal(true);
name.setMinimal(true);
address.setMinimal(true);
}
+ 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);
}
QString const& data,
int index)
{
- QRegExp name("<div class=\"srsln\">(.*)</div>");
- QRegExp number("class=\"srlttxt\"><b>(.*)</b>");
- QRegExp address("class=\"srlttxt\"><span>(.*),<br/>(.*)</span>");
+ static QRegExp name("<div class=\"srsln\">(.*)</div>");
+ static QRegExp number("class=\"srlttxt\"><b>(.*)</b>");
+ static QRegExp address("class=\"srlttxt\"><span>(.*),<br/>(.*)</span>");
name.setMinimal(true);
number.setMinimal(true);
address.setMinimal(true);
Source::Result& result)
{
name = stripTags(name);
+ name = htmlEntityDecode(name);
result.name = name.trimmed();
number = stripTags(number);
number = cleanUpNumber(number);
result.number = number.trimmed();
street = stripTags(street);
+ street = htmlEntityDecode(street);
city = stripTags(city);
+ city = htmlEntityDecode(city);
result.street = street.trimmed();
result.city = city.trimmed();
+ result.country = "Norway";
- if(!result.name.isEmpty() && !result.number.isEmpty())
+ if(!result.name.isEmpty() && (!getFindNumber() || !result.number.isEmpty()))
{
return true;
}
if(!details.location.isEmpty())
{
- query += details.location;
+ query += " " + details.location;
}
url.addQueryItem("s", query);