Initial code
[evehomescreen] / src / eveskilltraining.cpp
1 #include "eveskilltraining.h"
2 #include "evemodel.h"
3 #include "eveaccount.h"
4
5 #include <QXmlStreamReader>
6 #include <QNetworkAccessManager>
7 #include <QNetworkRequest>
8 #include <QNetworkReply>
9 #include <QtDebug>
10 EveSkillTraining::EveSkillTraining(QObject *parent) :
11     QObject(parent),
12     training(false),
13     typeId(0),
14     startSkillpoints(0),
15     destSkillpoints(0),
16     level(0),
17     m_character(NULL),
18     m_account(NULL),
19     m_reply(NULL)
20 {
21 }
22
23 bool EveSkillTraining::fromXml(QXmlStreamReader &xml)
24 {
25     if (xml.name() != "result") {
26         qDebug() << "Wrong element:" << xml.name();
27         return false;
28     }
29     qDebug() << "passed, element is result";
30     bool inResult = true;
31     while (inResult) {
32         inResult = xml.readNextStartElement();
33         qDebug() << "element:" << xml.name();
34         if (xml.name() == "trainingEndTime") {
35             qDebug() << "Parse end time";
36             endTime = QDateTime::fromString(xml.readElementText(),"yyyy-MM-dd hh:mm:ss");//2008-08-17 06:43:00
37             qDebug()<< endTime;
38
39         } else if (xml.name() == "trainingStartTime") {
40             qDebug() << "Parse start time";
41             startTime = QDateTime::fromString(xml.readElementText(),"yyyy-MM-dd hh:mm:ss");//2008-08-17 06:43:00
42             qDebug() << startTime;
43
44         } else if (xml.name() == "trainingTypeID") {
45             typeId = xml.readElementText().toInt();
46
47         } else if (xml.name() == "trainingStartSP"){
48             startSkillpoints = xml.readElementText().toInt();
49
50         } else if (xml.name() == "trainingDestinationSP"){
51             destSkillpoints = xml.readElementText().toInt();
52
53         } else if (xml.name() == "trainingToLevel"){
54             level = xml.readElementText().toInt();
55         } else
56             // Noop
57             xml.skipCurrentElement();
58
59     } // while
60     qDebug() << "Parsing finished";
61     return true;
62 }
63
64 void EveSkillTraining::fetchInfo()
65 {
66     if (m_character == NULL || m_account == NULL)
67         return;
68     QNetworkRequest req(QUrl(QString("http://api.eveonline.com/char/SkillInTraining.xml.aspx?apiKey=%1&userID=%2&characterID=%3")
69                              .arg(m_account->apiKey())
70                              .arg(m_account->userId())
71                              .arg(m_character->characterId)));
72     m_reply = m_mgr.get(req);
73     connect(m_reply,SIGNAL(finished()),this,SLOT(infoReady()));
74 }
75
76 void EveSkillTraining::infoReady()
77 {
78     if (m_reply->error()) {
79         qDebug() << "Failed! " << m_reply->errorString();
80         return;
81     }
82     qDebug() << "Skill reply";
83     QByteArray reply = m_reply->readAll();
84     qDebug() << "Reply ready";
85     qDebug() << reply;
86     QXmlStreamReader reader(reply);
87
88     reader.readNextStartElement();
89     if (reader.name() != "eveapi")
90         return;
91     reader.readNextStartElement();
92     if (reader.name() != "currentTime")
93         return;
94     reader.readNextStartElement(); // end currentTime element
95     reader.readNextStartElement(); // start result element
96     fromXml(reader);
97     emit finished();
98 }