+
+void DetailWindow::openMaps()
+{
+ QString street = streetButton_->valueText();
+ QString city = cityButton_->valueText();
+
+ if(street.isEmpty() && city.isEmpty())
+ {
+ return;
+ }
+
+ setAttribute(Qt::WA_Maemo5ShowProgressIndicator, true);
+
+ OviMaps maps;
+
+ OviMaps::Address addr;
+ QString streetAndNumber;
+ getDetails(addr.street, addr.number,
+ addr.zipCode, addr.city, streetAndNumber);
+ addr.country = country_;
+
+ //qDebug() << addr.street << addr.number << addr.zipCode << addr.city << addr.country;
+
+ if(!maps.openMaps(addr))
+ {
+ QMaemo5InformationBox::information(this, tr("Unable to find coordinates for address."));
+ }
+
+ setAttribute(Qt::WA_Maemo5ShowProgressIndicator, false);
+}
+
+void DetailWindow::getDetails(QString& street, QString& streetNumber,
+ QString& zip, QString& city, QString& streetAndNumber)
+{
+ int pos = 0;
+
+ QString streetVal = streetButton_->valueText();
+ streetVal = streetVal.replace("Str.", QString::fromUtf8("Straße"));
+ streetVal = streetVal.replace("str.", QString::fromUtf8("straße"));
+ streetAndNumber = streetVal;
+ QString cityVal = cityButton_->valueText();
+ city = cityVal;
+
+ QStringList words = streetVal.split(" ", QString::SkipEmptyParts);
+
+ static QRegExp numberCheck("([0-9-]+)");
+
+ bool numberFound = false;
+ bool numberSet = false;
+
+ for(int i = 0; i < words.size(); i++)
+ {
+ if(i > 0 && numberCheck.exactMatch(words.at(i)))
+ {
+ numberFound = true;
+ }
+
+ if(numberFound)
+ {
+ if(!numberSet)
+ {
+ streetNumber = words.at(i);
+ numberSet = true;
+ }
+ }
+ else
+ {
+ street += words.at(i) + " ";
+ }
+ }
+
+ if(streetNumber.isEmpty())
+ {
+ static QRegExp addrCheck(" ([0-9]+)");
+
+ if((pos = addrCheck.indexIn(street)) != -1)
+ {
+ streetNumber = addrCheck.cap(1);
+ street = street.left(pos);
+ }
+ }
+
+ streetNumber = streetNumber.trimmed();
+ street = street.trimmed();
+
+ if((pos = cityVal.indexOf(" ")) > 0)
+ {
+ if(numberCheck.exactMatch(cityVal.left(pos)))
+ {
+ zip = cityVal.left(pos);
+ city = cityVal.mid(pos + 1);
+ }
+ }
+
+}