#include <QtCore>
#include <QtGui>
#include <QtNetwork>
#include "download_xml.h"
#include "movie.h"
#include "list.h"
{
//OS_Symbian
#ifdef Q_OS_SYMBIAN
// Set Internet Access Point
QNetworkConfigurationManager manager;
const bool canStartIAP = manager.capabilities() & QNetworkConfigurationManager::CanStartAndStopInterfaces;
// Is there default access point, use it
QNetworkConfiguration cfg = manager.defaultConfiguration();
if (!cfg.isValid() || !canStartIAP)
{
// Available Access Points not found
QMessageBox::warning(this,
"Error",
"No access point");
return;
}
m_session = new QNetworkSession(cfg);
m_session->open();
m_session->waitForOpened();
#endif
connect(&http, SIGNAL(requestFinished(int,bool)),
this, SLOT(finished(int,bool)));
fetch(givenAddress);
}
void Download_xml
::fetch(QString address
) {
xml.clear();
http.setHost(url.host());
connectionId = http.get(url.path());
}
{
if (resp.statusCode() != 200)
http.abort();
else
{
xml.addData(http.readAll());
}
}
void Download_xml::finished(int id, bool error)
{
if (error)
{
QMessageBox::warning(this,
"Error", http.
errorString());
}
else if (id == connectionId)
{
parseXml();
}
}
void Download_xml::parseXml()
{
bool movies = false;
bool rss = false;
bool movie = false;
bool item = false;
QVector<Movie *> movie_list;
List *list = new List(false);
while (!xml.atEnd() && movies == false && rss == false)
{
xml.readNext();
if (xml.isStartElement())
{
currentTag = xml.name().toString();
if (currentTag == "movieList")
movies = true;
if (currentTag == "rss")
rss = true;
}
}
while (!xml.atEnd() && movies == true)
{
xml.readNext();
if (xml.isStartElement())
{
currentTag = xml.name().toString();
if (currentTag == "movie")
movie = true;
}
else if (xml.isEndElement() && movies == true && movie == true)
{
if (xml.name() == "movie")
{
Movie *one_movie = new Movie;
one_movie->setName(titleString);
one_movie->setDate(dateString);
one_movie->setAbout(aboutString);
one_movie->setPicture(pictureString);
movie_list.append(one_movie);
titleString.clear();
dateString.clear();
aboutString.clear();
pictureString.clear();
movie = false;
}
}
else if (xml.isCharacters() && !xml.isWhitespace() && movies == true && movie == true)
{
if (currentTag == "title")
titleString += xml.text().toString();
else if (currentTag == "globalReleaseDate")
dateString += xml.text().toString();
else if (currentTag == "annotation")
aboutString += xml.text().toString();
else if (currentTag == "imageType1")
pictureString += xml.text().toString();
}
}
while (!xml.atEnd() && rss == true)
{
xml.readNext();
if (xml.isStartElement())
{
currentTag = xml.name().toString();
if (currentTag == "item")
item = true;
}
else if (xml.isEndElement() && rss == true && item == true)
{
if (xml.name() == "item")
{
Movie *one_movie = new Movie;
one_movie->setName(titleString);
one_movie->setDate(dateString);
one_movie->setAbout(aboutString);
movie_list.append(one_movie);
titleString.clear();
dateString.clear();
aboutString.clear();
item = false;
}
}
else if (xml.isCharacters() && !xml.isWhitespace() && rss == true && item == true)
{
if (currentTag == "title")
titleString += xml.text().toString();
else if (currentTag == "pubDate")
dateString += xml.text().toString();
else if (currentTag == "description")
aboutString += xml.text().toString();
}
}
if (xml.error() && xml.error() != QXmlStreamReader::PrematureEndOfDocumentError)
{
qWarning() << "XML ERROR:" << xml.lineNumber() << ": " << xml.errorString();
http.abort();
}
_ml = movie_list;
layout->addWidget(list);
list->completeList(_ml);
}
Download_xml::~Download_xml()
{
}
Bookmarks