*
*/
-#include <QDebug>
+#include <QtCore/QDebug>
#include <QtCore/QVariant>
#include <QtCore/QString>
#include <QtGui/QLabel>
#include "settings.h"
#include "db.h"
#include "cache.h"
+#include "source.h"
+#include "sourcecoreconfig.h"
ResultWindow::ResultWindow(QWidget* parent): QMainWindow(parent),
-eniro_(0), list_(0), connectionManager_(0)
+source_(0), list_(0), connectionManager_(0)
{
setAttribute(Qt::WA_Maemo5StackedWindow);
setWindowTitle(tr("Search results"));
list_->clear();
}
- DB::connect();
+ Source::SourceId sourceId = Source::stringToId(Settings::instance()->get("source"));
- Eniro::Site selectedSite = Eniro::stringToSite(Settings::instance()->get("site"));
-
- if(!eniro_)
+ if(!source_)
{
- eniro_ = new Eniro(selectedSite, this);
- eniro_->setTimeout(REQUEST_TIMEOUT);
-
- connect(eniro_, SIGNAL(resultAvailable(Eniro::Result const&,
- Eniro::SearchDetails const&)),
- this, SLOT(resultAvailable(Eniro::Result const&,
- Eniro::SearchDetails const&)));
-
- connect(eniro_, SIGNAL(requestFinished(QVector <Eniro::Result> const&,
- Eniro::SearchDetails const&, bool)),
- this, SLOT(requestFinished(QVector <Eniro::Result> const&,
- Eniro::SearchDetails const&, bool)));
+ source_ = Source::getSource(sourceId);
+ Q_ASSERT(source_ != 0);
+ source_->setTimeout(REQUEST_TIMEOUT);
+
+ connect(source_, SIGNAL(resultAvailable(Source::Result const&,
+ Source::SearchDetails const&)),
+ this, SLOT(resultAvailable(Source::Result const&,
+ Source::SearchDetails const&)));
+
+ connect(source_, SIGNAL(requestFinished(QVector <Source::Result> const&,
+ Source::SearchDetails const&, bool)),
+ this, SLOT(requestFinished(QVector <Source::Result> const&,
+ Source::SearchDetails const&, bool)));
}
- QString username = Settings::instance()->get("eniro_username");
- QString password = Settings::instance()->get("eniro_password");
-
- if(!username.isEmpty() && !password.isEmpty())
- {
- eniro_->login(username, password);
- }
+ SourceCoreConfig* config = SourceCoreConfig::getCoreConfig(sourceId);
- eniro_->setSite(selectedSite);
+ Q_ASSERT(config != 0);
- DB::disconnect();
+ config->apply(source_);
+ delete config;
- Eniro::SearchType type;
+ Source::SearchType type;
switch(details.type)
{
case 0:
- type = Eniro::PERSONS;
+ type = Source::PERSONS;
break;
case 1:
- type = Eniro::YELLOW_PAGES;
+ type = Source::YELLOW_PAGES;
break;
default:
+ qDebug() << "Unknown search type: " << details.type;
return;
}
connectionManager_->connect();
- eniro_->abort();
- eniro_->search(Eniro::SearchDetails(details.name, details.location, type));
+ source_->abort();
+ source_->search(Source::SearchDetails(details.name, details.location, type));
}
-void ResultWindow::resultAvailable(Eniro::Result const& result,
- Eniro::SearchDetails const& details)
+void ResultWindow::resultAvailable(Source::Result const& result,
+ Source::SearchDetails const& details)
{
Q_UNUSED(details);
list_->addItem(item);
}
-void ResultWindow::requestFinished(QVector <Eniro::Result> const& results,
- Eniro::SearchDetails const& details,
+void ResultWindow::requestFinished(QVector <Source::Result> const& results,
+ Source::SearchDetails const& details,
bool error)
{
Q_UNUSED(details);
if(error)
{
- QString errorString = eniro_->errorString();
+ QString errorString;
+ Source::Error error = source_->error();
- if(errorString.isEmpty())
+ switch(error)
{
- errorString = tr("Unknown error");
+ case Source::CONNECTION_FAILURE:
+ errorString = tr("Connection to server failed");
+ break;
+ case Source::INVALID_LOGIN:
+ errorString = tr("Invalid login details");
+ break;
+ case Source::TIMEOUT:
+ errorString = tr("Request timed out");
+ break;
+ default:
+ errorString = tr("Searching failed:") + " " + source_->errorString();
+ break;
}
QMessageBox::critical(this, tr("Error"), errorString);
void ResultWindow::itemClicked(QListWidgetItem* item)
{
QMap <QString, QVariant> data = item->data(Qt::UserRole).toMap();
- Eniro::Result details;
+ Source::Result details;
details.name = data["name"].toString();
details.street = data["street"].toString();
details.city = data["city"].toString();
emit itemSelected(details);
}
+void ResultWindow::setVisible(bool visible)
+{
+ QMainWindow::setVisible(visible);
+
+ if(!visible && source_)
+ {
+ source_->abort();
+ }
+}
+
+