static const QString INVALID_LOGIN_STRING = "Invalid login details";
static const QString TIMEOUT_STRING = "Request timed out";
static const QString PERSON_REGEXP = "<td class=\"hTd2\">(.*)<b>(.*)</td>";
- static const QString YELLOW_REGEXP = "<td class=\"hTd2\">(.*)<span class=\"gray\"\\}>(.*)</td>";
+ static const QString YELLOW_REGEXP = "<td class=\"hTd2\">(.*)<span class=\"gray\">(.*)</td>";
+ static const QString SINGLE_REGEXP = "<div class=\"header\">(.*)</div>(.*)<div class=\"callRow\">(.*)</div>";
static const QString NUMBER_REGEXP = "<div class=\"callRow\">(.*)</div>";
static const QString LOGIN_CHECK = "<input class=\"inpTxt\" id=\"loginformUsername\"";
}
default:
what = "moball";
+ break;
}
}
void Eniro::loadResults(int id, QString const& httpData)
{
searchMap::iterator it = pendingSearches_.find(id);
- QString expr;
-
- switch(it.value()->details.type)
- {
- case YELLOW_PAGES:
- expr = YELLOW_REGEXP;
- break;
- case PERSONS:
- expr = PERSON_REGEXP;
- break;
- default:
- return;
- }
- QRegExp rx(expr);
+ QRegExp rx("((" + YELLOW_REGEXP + ")|(" + PERSON_REGEXP + ")|(" + SINGLE_REGEXP + "))");
rx.setMinimal(true);
bool requestsPending = false;
{
pos += rx.matchedLength();
- data = rx.cap(2);
+ data = rx.cap(1);
+
data = stripTags(data);
QStringList rows = data.split('\n');
{
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);
}
}
+ searchData->finishedSearches++;
+
if(searchData->results.size() >= maxResults)
{
emitRequestFinished(searchData, false, index);
}
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);
}
Source::SearchDetails details;
QVector<Source::Result> results;
int currentPage;
+ int totalSearches;
+ int finishedSearches;
};
void addNumbers(SearchData* searchData, QString const& data, int index);
QString number;
};
- enum SearchType {YELLOW_PAGES, PERSONS};
+ enum SearchType {YELLOW_PAGES, PERSONS, BOTH};
struct SearchDetails
{
if(retries_ < SEARCH_RETRIES && retries_ >= 0)
{
retries_++;
- source_->search(Source::SearchDetails(currentSearch_));
+ source_->search(Source::SearchDetails(currentSearch_, "", Source::BOTH));
return;
}
else
this,
SLOT(callTerminate()));
- search(Source::SearchDetails(number));
+ search(Source::SearchDetails(number, "", Source::BOTH));
}
else
{
static const int BANNER_DELAY = 350;
static const int SEARCH_RETRIES = 2;
static const int CONNECT_RETRIES = 2;
- static const int CONNECTION_LOOKUP_RETRIES = 8;
+ static const int CONNECTION_LOOKUP_RETRIES = 10;
static const int GPRS_SCANS = 2;
static const int WLAN_SCANS = 5;
static const int WAIT_BETWEEN_RETRIES = 500;
}
else
{
- QMaemo5InformationBox::information(this, readyText);
+ QMaemo5InformationBox::information(this, readyText, 800);
toggleButton_->setText(buttonText);
toggleButton_->setIcon(QIcon(running_ ? START_ICON : CLOSE_ICON));
running_ = !running_;