Danish Eniro search fixed.
[jenirok] / src / gui / detailwindow.cpp
index 92a6d73..4d6107d 100644 (file)
@@ -154,8 +154,13 @@ void DetailWindow::addToContacts()
 
     ContactManager cm;
     ContactManager::Contact contact;
-    contact.name = addContactInput_->text();
+    QString number;
+    QString street;
+    getDetails(street, number,
+               contact.zipCode, contact.city, contact.street);
+    ContactManager::stringToName(addContactInput_->text(), contact.name);
     contact.number = numberButton_->valueText();
+    contact.country = country_;
 
     addDialog_->hide();
 
@@ -208,8 +213,6 @@ void DetailWindow::openMaps()
 {
     QString street = streetButton_->valueText();
     QString city = cityButton_->valueText();
-    QString number;
-    QString zip;
 
     if(street.isEmpty() && city.isEmpty())
     {
@@ -218,18 +221,43 @@ void DetailWindow::openMaps()
 
     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;
 
-    QStringList words = street.split(" ", QString::SkipEmptyParts);
+    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;
 
-    QString streetStr;
-    QString numberStr;
-
     for(int i = 0; i < words.size(); i++)
     {
         if(i > 0 && numberCheck.exactMatch(words.at(i)))
@@ -241,41 +269,37 @@ void DetailWindow::openMaps()
         {
             if(!numberSet)
             {
-                numberStr = words.at(i);
+                streetNumber = words.at(i);
                 numberSet = true;
             }
         }
         else
         {
-            streetStr += words.at(i) + " ";
+            street += words.at(i) + " ";
         }
     }
 
-    number = numberStr.trimmed();
-    street = streetStr.trimmed();
-
-    if((pos = city.indexOf(" ")) > 0)
+    if(streetNumber.isEmpty())
     {
-        if(numberCheck.exactMatch(city.left(pos)))
+        static QRegExp addrCheck(" ([0-9]+)");
+
+        if((pos = addrCheck.indexIn(street)) != -1)
         {
-            zip = city.left(pos);
-            city = city.mid(pos + 1);
+            streetNumber = addrCheck.cap(1);
+            street = street.left(pos);
         }
     }
 
-    OviMaps maps;
+    streetNumber = streetNumber.trimmed();
+    street = street.trimmed();
 
-    OviMaps::Address addr;
-    addr.street = street;
-    addr.number = number;
-    addr.zipCode = zip;
-    addr.city = city;
-    addr.country = country_;
-
-    if(!maps.openMaps(addr))
+    if((pos = cityVal.indexOf(" ")) > 0)
     {
-        QMaemo5InformationBox::information(this, tr("Unable to find coordinates for address."));
+        if(numberCheck.exactMatch(cityVal.left(pos)))
+        {
+            zip = cityVal.left(pos);
+            city = cityVal.mid(pos + 1);
+        }
     }
 
-    setAttribute(Qt::WA_Maemo5ShowProgressIndicator, false);
 }