+ if(timedMessage_.size() == 0 || !initialized_)
+ {
+ return;
+ }
+
+ showResult(timedMessage_);
+
+ timedMessage_ = "";
+}
+
+void CallListener::searchInit()
+{
+ qDebug() << "Initializing search...";
+
+ if(initialized_)
+ {
+ qDebug() << "Already initialized";
+ return;
+ }
+
+ source_ = Source::getSource(sourceId_);
+ SourceCoreConfig* config = SourceCoreConfig::getCoreConfig(sourceId_);
+ config->loadFromConfig(sourceConfig_);
+ config->apply(source_);
+ delete config;
+ source_->setMaxResults(1);
+ source_->setFindNumber(false);
+ source_->setTimeout(REQUEST_TIMEOUT);
+
+ connect(source_, SIGNAL(requestFinished(QVector <Source::Result> const&,
+ Source::SearchDetails const&, bool)),
+ this, SLOT(requestFinished(QVector <Source::Result> const&,
+ Source::SearchDetails const&, bool)));
+ box_ = new InformationBox;
+ label_ = new QLabel("", box_);
+ label_->setMargin(8);
+ label_->setWordWrap(true);
+ box_->setWidget(label_);
+ initialized_ = true;
+}
+
+void CallListener::searchClose()
+{
+ if(!initialized_)
+ {
+ return;
+ }
+
+ initialized_ = false;
+
+ qDebug() << "Closing search...";
+
+ if(source_)
+ {
+ disconnect(source_, SIGNAL(requestFinished(QVector <Source::Result> const&,
+ Source::SearchDetails const&, bool)),
+ this, SLOT(requestFinished(QVector <Source::Result> const&,
+ Source::SearchDetails const&, bool)));
+ }
+
+ delete source_;
+ source_ = 0;
+ delete box_;
+ box_ = 0;
+ label_ = 0;
+
+ if(closeConnection_)
+ {
+ QTimer::singleShot(500, this, SLOT(closeConnection()));
+ }
+}
+
+void CallListener::closeConnection()
+{
+ if(closeConnection_)
+ {
+ closeConnection_ = false;
+ ConnectionManager cm;
+ cm.disconnect(true);
+ }
+}
+
+bool CallListener::handleConnection()
+{
+ if(!initialized_)
+ {
+ return false;
+ }
+
+ ConnectionManager cm;
+
+ if(cm.isConnected())
+ {
+ cm.connect();
+ closeConnection_ = false;
+ return true;
+ }
+
+ closeConnection_ = true;
+
+ Settings::ConnectionType configType = Settings::instance()->getConnectionType();
+
+ if(configType == Settings::ALWAYS_ASK)
+ {
+ showError(tr("Automatic connecting is not allowed by settings."), BANNER_DELAY);
+ return false;
+ }
+
+ showDelayedResult(tr("Connecting..."), BANNER_DELAY);
+
+ ConnectionManager::Connection best;
+
+ ConnectionManager::ConnectionType lookupType = ConnectionManager::NO_TYPE;
+
+ switch(configType)
+ {
+ case Settings::WLAN:
+ lookupType = ConnectionManager::WLAN;
+ break;
+ case Settings::GPRS:
+ lookupType = ConnectionManager::GPRS;
+ break;
+ default:
+ lookupType = ConnectionManager::NO_TYPE;
+ break;
+ }
+
+ int cretries = 0;
+ int scans = 0;
+ bool found = false;
+ int maxScans = GPRS_SCANS;
+
+ if(lookupType != ConnectionManager::GPRS)
+ {
+ maxScans = WLAN_SCANS;
+ }
+
+ while(cretries < CONNECTION_LOOKUP_RETRIES)
+ {
+ if(!initialized_)
+ {
+ return false;
+ }
+
+ if(scans < maxScans)
+ {
+ if(cm.getBestConnection(best, lookupType))
+ {
+ found = true;
+ }