b41360c84cd0bba6d5938a68370c104e2220fca1
[ptas] / zouba / location.cpp
1 #include "location.h"
2
3 #include "location_p.h"
4
5 #include "ytv.h"
6
7 #include <QString>
8 #include <QObject>
9 #include <QNetworkAccessManager>
10 #include <QUrl>
11 #include <QNetworkRequest>
12 #include <QNetworkReply>
13 #include <QXmlStreamReader>
14 #include <QDebug>
15 #include <QXmlStreamAttributes>
16 #include <QStringRef>
17
18 Location::Location( QString x, QString y ) :
19   q( new LocationPrivate( x, y ) ),
20   manager( new QNetworkAccessManager(this) )
21 {
22   connect( manager, SIGNAL( finished(QNetworkReply*) ), this, SLOT( replyFinished(QNetworkReply*) ) );
23 }
24
25 Location::Location( const Location &from ) :
26   QObject( 0 ),
27   q( new LocationPrivate() ),
28   manager( new QNetworkAccessManager(this) )
29 {
30   q->setX( from.x() );
31   q->setY( from.y() );
32   q->setValid( from.isValid() );
33   connect( manager, SIGNAL( finished(QNetworkReply*) ), this, SLOT( replyFinished(QNetworkReply*) ) );
34 }
35
36 Location::Location() :
37   q( new LocationPrivate() ),
38   manager( new QNetworkAccessManager(this) )
39 {
40   connect( manager, SIGNAL( finished(QNetworkReply*) ), this, SLOT( replyFinished(QNetworkReply*) ) );
41 }
42
43 Location::~Location()
44 {
45   delete q;
46   q=0;
47   delete manager;
48   manager=0;
49 }
50
51 Location &Location::operator=( const Location &from )
52 {
53   q->setX( from.x() );
54   q->setY( from.y() );
55   q->setValid( from.isValid() );
56   manager = new QNetworkAccessManager(this);
57   connect( manager, SIGNAL( finished(QNetworkReply*) ), this, SLOT( replyFinished(QNetworkReply*) ) );
58   
59   return *this;
60 }
61
62 void Location::resolveAddress( QString address )
63 {
64   QUrl fullUrl( ytv );
65
66   fullUrl.addEncodedQueryItem( "key", address.toUtf8() );
67   fullUrl.addQueryItem( "user", username );
68   fullUrl.addQueryItem( "pass", password );
69
70   manager->get( QNetworkRequest( fullUrl ) );
71 }
72
73 void Location::replyFinished( QNetworkReply * reply )
74 {
75   q->parseReply( reply->readAll() );
76
77   if ( q->isValid() ) {
78     emit( becomeValid() );
79   }
80 }
81
82 QString Location::x() const
83 {
84   return q->x();
85 }
86
87 QString Location::y() const
88 {
89   return q->y();
90 }
91
92 bool Location::isValid() const
93 {
94   return q->isValid();
95 }