X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fdaemon%2Fcalllistener.cpp;h=1237b7c1bc2716f3408b5545ad13a98f634d86a9;hb=24735dfd4819d95fdbd551c0ac571006a713f0f5;hp=16ee0d56b3a9c7f2eade4e16c92ae95ed1daba27;hpb=3b351b70de898f507f94a3d1b5a6654cfbd32bea;p=jenirok diff --git a/src/daemon/calllistener.cpp b/src/daemon/calllistener.cpp index 16ee0d5..1237b7c 100644 --- a/src/daemon/calllistener.cpp +++ b/src/daemon/calllistener.cpp @@ -37,7 +37,9 @@ namespace QDBusConnection CallListener::systemBus_ = QDBusConnection::systemBus(); -CallListener::CallListener(): eniro_(0), contactManager_(0), box_(0), label_(0), retries_(-1) +CallListener::CallListener(): eniro_(0), contactManager_(0), +connectionManager_(0), closeConnection_(false), box_(0), label_(0), +retries_(-1) { } @@ -63,6 +65,7 @@ void CallListener::begin() SLOT(callTerminate())); contactManager_ = new ContactManager; + connectionManager_ = new ConnectionManager; eniro_ = new Eniro(Eniro::stringToSite(Settings::instance()->get("site"))); @@ -100,6 +103,10 @@ void CallListener::end() this, SLOT(callTerminate())); + delete contactManager_; + contactManager_ = 0; + delete connectionManager_; + connectionManager_ = 0; delete eniro_; eniro_ = 0; delete box_; @@ -110,7 +117,7 @@ void CallListener::end() void CallListener::search(Eniro::SearchDetails const& details) { - qDebug() << "Search called"; + qDebug() << "Search called"; Eniro::Result result; @@ -126,6 +133,17 @@ void CallListener::search(Eniro::SearchDetails const& details) showResult(tr("Searching...")); retries_ = 0; currentSearch_ = details; + + if(!connectionManager_->isConnected()) + { + connectionManager_->connect(); + closeConnection_ = true; + } + else + { + closeConnection_ = false; + } + eniro_->search(details); } @@ -151,13 +169,13 @@ void CallListener::requestFinished(QVector const& results, if(retries_ < NUMBER_OF_RETRIES && retries_ >= 0) { - retries_++; - eniro_->search(currentSearch_); - return; + retries_++; + eniro_->search(currentSearch_); + return; } else { - message = tr("Search failed:") + " " + eniro_->errorString() + "."; + message = tr("Search failed:") + " " + eniro_->errorString() + "."; } } else if(results.size() == 0) @@ -174,10 +192,15 @@ void CallListener::requestFinished(QVector const& results, retries_ = -1; + if(closeConnection_) + { + connectionManager_->disconnect(); + closeConnection_ = false; + } + timedMessage_ = message; - // Show banner after small delay - showDelayedResult(message, BANNER_DELAY); + showResult(message); } @@ -217,7 +240,7 @@ void CallListener::incomingCall(QDBusObjectPath path, QString number) if(!contactManager_->numberExists(number)) { - qDebug() << "Number doesn't exist"; + qDebug() << "Number doesn't exist"; systemBus_.connect(CALL_SERVICE_NAME, path.path(), @@ -232,32 +255,38 @@ void CallListener::incomingCall(QDBusObjectPath path, QString number) } else { - qDebug() << "Number exists"; + qDebug() << "Number exists"; } } void CallListener::callTerminate() { - if(box_->isVisible()) - { - box_->hide(); - } + if(box_->isVisible()) + { + box_->hide(); + } + + if(closeConnection_) + { + connectionManager_->disconnect(); + closeConnection_ = false; + } } void CallListener::showDelayedResult(QString const& text, int delay) { - timedMessage_ = text; - QTimer::singleShot(delay, this, SLOT(showTimedMessage())); + timedMessage_ = text; + QTimer::singleShot(delay, this, SLOT(showTimedMessage())); } void CallListener::showTimedMessage() { - if(timedMessage_.size() == 0) - { - return; - } + if(timedMessage_.size() == 0) + { + return; + } - showResult(timedMessage_); + showResult(timedMessage_); - timedMessage_ = ""; + timedMessage_ = ""; }