This commit is contained in:
GaidamakUA 2015-10-22 12:45:39 +03:00
commit 85a9050476
6 changed files with 94 additions and 12 deletions

View file

@ -47,6 +47,11 @@ public class OsmandRegions {
Map<String, String> fullNamesToLowercaseIndex = new HashMap<String, String>();
Map<String, String> fullNamesToParentFullNames = new HashMap<String, String>();
Map<String, String> fullNamesToDownloadNames = new HashMap<String, String>();
Map<String, String> fullNamesToLangs = new HashMap<String, String>();
Map<String, String> fullNamesToMetrics = new HashMap<String, String>();
Map<String, String> fullNamesToLeftHandDrivings = new HashMap<String, String>();
Map<String, String> fullNamesToRoadSigns = new HashMap<String, String>();
QuadTree<String> quadTree = null ;
public Map<String, String> getFullNamesToLowercaseCopy() {
@ -60,6 +65,10 @@ public class OsmandRegions {
Integer nameType = null;
Integer nameLocaleType = null;
String locale = "en";
Integer langType = null;
Integer metricType = null;
Integer leftHandDrivingType = null;
Integer roadSignsType = null;
public void prepareFile(String fileName) throws IOException {
@ -71,6 +80,38 @@ public class OsmandRegions {
return countriesByDownloadName.containsKey(name);
}
public String getLang(String fullName) {
return fullNamesToLangs.get(fullName);
}
public String getMetric(String fullName) {
return fullNamesToMetrics.get(fullName);
}
public String getLeftHandDriving(String fullName) {
return fullNamesToLeftHandDrivings.get(fullName);
}
public String getRoadSigns(String fullName) {
return fullNamesToRoadSigns.get(fullName);
}
private String getLang(BinaryMapDataObject o) {
return o.getNameByType(langType);
}
private String getMetric(BinaryMapDataObject o) {
return o.getNameByType(metricType);
}
private String getLeftHandDriving(BinaryMapDataObject o) {
return o.getNameByType(leftHandDrivingType);
}
private String getRoadSigns(BinaryMapDataObject o) {
return o.getNameByType(roadSignsType);
}
public String getDownloadName(BinaryMapDataObject o) {
if(downloadNameType == null) {
return null;
@ -367,6 +408,24 @@ public class OsmandRegions {
fullNamesToLocaleNames.put(fullName, locName);
fullNamesNoParentToLocaleNames.put(fullName, locName);
}
String lang = getLang(object);
if(!Algorithms.isEmpty(lang)){
fullNamesToLangs.put(fullName, lang);
}
String metric = getMetric(object);
if(!Algorithms.isEmpty(metric)){
fullNamesToMetrics.put(fullName, metric);
}
String leftHandDriving = getLeftHandDriving(object);
if(!Algorithms.isEmpty(leftHandDriving)){
fullNamesToLeftHandDrivings.put(fullName, leftHandDriving);
}
String roadSigns = getRoadSigns(object);
if(!Algorithms.isEmpty(roadSigns)){
fullNamesToRoadSigns.put(fullName, roadSigns);
}
MapIndex mi = object.getMapIndex();
TIntObjectIterator<String> it = object.getObjectNames().iterator();
StringBuilder ind = new StringBuilder();
@ -518,6 +577,11 @@ public class OsmandRegions {
parentFullName = object.getMapIndex().getRule("region_parent_name", null);
fullNameType = object.getMapIndex().getRule("region_full_name", null);
langType = object.getMapIndex().getRule("lang", null);
metricType = object.getMapIndex().getRule("metric", null);
leftHandDrivingType = object.getMapIndex().getRule("left_hand_driving", null);
roadSignsType = object.getMapIndex().getRule("road_signs", null);
if (downloadNameType == null || nameType == null) {
throw new IllegalStateException();
}

View file

@ -68,10 +68,10 @@
android:id="@+id/button_replace"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/color_transparent"
android:textColor="@color/color_dialog_buttons"
android:background="?android:selectableItemBackground"
android:textColor="?attr/contextMenuButtonColor"
android:text="@string/update_existing"
android:visibility="gone"/>
android:visibility="visible"/>
</LinearLayout>

View file

@ -448,8 +448,7 @@ POIの更新は利用できません</string>
<string name="shared_string_close">閉じる</string>
<string name="loading_data">データをロード中…</string>
<string name="reading_indexes">索引を読み込み中…</string>
<string name="previous_run_crashed">前回のアプリケーション実行はクラッシュしました。
ログファイルは{0}にあります。ログファイルを添付して問題を報告してください。</string>
<string name="previous_run_crashed">前回アプリケーション実行中にクラッシュしました。 詳細は{0}に記録されています。報告する場合はログファイルの添付をお願いします。</string>
<string name="saving_gpx_tracks">GPX経路をSDに保存中…</string>
<string name="finished_task">終了</string>
@ -1161,10 +1160,10 @@ POIの更新は利用できません</string>
<string name="index_name_europe">ヨーロッパ</string>
<string name="index_name_france">ヨーロッパ - フランス</string>
<string name="index_name_germany">ヨーロッパ - ドイツ</string>
<string name="index_name_russia">ヨーロッパ/アジア - ロシア</string>
<string name="index_name_russia">ロシア</string>
<string name="index_name_africa">アフリカ</string>
<string name="index_name_asia">アジア</string>
<string name="index_name_oceania">オセアニア</string>
<string name="index_name_oceania">ーストラリアとオセアニア</string>
<string name="index_name_other">ワールドワイドとトピックマップ</string>
<string name="index_name_wiki">ワールドワイドウィキペディアPOI</string>
<string name="index_name_voice">音声指示(記録音声、機能限定)</string>
@ -1816,7 +1815,7 @@ POIの更新は利用できません</string>
<string name="traffic_warning_stop">一時停止標識</string>
<string name="traffic_warning_calming">速度抑制</string>
<string name="traffic_warning_speed_camera">スピードカメラ</string>
<string name="traffic_warning">通警告</string>
<string name="traffic_warning">行に関する警告</string>
<string name="local_index_description">選択解除または削除するには長押し、詳細を見るにはタップして下さい。現在のデバイス上のデータ(空き容量 %1$s):</string>
<string name="speed_limit_exceed">制限速度の許容範囲</string>
<string name="speed_limit_exceed_message">制限速度超過による警告音声の許容値を選択します</string>
@ -2112,7 +2111,7 @@ POIの更新は利用できません</string>
<string name="rendering_value_boldOutline_name">太線</string>
<string name="no_updates_available">更新はありません</string>
<string name="download_live_updates">ライブ更新</string>
<string name="we_really_care_about_your_opinion">私達は常にユーザーを気に掛け、個々の意見を参考にすることを重要視しています。</string>
<string name="we_really_care_about_your_opinion">我々はあなた方の意見やフィードバックを大切にし、それらを開発に生かせるよう努めています。</string>
<string name="failed_to_upload">アップロードに失敗しました</string>
<string name="delete_change">変更を削除します</string>
<string name="successfully_uploaded_pattern">正常にアップロードされました {0}/{1}</string>
@ -2152,7 +2151,7 @@ POIの更新は利用できません</string>
<string name="tab_title_basic">基本</string>
<string name="tab_title_advanced">拡張</string>
<string name="show_on_start">起動時に表示</string>
<string name="count_of_lines">表示する数の指定</string>
<string name="count_of_lines">表示数の選択</string>
<string name="address_unknown">住所はまだ登録されていません</string>
<string name="favorite_category_dublicate_message">指定したカテゴリ名は既に使用されています。別の名前を付けてください。</string>
<string name="favorite_category_name">カテゴリ名</string>

View file

@ -42,6 +42,7 @@
<attr name="new_app_theme" format="reference"/>
<attr name="divider_color" format="reference" />
<attr name="contextMenuButtonColor" format="reference" />
</declare-styleable>
<declare-styleable name="PagerSlidingTabStrip">

View file

@ -113,6 +113,8 @@
<item name="toolbar_theme">@style/OsmandLightTheme.Toolbar</item>
<item name="new_app_theme">@style/OsmandLightTheme.NewAppTheme</item>
<item name="android:textColorSecondary">@color/icon_color</item>
<item name="contextMenuButtonColor">@color/map_widget_blue</item>
</style>
<style name="OsmandLightTheme.DarkActionbar">
@ -191,6 +193,8 @@
<item name="toolbar_theme">@style/OsmandDarkTheme</item>
<item name="new_app_theme">@style/OsmandDarkTheme</item>
<item name="android:textColorSecondary">@color/dash_search_icon_dark</item>
<item name="contextMenuButtonColor">@color/osmand_orange</item>
</style>

View file

@ -39,7 +39,21 @@ public class WorldRegion {
private List<WorldRegion> subregions;
private List<WorldRegion> flattenedSubregions;
public String getLang(OsmandRegions osmandRegions) {
return osmandRegions.getLang(regionId);
}
public String getMetric(OsmandRegions osmandRegions) {
return osmandRegions.getMetric(regionId);
}
public String getLeftHandDriving(OsmandRegions osmandRegions) {
return osmandRegions.getLeftHandDriving(regionId);
}
public String getRoadSigns(OsmandRegions osmandRegions) {
return osmandRegions.getRoadSigns(regionId);
}
public String getRegionId() {
return regionId;
@ -96,8 +110,8 @@ public class WorldRegion {
private WorldRegion init(String regionId, OsmandRegions osmandRegions, String name) {
this.regionId = regionId;
String downloadName = osmandRegions.getDownloadName(regionId);
this.searchText = osmandRegions.getDownloadNameIndexLowercase(downloadName);
if (downloadName != null) {
this.searchText = osmandRegions.getDownloadNameIndexLowercase(downloadName);
downloadsId = downloadName.toLowerCase();
} else {
downloadsId = regionId.toLowerCase();