From 8f5e132c54bc552c26162814deceda82dfe04d35 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Fri, 12 Nov 2010 19:35:16 +0000 Subject: [PATCH] add phone, site functionality to poi git-svn-id: https://osmand.googlecode.com/svn/trunk@661 e29c36b1-1cfa-d876-8d93-3434fc2bb7b8 --- OsmAnd/res/values-ru/strings.xml | 215 +++++++++--------- OsmAnd/res/values/strings.xml | 2 + .../net/osmand/AmenityIndexRepository.java | 8 +- OsmAnd/src/net/osmand/views/POIMapLayer.java | 34 ++- 4 files changed, 152 insertions(+), 107 deletions(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index 60a52938db..efd149381d 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -1,5 +1,7 @@ + Просмотреть вебсайт POI + Показать телефон POI веб сайт телефон фильтровать @@ -284,115 +286,118 @@ OsmAnd Навигационное приложение -Выход -Карта -Настройки -Избранное -Поиск -#FF9030 -Поиск -#FFFFFF -#FF0000 -Выберите poi -Найти еще -Выберите город. Введите 3 первых буквы, чтобы найти деревню, 2 цифры - индекс. -Выберите улицу -Выберите здание -Выберите регион из списка -Выберите пересечение улиц -Closest amenities -По умолчанию -Автомобиль -Велосипед -Пешеход -В центре -Внизу -1 секунда -2 секунды -5 секунд -15 секунд -30 секунд -1 минута -5 минут -Введите широту и долготу в формате (Г - градусы, М - минуты, С - секунды) -Широта -Долгота -ГГГ.ГГГГ -ГГГ:ММ.МММММ -ГГГ:ММ:СС.ССССС -Показать -Отмена -Выберите адрес -Регион -Город -Улица -Здание -Здание -Пересечение улиц + Выход + Карта + Настройки + Избранное + Поиск + #FF9030 + Поиск + #FFFFFF + #FF0000 + Выберите poi + Найти еще + Выберите город. Введите 3 первых буквы, чтобы найти деревню, 2 цифры - индекс. + Выберите улицу + Выберите здание + Выберите регион из списка + Выберите пересечение улиц + Closest amenities + По умолчанию + Автомобиль + Велосипед + Пешеход + В центре + Внизу + 1 секунда + 2 секунды + 5 секунд + 15 секунд + 30 секунд + 1 минута + 5 минут + Введите широту и долготу в формате (Г - градусы, М - минуты, С - секунды) + Широта + Долгота + ГГГ.ГГГГ + ГГГ:ММ.МММММ + ГГГ:ММ:СС.ССССС + Показать + Отмена + Выберите адрес + Регион + Город + Улица + Здание + Здание + Пересечение улиц -Координаты -Идти к точке -Добавить к избранным -Обновить карту -Сообщить об ошибке на карте -Добавить poi + Координаты + Идти к точке + Добавить к избранным + Обновить карту + Сообщить об ошибке на карте + Добавить poi -Да -Отмена -ПрименитьДобавитьНетВведите имя точки -Избранная -Точка \'\'{0}\'\' была успешно добавлена к Избранным. + Да + Отмена + Применить + Добавить + Нет + Введите имя точки + Избранная + Точка \'\'{0}\'\' была успешно добавлена к Избранным. -Контекстное меню -Идти к -Редактировать точку -Удалить точку -Введите новое имя точки + Контекстное меню + Идти к + Редактировать точку + Удалить точку + Введите новое имя точки -Вы действительно хотите удалить точку из Избранных? -Точка {0} была успешно удалена из Избранных. + Вы действительно хотите удалить точку из Избранных? + Точка {0} была успешно удалена из Избранных. -Подробно опишите ошибку -Спасибо, ваше замечание добавлено в базу -Произошла ошибка. Описание не было создано -Добавление коментария к Open Street Bug -Добавить -Коментарий был успешно добавлен -При добавлении коментария произошла ошибка. Коментарий не добавлен. -Закрыть Open Street Bug? -Закрыть -Open Street Bug был успешно закрыт. -При закрытии Open Street Bug произошла ошибка. Open Street Bug не был закрыт. -Добавить коментарий -Закрыть Open Street Bug -Комментарий -Автор -Редактирование POI -Добавление POI -POI не найден или он не является точкой -Вы действительно хотите удалить {0}? -Удаление POI -Удалить -POI был успешно удален. -добавления -изменения -Действие {0} успешно завершено. -Неожиданная ошибка произошла при выполнении действия {0}. -Ошибка ввода/вывода произошла при выполнении действия {0}. -Произошла ошибка при загрузке информации о POI + Подробно опишите ошибку + Спасибо, ваше замечание добавлено в базу + Произошла ошибка. Описание не было создано + Добавление коментария к Open Street Bug + Добавить + Коментарий был успешно добавлен + При добавлении коментария произошла ошибка. Коментарий не добавлен. + Закрыть Open Street Bug? + Закрыть + Open Street Bug был успешно закрыт. + При закрытии Open Street Bug произошла ошибка. Open Street Bug не был закрыт. + Добавить коментарий + Закрыть Open Street Bug + Комментарий + Автор + Редактирование POI + Добавление POI + POI не найден или он не является точкой + Вы действительно хотите удалить {0}? + Удаление POI + Удалить + POI был успешно удален. + добавления + изменения + Действие {0} успешно завершено. + Неожиданная ошибка произошла при выполнении действия {0}. + Ошибка ввода/вывода произошла при выполнении действия {0}. + Произошла ошибка при загрузке информации о POI -Имя -Время работы -Комментарий -Изменение POI -Значения остальных тэгов POI не могут быть изменены. -Сохранить -Сброс -Фильтровать -Удалить -Сохранить как -Вы действительно хотите удалить текущий фильтр? -Фильтр {0} удален -Фильтр {0} создан -Выделить все + Имя + Время работы + Комментарий + Изменение POI + Значения остальных тэгов POI не могут быть изменены. + Сохранить + Сброс + Фильтровать + Удалить + Сохранить как + Вы действительно хотите удалить текущий фильтр? + Фильтр {0} удален + Фильтр {0} создан + Выделить все diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 1e3c9a4c42..449b45cb7d 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -1,5 +1,7 @@ + See POI website + Show POI phone web site phone type to filter diff --git a/OsmAnd/src/net/osmand/AmenityIndexRepository.java b/OsmAnd/src/net/osmand/AmenityIndexRepository.java index 7709e1f7a0..ecfb39181e 100644 --- a/OsmAnd/src/net/osmand/AmenityIndexRepository.java +++ b/OsmAnd/src/net/osmand/AmenityIndexRepository.java @@ -181,7 +181,13 @@ public class AmenityIndexRepository extends BaseLocationIndexRepository } private void insertAmenities(Collection amenities) { - SQLiteStatement stat = db.compileStatement("INSERT INTO " + IndexConstants.POI_TABLE + //$NON-NLS-1$ + SQLiteStatement stat = db.compileStatement("DELETE FROM " + IndexConstants.POI_TABLE + " WHERE id = ?"); //$NON-NLS-1$//$NON-NLS-2$ + for (Amenity a : amenities) { + stat.bindLong(1, a.getId()); + stat.execute(); + } + stat.close(); + stat = db.compileStatement("INSERT INTO " + IndexConstants.POI_TABLE + //$NON-NLS-1$ "(id, x, y, name_en, name, type, subtype, opening_hours, site, phone) values(?,?,?,?,?,?,?,?,?,?)"); //$NON-NLS-1$ for (Amenity a : amenities) { stat.bindLong(1, a.getId()); diff --git a/OsmAnd/src/net/osmand/views/POIMapLayer.java b/OsmAnd/src/net/osmand/views/POIMapLayer.java index 1c8337c2ce..6ffc799992 100644 --- a/OsmAnd/src/net/osmand/views/POIMapLayer.java +++ b/OsmAnd/src/net/osmand/views/POIMapLayer.java @@ -3,6 +3,7 @@ package net.osmand.views; import java.util.ArrayList; import java.util.List; +import net.osmand.LogUtil; import net.osmand.OsmandSettings; import net.osmand.PoiFilter; import net.osmand.R; @@ -12,6 +13,7 @@ import net.osmand.data.Amenity; import net.osmand.osm.LatLon; import android.content.Context; import android.content.DialogInterface; +import android.content.Intent; import android.content.DialogInterface.OnClickListener; import android.graphics.Canvas; import android.graphics.Color; @@ -19,6 +21,7 @@ import android.graphics.Paint; import android.graphics.PointF; import android.graphics.RectF; import android.graphics.Paint.Style; +import android.net.Uri; import android.util.DisplayMetrics; import android.view.WindowManager; import android.widget.Toast; @@ -26,6 +29,7 @@ import android.widget.Toast; public class POIMapLayer implements OsmandMapLayer, ContextMenuLayer.IContextMenuProvider { private static final int startZoom = 10; public static final int LIMIT_POI = 200; + public static final org.apache.commons.logging.Log log = LogUtil.getLog(POIMapLayer.class); private Paint pointAltUI; @@ -163,6 +167,15 @@ public class POIMapLayer implements OsmandMapLayer, ContextMenuLayer.IContextMen final Amenity a = (Amenity) o; actionsList.add(this.view.getResources().getString(R.string.poi_context_menu_modify)); actionsList.add(this.view.getResources().getString(R.string.poi_context_menu_delete)); + int ind = 2; + final int phoneIndex = a.getPhone() != null ? ind++ : -1; + final int siteIndex = a.getSite() != null ? ind++ : -1; + if(a.getPhone() != null){ + actionsList.add(this.view.getResources().getString(R.string.poi_context_menu_call)); + } + if(a.getSite() != null){ + actionsList.add(this.view.getResources().getString(R.string.poi_context_menu_website)); + } final EditingPOIActivity edit = new EditingPOIActivity(view.getContext(), view.getApplication(), view); return new DialogInterface.OnClickListener(){ @@ -170,8 +183,27 @@ public class POIMapLayer implements OsmandMapLayer, ContextMenuLayer.IContextMen public void onClick(DialogInterface dialog, int which) { if (which == 0) { edit.showEditDialog(a); - } else { + } else if(which == 1) { edit.showDeleteDialog(a); + } else if (which == phoneIndex) { + try { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse("tel:"+a.getPhone())); //$NON-NLS-1$ + view.getContext().startActivity(intent); + } catch (RuntimeException e) { + log.error("Failed to invoke call", e); //$NON-NLS-1$ + Toast.makeText(view.getContext(), e.getMessage(), Toast.LENGTH_SHORT).show(); + } + } else if (which == siteIndex) { + try { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse(a.getSite())); + view.getContext().startActivity(intent); + } catch (RuntimeException e) { + log.error("Failed to invoke call", e); //$NON-NLS-1$ + Toast.makeText(view.getContext(), e.getMessage(), Toast.LENGTH_SHORT).show(); + } + } else { } } };