Merge branch 'master' of ssh://github.com/osmandapp/Osmand into LoginDialogsUiImprovements
This commit is contained in:
commit
a1df9c3a1f
8 changed files with 157 additions and 80 deletions
|
@ -86,7 +86,7 @@
|
|||
android:paddingRight="@dimen/content_padding_standard"
|
||||
android:paddingStart="@dimen/list_item_content_margin">
|
||||
|
||||
<TextView
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="@dimen/content_padding_standard"
|
||||
|
@ -94,13 +94,17 @@
|
|||
android:layout_weight="1"
|
||||
android:text="@string/show_on_map"
|
||||
android:textAppearance="?attr/textAppearanceListItemSecondary"
|
||||
android:textColor="?attr/ctrl_active_color"
|
||||
android:textStyle="bold"/>
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
app:typeface="@string/font_roboto_medium"/>
|
||||
|
||||
<Switch
|
||||
android:id="@+id/show_on_map_switch"
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/show_on_map_state"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="?attr/textAppearanceListItemSecondary"
|
||||
android:textColor="?attr/ctrl_active_color"
|
||||
app:typeface="@string/font_roboto_medium"
|
||||
tools:text="All"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
14
OsmAnd-telegram/res/layout/popup_list_text_item.xml
Normal file
14
OsmAnd-telegram/res/layout/popup_list_text_item.xml
Normal file
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TextView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/text1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="12dp"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingTop="12dp"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textSize="@dimen/list_item_title_text_size"
|
||||
tools:text="Some menu item"/>
|
|
@ -1,4 +1,6 @@
|
|||
<resources>
|
||||
<string name="shared_string_all">All</string>
|
||||
<string name="shared_string_off">Off</string>
|
||||
<string name="authorization_already_registered_in_telegram">You need an already registered account and phone number in Telegram</string>
|
||||
<string name="do_not_have_telegram">I don`t have Telegram account</string>
|
||||
<string name="enter_phone_number">Enter phone number</string>
|
||||
|
|
|
@ -33,21 +33,13 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
read()
|
||||
}
|
||||
|
||||
fun hasAnyChatToShareLocation(): Boolean {
|
||||
return shareLocationChats.isNotEmpty()
|
||||
}
|
||||
fun hasAnyChatToShareLocation() = shareLocationChats.isNotEmpty()
|
||||
|
||||
fun isSharingLocationToChat(chatTitle: String): Boolean {
|
||||
return shareLocationChats.contains(chatTitle)
|
||||
}
|
||||
fun isSharingLocationToChat(chatTitle: String) = shareLocationChats.contains(chatTitle)
|
||||
|
||||
fun hasAnyChatToShowOnMap(): Boolean {
|
||||
return showOnMapChats.isNotEmpty()
|
||||
}
|
||||
fun hasAnyChatToShowOnMap() = showOnMapChats.isNotEmpty()
|
||||
|
||||
fun isShowingChatOnMap(chatTitle: String): Boolean {
|
||||
return showOnMapChats.contains(chatTitle)
|
||||
}
|
||||
fun isShowingChatOnMap(chatTitle: String) = showOnMapChats.contains(chatTitle)
|
||||
|
||||
fun removeNonexistingChats(presentChatTitles: List<String>) {
|
||||
val shareLocationChats = shareLocationChats.toMutableList()
|
||||
|
@ -84,6 +76,7 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
}
|
||||
|
||||
fun getShareLocationChats() = ArrayList(shareLocationChats)
|
||||
|
||||
fun getShowOnMapChats() = ArrayList(showOnMapChats)
|
||||
|
||||
fun getShowOnMapChatsCount() = showOnMapChats.size
|
||||
|
@ -131,10 +124,16 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
}
|
||||
this.showOnMapChats = showOnMapChats
|
||||
|
||||
metricsConstants = MetricsConstants.valueOf(prefs.getString(METRICS_CONSTANTS_KEY, MetricsConstants.KILOMETERS_AND_METERS.name))
|
||||
speedConstants = SpeedConstants.valueOf(prefs.getString(SPEED_CONSTANTS_KEY, SpeedConstants.KILOMETERS_PER_HOUR.name))
|
||||
metricsConstants = MetricsConstants.valueOf(
|
||||
prefs.getString(METRICS_CONSTANTS_KEY, MetricsConstants.KILOMETERS_AND_METERS.name)
|
||||
)
|
||||
speedConstants = SpeedConstants.valueOf(
|
||||
prefs.getString(SPEED_CONSTANTS_KEY, SpeedConstants.KILOMETERS_PER_HOUR.name)
|
||||
)
|
||||
|
||||
sendMyLocationInterval = prefs.getLong(SEND_MY_LOCATION_INTERVAL_KEY, SEND_MY_LOCATION_INTERVAL_DEFAULT)
|
||||
userLocationExpireTime = prefs.getLong(USER_LOCATION_EXPIRE_TIME_KEY, USER_LOCATION_EXPIRE_TIME_DEFAULT)
|
||||
sendMyLocationInterval =
|
||||
prefs.getLong(SEND_MY_LOCATION_INTERVAL_KEY, SEND_MY_LOCATION_INTERVAL_DEFAULT)
|
||||
userLocationExpireTime =
|
||||
prefs.getLong(USER_LOCATION_EXPIRE_TIME_KEY, USER_LOCATION_EXPIRE_TIME_DEFAULT)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -837,6 +837,25 @@ class TelegramHelper private constructor() {
|
|||
}
|
||||
}
|
||||
}
|
||||
TdApi.UpdateMessageEdited.CONSTRUCTOR -> {
|
||||
val updateMessageEdited = obj as TdApi.UpdateMessageEdited
|
||||
val message = usersLocationMessages[updateMessageEdited.messageId]
|
||||
if (message == null) {
|
||||
updateMessageEdited.apply {
|
||||
requestMessage(chatId, messageId, this@TelegramHelper::addNewMessage)
|
||||
}
|
||||
} else {
|
||||
synchronized(message) {
|
||||
message.editDate = updateMessageEdited.editDate
|
||||
}
|
||||
val chatTitle = chats[message.chatId]?.title
|
||||
if (chatTitle != null) {
|
||||
incomingMessagesListeners.forEach {
|
||||
it.onReceiveChatLocationMessages(chatTitle, message)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
TdApi.UpdateMessageContent.CONSTRUCTOR -> {
|
||||
val updateMessageContent = obj as TdApi.UpdateMessageContent
|
||||
val message = usersLocationMessages[updateMessageContent.messageId]
|
||||
|
|
|
@ -1,21 +1,24 @@
|
|||
package net.osmand.telegram.ui
|
||||
|
||||
import android.graphics.Paint
|
||||
import android.os.Bundle
|
||||
import android.support.v4.app.Fragment
|
||||
import android.support.v7.widget.LinearLayoutManager
|
||||
import android.support.v7.widget.ListPopupWindow
|
||||
import android.support.v7.widget.RecyclerView
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ArrayAdapter
|
||||
import android.widget.ImageView
|
||||
import android.widget.Switch
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import net.osmand.telegram.R
|
||||
import net.osmand.telegram.TelegramApplication
|
||||
import net.osmand.telegram.helpers.TelegramHelper
|
||||
import net.osmand.telegram.helpers.TelegramHelper.*
|
||||
import net.osmand.telegram.helpers.TelegramUiHelper
|
||||
import net.osmand.telegram.utils.AndroidUtils
|
||||
import org.drinkless.td.libcore.telegram.TdApi
|
||||
|
||||
private const val CHAT_VIEW_TYPE = 0
|
||||
|
@ -30,7 +33,7 @@ class LiveNowTabFragment : Fragment(), TelegramListener, TelegramIncomingMessage
|
|||
private val osmandHelper get() = app.osmandHelper
|
||||
private val settings get() = app.settings
|
||||
|
||||
private val adapter = LiveNowListAdapter()
|
||||
private lateinit var adapter: LiveNowListAdapter
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
|
@ -38,6 +41,7 @@ class LiveNowTabFragment : Fragment(), TelegramListener, TelegramIncomingMessage
|
|||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
val mainView = inflater.inflate(R.layout.fragment_live_now_tab, container, false)
|
||||
adapter = LiveNowListAdapter()
|
||||
mainView.findViewById<RecyclerView>(R.id.recycler_view).apply {
|
||||
layoutManager = LinearLayoutManager(context)
|
||||
adapter = this@LiveNowTabFragment.adapter
|
||||
|
@ -95,7 +99,7 @@ class LiveNowTabFragment : Fragment(), TelegramListener, TelegramIncomingMessage
|
|||
}
|
||||
|
||||
override fun onReceiveChatLocationMessages(chatTitle: String, vararg messages: TdApi.Message) {
|
||||
updateList()
|
||||
app.runInUIThread { updateList() }
|
||||
}
|
||||
|
||||
override fun updateLocationMessages() {
|
||||
|
@ -125,6 +129,9 @@ class LiveNowTabFragment : Fragment(), TelegramListener, TelegramIncomingMessage
|
|||
|
||||
inner class LiveNowListAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
||||
|
||||
private val menuList =
|
||||
listOf(getString(R.string.shared_string_off), getString(R.string.shared_string_all))
|
||||
|
||||
var items: List<Any> = emptyList()
|
||||
set(value) {
|
||||
field = value
|
||||
|
@ -156,44 +163,14 @@ class LiveNowTabFragment : Fragment(), TelegramListener, TelegramIncomingMessage
|
|||
if (item is TdApi.Chat && holder is ChatViewHolder) {
|
||||
val nextItemIsUser = !lastItem && items[position + 1] is TdApi.User
|
||||
val chatTitle = item.title
|
||||
val stateTextInd = if (settings.isShowingChatOnMap(chatTitle)) 1 else 0
|
||||
|
||||
TelegramUiHelper.setupPhoto(app, holder.icon, item.photo?.small?.local?.path)
|
||||
holder.title?.text = chatTitle
|
||||
holder.description?.text = "Chat description" // FIXME
|
||||
holder.imageButton?.setImageDrawable(app.uiUtils.getThemedIcon(R.drawable.ic_overflow_menu_white))
|
||||
holder.imageButton?.setOnClickListener {
|
||||
Toast.makeText(context, "Options", Toast.LENGTH_SHORT).show() // FIXME
|
||||
}
|
||||
holder.showOnMapRow?.setOnClickListener {
|
||||
holder.showOnMapSwitch?.isChecked = !holder.showOnMapSwitch?.isChecked!!
|
||||
}
|
||||
holder.showOnMapSwitch?.setOnCheckedChangeListener(null)
|
||||
holder.showOnMapSwitch?.isChecked = settings.isShowingChatOnMap(chatTitle)
|
||||
holder.showOnMapSwitch?.setOnCheckedChangeListener { _, isChecked ->
|
||||
settings.showChatOnMap(chatTitle, isChecked)
|
||||
if (settings.hasAnyChatToShowOnMap()) {
|
||||
if (osmandHelper.isOsmandNotInstalled()) {
|
||||
if (isChecked) {
|
||||
activity?.let {
|
||||
MainActivity.OsmandMissingDialogFragment()
|
||||
.show(it.supportFragmentManager, null)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (isChecked) {
|
||||
app.showLocationHelper.showChatMessages(chatTitle)
|
||||
} else {
|
||||
app.showLocationHelper.hideChatMessages(chatTitle)
|
||||
}
|
||||
app.showLocationHelper.startShowingLocation()
|
||||
}
|
||||
} else {
|
||||
app.showLocationHelper.stopShowingLocation()
|
||||
if (!isChecked) {
|
||||
app.showLocationHelper.hideChatMessages(chatTitle)
|
||||
}
|
||||
}
|
||||
}
|
||||
holder.imageButton?.visibility = View.GONE
|
||||
holder.showOnMapRow?.setOnClickListener { showPopupMenu(holder, chatTitle) }
|
||||
holder.showOnMapState?.text = menuList[stateTextInd]
|
||||
holder.bottomDivider?.visibility = if (nextItemIsUser) View.VISIBLE else View.GONE
|
||||
holder.bottomShadow?.visibility = if (lastItem) View.VISIBLE else View.GONE
|
||||
} else if (item is TdApi.User && holder is ContactViewHolder) {
|
||||
|
@ -211,6 +188,56 @@ class LiveNowTabFragment : Fragment(), TelegramListener, TelegramIncomingMessage
|
|||
|
||||
override fun getItemCount() = items.size
|
||||
|
||||
private fun showPopupMenu(holder: ChatViewHolder, chatTitle: String) {
|
||||
val ctx = holder.itemView.context
|
||||
|
||||
val paint = Paint()
|
||||
paint.textSize =
|
||||
resources.getDimensionPixelSize(R.dimen.list_item_title_text_size).toFloat()
|
||||
val textWidth = Math.max(paint.measureText(menuList[0]), paint.measureText(menuList[1]))
|
||||
val itemWidth = textWidth.toInt() + AndroidUtils.dpToPx(ctx, 32F)
|
||||
val minWidth = AndroidUtils.dpToPx(ctx, 100F)
|
||||
|
||||
ListPopupWindow(ctx).apply {
|
||||
isModal = true
|
||||
anchorView = holder.showOnMapState
|
||||
setContentWidth(Math.max(minWidth, itemWidth))
|
||||
setDropDownGravity(Gravity.END or Gravity.TOP)
|
||||
setAdapter(ArrayAdapter(ctx, R.layout.popup_list_text_item, menuList))
|
||||
setOnItemClickListener { _, _, position, _ ->
|
||||
val allSelected = position == 1
|
||||
|
||||
settings.showChatOnMap(chatTitle, allSelected)
|
||||
if (settings.hasAnyChatToShowOnMap()) {
|
||||
if (osmandHelper.isOsmandNotInstalled()) {
|
||||
if (allSelected) {
|
||||
activity?.let {
|
||||
MainActivity.OsmandMissingDialogFragment()
|
||||
.show(it.supportFragmentManager, null)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (allSelected) {
|
||||
app.showLocationHelper.showChatMessages(chatTitle)
|
||||
} else {
|
||||
app.showLocationHelper.hideChatMessages(chatTitle)
|
||||
}
|
||||
app.showLocationHelper.startShowingLocation()
|
||||
}
|
||||
} else {
|
||||
app.showLocationHelper.stopShowingLocation()
|
||||
if (!allSelected) {
|
||||
app.showLocationHelper.hideChatMessages(chatTitle)
|
||||
}
|
||||
}
|
||||
|
||||
holder.showOnMapState?.text = menuList[position]
|
||||
dismiss()
|
||||
}
|
||||
show()
|
||||
}
|
||||
}
|
||||
|
||||
inner class ContactViewHolder(val view: View) : RecyclerView.ViewHolder(view) {
|
||||
val icon: ImageView? = view.findViewById(R.id.icon)
|
||||
val title: TextView? = view.findViewById(R.id.title)
|
||||
|
@ -224,7 +251,7 @@ class LiveNowTabFragment : Fragment(), TelegramListener, TelegramIncomingMessage
|
|||
val description: TextView? = view.findViewById(R.id.description)
|
||||
val imageButton: ImageView? = view.findViewById(R.id.image_button)
|
||||
val showOnMapRow: View? = view.findViewById(R.id.show_on_map_row)
|
||||
val showOnMapSwitch: Switch? = view.findViewById(R.id.show_on_map_switch)
|
||||
val showOnMapState: TextView? = view.findViewById(R.id.show_on_map_state)
|
||||
val bottomDivider: View? = view.findViewById(R.id.bottom_divider)
|
||||
val bottomShadow: View? = view.findViewById(R.id.bottom_shadow)
|
||||
}
|
||||
|
|
|
@ -2965,4 +2965,5 @@
|
|||
\nНије потребно скидање посебне карте, поглед се прави од стандардних карти.
|
||||
\n
|
||||
\nОвај поглед се може искључити тако што се или овде деактивира, или тако што се, по жељи, промени \"Стил карте\" под \"Подеси карту\".</string>
|
||||
<string name="point_deleted">Тачка %1$s обрисана</string>
|
||||
</resources>
|
||||
|
|
|
@ -2511,7 +2511,7 @@ Vänligen tillhandahåll fullständig kod</string>
|
|||
<string name="wrong_format">Fel format</string>
|
||||
<string name="shared_string_road">Väg</string>
|
||||
<string name="show_map">Visa kartan</string>
|
||||
<string name="route_is_calculated">Rutten är beräknad</string>
|
||||
<string name="route_is_calculated">Rutten beräknad</string>
|
||||
<string name="round_trip">Rundtur</string>
|
||||
<string name="make_round_trip">Gör en rundtur</string>
|
||||
|
||||
|
@ -2521,12 +2521,12 @@ Vänligen tillhandahåll fullständig kod</string>
|
|||
<string name="my_location">Min plats</string>
|
||||
<string name="shared_string_sort">Sortera</string>
|
||||
<string name="is_saved">har sparats</string>
|
||||
<string name="marker_save_as_track">Spara som spår</string>
|
||||
<string name="marker_save_as_track">Spara som GPX-fil</string>
|
||||
<string name="move_to_history">Flytta till historiken</string>
|
||||
<string name="show_arrows_on_the_map">Visa pilar på kartan</string>
|
||||
<string name="show_passed">Visa passerade</string>
|
||||
<string name="hide_passed">Dölj passerade</string>
|
||||
<string name="remove_from_map_markers">Tag bort från Kartmarkörer</string>
|
||||
<string name="remove_from_map_markers">Tag bort från kartmarkörer\'</string>
|
||||
<string name="shared_string_list">Lista</string>
|
||||
<string name="shared_string_groups">Grupper</string>
|
||||
<string name="passed">Senast använt: %1$s</string>
|
||||
|
@ -2557,17 +2557,17 @@ Vänligen tillhandahåll fullständig kod</string>
|
|||
<string name="shared_string_paused">Pausad</string>
|
||||
<string name="retry">Försök igen</string>
|
||||
<string name="plan_route_no_markers_toast">Du måste lägga till åtminstone en markör för att använda denna funktion.</string>
|
||||
<string name="osn_modify_dialog_error">Ett undantagsfel inträffade: anteckningen ändrades inte</string>
|
||||
<string name="osn_modify_dialog_error">Kunde ej ändra anteckning</string>
|
||||
<string name="osn_modify_dialog_title">Ändra anteckning</string>
|
||||
<string name="context_menu_item_modify_note">Ändra OSM-anteckning</string>
|
||||
<string name="coordinates_format">Koordinatformat</string>
|
||||
<string name="use_system_keyboard">Använd systemets tangentbord</string>
|
||||
<string name="fast_coordinates_input_descr">Välj koordinatformat. Du kan alltid ändra det genom att peta på Alternativ.</string>
|
||||
<string name="fast_coordinates_input_descr">Välj koordinatformat. Du kan alltid ändra det genom att trycka på \'Alternativ\'.</string>
|
||||
<string name="use_location">Använd platsen</string>
|
||||
<string name="shared_string_finish">Avsluta</string>
|
||||
<string name="plan_route">Planera rutt</string>
|
||||
<string name="marker_save_as_track_descr">Exportera dina markörer till en fil:</string>
|
||||
<string name="group_will_be_removed_after_restart">Gruppen tas bort efter nästa omstart av appen.</string>
|
||||
<string name="marker_save_as_track_descr">Exportera dina markörer till följande GPX-fil:</string>
|
||||
<string name="group_will_be_removed_after_restart">Gruppen kommer att försvinna nästa gång du startar appen.</string>
|
||||
<string name="date_added">Datum tillagd</string>
|
||||
<string name="order_by">Ordna efter:</string>
|
||||
<string name="all_markers_moved_to_history">Alla kartmarkörer har flyttats till historiken</string>
|
||||
|
@ -2601,15 +2601,15 @@ Vänligen tillhandahåll fullständig kod</string>
|
|||
<string name="store_tracks_in_monthly_directories_descrp">Spara inspelade spår i undermappar efter inspelad månad (typ 2017-01).</string>
|
||||
<string name="mapillary_menu_descr_dates">Visa endast tillagda bilder</string>
|
||||
<string name="mapillary_menu_descr_username">Visa endast bilder tillagda av</string>
|
||||
<string name="import_gpx_file_description">kan importeras som favoritpunkter eller som spårfil.</string>
|
||||
<string name="import_gpx_file_description">kan importeras som favoriter eller som GPX-fil.</string>
|
||||
<string name="import_as_gpx">Importera som GPX-fil</string>
|
||||
<string name="import_as_favorites">Importera som favorit</string>
|
||||
<string name="import_as_favorites">Importera som favoriter</string>
|
||||
<string name="import_file">Importera fil</string>
|
||||
<string name="wrong_input">Felaktig inmatning</string>
|
||||
<string name="waypoints_added_to_map_markers">Waypoints tillagda i kartmarkörer</string>
|
||||
<string name="make_round_trip_descr">Lägg till kopia av startpunkten som destination.</string>
|
||||
<string name="fast_coordinates_input">Snabbinmatning av koordinater</string>
|
||||
<string name="add_location_as_first_point_descr">Lägg till din position som första punkt för att planera en perfekt rutt.</string>
|
||||
<string name="add_location_as_first_point_descr">Lägg till din position som första punkt för att planera den perfekta rutten.</string>
|
||||
<string name="coordinate_input">Koordinatinmatning</string>
|
||||
<string name="modify_the_search_query">Ändra sökningen.</string>
|
||||
<string name="empty_state_osm_edits">Skapa eller ändra OSM-objekt</string>
|
||||
|
@ -2622,7 +2622,7 @@ Vänligen tillhandahåll fullständig kod</string>
|
|||
<string name="notes_by_date">Anteckningar efter datum</string>
|
||||
<string name="by_date">Efter datum</string>
|
||||
<string name="by_type">Efter typ</string>
|
||||
<string name="looking_for_tracks_with_waypoints">Söker spår med waypoints</string>
|
||||
<string name="looking_for_tracks_with_waypoints">Söker efter spår med waypoints</string>
|
||||
<string name="shared_string_more_without_dots">Mer</string>
|
||||
<string name="appearance_on_the_map">Utseende på kartan</string>
|
||||
<string name="what_is_here">Det som finns här:</string>
|
||||
|
@ -2684,23 +2684,23 @@ Vänligen tillhandahåll fullständig kod</string>
|
|||
<string name="one_tap_active_descr">Tryck på en markör på kartan för att flytta den till toppen av de aktiva markörerna utan att öppna sammanhangsmenyn.</string>
|
||||
<string name="one_tap_active">Ett tryck för att aktivera</string>
|
||||
<string name="empty_state_av_notes_desc">Lägg till ljud-, video- eller fotonotering för varje punkt på kartan, med hjälp av widgeten eller menyn.</string>
|
||||
<string name="add_track_to_markers_descr">Välj ett spår att lägga till sina waypoints till markörer. (Endast spår med waypoints visas.)</string>
|
||||
<string name="add_track_to_markers_descr">Välj ett spår för att lägga till dess waypoints till markörer.</string>
|
||||
<string name="add_favourites_group_to_markers_descr">Välj en favoritkategori för att lägga till markörer.</string>
|
||||
<string name="shared_string_gpx_waypoints">Spåra waypoints</string>
|
||||
<string name="favourites_group">Kategorin Favoriter</string>
|
||||
<string name="add_group">Lägg till en grupp</string>
|
||||
<string name="add_group_descr">Du kan importera grupper från favoriter eller spår-waypoints.</string>
|
||||
<string name="add_group_descr">Importera grupper från favoriter eller GPX-waypoints.</string>
|
||||
<string name="empty_state_markers_active">Skapa kartmarkörer!</string>
|
||||
<string name="empty_state_markers_active_desc">Tryck långt eller kort på platser, tryck sedan på flaggknappen.</string>
|
||||
<string name="empty_state_markers_active_desc">Tryck långt eller kort på \'Platser\', tryck sedan på flaggknappen.</string>
|
||||
<string name="empty_state_markers_groups">Importera grupper</string>
|
||||
<string name="empty_state_markers_groups_desc">Du kan importera Favoritgrupper eller spåra waypoints som markörer.</string>
|
||||
<string name="empty_state_markers_groups_desc">Importera Favoritgrupper eller waypoints som markörer.</string>
|
||||
<string name="empty_state_markers_history_desc">Markörer markerade som godkända visas på denna skärm.</string>
|
||||
<string name="shared_string_two">Två</string>
|
||||
<string name="shared_string_one">En</string>
|
||||
<string name="show_guide_line_descr">Visa styrlinjer från din position till de aktiva markörslägena.</string>
|
||||
<string name="show_guide_line_descr">Visa styrlinjer från din position till de aktiva markörlägena.</string>
|
||||
<string name="show_arrows_descr">Visa en eller två pilar som anger riktningen till de aktiva markörerna.</string>
|
||||
<string name="distance_indication_descr">Välj hur du vill visa avståndet till aktiva markörer.</string>
|
||||
<string name="active_markers_descr">Välj hur många riktningsindikatorer som visas.</string>
|
||||
<string name="active_markers_descr">Välj hur många riktningsindikatorer som ska visas.</string>
|
||||
<string name="digits_quantity">Antal decimaler</string>
|
||||
<string name="shared_string_right">Höger</string>
|
||||
<string name="shared_string_left">Vänster</string>
|
||||
|
@ -2708,12 +2708,12 @@ Vänligen tillhandahåll fullständig kod</string>
|
|||
<string name="shared_string_paste">Klistra in</string>
|
||||
<string name="coordinate_input_accuracy_description">Växla automatiskt till nästa fält efter du skrivit in %1$d decimaler.</string>
|
||||
<string name="coordinate_input_accuracy">%1$d decimaler</string>
|
||||
<string name="go_to_next_field">Gå till nästa fält</string>
|
||||
<string name="go_to_next_field">Nästa fält</string>
|
||||
<string name="rename_marker">Byt namn på markör</string>
|
||||
<string name="tap_on_map_to_hide_interface_descr">Ett tryck på kartan växlar kontrollknappar och widgets.</string>
|
||||
<string name="tap_on_map_to_hide_interface">Helskärmsläge</string>
|
||||
<string name="mark_passed">Markör godkänd</string>
|
||||
<string name="show_guide_line">Visa stödlinjer</string>
|
||||
<string name="show_guide_line">Visa riktlinjer</string>
|
||||
<string name="marker_show_distance_descr">Välj hur du vill ange avstånd och riktning till kartmarkörer på kartan:</string>
|
||||
<string name="map_orientation_change_in_accordance_with_speed">Kartorienteringströskel</string>
|
||||
<string name="map_orientation_change_in_accordance_with_speed_descr">Välj nedan vilken hastighet kartläget växlar från \"riktning\" till \"kompass\".</string>
|
||||
|
@ -2997,4 +2997,15 @@ Vänligen tillhandahåll fullständig kod</string>
|
|||
<string name="get_osmand_live">Skaffa OsmAnd Live för att låsa upp alla features: Dagliga kartuppdateringar med obegränsat antal nedladdningar, alla betal-och gratistillägg, Wikipedia, Wikivoyage och mycket mer.</string>
|
||||
<string name="unirs_render_descr">Ändring av standardstilen för att öka kontrasten av gång och cykelvägar. Använder färger från tidigare versioner av Mapink.</string>
|
||||
<string name="shared_string_gpx_files">GPX-filer</string>
|
||||
<string name="release_3_0">• Nyhet: Stöd för globala offline reseguider. Refererade platser är länkade till kartan. Datan kommer initialt från Wikivoyage.
|
||||
\n
|
||||
\n • Wikipedia: Nytt utseende, aktiva länkar, stöd för bilder
|
||||
\n
|
||||
\n • Open Track UI: Stöd för waypoint-grupper
|
||||
\n
|
||||
\n • Kartmarkörer: Importering av valda grupper från GPX-filer, koordinatinmatning, nytt utseende
|
||||
\n
|
||||
\n • OsmAnd Live-prenumeration stödjer nu alla OsmAnd features
|
||||
\n
|
||||
\n</string>
|
||||
</resources>
|
||||
|
|
Loading…
Reference in a new issue