Some fixes to connection manager.
[jenirok] / src / common / eniro.h
index 0a810dc..fbba9f4 100644 (file)
 
 #include <QtCore/QObject>
 #include <QtCore/QString>
+#include <QtCore/QByteArray>
 #include <QtCore/QVector>
 #include <QtCore/QSet>
 #include <QtCore/QRegExp>
 #include <QtCore/QUrl>
 #include <QtCore/QTimerEvent>
 #include <QtNetwork/QHttp>
+#include "source.h"
 
-class Eniro: public QObject
+class Eniro: public Source
 {
     Q_OBJECT
 
 public:
 
     enum Site {FI, SE, DK};
-    static const int SITE_COUNT = 3;
-
-    enum SearchType {YELLOW_PAGES, PERSONS};
-
-    enum Error {NO_ERROR, CONNECTION_FAILURE, INVALID_LOGIN, TIMEOUT};
-
-    struct Result
-    {
-        QString name;
-        QString street;
-        QString city;
-        QString number;
-    };
-
-    struct SearchDetails
-    {
-        QString query;
-        QString location;
-        SearchType type;
-        SearchDetails(QString const& query = "",
-                      QString const& location = "",
-                      SearchType type = PERSONS);
-    };
 
     struct SiteDetails
     {
@@ -65,32 +44,21 @@ public:
         QString id;
     };
 
-    Eniro(Site site, QObject *parent = 0);
+    static const int SITE_COUNT = 3;
 
+    Eniro(QObject *parent = 0);
     ~Eniro();
-
     void login(QString const& username, QString const& password);
     void logout();
-    void testLogin();
     void setSite(Site);
-    void setMaxResults(unsigned int value);
-    void setFindNumber(bool value);
-    void setTimeout(unsigned int ms);
-    bool search(SearchDetails const& details);
-    void abort();
-    Error error() const;
-    const QString& errorString() const;
+    virtual void search(Source::SearchDetails const& details);
+    virtual void abort();
     static QMap<Site, SiteDetails> getSites();
     static Site stringToSite(QString const& str);
 
 signals:
-    void resultAvailable(Eniro::Result const& result, Eniro::SearchDetails const& details);
-    void requestFinished(QVector <Eniro::Result> const& results, Eniro::SearchDetails const& details, bool error);
     void loginStatus(bool success);
 
-private slots:
-    void httpReady(int id, bool error);
-
 private:
 
     Q_DISABLE_COPY(Eniro);
@@ -103,41 +71,32 @@ private:
 
     struct SearchData
     {
-        SearchDetails details;
-        QVector <Result> results;
+        Source::SearchDetails details;
+        QVector <Source::Result> results;
         unsigned int foundNumbers;
         unsigned int numbersTotal;
     };
 
+    virtual void handleHttpData(int id, QByteArray const& data);
+    virtual void handleHttpError(int id);
     QUrl createUrl(QString const& query, QString const& location);
     void loadResults(int id, QString const& data);
     void loadNumber(int id, QString const& data);
     void getNumberForResult(int id, int index, SearchDetails const& details);
     void emitRequestFinished(int key, SearchData* data, bool error);
-    void resetTimeout();
-    void timerEvent(QTimerEvent *te);
-    QString ucFirst(QString& string);
-    QString& cleanUpNumber(QString& number);
-    QString& stripTags(QString& string);
+    void timerEvent(QTimerEvent *t);
+    bool isStreet(QString const& str);
 
-    QHttp http_;
     Site site_;
+    bool loggedIn_;
     QString username_;
     QString password_;
-    bool loggedIn_;
-    Error error_;
-    QString errorString_;
-    unsigned int maxResults_;
-    unsigned int timeout_;
     int timerId_;
-    bool findNumber_;
     typedef QMap <int, SearchData*> searchMap;
     typedef QMap <int, NumberData*> numberMap;
-
     searchMap pendingSearches_;
     numberMap pendingNumberRequests_;
     QSet <int> pendingLoginRequests_;
-
     static QRegExp numberCleaner_;
     static QRegExp tagStripper_;