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> fullNamesToLowercaseIndex = new HashMap<String, String>();
Map<String, String> fullNamesToParentFullNames = new HashMap<String, String>(); Map<String, String> fullNamesToParentFullNames = new HashMap<String, String>();
Map<String, String> fullNamesToDownloadNames = 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 ; QuadTree<String> quadTree = null ;
public Map<String, String> getFullNamesToLowercaseCopy() { public Map<String, String> getFullNamesToLowercaseCopy() {
@ -60,6 +65,10 @@ public class OsmandRegions {
Integer nameType = null; Integer nameType = null;
Integer nameLocaleType = null; Integer nameLocaleType = null;
String locale = "en"; String locale = "en";
Integer langType = null;
Integer metricType = null;
Integer leftHandDrivingType = null;
Integer roadSignsType = null;
public void prepareFile(String fileName) throws IOException { public void prepareFile(String fileName) throws IOException {
@ -71,6 +80,38 @@ public class OsmandRegions {
return countriesByDownloadName.containsKey(name); 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) { public String getDownloadName(BinaryMapDataObject o) {
if(downloadNameType == null) { if(downloadNameType == null) {
return null; return null;
@ -367,6 +408,24 @@ public class OsmandRegions {
fullNamesToLocaleNames.put(fullName, locName); fullNamesToLocaleNames.put(fullName, locName);
fullNamesNoParentToLocaleNames.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(); MapIndex mi = object.getMapIndex();
TIntObjectIterator<String> it = object.getObjectNames().iterator(); TIntObjectIterator<String> it = object.getObjectNames().iterator();
StringBuilder ind = new StringBuilder(); StringBuilder ind = new StringBuilder();
@ -518,6 +577,11 @@ public class OsmandRegions {
parentFullName = object.getMapIndex().getRule("region_parent_name", null); parentFullName = object.getMapIndex().getRule("region_parent_name", null);
fullNameType = object.getMapIndex().getRule("region_full_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) { if (downloadNameType == null || nameType == null) {
throw new IllegalStateException(); throw new IllegalStateException();
} }

View file

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

View file

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

View file

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

View file

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

View file

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