From 69f1cec27e510f8a53135be9f4f2dbaea89b7ab1 Mon Sep 17 00:00:00 2001 From: Viktar Vauchkevich Date: Sat, 3 Feb 2018 13:18:40 +0000 Subject: [PATCH 1/9] Translated using Weblate (Belarusian) Currently translated at 100.0% (2563 of 2563 strings) --- OsmAnd/res/values-be/strings.xml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-be/strings.xml b/OsmAnd/res/values-be/strings.xml index 4e9d7f400c..0f32d207a8 100644 --- a/OsmAnd/res/values-be/strings.xml +++ b/OsmAnd/res/values-be/strings.xml @@ -254,7 +254,7 @@ Для турыстаў Паліва Паказваць папярэджванні… - Наладзіць папярэджанні руху (абмежаванні хуткасці, вымушаныя прыпынкі, штучныя няроўнасці), камеры хуткасці, інфармацыю аб палосах. + Наладзіць папярэджанні руху (абмежаванні хуткасці, вымушаныя прыпынкі, штучныя няроўнасці, тунелі), камеры хуткасці, інфармацыю аб палосах. Выкарыстоўваць компас калі інакш немагчыма вызначыць напрамак. Выкарыстоўваць компас Пазьбягаць аўтамагістраляў @@ -3044,4 +3044,20 @@ Адчыніцца заўтра а Капіяваць назву кропкі/POI Месца не мае назвы +Цяперашні + Дадае апошні прыпынак на маршруце + Дадае першы прыпынак на маршруце + Перасунуць празначэнне далей і стварыць прызначэнне + Паказаць закрытыя нататкі + Паказаць/схаваць OSM-нататкі на мапе. + GPX падыходзіць для экспарту ў JOSM і іншыя OSM-рэдактары. + OSC падыходзіць для экспарту ў OpenStreetMap. + GPX-файл + OSC-файл + Абярыце тып файла + Абярыце тып экспарту: OSM-нататкі, POI ці абодвыя. + Усе даныя + OSM-нататкі + Наперадзе тунэль + Тунелі From cdf3c06ad7c8038235a11709ecbc711b996b72f5 Mon Sep 17 00:00:00 2001 From: Boyuan Yang <073plan@gmail.com> Date: Sat, 3 Feb 2018 11:41:25 +0000 Subject: [PATCH 2/9] Translated using Weblate (Chinese (Simplified)) Currently translated at 87.6% (2246 of 2563 strings) --- OsmAnd/res/values-zh-rCN/strings.xml | 32 +++++++++++++++++++++------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/OsmAnd/res/values-zh-rCN/strings.xml b/OsmAnd/res/values-zh-rCN/strings.xml index f5936dbda8..ca5c94184d 100644 --- a/OsmAnd/res/values-zh-rCN/strings.xml +++ b/OsmAnd/res/values-zh-rCN/strings.xml @@ -1265,8 +1265,8 @@ 选择城市 选择邮政编码 地图自动缩放开关 - 地图自动缩放开启 - 地图自动缩放关闭 + 启用地图自动缩放 + 禁用地图自动缩放 添加目的地 更换目的地 添加第一个途径地 @@ -1369,7 +1369,7 @@ 显示自行车路线 马匹路线 维基百科 - 它显示应用折扣信息和特殊本地事件信息 + 停止显示应用折扣信息和特殊本地事件信息。 最大 时间 总距离 @@ -1483,7 +1483,7 @@ 距离已修正 我们没有该地点的照片。 节油道路 - 使用节油道路(通常更短) + 使用节油道路(通常更短)。 快捷操作 显示全部 全球移动地图浏览,以及使用离线和在线 OSM 地图进行导航 @@ -1523,7 +1523,7 @@ 组名称 动画处理我的位置 在导航时为我的位置启用动画。 - 轻点按鈕将在屏幕中心位置添加一个目的地。以前设定的目的地成为最后的中转点。 + 轻点按钮将在屏幕中心位置添加一个目的地。以前设定的目的地成为最后的中转点。 轻点动作按钮将吧屏幕中心的位置更换为目的地。 轻点动作按钮将在屏幕中心位置添加一个中转点。 无覆盖层 @@ -1543,7 +1543,7 @@ 更短的路径 平衡 偏好背街小路 - 首选的地形︰ 平坦或丘陵 + 首选的地形︰ 平坦或丘陵。 坡度 添加新文件夹 转到这条路线上 @@ -1560,8 +1560,8 @@ 平均海拔 选择海拔波动 使用标高数据 - 使用提供 SRTM、 ASTER 和 EU-DEM 的地形标高数据 - 显示等深线和标记 + 使用 SRTM、ASTER 和 EU-DEM 提供的地形标高数据。 + 显示等深线和标记。 航海等深线 自动拆分录音后的间隙 如果日期已更改,开始新区段在6分钟后的间隙,新轨迹在2小时后的间隙,或新文件在更长的间隙之后。 @@ -2740,4 +2740,20 @@ 明日开始营业时间 兴趣点(POI)标签 显示数字盘 + 在地图上显示/隐藏 OSM 笔记。 + GPX - 适合导出到 JOSM 或其它 OSM 编辑器。 + OSC - 适合导出到 OpenStreetMap。 + GPX 文件 + OSC 文件 + 选择文件类型 + 选择导出类型:OSM 笔记、POI(兴趣点)或者同时使用两者。 + 所有数据 + OSM 笔记 + 粘贴 + 全屏模式 + 导入文件 + 您需要互联网连接以查看来自 Mapillary 的图片。 + 重试 + 保存 GPX 航点 + 导入轨迹 From 5510cf56195012750f3e3db90a3e85ac970c5e6d Mon Sep 17 00:00:00 2001 From: elPresidento Date: Sat, 3 Feb 2018 13:03:19 +0000 Subject: [PATCH 3/9] Translated using Weblate (Czech) Currently translated at 98.9% (2535 of 2563 strings) --- OsmAnd/res/values-cs/strings.xml | 48 ++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index b5ad8f3fb6..b8ef4aa934 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -798,7 +798,7 @@ Proporcionální paměť %4$s MB (limit Androidu %5$s MB, Dalvik %6$s MB).Vyhnout se… Vyhnout se trajektům, placeným a nezpevněným cestám. Zobrazit upozornění… - Zobrazit omezení rychlosti, rychlostní radary, retardéry a řazení do pruhů. + Nastavit dopravní varování (omezení rychlosti, značky stop, retardéry, tunely), rychlostní radary a jízdní pruhy. Měřítko Průhledné nástroje E-mail @@ -2860,12 +2860,8 @@ Pokud potřebujete pomoci s aplikací OsmAnd, prosím kontaktujte naši podporu Klepnutím nebo přidržením označte místa, pak klepněte na tlačítko značky s vlajkou. Upravit vyhledávací dotaz. Jedním klepnutím aktivní - \\022 Detekce značek \"stop\" zohledňuje směr jízdy + \\022 \n -\n • Nový algoritmus poskytuje smysluplné hodnoty pro stoupání/klesání v GPX trasách -\n -\n • Čas pěší trasy zohledňuje terén/stoupání (Naismithovo pravidlo) -\n \n Popisky bodů Bez názvu @@ -2890,21 +2886,37 @@ Pokud potřebujete pomoci s aplikací OsmAnd, prosím kontaktujte naši podporu Námořnictví Otevřou zítra v Značka - \\022 Aktualizováno kontextové menu: zobrazí, kdy POI otevírá / zavírá + \\022 Aktualizováno kontextové menu: zobrazí, kdy POI otevírá / zavírá +\n +\n • Dopravní nabídka: všechny dostupné trasy jsou nyní nahoře +\n +\n • Wikipedie: přidáno tlačítko pro otevření původního článku, aktualizován vzhled článků +\n +\n • Trasa: přidána možnost vyměnit počáteční a koncové body jedním klepnutím +\n +\n • Poznámky: přidáno třídění podle typu a data +\n +\n • OSM úpravy: zobrazení ikony a názvu kategorie POI, zobrazení dokončených akcí +\n +\n • Nová obrazovka rychlých souřadnic pro rychlé vytváření značek \n -\n • Dopravní nabídka: všechny dostupné trasy jsou nyní nahoře -\n -\n • Wikipedie: přidáno tlačítko pro otevření původního článku, aktualizován vzhled článků -\n -\n • Trasa: přidána možnost vyměnit počáteční a koncové body jedním klepnutím -\n -\n • Poznámky: přidáno třídění podle typu a data -\n -\n • OSM úpravy: zobrazení ikony a názvu kategorie POI, zobrazení dokončených akcí -\n -\n • Nová obrazovka rychlých souřadnic pro rychlé vytváření značek +\n • Detekce značek \"stop\" zohledňuje směr jízdy +\n +\n • Nový algoritmus poskytuje smysluplné hodnoty pro stoupání/klesání v GPX trasách +\n +\n • Čas pěší trasy zohledňuje terén/stoupání (Naismithovo pravidlo) \n \n Počet úprav %1$s, součet %2$s mBTC Laosky + Zobrazit zavřené poznámky + Zobrazit/skrýt OSM poznámky na mapě. + GPX - vhodné pro export do JOSM nebo jiných editorů OSM. + OSC - vhodné pro export do OpenStreetMap. + Soubor GPX + Soubor OSC + Zvolte typ souboru + Vyberte typ exportu: OSM poznámky, POI nebo obojí. + Všechny údaje + OSM poznámky From 02c0686bc10423de7a087b40af2d987cae0caf33 Mon Sep 17 00:00:00 2001 From: Osoitz Date: Sat, 3 Feb 2018 11:48:13 +0000 Subject: [PATCH 4/9] Translated using Weblate (Basque) Currently translated at 72.6% (2451 of 3376 strings) --- OsmAnd/res/values-eu/phrases.xml | 168 +++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) diff --git a/OsmAnd/res/values-eu/phrases.xml b/OsmAnd/res/values-eu/phrases.xml index 96c7dd0654..301efc40b0 100644 --- a/OsmAnd/res/values-eu/phrases.xml +++ b/OsmAnd/res/values-eu/phrases.xml @@ -2474,4 +2474,172 @@ Oheak Ontzien alokairua + Wikia eskozieraz + Wikia punjabieraz + Haurtxoentzat: bai + Haurtxoentzat: ez + Ume txikientzat: bai + Ume txikientzat: ez + Umeentzat: bai + Umeentzat: ez + Helduentzat: bai + Helduentzat: ez + Emakumeentzat: bai + Emakumeentzat: ez + Adinekoentzat: bai + Adinekoentzat: ez + Neskentzat: bai + Neskentzat: ez + Gizonezkoentzat: bai + Gizonezkoentzat: ez + Mutilentzat: bai + Mutilentzat: ez + + Edukiera (oheak) + + Bingoa + + Kokalekua: lurrazpikoa + Kokalekua: urazpikoa + Kokalekua: azalean + Kokalekua: aireratua + Kokalekua: teilatuan + Kokalekua: kanpoan + Kokalekua: barruan + Kokalekua: plataforma + Kokalekua: kioskoa + Kokalekua: zubia + Kokalekua: horma + Kokalekua: sarrera + + Ikusgaitasuna: etxea + Ikusgaitasuna: kalea + Ikusgaitasuna: ingurua + + Irekia + Itxia + Mugatua + Aupurtua + Konponketak behar ditu + + Bat ere ez + Kloroa + Alderantziko osmosia + Ur putzua + Hodia + Ur korrontea + Bonba + Zulaketa + Ur-kamioia + "Ur-tankea " + Botilaratutako ura + + Komunitatea + Familia + Hainbat familia + + Konektorea: CEE urdina + Konektorea: CEE urdina: korrontea + Konektorea: CEE urdina: irteera + Konektorea: CEE gorria 16A + Konektorea: CEE gorria: korrontea + Konektorea: CEE gorria: irteera + Konektorea: CEE gorria 32A + Konektorea: CEE gorria 32A: korrontea + Konektorea: CEE gorria 32A: irteera + Konektorea: CEE gorria 64A + Konektorea: CEE gorria 64A: korrontea + Konektorea: CEE gorria 64A: irteera + Konektorea: CEE gorria 125A + Konektorea: CEE gorria 125A: korrontea + Konektorea: CEE gorria 125A: irteera + Konektorea: 1 mota + Konektorea: 1 mota: korrontea + Konektorea: 1 mota: irteera + Konektorea: 1 mota konbinatua + Konektorea: 1 mota konbinatua: korrontea + Konektorea: 1 mota konbinatua: irteera + Konektorea: 2 mota + Konektorea: 2 mota: korrontea + Konektorea: 2 mota: irteera + Konektorea: 2 mota konbinatua + Konektorea: 2 mota: korrontea + Konektorea: 2 mota: irteera + Konektorea: 3 mota + Konektorea: 2 mota: korrontea + Konektorea: 3 mota: irteera + Konektorea: CHAdeMO + Konektorea: CHAdeMO: korrontea + Konektorea: CHAdeMO: irteera + Konektorea: Tesla estandarra + Konektorea: Tesla estandarra: korrontea + Konektorea: Tesla estandarra: irteera + Konektorea: Tesla superkargagailua + Konektorea: Tesla superkargagailua: korrontea + Konektorea: Tesla superkargagailua: irteera + Konektorea: NEMA 5-15R + Konektorea: NEMA 5-15R: korrontea + Konektorea: NEMA 5-15R: irteera + Konektorea: NEMA 5-20 + Konektorea: NEMA 5-20: korrontea + Konektorea: NEMA 5-20: irteera + Konektorea: NEMA 14-30 + Konektorea: NEMA 14-30: korrontea + Konektorea: NEMA 14-30: irteera + Konektorea: NEMA 14-50 + Konektorea: NEMA 14-50: korrontea + Konektorea: NEMA 14-50: irteera + Konektorea: Schuko + Konektorea: Schuko: korrontea + Konektorea: Schuko: irteera + Konektorea: BS 1363 + Konektorea: BS 1363: korrontea + Konektorea: BS 1363: irteera + Konektorea: AS/NZS 3112 + Konektorea: AS/NZS 3112: korrontea + Konektorea: AS/NZS 3112: irteera + + Kotxea: bai + Kotxea: ez + Bizikleta: bai + Bizikleta: ez + Motozikleta: bai + Motozikleta: ez + Kamioia: bai + Kamioia: ez + + Aparkatzeko ordainsaria: bai + Aparkatzeko ordainsaria: ez + Aparkatzeko ordainsaria + + Anperioak + Kargatze-estazioaren irteera + + Mapa mota: topografikoa + Mapa mota: kaletegia + Mapa mota: eskema + Mapa mota: toposkopikoa + Mapa mota: tokia + Mapa mota: hiria + Mapa mota: eskualdea + + Kargatze-estazioa + + Buzoia + Kalea + Portal zenbakia + + + Diru-transferentzia + + Posta-kodea + + Kirola: bai + Kirola: ez + Tradizionala: bai + Tradizionala: ez + Izotza: bai + Izotza: ez + Mistoa: bai + Mistoa: ez From e22a023a50ea60e4b79a5e6cfd999b3ce2bf85e2 Mon Sep 17 00:00:00 2001 From: Boyuan Yang <073plan@gmail.com> Date: Sat, 3 Feb 2018 11:37:44 +0000 Subject: [PATCH 5/9] Translated using Weblate (Chinese (Simplified)) Currently translated at 0.7% (24 of 3376 strings) --- OsmAnd/res/values-zh-rCN/phrases.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OsmAnd/res/values-zh-rCN/phrases.xml b/OsmAnd/res/values-zh-rCN/phrases.xml index 4e3a0988db..3c6f085d9d 100644 --- a/OsmAnd/res/values-zh-rCN/phrases.xml +++ b/OsmAnd/res/values-zh-rCN/phrases.xml @@ -22,4 +22,7 @@ 类型 类型 额外的 + 维基百科 + 用户自定义 + From 0d75aa5aac9501818efc47159412a9957192e608 Mon Sep 17 00:00:00 2001 From: Viktar Vauchkevich Date: Sat, 3 Feb 2018 13:27:38 +0000 Subject: [PATCH 6/9] Translated using Weblate (Belarusian (latin)) Currently translated at 100.0% (2563 of 2563 strings) --- OsmAnd/res/values-be-rBY/strings.xml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-be-rBY/strings.xml b/OsmAnd/res/values-be-rBY/strings.xml index d6af90a6ce..5593bad177 100644 --- a/OsmAnd/res/values-be-rBY/strings.xml +++ b/OsmAnd/res/values-be-rBY/strings.xml @@ -729,7 +729,7 @@ Punktaŭ maršrutu %2$s Dla turystaŭ Paliva Pakazvać papiaredžvańnі… - Naladzić papiaredžanni ruchu (abmiežavanni chutkasci, vymušanyja prypynki, štučnyja niaroŭnasci), kamiery chutkasci, infarmacyju ab palosach. + Naladzić papiaredžanni ruchu (abmiežavanni chutkasci, vymušanyja prypynki, štučnyja niaroŭnasci, tuneli), kamiery chutkasci, infarmacyju ab palosach. Vykarystoŭvać kompas kali inakš niemahčyma vyznačyć napramak. Vykarystoŭvać kompas Paźbiahać aŭtamahіstralaŭ @@ -2995,4 +2995,20 @@ U vypadku, kali vy lubіcie OsmAnd і OSM і chočacie padtrymać jaho, heta іd Marski Kapijavać nazvu kropki/POI Miesca nie maje nazvy +Ciapierašni + Dadaje apošni prypynak na maršrucie + Dadaje pieršy prypynak na maršrucie + Pierasunuć praznačennie daliej i stvaryć pryznačennie + Pakazać zakrytyja natatki + Pakazać/schavać OSM-natatki na mapie. + GPX padychodzić dlia ekspartu ŭ JOSM i inšyja OSM-redaktary. + OSC padychodzić dlia ekspartu ŭ OpenStreetMap. + GPX-fajl + OSC-fajl + Abiarycie typ fajla + Abiarycie typ ekspartu: OSM-natatki, POI ci abodvyja. + Usie danyja + OSM-natatki + Napieradzie tuneĺ + Tuneli From 0c9c179d203687475488c54ecfab6ce2f4ca2dd5 Mon Sep 17 00:00:00 2001 From: Franco Date: Sat, 3 Feb 2018 13:30:13 +0000 Subject: [PATCH 7/9] Translated using Weblate (Spanish (Argentina)) Currently translated at 100.0% (2563 of 2563 strings) --- OsmAnd/res/values-es-rAR/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index 5f0c9bb1ff..c42872a0db 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -2925,4 +2925,8 @@ Proporciona un código completo Notas de OSM Túnel adelante Túneles - +Actual + Añade la última parada de la ruta + Añade la primer parada de la ruta + Sube el destino y crea el destino + From 7d7a1fce9ea98c497135f5fac4a776c699b51897 Mon Sep 17 00:00:00 2001 From: Franco Date: Sat, 3 Feb 2018 13:32:19 +0000 Subject: [PATCH 8/9] Translated using Weblate (Spanish (American)) Currently translated at 100.0% (2563 of 2563 strings) --- OsmAnd/res/values-es-rUS/strings.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/OsmAnd/res/values-es-rUS/strings.xml b/OsmAnd/res/values-es-rUS/strings.xml index 96d3076977..356705f767 100644 --- a/OsmAnd/res/values-es-rUS/strings.xml +++ b/OsmAnd/res/values-es-rUS/strings.xml @@ -2939,4 +2939,8 @@ Proporciona un código completo Notas de OSM Túnel adelante Túneles - +Actual + Añade la última parada en la ruta + Añade la primer parada en la ruta + Sube el destino y crear el destino + From b2a6651cd00d352877bee9b64bd74571eea7d4aa Mon Sep 17 00:00:00 2001 From: Alexey Kulish Date: Sat, 3 Feb 2018 19:12:55 +0300 Subject: [PATCH 9/9] Fix handling context menu swipes --- .../MapContextMenuFragment.java | 128 +++++++++++------- 1 file changed, 81 insertions(+), 47 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index 068327a5af..0c29ea1973 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -71,7 +71,6 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo public static final float ZOOM_PADDING_TOP_DP = 4f; public static final float MARKER_PADDING_DP = 20f; public static final float MARKER_PADDING_X_DP = 50f; - public static final float SKIP_HALF_SCREEN_STATE_KOEF = .21f; public static final int ZOOM_IN_STANDARD = 17; public static final int CURRENT_Y_UNDEFINED = Integer.MAX_VALUE; @@ -128,8 +127,6 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo private boolean wasDrawerDisabled; private boolean zoomIn; - private float skipScreenStateLimit; - private int screenOrientation; private boolean created; @@ -353,8 +350,8 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo hasMoved = true; float y = event.getY(); float newY = getViewY() + (y - dy); - if (menu.isLandscapeLayout() && newY > 0) { - newY = 0; + if (menu.isLandscapeLayout() && newY > topScreenPosY) { + newY = topScreenPosY; } setViewY((int) newY, false, false); @@ -391,8 +388,8 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo scroller.abortAnimation(); scroller.fling(0, currentY, 0, initialVelocity, 0, 0, - viewHeight - menuFullHeightMax, - minHalfY, + Math.min(viewHeight - menuFullHeightMax, getFullScreenTopPosY()), + screenHeight, 0, 0); currentY = scroller.getFinalY(); scroller.abortAnimation(); @@ -404,8 +401,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo slidingDown = false; } - boolean skipScreenState = Math.abs(getViewY() - dyMain) > skipScreenStateLimit; - changeMenuState(currentY, skipScreenState, slidingUp, slidingDown); + changeMenuState(currentY, slidingUp, slidingDown); } recycleVelocityTracker(); break; @@ -740,59 +736,90 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo private void processScreenHeight(ViewParent parent) { View container = (View) parent; screenHeight = container.getHeight() + AndroidUtils.getStatusBarHeight(getActivity()); - skipScreenStateLimit = screenHeight * SKIP_HALF_SCREEN_STATE_KOEF; viewHeight = screenHeight - AndroidUtils.getStatusBarHeight(getMapActivity()); } public void openMenuFullScreen() { - changeMenuState(getViewY(), true, true, false); + changeMenuState(getMenuStatePosY(MenuState.FULL_SCREEN), false, false); } public void openMenuHeaderOnly() { - changeMenuState(getViewY(), true, false, true); - } - - public void openMenuHalfScreen() { - int oldMenuState = menu.getCurrentMenuState(); - if (oldMenuState == MenuState.HEADER_ONLY) { - changeMenuState(getViewY(), false, true, false); - } else if (oldMenuState == MenuState.FULL_SCREEN && !menu.isLandscapeLayout()) { - changeMenuState(getViewY(), false, false, true); + if (!menu.isLandscapeLayout()) { + changeMenuState(getMenuStatePosY(MenuState.HEADER_ONLY), false, false); } } - private void changeMenuState(int currentY, boolean skipScreenState, - boolean slidingUp, boolean slidingDown) { + public void openMenuHalfScreen() { + if (!menu.isLandscapeLayout()) { + changeMenuState(getMenuStatePosY(MenuState.HALF_SCREEN), false, false); + } + } + + private void changeMenuState(int currentY, boolean slidingUp, boolean slidingDown) { boolean needCloseMenu = false; - int oldMenuState = menu.getCurrentMenuState(); + int currentMenuState = menu.getCurrentMenuState(); if (!menu.isLandscapeLayout()) { - if (slidingDown && oldMenuState == MenuState.FULL_SCREEN && getViewY() < getFullScreenTopPosY()) { + int headerDist = Math.abs(currentY - getMenuStatePosY(MenuState.HEADER_ONLY)); + int halfDist = Math.abs(currentY - getMenuStatePosY(MenuState.HALF_SCREEN)); + int fullDist = Math.abs(currentY - getMenuStatePosY(MenuState.FULL_SCREEN)); + int newState; + if (headerDist < halfDist && headerDist < fullDist) { + newState = MenuState.HEADER_ONLY; + } else if (halfDist < headerDist && halfDist < fullDist) { + newState = MenuState.HALF_SCREEN; + } else { + newState = MenuState.FULL_SCREEN; + } + + if (slidingDown && currentMenuState == MenuState.FULL_SCREEN && getViewY() < getFullScreenTopPosY()) { slidingDown = false; + newState = MenuState.FULL_SCREEN; } if (menuBottomViewHeight > 0 && slidingUp) { - menu.slideUp(); - if (skipScreenState) { - menu.slideUp(); + while (menu.getCurrentMenuState() != newState) { + if (!menu.slideUp()) { + break; + } } } else if (slidingDown) { - needCloseMenu = !menu.slideDown(); - if (!needCloseMenu && skipScreenState) { - menu.slideDown(); + if (currentMenuState == MenuState.HEADER_ONLY) { + needCloseMenu = true; + } else { + while (menu.getCurrentMenuState() != newState) { + if (!menu.slideDown()) { + needCloseMenu = true; + break; + } + } + } + } else { + if (currentMenuState < newState) { + while (menu.getCurrentMenuState() != newState) { + if (!menu.slideUp()) { + break; + } + } + } else { + while (menu.getCurrentMenuState() != newState) { + if (!menu.slideDown()) { + break; + } + } } } } int newMenuState = menu.getCurrentMenuState(); - boolean needMapAdjust = oldMenuState != newMenuState && newMenuState != MenuState.FULL_SCREEN; + boolean needMapAdjust = currentMenuState != newMenuState && newMenuState != MenuState.FULL_SCREEN; - if (newMenuState != oldMenuState) { + if (newMenuState != currentMenuState) { restoreCustomMapRatio(); menu.updateControlsVisibility(true); - doBeforeMenuStateChange(oldMenuState, newMenuState); + doBeforeMenuStateChange(currentMenuState, newMenuState); toggleDetailsHideButton(); } - applyPosY(currentY, needCloseMenu, needMapAdjust, oldMenuState, newMenuState, 0); + applyPosY(currentY, needCloseMenu, needMapAdjust, currentMenuState, newMenuState, 0); } private void restoreCustomMapRatio() { @@ -1466,6 +1493,22 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo return -menuTitleHeight + menuButtonsHeight + bottomToolbarPosY; } + private int getMenuStatePosY(int menuState) { + if (menu.isLandscapeLayout()) { + return topScreenPosY; + } + switch (menuState) { + case MenuState.HEADER_ONLY: + return getHeaderOnlyTopY(); + case MenuState.HALF_SCREEN: + return minHalfY; + case MenuState.FULL_SCREEN: + return getFullScreenTopPosY(); + default: + return 0; + } + } + private int getPosY() { return getPosY(CURRENT_Y_UNDEFINED, false); } @@ -1491,20 +1534,15 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo int posY = 0; switch (destinationState) { case MenuState.HEADER_ONLY: - posY = getHeaderOnlyTopY(); + posY = getMenuStatePosY(MenuState.HEADER_ONLY); break; case MenuState.HALF_SCREEN: - posY = minHalfY; + posY = getMenuStatePosY(MenuState.HALF_SCREEN); break; case MenuState.FULL_SCREEN: if (currentY != CURRENT_Y_UNDEFINED) { int maxPosY = viewHeight - menuFullHeightMax; - int minPosY; - if (menu.isLandscapeLayout()) { - minPosY = topScreenPosY; - } else { - minPosY = getFullScreenTopPosY(); - } + int minPosY = getMenuStatePosY(MenuState.FULL_SCREEN); if (maxPosY > minPosY) { maxPosY = minPosY; } @@ -1516,11 +1554,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo posY = currentY; } } else { - if (menu.isLandscapeLayout()) { - posY = topScreenPosY; - } else { - posY = getFullScreenTopPosY(); - } + posY = getMenuStatePosY(MenuState.FULL_SCREEN); } break; default: