X-Git-Url: http://git.maemo.org/git/?p=movie-schedule;a=blobdiff_plain;f=src%2Fsearchclients%2Fmovieschedulesearchclient.cpp;fp=src%2Fsearchclients%2Fmovieschedulesearchclient.cpp;h=235f549e36275fc2abe49dd89322302e9b7d76e6;hp=7041c5ec430ef0a9cb0ff8e09ce4dbc0b65815b1;hb=bb467534ecac666816ae036272a474174d9d8449;hpb=fbbb2a758b18a7afff51d27852f85977fe796b35 diff --git a/src/searchclients/movieschedulesearchclient.cpp b/src/searchclients/movieschedulesearchclient.cpp index 7041c5e..235f549 100644 --- a/src/searchclients/movieschedulesearchclient.cpp +++ b/src/searchclients/movieschedulesearchclient.cpp @@ -78,6 +78,7 @@ enum State { PARSE_LINK, PARSE_BR, PARSE_SPAN, + PARSE_NEXT_PAGE_LINK }; void MovieScheduleSearchClient::ReplyFinished(QNetworkReply *reply) @@ -92,6 +93,8 @@ void MovieScheduleSearchClient::ReplyFinished(QNetworkReply *reply) QString theater_phone; QList schedule; QRegExp time_pattern("\\d+:\\d+([aApP][mM])*"); + QString next_page_url; + int next_page_start; while (!xml.atEnd()) { QXmlStreamReader::TokenType token = xml.readNext(); if (token == QXmlStreamReader::StartElement) { @@ -102,7 +105,7 @@ void MovieScheduleSearchClient::ReplyFinished(QNetworkReply *reply) //std::cout << "LINK " << qPrintable(attr_href) << std::endl; if (url.hasQueryItem("date")) { QString v = url.queryItemValue("date"); - std::cout << "FOUND Date Link " << qPrintable(v) << " from " << qPrintable(url.toString()) << std::endl; + //std::cout << "FOUND Date Link " << qPrintable(v) << " from " << qPrintable(url.toString()) << std::endl; if (!_dates_seen.contains(v)) { // TODO replace location with user selected location (Google simplifies to much) _dates_seen.insert(v); @@ -115,6 +118,16 @@ void MovieScheduleSearchClient::ReplyFinished(QNetworkReply *reply) theater_phone = ""; schedule.clear(); state = PARSE_THEATER_LINK; + } else if (url.hasQueryItem("start")) { + QString sort = url.queryItemValue("sort"); + QString start = url.queryItemValue("start"); + int istart = start.toInt(); + if (sort == "0" && istart > GetStartIndex()) { + //std::cout << "next page LINK " << qPrintable(attr_href) << std::endl; + next_page_url = attr_href; + next_page_start = istart; + } + state = PARSE_NEXT_PAGE_LINK; } else { state = PARSE_HTML; } @@ -176,6 +189,8 @@ void MovieScheduleSearchClient::ReplyFinished(QNetworkReply *reply) } } } + } else if (state == PARSE_NEXT_PAGE_LINK) { + state = PARSE_HTML; } } else if (token == QXmlStreamReader::Characters) { if (state == PARSE_THEATER_LINK) { @@ -214,9 +229,9 @@ void MovieScheduleSearchClient::ReplyFinished(QNetworkReply *reply) emit SearchFinished(GetSearchTaskId(), false); deleteLater(); } else { - if (found > 0) { + if (!next_page_url.isEmpty()) { emit Reply(GetSearchTaskId(), true); - Search(GetStartIndex() + found); + SearchEncodedUrl(next_page_url, next_page_start); } else { if (!_date_urls.isEmpty()) { SearchNextDate();