Merge branch 'master' of github.com:osmandapp/Osmand
This commit is contained in:
commit
fce78cf8a5
35 changed files with 438 additions and 199 deletions
|
@ -1577,6 +1577,7 @@ public class GPXUtilities {
|
|||
serializer.startTag(null, "email");
|
||||
serializer.attribute(null, "id", idAndDomain[0]);
|
||||
serializer.attribute(null, "domain", idAndDomain[1]);
|
||||
serializer.endTag(null, "email");
|
||||
}
|
||||
}
|
||||
writeNotNullTextWithAttribute(serializer, "link", "href", author.link);
|
||||
|
|
|
@ -14,65 +14,68 @@
|
|||
android:visibility="visible"
|
||||
tools:visibility="gone">
|
||||
|
||||
<FrameLayout
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/bg_pattern_light_xml"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/welcome_image"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="end"
|
||||
tools:src="@drawable/bg_introduction_image_top" />
|
||||
android:orientation="vertical"
|
||||
android:visibility="visible">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginLeft="@dimen/dialog_welcome_padding_horizontal"
|
||||
android:layout_marginRight="@dimen/dialog_welcome_padding_horizontal"
|
||||
android:orientation="vertical"
|
||||
android:visibility="visible">
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<net.osmand.telegram.ui.views.TextViewEx
|
||||
android:id="@+id/welcome_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/dialog_welcome_title_bottom_padding"
|
||||
android:layout_marginLeft="@dimen/dialog_welcome_padding_horizontal"
|
||||
android:layout_marginTop="@dimen/dialog_welcome_title_top_margin"
|
||||
android:layout_marginRight="@dimen/dialog_welcome_padding_horizontal"
|
||||
android:layout_marginBottom="@dimen/dialog_welcome_title_bottom_padding"
|
||||
android:layout_weight="1"
|
||||
android:letterSpacing="@dimen/title_letter_spacing"
|
||||
android:text="@string/shared_string_welcome"
|
||||
android:textColor="?attr/ctrl_active_color"
|
||||
android:textSize="@dimen/title_welcome_text_size"
|
||||
app:typeface="@string/font_roboto_mono_bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/welcome_descr"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:letterSpacing="@dimen/text_description_letter_spacing"
|
||||
android:lineSpacingMultiplier="@dimen/text_description_line_spacing_multiplier"
|
||||
android:textColor="@color/app_bar_title_light"
|
||||
android:textSize="@dimen/descr_text_size"
|
||||
tools:text="@string/welcome_descr" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/welcome_continue_button"
|
||||
style="@style/DialogActionButtonActive.Welcome"
|
||||
<ImageView
|
||||
android:id="@+id/welcome_image"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginBottom="@dimen/dialog_button_bottom_padding"
|
||||
android:layout_marginLeft="@dimen/content_padding_standard"
|
||||
android:layout_marginRight="@dimen/content_padding_standard"
|
||||
android:layout_marginTop="@dimen/content_padding_standard"
|
||||
android:text="@string/shared_string_continue" />
|
||||
android:layout_gravity="end"
|
||||
tools:src="@drawable/bg_introduction_image_top" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</FrameLayout>
|
||||
<TextView
|
||||
android:id="@+id/welcome_descr"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginLeft="@dimen/dialog_welcome_padding_horizontal"
|
||||
android:layout_marginRight="@dimen/dialog_welcome_padding_horizontal"
|
||||
android:layout_weight="1"
|
||||
android:letterSpacing="@dimen/text_description_letter_spacing"
|
||||
android:lineSpacingMultiplier="@dimen/text_description_line_spacing_multiplier"
|
||||
android:textColor="@color/app_bar_title_light"
|
||||
android:textSize="@dimen/descr_text_size"
|
||||
tools:text="@string/welcome_descr" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/welcome_continue_button"
|
||||
style="@style/DialogActionButtonActive.Welcome"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginLeft="@dimen/content_padding_standard"
|
||||
android:layout_marginTop="@dimen/content_padding_standard"
|
||||
android:layout_marginRight="@dimen/content_padding_standard"
|
||||
android:layout_marginBottom="@dimen/dialog_button_bottom_padding"
|
||||
android:text="@string/shared_string_continue" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
|
|
|
@ -242,4 +242,6 @@
|
|||
<string name="min_logging_speed">Minimale Protokollierungsgeschwindigkeit</string>
|
||||
<string name="min_logging_speed_descr">Filter: keine Protokollierung unter der gewählten Geschwindigkeit</string>
|
||||
<string name="gpx_settings">GPX-Einstellungen</string>
|
||||
<string name="timeline_no_data_descr">Für den ausgewählten Tag gibt es keine Datenaufzeichnungen</string>
|
||||
<string name="timeline_no_data">Keine Daten</string>
|
||||
</resources>
|
|
@ -241,4 +241,6 @@
|
|||
<string name="min_logging_speed">Velocidad mínima de registro</string>
|
||||
<string name="min_logging_speed_descr">Filtro: sin registro por debajo de la velocidad elegida</string>
|
||||
<string name="gpx_settings">Ajustes de GPX</string>
|
||||
<string name="timeline_no_data_descr">No hemos recopilado datos para este día</string>
|
||||
<string name="timeline_no_data">Sin datos</string>
|
||||
</resources>
|
|
@ -242,4 +242,5 @@
|
|||
<string name="min_logging_speed">Minimalna szybkość rejestrowania</string>
|
||||
<string name="min_logging_speed_descr">Filtr: brak rejestrowania poniżej wybranej prędkości</string>
|
||||
<string name="gpx_settings">Ustawienia GPX</string>
|
||||
<string name="timeline_no_data_descr">Nie zgromadziliśmy danych dla wybranego dnia</string>
|
||||
</resources>
|
|
@ -11,13 +11,15 @@ public class AGpxFile implements Parcelable {
|
|||
private long modifiedTime;
|
||||
private long fileSize;
|
||||
private boolean active;
|
||||
private String color;
|
||||
private AGpxFileDetails details;
|
||||
|
||||
public AGpxFile(@NonNull String fileName, long modifiedTime, long fileSize, boolean active, @Nullable AGpxFileDetails details) {
|
||||
public AGpxFile(@NonNull String fileName, long modifiedTime, long fileSize, boolean active, String color, @Nullable AGpxFileDetails details) {
|
||||
this.fileName = fileName;
|
||||
this.modifiedTime = modifiedTime;
|
||||
this.fileSize = fileSize;
|
||||
this.active = active;
|
||||
this.color = color;
|
||||
this.details = details;
|
||||
}
|
||||
|
||||
|
@ -52,6 +54,10 @@ public class AGpxFile implements Parcelable {
|
|||
return active;
|
||||
}
|
||||
|
||||
public String getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
public AGpxFileDetails getDetails() {
|
||||
return details;
|
||||
}
|
||||
|
@ -66,6 +72,7 @@ public class AGpxFile implements Parcelable {
|
|||
if (details != null) {
|
||||
out.writeParcelable(details, flags);
|
||||
}
|
||||
out.writeString(color);
|
||||
}
|
||||
|
||||
private void readFromParcel(Parcel in) {
|
||||
|
@ -74,16 +81,16 @@ public class AGpxFile implements Parcelable {
|
|||
fileSize = in.readLong();
|
||||
active = in.readByte() != 0;
|
||||
|
||||
boolean hasDetails= in.readByte() != 0;
|
||||
boolean hasDetails = in.readByte() != 0;
|
||||
if (hasDetails) {
|
||||
details = in.readParcelable(AGpxFileDetails.class.getClassLoader());
|
||||
} else {
|
||||
details = null;
|
||||
}
|
||||
color = in.readString();
|
||||
}
|
||||
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -9,6 +9,7 @@ import android.text.SpannableStringBuilder
|
|||
import android.text.style.ForegroundColorSpan
|
||||
import net.osmand.PlatformUtil
|
||||
import net.osmand.telegram.helpers.OsmandAidlHelper
|
||||
import net.osmand.telegram.helpers.ShowLocationHelper
|
||||
import net.osmand.telegram.helpers.TelegramHelper
|
||||
import net.osmand.telegram.utils.AndroidUtils
|
||||
import net.osmand.telegram.utils.OsmandApiUtils
|
||||
|
@ -112,7 +113,7 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
private var shareChatsInfo = ConcurrentHashMap<Long, ShareChatInfo>()
|
||||
private var hiddenOnMapChats: Set<Long> = emptySet()
|
||||
private var shareDevices: Set<DeviceBot> = emptySet()
|
||||
private var liveTracksInfo: Set<LiveTrackInfo> = emptySet()
|
||||
private var liveTracksInfo = emptyList<LiveTrackInfo>()
|
||||
|
||||
var sharingStatusChanges = ConcurrentLinkedQueue<SharingStatus>()
|
||||
|
||||
|
@ -177,6 +178,9 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
|
||||
fun getLiveTracksInfo() = liveTracksInfo
|
||||
|
||||
fun getLiveTrackInfo(userId: Int, chatId: Long, deviceName: String) =
|
||||
liveTracksInfo.firstOrNull { it.userId == userId && it.chatId == chatId && it.deviceName == deviceName }
|
||||
|
||||
fun isShowingChatOnMap(chatId: Long) = !hiddenOnMapChats.contains(chatId)
|
||||
|
||||
fun isLiveTrackEnabled(userId: Int, chatId: Long, deviceName: String) =
|
||||
|
@ -185,11 +189,12 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
fun updateLiveTrack(userId: Int, chatId: Long, deviceName: String, enable: Boolean) {
|
||||
val tracksInfo = liveTracksInfo.toMutableList()
|
||||
if (enable) {
|
||||
tracksInfo.add(LiveTrackInfo(userId, chatId, deviceName))
|
||||
val colorIndex = if (tracksInfo.size > 0) (tracksInfo.last().colorIndex + 1) % ShowLocationHelper.GPX_COLORS_COUNT else 0
|
||||
tracksInfo.add(LiveTrackInfo(userId, chatId, deviceName, colorIndex))
|
||||
} else {
|
||||
tracksInfo.remove(LiveTrackInfo(userId, chatId, deviceName))
|
||||
tracksInfo.removeAll { it.userId == userId && it.chatId == chatId && it.deviceName == deviceName }
|
||||
}
|
||||
liveTracksInfo = tracksInfo.toHashSet()
|
||||
liveTracksInfo = tracksInfo.toList()
|
||||
}
|
||||
|
||||
fun removeNonexistingChats(presentChatIds: List<Long>) {
|
||||
|
@ -747,6 +752,7 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
obj.put(LiveTrackInfo.USER_ID, liveTrackInfo.userId)
|
||||
obj.put(LiveTrackInfo.CHAT_ID, liveTrackInfo.chatId)
|
||||
obj.put(LiveTrackInfo.DEVICE_NAME, liveTrackInfo.deviceName)
|
||||
obj.put(LiveTrackInfo.COLOR_INDEX, liveTrackInfo.colorIndex)
|
||||
put(obj)
|
||||
}
|
||||
}
|
||||
|
@ -863,10 +869,11 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
val userId = obj.optInt(LiveTrackInfo.USER_ID)
|
||||
val chatId = obj.optLong(LiveTrackInfo.CHAT_ID)
|
||||
val deviceName = obj.optString(LiveTrackInfo.DEVICE_NAME)
|
||||
val colorIndex = obj.optInt(LiveTrackInfo.COLOR_INDEX)
|
||||
|
||||
list.add(LiveTrackInfo(userId, chatId, deviceName))
|
||||
list.add(LiveTrackInfo(userId, chatId, deviceName, colorIndex))
|
||||
}
|
||||
liveTracksInfo = list.toHashSet()
|
||||
liveTracksInfo = list.toList()
|
||||
}
|
||||
|
||||
private fun parseShareDevices(json: String) {
|
||||
|
@ -1192,12 +1199,13 @@ class TelegramSettings(private val app: TelegramApplication) {
|
|||
}
|
||||
}
|
||||
|
||||
data class LiveTrackInfo(val userId: Int, val chatId: Long, val deviceName: String) {
|
||||
data class LiveTrackInfo(val userId: Int, val chatId: Long, val deviceName: String, val colorIndex: Int) {
|
||||
companion object {
|
||||
|
||||
internal const val USER_ID = "userId"
|
||||
internal const val CHAT_ID = "chatId"
|
||||
internal const val DEVICE_NAME = "deviceName"
|
||||
internal const val COLOR_INDEX = "colorIndex"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ import net.osmand.telegram.TelegramApplication
|
|||
import net.osmand.telegram.utils.OsmandLocationUtils
|
||||
import net.osmand.util.MapUtils
|
||||
import org.drinkless.td.libcore.telegram.TdApi
|
||||
import java.util.concurrent.ConcurrentLinkedQueue
|
||||
|
||||
class LocationMessages(val app: TelegramApplication) {
|
||||
|
||||
|
@ -18,7 +19,7 @@ class LocationMessages(val app: TelegramApplication) {
|
|||
|
||||
private var bufferedMessages = emptyList<BufferMessage>()
|
||||
|
||||
private var lastLocationPoints = mutableListOf<LocationMessage>()
|
||||
private var lastLocationPoints = ConcurrentLinkedQueue<LocationMessage>()
|
||||
|
||||
private val dbHelper: SQLiteHelper
|
||||
|
||||
|
@ -69,7 +70,7 @@ class LocationMessages(val app: TelegramApplication) {
|
|||
}
|
||||
|
||||
fun getMessagesForUserInChat(userId: Int, chatId: Long, deviceName: String, start: Long, end: Long): List<LocationMessage> {
|
||||
return dbHelper.getMessagesForUserInChat(userId, chatId,deviceName, start, end)
|
||||
return dbHelper.getMessagesForUserInChat(userId, chatId, deviceName, start, end)
|
||||
}
|
||||
|
||||
fun getMessagesForUser(userId: Int, start: Long, end: Long): List<LocationMessage> {
|
||||
|
@ -144,7 +145,7 @@ class LocationMessages(val app: TelegramApplication) {
|
|||
}
|
||||
|
||||
private fun readLastMessages() {
|
||||
this.lastLocationPoints = dbHelper.getLastMessages()
|
||||
this.lastLocationPoints.addAll(dbHelper.getLastMessages())
|
||||
}
|
||||
|
||||
private class SQLiteHelper(context: Context) :
|
||||
|
|
|
@ -39,6 +39,14 @@ class ShowLocationHelper(private val app: TelegramApplication) {
|
|||
const val DIRECTION_ICON_ID = "ic_action_start_navigation"
|
||||
|
||||
const val LIVE_TRACKS_DIR = "livetracks"
|
||||
|
||||
const val GPX_COLORS_COUNT = 10
|
||||
|
||||
val GPX_COLORS = arrayOf(
|
||||
"red", "orange", "lightblue", "blue", "purple",
|
||||
"translucent_red", "translucent_orange", "translucent_lightblue",
|
||||
"translucent_blue", "translucent_purple"
|
||||
)
|
||||
}
|
||||
|
||||
private val telegramHelper = app.telegramHelper
|
||||
|
@ -264,14 +272,15 @@ class ShowLocationHelper(private val app: TelegramApplication) {
|
|||
|
||||
val importedGpxFiles = osmandAidlHelper.importedGpxFiles
|
||||
gpxFiles.forEach {
|
||||
if (!isGpxAlreadyImported(importedGpxFiles, it)) {
|
||||
if (!checkAlreadyImportedGpx(importedGpxFiles, it)) {
|
||||
val listener = object : OsmandLocationUtils.SaveGpxListener {
|
||||
|
||||
override fun onSavingGpxFinish(path: String) {
|
||||
log.debug("LiveTracks onSavingGpxFinish $path time ${startTime - System.currentTimeMillis()}")
|
||||
val uri = AndroidUtils.getUriForFile(app, File(path))
|
||||
val destinationPath = "$LIVE_TRACKS_DIR/${it.metadata.name}.gpx"
|
||||
osmandAidlHelper.importGpxFromUri(uri, destinationPath, GPXUtilities.GPXColor.AQUA.name, true)
|
||||
val color = it.extensionsToRead["color"] ?: ""
|
||||
osmandAidlHelper.importGpxFromUri(uri, destinationPath, color, true)
|
||||
log.debug("LiveTracks importGpxFromUri finish time ${startTime - System.currentTimeMillis()}")
|
||||
}
|
||||
|
||||
|
@ -285,12 +294,16 @@ class ShowLocationHelper(private val app: TelegramApplication) {
|
|||
}
|
||||
}
|
||||
|
||||
private fun isGpxAlreadyImported(importedGpxFiles: List<AGpxFile>?, gpxFile: GPXUtilities.GPXFile): Boolean {
|
||||
private fun checkAlreadyImportedGpx(importedGpxFiles: List<AGpxFile>?, gpxFile: GPXUtilities.GPXFile): Boolean {
|
||||
if (importedGpxFiles != null && importedGpxFiles.isNotEmpty()) {
|
||||
val name = "${gpxFile.metadata.name}.gpx"
|
||||
val aGpxFile = importedGpxFiles.firstOrNull { it.fileName == name }
|
||||
|
||||
if (aGpxFile != null) {
|
||||
val color = aGpxFile.color
|
||||
if (!color.isNullOrEmpty()) {
|
||||
gpxFile.extensionsToWrite["color"] = color
|
||||
}
|
||||
val startTimeImported = aGpxFile.details?.startTime
|
||||
val endTimeImported = aGpxFile.details?.endTime
|
||||
if (startTimeImported != null && endTimeImported != null) {
|
||||
|
|
|
@ -356,7 +356,9 @@ class MainActivity : AppCompatActivity(), TelegramListener, ActionButtonsListene
|
|||
}
|
||||
|
||||
fun logoutTelegram(silent: Boolean = false) {
|
||||
if (telegramHelper.getTelegramAuthorizationState() == TelegramHelper.TelegramAuthorizationState.READY) {
|
||||
if (telegramHelper.getTelegramAuthorizationState() == TelegramAuthorizationState.READY) {
|
||||
app.stopMonitoring()
|
||||
app.stopSharingLocation()
|
||||
if (app.isInternetConnectionAvailable) {
|
||||
app.locationMessages.clearBufferedMessages()
|
||||
settings.clear()
|
||||
|
|
|
@ -184,7 +184,9 @@ class MyLocationTabFragment : Fragment(), TelegramListener {
|
|||
setBackgroundDrawable(searchBoxBg)
|
||||
}
|
||||
findViewById<View>(R.id.search_button).setOnClickListener {
|
||||
activity.supportFragmentManager?.also { SearchDialogFragment.showInstance(it, this@MyLocationTabFragment) }
|
||||
activity.supportFragmentManager?.also {
|
||||
SearchDialogFragment.showInstance(it, this@MyLocationTabFragment, selectedChats, selectedUsers)
|
||||
}
|
||||
}
|
||||
findViewById<ImageView>(R.id.search_icon)
|
||||
.setImageDrawable(app.uiUtils.getThemedIcon(R.drawable.ic_action_search_dark))
|
||||
|
@ -256,15 +258,12 @@ class MyLocationTabFragment : Fragment(), TelegramListener {
|
|||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
super.onActivityResult(requestCode, resultCode, data)
|
||||
when (requestCode) {
|
||||
SetTimeDialogFragment.LOCATION_SHARED_REQUEST_CODE -> {
|
||||
SetTimeDialogFragment.LOCATION_SHARED_REQUEST_CODE, SearchDialogFragment.SEARCH_ITEMS_REQUEST_CODE -> {
|
||||
sharingMode = settings.hasAnyChatToShareLocation()
|
||||
clearSelection()
|
||||
updateContent()
|
||||
if (sharingMode && !settings.batteryOptimisationAsked && Build.VERSION.SDK_INT >= 26) {
|
||||
fragmentManager?.also { fm ->
|
||||
BatteryOptimizationBottomSheet.showInstance(fm)
|
||||
settings.batteryOptimisationAsked = true
|
||||
}
|
||||
if (resultCode == SetTimeDialogFragment.LOCATION_SHARED_REQUEST_CODE) {
|
||||
askBatteryOptimisation()
|
||||
}
|
||||
}
|
||||
DisableSharingBottomSheet.SHARING_DISABLED_REQUEST_CODE -> {
|
||||
|
@ -337,6 +336,15 @@ class MyLocationTabFragment : Fragment(), TelegramListener {
|
|||
}
|
||||
}
|
||||
|
||||
private fun askBatteryOptimisation() {
|
||||
if (sharingMode && !settings.batteryOptimisationAsked && Build.VERSION.SDK_INT >= 26) {
|
||||
fragmentManager?.also { fm ->
|
||||
BatteryOptimizationBottomSheet.showInstance(fm)
|
||||
settings.batteryOptimisationAsked = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateCurrentUserPhoto() {
|
||||
TelegramUiHelper.setupPhoto(
|
||||
app,
|
||||
|
|
|
@ -64,6 +64,8 @@ class SearchDialogFragment : BaseDialogFragment(), TelegramHelper.TelegramSearch
|
|||
parent: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View {
|
||||
readFromBundle(savedInstanceState ?: arguments)
|
||||
|
||||
val mainView = inflater.inflate(R.layout.fragment_search_dialog, parent)
|
||||
|
||||
mainView.findViewById<Toolbar>(R.id.toolbar).apply {
|
||||
|
@ -168,6 +170,8 @@ class SearchDialogFragment : BaseDialogFragment(), TelegramHelper.TelegramSearch
|
|||
startLocationUpdate()
|
||||
searchEditText.requestFocus()
|
||||
AndroidUtils.softKeyboardDelayed(searchEditText)
|
||||
updateList()
|
||||
switchButtonsVisibility(selectedChats.isNotEmpty() || selectedUsers.isNotEmpty())
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
|
@ -334,6 +338,12 @@ class SearchDialogFragment : BaseDialogFragment(), TelegramHelper.TelegramSearch
|
|||
}
|
||||
}
|
||||
|
||||
override fun onSaveInstanceState(outState: Bundle) {
|
||||
super.onSaveInstanceState(outState)
|
||||
outState.putLongArray(SELECTED_CHATS_KEY, selectedChats.toLongArray())
|
||||
outState.putLongArray(SELECTED_USERS_KEY, selectedUsers.toLongArray())
|
||||
}
|
||||
|
||||
inner class SearchAdapter : RecyclerView.Adapter<SearchAdapter.ChatViewHolder>() {
|
||||
|
||||
var items = mutableListOf<TdApi.Object>()
|
||||
|
@ -500,6 +510,17 @@ class SearchDialogFragment : BaseDialogFragment(), TelegramHelper.TelegramSearch
|
|||
}
|
||||
}
|
||||
|
||||
private fun readFromBundle(bundle: Bundle?) {
|
||||
selectedChats.clear()
|
||||
selectedUsers.clear()
|
||||
bundle?.getLongArray(SELECTED_CHATS_KEY)?.also {
|
||||
selectedChats.addAll(it.toHashSet())
|
||||
}
|
||||
bundle?.getLongArray(SELECTED_USERS_KEY)?.also {
|
||||
selectedUsers.addAll(it.toHashSet())
|
||||
}
|
||||
}
|
||||
|
||||
private fun onPrimaryBtnClick() {
|
||||
if (selectedChats.isNotEmpty() || selectedUsers.isNotEmpty()) {
|
||||
fragmentManager?.also {
|
||||
|
@ -510,9 +531,11 @@ class SearchDialogFragment : BaseDialogFragment(), TelegramHelper.TelegramSearch
|
|||
|
||||
private fun onSecondaryBtnClick() {
|
||||
clearSelection()
|
||||
adapter.notifyDataSetChanged()
|
||||
adapter.notifyDataSetChanged()
|
||||
updateList()
|
||||
switchButtonsVisibility(false)
|
||||
targetFragment?.also {
|
||||
it.onActivityResult(targetRequestCode, CLEAR_SELECTED_ITEMS_REQUEST_CODE, null)
|
||||
}
|
||||
}
|
||||
|
||||
private fun clearSelection() {
|
||||
|
@ -530,12 +553,24 @@ class SearchDialogFragment : BaseDialogFragment(), TelegramHelper.TelegramSearch
|
|||
companion object {
|
||||
|
||||
const val TAG = "SearchDialogFragment"
|
||||
private const val SELECTED_CHATS_KEY = "selected_chats_key"
|
||||
private const val SELECTED_USERS_KEY = "selected_users_key"
|
||||
const val SEARCH_ITEMS_REQUEST_CODE = 3
|
||||
const val CLEAR_SELECTED_ITEMS_REQUEST_CODE = 4
|
||||
|
||||
fun showInstance(fm: FragmentManager, target: Fragment?): Boolean {
|
||||
fun showInstance(fm: FragmentManager, target: Fragment?, selectedChats: Set<Long>, selectedUsers: Set<Long>): Boolean {
|
||||
return try {
|
||||
SearchDialogFragment().apply {
|
||||
arguments = Bundle().apply {
|
||||
if (selectedChats.isNotEmpty()) {
|
||||
putLongArray(SELECTED_CHATS_KEY, selectedChats.toLongArray())
|
||||
}
|
||||
if (selectedUsers.isNotEmpty()) {
|
||||
putLongArray(SELECTED_USERS_KEY, selectedUsers.toLongArray())
|
||||
}
|
||||
}
|
||||
if (target != null) {
|
||||
setTargetFragment(target, SetTimeDialogFragment.LOCATION_SHARED_REQUEST_CODE)
|
||||
setTargetFragment(target, SEARCH_ITEMS_REQUEST_CODE)
|
||||
}
|
||||
show(fm, TAG)
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import net.osmand.telegram.TelegramApplication
|
|||
import net.osmand.telegram.helpers.LocationMessages
|
||||
import net.osmand.telegram.helpers.LocationMessages.BufferMessage
|
||||
import net.osmand.telegram.helpers.LocationMessages.LocationMessage
|
||||
import net.osmand.telegram.helpers.ShowLocationHelper
|
||||
import net.osmand.telegram.helpers.TelegramHelper
|
||||
import net.osmand.telegram.helpers.TelegramUiHelper
|
||||
import net.osmand.util.GeoPointParserUtil
|
||||
|
@ -420,6 +421,7 @@ object OsmandLocationUtils {
|
|||
var previousTime: Long = -1
|
||||
var previousChatId: Long = -1
|
||||
var previousUserId = -1
|
||||
var previousDeviceName = ""
|
||||
var segment: GPXUtilities.TrkSegment? = null
|
||||
var track: GPXUtilities.Track? = null
|
||||
var gpx: GPXUtilities.GPXFile? = null
|
||||
|
@ -428,15 +430,16 @@ object OsmandLocationUtils {
|
|||
items.forEach {
|
||||
val userId = it.userId
|
||||
val chatId = it.chatId
|
||||
val deviceName = it.deviceName
|
||||
val time = it.time
|
||||
if (previousTime >= time) {
|
||||
return@forEach
|
||||
}
|
||||
countedLocations++
|
||||
if (previousUserId != userId || (newGpxPerChat && previousChatId != chatId)) {
|
||||
if (previousUserId != userId || previousDeviceName != deviceName || (newGpxPerChat && previousChatId != chatId)) {
|
||||
gpx = GPXUtilities.GPXFile(app.packageName).apply {
|
||||
metadata = GPXUtilities.Metadata().apply {
|
||||
name = getGpxFileNameForUserId(app, userId, time)
|
||||
name = getGpxFileNameForUserId(app, userId, chatId, time)
|
||||
}
|
||||
val colorIndex = app.settings.getLiveTrackInfo(userId, chatId, deviceName)?.colorIndex ?: -1
|
||||
if (colorIndex != -1) {
|
||||
extensionsToWrite["color"] = ShowLocationHelper.GPX_COLORS[colorIndex]
|
||||
}
|
||||
}
|
||||
previousTime = 0
|
||||
|
@ -444,6 +447,10 @@ object OsmandLocationUtils {
|
|||
segment = null
|
||||
dataTracks.add(gpx!!)
|
||||
}
|
||||
if (previousTime >= time) {
|
||||
return@forEach
|
||||
}
|
||||
countedLocations++
|
||||
val pt = GPXUtilities.WptPt()
|
||||
pt.lat = it.lat
|
||||
pt.lon = it.lon
|
||||
|
@ -472,6 +479,7 @@ object OsmandLocationUtils {
|
|||
previousTime = time
|
||||
previousUserId = userId
|
||||
previousChatId = chatId
|
||||
previousDeviceName = deviceName
|
||||
}
|
||||
|
||||
return dataTracks
|
||||
|
@ -485,15 +493,15 @@ object OsmandLocationUtils {
|
|||
}
|
||||
}
|
||||
|
||||
fun getGpxFileNameForUserId(app: TelegramApplication, userId: Int, time: Long): String {
|
||||
fun getGpxFileNameForUserId(app: TelegramApplication, userId: Int, chatId: Long, time: Long): String {
|
||||
var userName = userId.toString()
|
||||
try {
|
||||
val user = app.telegramHelper.getUser(userId)
|
||||
if (user != null) {
|
||||
userName = TelegramUiHelper.getUserName(user)
|
||||
}
|
||||
} catch (e: NumberFormatException) {
|
||||
//ignore
|
||||
val user = app.telegramHelper.getUser(userId)
|
||||
if (user != null) {
|
||||
userName = TelegramUiHelper.getUserName(user)
|
||||
}
|
||||
val chat = app.telegramHelper.getChat(chatId)
|
||||
if (chat != null && app.telegramHelper.isGroup(chat)) {
|
||||
return "${userName}_${chat.title}_${UTC_DATE_FORMAT.format(Date(time))}"
|
||||
}
|
||||
return "${userName}_${UTC_DATE_FORMAT.format(Date(time))}"
|
||||
}
|
||||
|
|
|
@ -1657,7 +1657,7 @@
|
|||
<string name="add_opening_hours">Дадаць гадзіны працы</string>
|
||||
<string name="poi_dialog_poi_type">Тып POI</string>
|
||||
<string name="please_specify_poi_type">Калі ласка, вызначце тып POI.</string>
|
||||
<string name="av_locations_descr">GPX-файл з мецазнаходжаннем заўваг.</string>
|
||||
<string name="av_locations_descr">GPX-файл з мясцінамі.</string>
|
||||
<string name="av_locations">Месцазнаходжанні</string>
|
||||
<string name="number_of_rows_in_dash">Колькасць радкоў на галоўным экране %1$s</string>
|
||||
<string name="poi_action_delete">выдаліць</string>
|
||||
|
@ -1866,7 +1866,7 @@
|
|||
<string name="shared_string_email_address">Адрас электроннай пошты</string>
|
||||
<string name="rendering_attr_hideUnderground_name">Падземныя аб\'екты</string>
|
||||
<string name="data_is_not_available">Даныя недаступныя</string>
|
||||
<string name="shared_string_read_more">Чытаць далей</string>
|
||||
<string name="shared_string_read_more">Падрабязней</string>
|
||||
<string name="clear_updates_proposition_message">Выдаліць спампаваныя абнаўленні і вярнуцца да першапачатковай рэдакцыі мапы</string>
|
||||
<string name="add_time_span">Дадаць часавы прамежак</string>
|
||||
<string name="item_removed">Элемент выдалены</string>
|
||||
|
@ -2036,7 +2036,7 @@
|
|||
<string name="osmand_plus_banner_desc">Неабмежаваная колькасць спамоўванняў мапаў, абнаўленняў і ўбудова Wikipedia.</string>
|
||||
<string name="si_mi_meters">Мілі/метры</string>
|
||||
<string name="osm_live_payment_desc">Плата за падпіску спаганяецца штомесяц. Скасаваць яе на Google Play можна у любы момант.</string>
|
||||
<string name="donation_to_osm">Ахвяраванне OpenStreetMap супольнасці</string>
|
||||
<string name="donation_to_osm">Ахвяраванне OpenStreetMap-супольнасці</string>
|
||||
<string name="donation_to_osm_desc">Частка вашага ахвяравання накіроўваецца OSM карыстальнікам, якія адпраўляюць змены ў OpenStreetMap. Кошт падпіскі застаецца тым жа самым.</string>
|
||||
<string name="osm_live_subscription_desc">Падпіска дазваляе атрымліваць штогадзіныя, штодзённыя, штотыднёвыя абнаўленні і неабмежаваную колькасць спампоўванняў для ўсіх мапаў па ўсім свеце.</string>
|
||||
<string name="driving_region_australia">Аўстралія</string>
|
||||
|
@ -2732,7 +2732,7 @@
|
|||
<string name="purchase_unlim_title">Купіць - %1$s</string>
|
||||
<string name="purchase_subscription_title">Папісацца - %1$s</string>
|
||||
<string name="wikivoyage_offline">Аўтаномны Wikivoyage</string>
|
||||
<string name="unlimited_downloads">Неабмежаваныя спампоўванні</string>
|
||||
<string name="unlimited_downloads">Неабмежаваныя спампоўкі</string>
|
||||
<string name="wikipedia_offline">Аўтаномная Вікіпедыя</string>
|
||||
<string name="unlock_all_features">Разблакаваць усе функцыі OsmAnd</string>
|
||||
<string name="purchase_dialog_title">Абярыце план</string>
|
||||
|
@ -3046,4 +3046,55 @@
|
|||
<string name="public_transport_type">Тып транспарту</string>
|
||||
<string name="searching_gps">Пошук GPS</string>
|
||||
<string name="coordinates_widget">Віджэт каардынат</string>
|
||||
<string name="app_mode_offroad">Бездарожжа</string>
|
||||
<string name="edit_profile_setup_title">Наладзіць профіль</string>
|
||||
<string name="edit_profile_setup_subtitle">У кожнага профіля свае налады</string>
|
||||
<string name="turn_screen_on_time_descr">Вызначце час, цягам якога экран уключыцца.</string>
|
||||
<string name="turn_screen_on_sensor">Выкарыстоўваць датчык адлегласці</string>
|
||||
<string name="turn_screen_on_sensor_descr">Правядзіце рукой па верхняй частцы экрана, каб уключыць яго падчас навігацыі.</string>
|
||||
<string name="rendering_attr_winter_road_name">Зімовая дарога</string>
|
||||
<string name="rendering_attr_ice_road_name">Ледзяная дарога</string>
|
||||
<string name="routeInfo_winter_ice_road_name">Зімовыя і ледзяныя дарогі</string>
|
||||
<string name="rendering_attr_tracktype_grade1_name">Цвёрдае</string>
|
||||
<string name="rendering_attr_tracktype_grade2_name">Амаль цвёрдае</string>
|
||||
<string name="rendering_attr_tracktype_grade3_name">Змяшанае</string>
|
||||
<string name="rendering_attr_tracktype_grade4_name">Амаль мяккае</string>
|
||||
<string name="rendering_attr_tracktype_grade5_name">Мяккае</string>
|
||||
<string name="routeInfo_tracktype_name">Трываласць паверхні</string>
|
||||
<string name="shared_string_file_is_saved">%s захаваны</string>
|
||||
<string name="shared_string_open_track">Адкрыць след</string>
|
||||
<string name="shared_string_track_is_saved">След %s захаваны</string>
|
||||
<string name="app_mode_ufo">НЛА</string>
|
||||
<string name="precision_hdop_and_vdop">Дакладнасць па гарызанталі: %1$s, па вертыкалі: %2$s</string>
|
||||
<string name="precision_hdop">Дакладнасць па гарызанталі: %s</string>
|
||||
<string name="edit_profile_setup_map_subtitle">Абярыце прадвызначаныя параметры мапы для профіля</string>
|
||||
<string name="edit_profile_screen_options_subtitle">Абярыце прадвызначаныя параметры экрана для профіля</string>
|
||||
<string name="edit_profile_nav_settings_subtitle">Абярыце прадвызначаныя налады навігацыі для профіля</string>
|
||||
<string name="routing_attr_max_num_changes_description">Вызначце максімальную колькасць змен</string>
|
||||
<string name="routing_attr_max_num_changes_name">Колькасць змен</string>
|
||||
<string name="rate_dialog_descr">Калі ласка, выдаткуйце нам 30 секунд, пакінце водгук і ацаніце нашу працу на Google Play.</string>
|
||||
<string name="button_rate">Рэйтынг</string>
|
||||
<string name="shared_string_privacy_policy">Палітыка прыватнасці</string>
|
||||
<string name="help_us_make_osmand_better">Дапамажыце нам зрабіць OsmAnd лепш!</string>
|
||||
<string name="choose_data_to_share">Абярыце тып даных, якімі хочаце падзяліцца:</string>
|
||||
<string name="downloaded_maps">Спампаваныя мапы</string>
|
||||
<string name="visited_screens">Наведаныя экраны</string>
|
||||
<string name="collected_data_descr">Вызначце якімі данымі вы дазволіце OsmAnd дзяліцца.</string>
|
||||
<string name="process_downloading_service">Служба спампоўванняў OsmAnd</string>
|
||||
<string name="shared_string_color_magenta">Пурпуровы</string>
|
||||
<string name="shared_string_icon">Значок</string>
|
||||
<string name="collected_data">Сабраныя даныя</string>
|
||||
<string name="press_again_to_change_the_map_orientation">Націсніце зноў, каб змяніць арыентацыю мапы</string>
|
||||
<string name="shared_string_min_speed">Мінімальная хуткасць</string>
|
||||
<string name="shared_string_max_speed">Максімальная хуткасць</string>
|
||||
<string name="default_speed_setting_title">Прадвызначаная хуткасць</string>
|
||||
<string name="default_speed_setting_descr">Змяніць налады прадвызначанай хуткасці</string>
|
||||
<string name="minmax_speed_dialog_title">Вызначыць мінімальную / максімальную хуткасць</string>
|
||||
<string name="default_speed_dialog_msg">Выкарыстоўваецца для разліку прыблізнага часу прыбыцця</string>
|
||||
<string name="new_profile">Новы профіль</string>
|
||||
<string name="shared_string_crash">Крушэнне</string>
|
||||
<string name="last_launch_crashed">Апошні запуск OsmAnd завяршыўся хібай. Калі ласка, адпраўце паведамленне памылкі, каб палепшыць дадатак.</string>
|
||||
<string name="app_mode_personal_transporter">Асабісты транспарт</string>
|
||||
<string name="app_mode_monowheel">Монакола</string>
|
||||
<string name="app_mode_scooter">Скутар</string>
|
||||
</resources>
|
|
@ -2875,4 +2875,6 @@
|
|||
<string name="poi_atm">Caixer automàtic</string>
|
||||
<string name="poi_park_ride">Aparcament d\'enllaç</string>
|
||||
<string name="poi_rtsa_scale_filter">Categoria de dificultat</string>
|
||||
<string name="poi_bulk_purchase">Venda a granel</string>
|
||||
<string name="poi_denotation">Denotació</string>
|
||||
</resources>
|
|
@ -1834,7 +1834,7 @@ Proporcia memoro %4$s MB (limito de Android %5$s MB, Dalvik %6$s MB).</string>
|
|||
<string name="poi_error_unexpected_template">Ne povas fari agon {0}.</string>
|
||||
<string name="poi_error_io_error_template">Eraro de en/eligo okazis dum la agado {0}.</string>
|
||||
<string name="poi_error_info_not_loaded">Ne povas legi informojn pri nodo</string>
|
||||
<string name="poi_dialog_opening_hours">Malferma je</string>
|
||||
<string name="poi_dialog_opening_hours">Malfermita je</string>
|
||||
<string name="poi_dialog_comment">Komento</string>
|
||||
<string name="poi_dialog_reopen">Remalfermi</string>
|
||||
<string name="poi_dialog_comment_default">Ŝanĝi interesejon</string>
|
||||
|
@ -1961,8 +1961,8 @@ Proporcia memoro %4$s MB (limito de Android %5$s MB, Dalvik %6$s MB).</string>
|
|||
<string name="coords_format">Koordinat-formo</string>
|
||||
<string name="coords_format_descr">Formo de geografiaj koordinatoj.</string>
|
||||
<string name="storage_directory_card">Memorkarto</string>
|
||||
<string name="shared_string_is_open">Malfermaj nun</string>
|
||||
<string name="shared_string_is_open_24_7">Malfermaj 24/7</string>
|
||||
<string name="shared_string_is_open">Malfermitaj nun</string>
|
||||
<string name="shared_string_is_open_24_7">Malfermita 24/7</string>
|
||||
<string name="map_widget_search">Serĉi</string>
|
||||
<string name="shared_string_from">el</string>
|
||||
<string name="city_type_district">Kvartalo</string>
|
||||
|
|
|
@ -174,8 +174,8 @@
|
|||
<string name="poi_fuel_octane_80">80 octanos</string>
|
||||
<string name="poi_fuel_octane_91">91 octanos</string>
|
||||
<string name="poi_fuel_octane_92">92 octanos</string>
|
||||
<string name="poi_fuel_octane_95">Nafta súper (grado 2);Energy 5000;Super+</string>
|
||||
<string name="poi_fuel_octane_98">Nafta premium (grado 3);Infinia;V-Power Nitro+;Energy 8000;Podium;SL Magnum</string>
|
||||
<string name="poi_fuel_octane_95">Nafta súper (grado 2);Energy 5000;Super+;95 octanos</string>
|
||||
<string name="poi_fuel_octane_98">Nafta premium (grado 3);Infinia;V-Power Nitro+;Energy 8000;Podium;SL Magnum;98 octanos</string>
|
||||
<string name="poi_fuel_octane_100">100 octanos</string>
|
||||
<string name="poi_fuel_cng">GNC</string>
|
||||
<string name="poi_fuel_1_25">Combustible 1:25</string>
|
||||
|
|
|
@ -2856,7 +2856,7 @@ Lon %2$s</string>
|
|||
<string name="markers_remove_dialog_msg">¿Borrar marcador del mapa «%s»\?</string>
|
||||
<string name="edit_map_marker">Editar marcador del mapa</string>
|
||||
<string name="third_party_application">Aplicación de terceros</string>
|
||||
<string name="osm_live_plan_pricing">Plan y Precios</string>
|
||||
<string name="osm_live_plan_pricing">Planes y Precios</string>
|
||||
<string name="osm_live_payment_monthly_title">Mensual</string>
|
||||
<string name="osm_live_payment_3_months_title">Trimestral</string>
|
||||
<string name="osm_live_payment_annual_title">Anual</string>
|
||||
|
@ -3053,10 +3053,10 @@ Lon %2$s</string>
|
|||
<string name="downloaded_maps">Mapas descargados</string>
|
||||
<string name="visited_screens">Pantallas visitadas</string>
|
||||
<string name="colleted_data">Datos recopilados</string>
|
||||
<string name="collected_data_descr">Define qué datos permite que OsmAnd comparta.</string>
|
||||
<string name="collected_data_descr">Define qué datos quieres que OsmAnd comparta.</string>
|
||||
<string name="downloaded_maps_collect_descr">Nos ayuda a entender qué mapas de regiones y países son los más populares.</string>
|
||||
<string name="visited_screens_collect_descr">Nos ayuda a entender qué características de OsmAnd son las más populares.</string>
|
||||
<string name="privacy_and_security_change_descr">Al pulsar en «Permitir», se entiende que está de acuerdo con nuestra %1$s</string>
|
||||
<string name="privacy_and_security_change_descr">Al pulsar en «Permitir», aceptas nuestras %1$s</string>
|
||||
<string name="settings_privacy_and_security">Privacidad y seguridad</string>
|
||||
<string name="settings_privacy_and_security_desc">Elegir los datos a compartir con nosotros</string>
|
||||
<string name="shared_string_no_thank_you">No, gracias</string>
|
||||
|
@ -3184,11 +3184,11 @@ Lon %2$s</string>
|
|||
<string name="turn_screen_on_time_descr">Define el tiempo durante el cual se encenderá la pantalla.</string>
|
||||
<string name="turn_screen_on_sensor">Usar sensor de proximidad</string>
|
||||
<string name="turn_screen_on_sensor_descr">Mueve la mano sobre la parte superior de la pantalla para encenderla mientras navegas.</string>
|
||||
<string name="rendering_attr_highway_class_track_grade1_name">Grado 1 (pavimentado)</string>
|
||||
<string name="rendering_attr_highway_class_track_grade2_name">Grado 2 (de áridos o zahorra)</string>
|
||||
<string name="rendering_attr_highway_class_track_grade3_name">Grado 3 (de áridos con vegetación entre rodaduras)</string>
|
||||
<string name="rendering_attr_highway_class_track_grade4_name">Grado 4 (de tierra con vegetación entre rodaduras)</string>
|
||||
<string name="rendering_attr_highway_class_track_grade5_name">Grado 5 (con rodaduras apenas visibles entre la vegetación)</string>
|
||||
<string name="rendering_attr_highway_class_track_grade1_name">Grado 1</string>
|
||||
<string name="rendering_attr_highway_class_track_grade2_name">Grado 2</string>
|
||||
<string name="rendering_attr_highway_class_track_grade3_name">Grado 3</string>
|
||||
<string name="rendering_attr_highway_class_track_grade4_name">Grado 4</string>
|
||||
<string name="rendering_attr_highway_class_track_grade5_name">Grado 5</string>
|
||||
<string name="external_input_device">Dispositivos de entrada externos</string>
|
||||
<string name="external_input_device_descr">Elige un dispositivo como un teclado genérico o WunderLINQ para los controles externos.</string>
|
||||
<string name="sett_no_ext_input">Ninguno</string>
|
||||
|
@ -3200,10 +3200,10 @@ Lon %2$s</string>
|
|||
<string name="rendering_attr_ice_road_name">Camino de hielo</string>
|
||||
<string name="routeInfo_winter_ice_road_name">Caminos de invierno y de hielo</string>
|
||||
<string name="rendering_attr_tracktype_grade1_name">Sólido (pavimentado)</string>
|
||||
<string name="rendering_attr_tracktype_grade2_name">Sólido (sin pavimentar)</string>
|
||||
<string name="rendering_attr_tracktype_grade3_name">Mayormente sólido</string>
|
||||
<string name="rendering_attr_tracktype_grade4_name">Mayormente suave</string>
|
||||
<string name="rendering_attr_tracktype_grade5_name">Suave</string>
|
||||
<string name="rendering_attr_tracktype_grade2_name">Sólido (sin pavimento)</string>
|
||||
<string name="rendering_attr_tracktype_grade3_name">Mayormente sólido (de áridos con vegetación entre rodaduras)</string>
|
||||
<string name="rendering_attr_tracktype_grade4_name">Mayormente suave (de tierra con vegetación entre rodaduras)</string>
|
||||
<string name="rendering_attr_tracktype_grade5_name">Suave (con rodaduras apenas visibles entre la vegetación)</string>
|
||||
<string name="routeInfo_tracktype_name">Firmeza superficial</string>
|
||||
<string name="shared_string_file_is_saved">Se ha guardado «%s»</string>
|
||||
<string name="shared_string_open_track">Abrir traza</string>
|
||||
|
|
|
@ -2857,7 +2857,7 @@ Lon %2$s</string>
|
|||
<string name="markers_remove_dialog_msg">¿Borrar marcador del mapa «%s»\?</string>
|
||||
<string name="edit_map_marker">Editar marcador del mapa</string>
|
||||
<string name="third_party_application">Aplicación de terceros</string>
|
||||
<string name="osm_live_plan_pricing">Plan y Precios</string>
|
||||
<string name="osm_live_plan_pricing">Planes y Precios</string>
|
||||
<string name="osm_live_payment_monthly_title">Mensual</string>
|
||||
<string name="osm_live_payment_3_months_title">Trimestral</string>
|
||||
<string name="osm_live_payment_annual_title">Anual</string>
|
||||
|
@ -3054,10 +3054,10 @@ Lon %2$s</string>
|
|||
<string name="downloaded_maps">Mapas descargados</string>
|
||||
<string name="visited_screens">Pantallas visitadas</string>
|
||||
<string name="colleted_data">Datos recopilados</string>
|
||||
<string name="collected_data_descr">Define qué datos permite que OsmAnd comparta.</string>
|
||||
<string name="collected_data_descr">Define qué datos quieres que OsmAnd comparta.</string>
|
||||
<string name="downloaded_maps_collect_descr">Nos ayuda a entender qué mapas de regiones y países son los más populares.</string>
|
||||
<string name="visited_screens_collect_descr">Nos ayuda a entender qué características de OsmAnd son las más populares.</string>
|
||||
<string name="privacy_and_security_change_descr">Al pulsar en «Permitir», se entiende que está de acuerdo con nuestra %1$s</string>
|
||||
<string name="privacy_and_security_change_descr">Al pulsar en «Permitir», aceptas nuestras %1$s</string>
|
||||
<string name="settings_privacy_and_security">Privacidad y seguridad</string>
|
||||
<string name="settings_privacy_and_security_desc">Elegir los datos a compartir con nosotros</string>
|
||||
<string name="shared_string_no_thank_you">No, gracias</string>
|
||||
|
@ -3185,11 +3185,11 @@ Lon %2$s</string>
|
|||
<string name="turn_screen_on_time_descr">Define el tiempo durante el cual se encenderá la pantalla.</string>
|
||||
<string name="turn_screen_on_sensor">Usar sensor de proximidad</string>
|
||||
<string name="turn_screen_on_sensor_descr">Mueve la mano sobre la parte superior de la pantalla para encenderla mientras navegas.</string>
|
||||
<string name="rendering_attr_highway_class_track_grade1_name">Grado 1 (pavimentado)</string>
|
||||
<string name="rendering_attr_highway_class_track_grade2_name">Grado 2 (de áridos o zahorra)</string>
|
||||
<string name="rendering_attr_highway_class_track_grade3_name">Grado 3 (de áridos con vegetación entre rodaduras)</string>
|
||||
<string name="rendering_attr_highway_class_track_grade4_name">Grado 4 (de tierra con vegetación entre rodaduras)</string>
|
||||
<string name="rendering_attr_highway_class_track_grade5_name">Grado 5 (con rodaduras apenas visibles entre la vegetación)</string>
|
||||
<string name="rendering_attr_highway_class_track_grade1_name">Grado 1</string>
|
||||
<string name="rendering_attr_highway_class_track_grade2_name">Grado 2</string>
|
||||
<string name="rendering_attr_highway_class_track_grade3_name">Grado 3</string>
|
||||
<string name="rendering_attr_highway_class_track_grade4_name">Grado 4</string>
|
||||
<string name="rendering_attr_highway_class_track_grade5_name">Grado 5</string>
|
||||
<string name="external_input_device">Dispositivos de entrada externos</string>
|
||||
<string name="external_input_device_descr">Elige un dispositivo como un teclado genérico o WunderLINQ para los controles externos.</string>
|
||||
<string name="sett_no_ext_input">Ninguno</string>
|
||||
|
@ -3201,12 +3201,12 @@ Lon %2$s</string>
|
|||
<string name="rendering_attr_ice_road_name">Camino de hielo</string>
|
||||
<string name="routeInfo_winter_ice_road_name">Caminos de invierno y de hielo</string>
|
||||
<string name="rendering_attr_tracktype_grade1_name">Sólido (pavimentado)</string>
|
||||
<string name="rendering_attr_tracktype_grade2_name">Sólido (sin pavimentar)</string>
|
||||
<string name="rendering_attr_tracktype_grade3_name">Mayormente sólido</string>
|
||||
<string name="rendering_attr_tracktype_grade4_name">Mayormente suave</string>
|
||||
<string name="rendering_attr_tracktype_grade5_name">Suave</string>
|
||||
<string name="rendering_attr_tracktype_grade2_name">Sólido (sin pavimento)</string>
|
||||
<string name="rendering_attr_tracktype_grade3_name">Mayormente sólido (de áridos con vegetación entre rodaduras)</string>
|
||||
<string name="rendering_attr_tracktype_grade4_name">Mayormente suave (de tierra con vegetación entre rodaduras)</string>
|
||||
<string name="rendering_attr_tracktype_grade5_name">Suave (con rodaduras apenas visibles entre la vegetación)</string>
|
||||
<string name="routeInfo_tracktype_name">Firmeza superficial</string>
|
||||
<string name="shared_string_file_is_saved">%s está guardado</string>
|
||||
<string name="shared_string_file_is_saved">Se ha guardado «%s»</string>
|
||||
<string name="shared_string_open_track">Abrir traza</string>
|
||||
<string name="shared_string_track_is_saved">Se ha guardado la traza «%s»</string>
|
||||
</resources>
|
|
@ -3596,13 +3596,13 @@
|
|||
<string name="poi_changing_table_limited">Cambiador: limitado</string>
|
||||
<string name="poi_changing_table_location_room">Cambiador: habitación</string>
|
||||
<string name="poi_changing_table_location_male_toilet">Cambiador: aseo masculino</string>
|
||||
<string name="poi_changing_table_location_female_toilet">Cambiador: Aseo femenino</string>
|
||||
<string name="poi_changing_table_location_unisex_toilet">Cambiador: Aseo Unisex</string>
|
||||
<string name="poi_changing_table_location_female_toilet">Ubicación del cambiador: Aseo femenino</string>
|
||||
<string name="poi_changing_table_location_unisex_toilet">Ubicación del cambiador: aseo unisex</string>
|
||||
<string name="poi_changing_table_count">Número de cambiadores</string>
|
||||
<string name="poi_changing_table_fee_yes">Cambiador de pago: si</string>
|
||||
<string name="poi_changing_table_fee_yes">Cambiador de pago: sí</string>
|
||||
<string name="poi_changing_table_fee_no">Cambiador de pago: no</string>
|
||||
<string name="poi_charcoal_pile">Montón de carbón</string>
|
||||
<string name="poi_charcoal_pile">Pila de carbón vegetal</string>
|
||||
<string name="poi_historic_tank">Tanque histórico</string>
|
||||
<string name="poi_hookah_lounge">Lugar para fumar en pipa</string>
|
||||
<string name="poi_hookah_lounge">Salón del narguile</string>
|
||||
<string name="poi_source_biomass">Fuente de energía: biomasa</string>
|
||||
</resources>
|
|
@ -388,10 +388,10 @@
|
|||
<string name="unzipping_file">Descomprimiendo archivo…</string>
|
||||
<string name="route_tr">Gira a la derecha en</string>
|
||||
<string name="route_tshr">Gira fuerte a la derecha en</string>
|
||||
<string name="route_tslr">Gira leve a la derecha en</string>
|
||||
<string name="route_tslr">Gira levemente a la derecha en</string>
|
||||
<string name="route_tl">Gira a la izquierda en</string>
|
||||
<string name="route_tshl">Gira fuerte a la izquierda en</string>
|
||||
<string name="route_tsll">Gira leve a la izquierda en</string>
|
||||
<string name="route_tsll">Gira levemente a la izquierda en</string>
|
||||
<string name="route_tu">Cambia de sentido en</string>
|
||||
<string name="route_head">Inicio</string>
|
||||
<string name="first_time_continue">Después</string>
|
||||
|
@ -465,7 +465,7 @@
|
|||
<string name="only_show">Mostrar ruta</string>
|
||||
<string name="follow">Iniciar la guía</string>
|
||||
<string name="recalculate_route_to_your_location">Modo transporte:</string>
|
||||
<string name="mark_final_location_first">Elige primero el destino</string>
|
||||
<string name="mark_final_location_first">Por favor, elige primero el destino</string>
|
||||
<string name="get_directions">Indicaciones</string>
|
||||
<string name="opening_hours">Horario de apertura</string>
|
||||
<string name="opening_changeset">Abriendo conjunto de cambios…</string>
|
||||
|
@ -485,7 +485,7 @@
|
|||
<string name="error_calculating_route_occured">No se pudo calcular la ruta</string>
|
||||
<string name="empty_route_calculated">La ruta calculada está vacía</string>
|
||||
<string name="new_route_calculated_dist">Nueva ruta calculada, distancia</string>
|
||||
<string name="arrived_at_destination">Has llegado al destino</string>
|
||||
<string name="arrived_at_destination">Has llegado a tu destino</string>
|
||||
<string name="invalid_locations">Coordenadas inválidas</string>
|
||||
<string name="go_back_to_osmand">Volver al mapa OsmAnd</string>
|
||||
<string name="shared_string_close">Cerrar</string>
|
||||
|
@ -713,7 +713,7 @@
|
|||
<string name="rendering_attr_contourLines_name">Mostrar curvas de nivel</string>
|
||||
<string name="rendering_attr_hmRendered_description">Aumentar detalle que se muestra en el mapa.</string>
|
||||
<string name="rendering_attr_hmRendered_name">Mostrar más detalle del mapa</string>
|
||||
<string name="route_roundabout">Rotonda: Tome la %1$dª salida en dirección a</string>
|
||||
<string name="route_roundabout">Rotonda: Toma la %1$dª salida en</string>
|
||||
<string name="route_kl">Mantente a la izquierda y continúa por</string>
|
||||
<string name="route_kr">Mantente a la derecha y continúa por</string>
|
||||
<string name="asap">Lo antes posible</string>
|
||||
|
@ -727,21 +727,21 @@
|
|||
<string name="osmand_parking_time_limit_title">Definir tiempo límite del aparcamiento</string>
|
||||
<string name="osmand_parking_delete_confirm">¿Borrar el marcador de aparcamiento?</string>
|
||||
<string name="osmand_parking_delete">Quitar marcador de aparcamiento</string>
|
||||
<string name="osmand_parking_choose_type">Elija el tipo de aparcamiento</string>
|
||||
<string name="osmand_parking_choose_type">Elige el tipo de aparcamiento</string>
|
||||
<string name="osmand_parking_lim_text">Tiempo limitado</string>
|
||||
<string name="osmand_parking_no_lim_text">Tiempo ilimitado</string>
|
||||
<string name="osmand_parking_no_lim_text">Sin límite de tiempo</string>
|
||||
<string name="osmand_parking_add_event">Añadir una notificación al calendario</string>
|
||||
<string name="osmand_parking_time_limit">Aparcamiento de tiempo limitado</string>
|
||||
<string name="osmand_parking_time_no_limit">Aparcamiento de tiempo ilimitado</string>
|
||||
<string name="osmand_parking_time_limit">Por tiempo limitado</string>
|
||||
<string name="osmand_parking_time_no_limit">Aparcamiento sin límite de tiempo</string>
|
||||
<string name="osmand_parking_position_description">Ubicación del vehículo aparcado. %1$s</string>
|
||||
<string name="osmand_parking_position_description_add">Buscar el vehículo a las:</string>
|
||||
<string name="osmand_parking_pm">PM</string>
|
||||
<string name="osmand_parking_am">AM</string>
|
||||
<string name="osmand_parking_position_name">Ubicación del aparcamiento</string>
|
||||
<string name="osmand_parking_position_name">Lugar de aparcamiento</string>
|
||||
<string name="osmand_parking_plugin_description">Este complemento, memoriza dónde se ha aparcado el automóvil y cuánto tiempo queda (si hay un límite de tiempo).
|
||||
\nTanto la ubicación como el tiempo de estacionamiento se muestran en el panel de control y en el control en la pantalla de mapas. Añade una notificación al calendario, en el caso de que desee tener un recordatorio al respecto.</string>
|
||||
<string name="osmand_parking_plugin_name">Aparcamiento</string>
|
||||
<string name="context_menu_item_add_parking_point">Marcar como aparcamiento</string>
|
||||
<string name="context_menu_item_add_parking_point">Marcar aparcamiento</string>
|
||||
<string name="context_menu_item_delete_parking_point">Quitar marcador de aparcamiento</string>
|
||||
<string name="starting_point_too_far">Punto de inicio demasiado lejos del camino más cercano.</string>
|
||||
<string name="shared_location">Ubicación compartida</string>
|
||||
|
@ -966,7 +966,7 @@
|
|||
<string name="av_def_action_picture">Fotografiar</string>
|
||||
<string name="recording_context_menu_precord">Fotografiar</string>
|
||||
<string name="stop_routing_confirm">¿Parar la navegación?</string>
|
||||
<string name="clear_dest_confirm">¿Limpiar el destino (y los destinos intermedios)?</string>
|
||||
<string name="clear_dest_confirm">¿Estás seguro de que quieres borrar tu destino (y los destinos intermedios)\?</string>
|
||||
<string name="precise_routing_mode_descr">Calcula rutas precisas sin interferencias. Aún está limitado por la distancia y es lento.</string>
|
||||
<string name="precise_routing_mode">Navegación precisa (alfa)</string>
|
||||
<string name="local_indexes_cat_av">Datos multimedia</string>
|
||||
|
@ -2323,7 +2323,7 @@
|
|||
<string name="quick_action_add_destination">Añadir destino</string>
|
||||
<string name="quick_action_replace_destination">Reemplazar destino</string>
|
||||
<string name="quick_action_add_first_intermediate">Añadir primer destino intermedio</string>
|
||||
<string name="quick_action_add_destination_desc">Este botón de acción, añade un destino de ruta en el centro de la pantalla. Cualquier destino previamente elegido, se mueve como último destino intermedio.</string>
|
||||
<string name="quick_action_add_destination_desc">Este botón de acción hace del centro de la pantalla el destino de la ruta. Cualquier destino previamente elegido, se convierte en el último punto intermedio.</string>
|
||||
<string name="quick_action_replace_destination_desc">Este botón de acción, añade un nuevo destino de ruta en el centro de la pantalla, reemplazando el anterior destino (si existe).</string>
|
||||
<string name="quick_action_add_first_intermediate_desc">Este botón de acción, añade el primer destino intermedio en el centro de la pantalla.</string>
|
||||
<string name="no_overlay">Sin superposición</string>
|
||||
|
@ -2445,7 +2445,7 @@
|
|||
<string name="nothing_found_descr">Modificar la consulta de búsqueda o aumentar el radio de búsqueda.</string>
|
||||
<string name="hillshade_menu_download_descr">Para ver el sombreado del relieve en el mapa, debes descargar la superposición del sombreado de esta región.</string>
|
||||
<string name="hillshade_purchase_header">Para ver el sombreado del relieve en el mapa, debes comprar e instalar el complemento «Curvas de nivel»</string>
|
||||
<string name="private_access_routing_req">El destino se ubica en un área de acceso privado. ¿Permitir el acceso a los caminos privados para este viaje?</string>
|
||||
<string name="private_access_routing_req">Tu destino está ubicado en un área de acceso privado. ¿Permitir el acceso a los caminos privados para este viaje\?</string>
|
||||
<string name="mapillary_widget">Control de Mapillary</string>
|
||||
<string name="mapillary_descr">Fotos a nivel de calle en línea para todos. Descubre lugares, colabora, captura el mundo.</string>
|
||||
<string name="mapillary">Mapillary</string>
|
||||
|
@ -2653,8 +2653,8 @@
|
|||
<string name="by_type">Por tipo</string>
|
||||
<string name="what_is_here">Aquí hay:</string>
|
||||
<string name="parked_at">aparcado a las</string>
|
||||
<string name="pick_up_till">Recoger hasta las</string>
|
||||
<string name="without_time_limit">Tiempo ilimitado</string>
|
||||
<string name="pick_up_till">Recoger antes de las</string>
|
||||
<string name="without_time_limit">Sin límite de tiempo</string>
|
||||
<string name="context_menu_read_full_article">Leer artículo completo</string>
|
||||
<string name="context_menu_read_article">Leer artículo</string>
|
||||
<string name="context_menu_points_of_group">Todos los puntos del grupo</string>
|
||||
|
@ -2935,7 +2935,7 @@
|
|||
<string name="add_home">Añadir como «Casa»</string>
|
||||
<string name="add_work">Añadir como «Trabajo»</string>
|
||||
<string name="work_button">Trabajo</string>
|
||||
<string name="add_destination_query">Primero añada el destino</string>
|
||||
<string name="add_destination_query">Por favor, primero añada el destino</string>
|
||||
<string name="shared_string_swap">Intercambiar</string>
|
||||
<string name="show_more">Mostrar más</string>
|
||||
<string name="tracks_on_map">Trazas mostradas</string>
|
||||
|
@ -3065,7 +3065,7 @@
|
|||
<string name="public_transport_type">Tipo de transporte</string>
|
||||
<string name="searching_gps">Buscando GPS</string>
|
||||
<string name="coordinates_widget">Widget de coordenadas</string>
|
||||
<string name="app_mode_ufo">Ovni</string>
|
||||
<string name="app_mode_ufo">OVNI</string>
|
||||
<string name="release_3_4">• Perfiles de aplicación: crea un perfil personalizado según tus necesidades, con un icono y color personalizado
|
||||
\n
|
||||
\n • Ahora personaliza cualquier perfil por defecto y la velocidad mínima y máxima
|
||||
|
@ -3100,8 +3100,8 @@
|
|||
<string name="visited_screens">Pantallas visitadas</string>
|
||||
<string name="collected_data_descr">Define qué datos permites que OsmAnd comparta.</string>
|
||||
<string name="downloaded_maps_collect_descr">Ayúdanos a comprender qué mapas de qué regiones y países son los más populares.</string>
|
||||
<string name="visited_screens_collect_descr">Ayúdanos a comprender qué características de OsmAnd son más populares.</string>
|
||||
<string name="privacy_and_security_change_descr">Al pulsar en \"Permitir\" está de acuerdo con nuestra %1$s</string>
|
||||
<string name="visited_screens_collect_descr">Ayúdanos a comprender qué características de OsmAnd son las más populares.</string>
|
||||
<string name="privacy_and_security_change_descr">Al pulsar en \"Permitir\" aceptas nuestra %1$s</string>
|
||||
<string name="settings_privacy_and_security">Privacidad y seguridad</string>
|
||||
<string name="settings_privacy_and_security_desc">Selecciona qué datos vas a compartir con nosotros</string>
|
||||
<string name="shared_string_no_thank_you">No, gracias</string>
|
||||
|
@ -3117,20 +3117,20 @@
|
|||
<string name="app_mode_skiing">Esquí</string>
|
||||
<string name="base_profile_descr_ski">Esquí</string>
|
||||
<string name="show_compass_ruler">Mostrar regla radial</string>
|
||||
<string name="hide_compass_ruler">Ocultar regla de brújula</string>
|
||||
<string name="hide_compass_ruler">Ocultar regla radial</string>
|
||||
<string name="process_downloading_service">Servicio de descargas de OsmAnd</string>
|
||||
<string name="shared_string_color_magenta">Magenta</string>
|
||||
<string name="shared_string_icon">Icono</string>
|
||||
<string name="collected_data">Datos recogidos</string>
|
||||
<string name="press_again_to_change_the_map_orientation">Toca de nuevo para cambiar la orientación del mapa</string>
|
||||
<string name="shared_string_min_speed">Velocidad mínima</string>
|
||||
<string name="shared_string_max_speed">Velocidad máxima</string>
|
||||
<string name="default_speed_setting_title">Velocidad estándar</string>
|
||||
<string name="shared_string_min_speed">Velocidad mín.</string>
|
||||
<string name="shared_string_max_speed">Velocidad máx.</string>
|
||||
<string name="default_speed_setting_title">Velocidad por defecto</string>
|
||||
<string name="default_speed_setting_descr">Cambiar la configuración de velocidad por defecto</string>
|
||||
<string name="minmax_speed_dialog_title">Establecer velocidad mínima/máxima</string>
|
||||
<string name="default_speed_dialog_msg">Se usa para calcular la hora estimada de llegada</string>
|
||||
<string name="minmax_speed_dialog_title">Establecer velocidad mín/máx</string>
|
||||
<string name="default_speed_dialog_msg">Se usa para calcular la hora estimada de llegada durante el enrutamiento</string>
|
||||
<string name="new_profile">Nuevo perfil</string>
|
||||
<string name="last_launch_crashed">OsmAnd falló la última vez. Por favor ayúdanos a mejorar OsmAnd enviando un mensaje de error.</string>
|
||||
<string name="last_launch_crashed">OsmAnd falló la última vez. Por favor ayúdanos a mejorar OsmAnd compartiendo el mensaje de error.</string>
|
||||
<string name="select_icon_profile_dialog_title">Seleccionar icono</string>
|
||||
<string name="settings_routing_mode_string">Modo: %s</string>
|
||||
<string name="settings_derived_routing_mode_string">Modo de usuario, derivado de: %s</string>
|
||||
|
@ -3143,13 +3143,13 @@
|
|||
<string name="profile_alert_need_profile_name_msg">¡El nombre del perfil no debe estar vacío!</string>
|
||||
<string name="profile_alert_duplicate_name_title">Nombre duplicado</string>
|
||||
<string name="profile_alert_duplicate_name_msg">Ya existe un perfil con ese nombre</string>
|
||||
<string name="profile_alert_cant_delete_base">No puedes eliminar Perfiles base de OsmAnd</string>
|
||||
<string name="profile_alert_cant_delete_base">No puedes eliminar perfiles base de OsmAnd</string>
|
||||
<string name="profile_alert_need_save_title">Guardar cambios</string>
|
||||
<string name="profile_alert_need_save_msg">Debes guardar los cambios en el perfil antes de continuar</string>
|
||||
<string name="profile_alert_delete_title">Eliminar perfil</string>
|
||||
<string name="profile_alert_delete_msg">¿Estás seguro de que deseas eliminar el perfil %s\?</string>
|
||||
<string name="select_base_profile_dialog_title">Selecciona un perfil base</string>
|
||||
<string name="select_base_profile_dialog_message">Basa tu perfil personalizado en uno de los perfiles de aplicación predeterminados, esto define la configuración básica como la visibilidad de los widgets y las unidades de velocidad y distancia. Estos son los perfiles de aplicación predeterminados, junto con ejemplos de perfiles personalizados que pueden ser ampliados:</string>
|
||||
<string name="select_base_profile_dialog_message">Basa tu perfil personalizado en uno de los perfiles de aplicación predeterminados, esto define la configuración básica, como la visibilidad de los widgets y las unidades de velocidad y distancia. Estos son los perfiles de aplicación predeterminados, junto con ejemplos de perfiles personalizados que pueden ser ampliados a:</string>
|
||||
<string name="select_nav_profile_dialog_title">Selecciona el tipo de navegación</string>
|
||||
<string name="base_profile_descr_car">Coche, camión, motocicleta</string>
|
||||
<string name="base_profile_descr_bicycle">Bicicleta de montaña, ciclomotor, caballo</string>
|
||||
|
@ -3195,9 +3195,9 @@
|
|||
<string name="app_mode_offroad">Todo terreno</string>
|
||||
<string name="edit_profile_setup_title">Configurar perfil</string>
|
||||
<string name="edit_profile_setup_subtitle">El perfil mantiene su propia configuración</string>
|
||||
<string name="edit_profile_setup_map_subtitle">Selecciona la configuración del mapa por defecto para este perfil</string>
|
||||
<string name="edit_profile_screen_options_subtitle">Selecciona la configuración por defecto de la pantalla para este perfil</string>
|
||||
<string name="edit_profile_nav_settings_subtitle">Selecciona los ajustes de navegación por defecto para este perfil</string>
|
||||
<string name="edit_profile_setup_map_subtitle">Selecciona la configuración por defecto del mapa para el perfil</string>
|
||||
<string name="edit_profile_screen_options_subtitle">Selecciona la configuración por defecto de pantalla para el perfil</string>
|
||||
<string name="edit_profile_nav_settings_subtitle">Selecciona la configuración por defecto de navegación para el perfil</string>
|
||||
<string name="routing_attr_max_num_changes_description">Especifica el número máximo de transbordos</string>
|
||||
<string name="routing_attr_max_num_changes_name">Número de transbordos</string>
|
||||
<string name="turn_screen_on_router">"Despertar en giros"</string>
|
||||
|
|
|
@ -504,7 +504,7 @@
|
|||
<string name="gps_not_available">لطفاً GPS را از طریق تنظیمات فعال کنید</string>
|
||||
<string name="map_widget_monitoring_services">خدمات ثبت و ضبط</string>
|
||||
<string name="show_warnings_descr">پیکربندیهای مربوط به هشدارهای ترافیکی (مانند محدودیتهای سرعت، توقفهای اجباری، سرعتگیرها، تونلها)، هشدارهای دوربین کنترل سرعت و اطلاعات خط عبوری را انجام دهید.</string>
|
||||
<string name="use_compass_navigation_descr">اگر جهت شناسایی نمیشود از قطبنما استفاده شود.</string>
|
||||
<string name="use_compass_navigation_descr">اگر جهت شناسایی نشد از قطبنما استفاده شود.</string>
|
||||
<string name="avoid_motorway">پرهیز از آزادراهها</string>
|
||||
<string name="snap_to_road_descr">در هنگام ناوبری، موقعیت را به جادهها بچسبان.</string>
|
||||
<string name="snap_to_road">چسبیدن به راه</string>
|
||||
|
@ -3142,22 +3142,22 @@
|
|||
<string name="default_speed_dialog_msg">برای پیشبینی زمان رسیدن در هنگام مسیریابی استفاده میشود</string>
|
||||
<string name="new_profile">پروفایل جدید</string>
|
||||
<string name="last_launch_crashed">آخرین اجرای OsmAnd با شکست مواجه شد. لطفاً با اشتراکگذاری پیغام خطا ما را در بهبود OsmAnd یاری کنید.</string>
|
||||
<string name="release_3_4">"• پروفایلهای برنامه: متناسب با نیازهای خود پروفایل سفارشی بسازید؛ با رنگ و نماد دلخواه
|
||||
\n
|
||||
\n • برای هر پروفایل پیشفرضها و سرعتهای حداقل/حداکثر را بهدلخواه تنظیم کنید
|
||||
\n
|
||||
\n • یک ابزارک برای نمایش مختصات کنونی اضافه شده
|
||||
\n
|
||||
\n • Added options to show the compass and a radius ruler on the map
|
||||
\n
|
||||
\n • Fix background track logging
|
||||
\n
|
||||
\n • Improved background map downloads
|
||||
\n
|
||||
\n • Fixed Wikipedia language selection
|
||||
\n
|
||||
\n • Fixed compass button behavior during navigation
|
||||
\n
|
||||
<string name="release_3_4">"• پروفایلهای برنامه: متناسب با نیازهای خود پروفایل سفارشی بسازید؛ با رنگ و نماد دلخواه
|
||||
\n
|
||||
\n • برای هر پروفایل پیشفرضها و سرعتهای حداقل/حداکثر را بهدلخواه تنظیم کنید
|
||||
\n
|
||||
\n • یک ابزارک برای نمایش مختصات کنونی اضافه شده
|
||||
\n
|
||||
\n • Added options to show the compass and a radius ruler on the map
|
||||
\n
|
||||
\n • Fix background track logging
|
||||
\n
|
||||
\n • Improved background map downloads
|
||||
\n
|
||||
\n • Fixed Wikipedia language selection
|
||||
\n
|
||||
\n • Fixed compass button behavior during navigation
|
||||
\n
|
||||
\n • Other bug fixes
|
||||
\n
|
||||
\n"</string>
|
||||
|
|
|
@ -3038,7 +3038,7 @@ représentant la zone : %1$s x %2$s</string>
|
|||
<string name="profile_alert_need_save_title">Enregistrer les modifications</string>
|
||||
<string name="profile_alert_need_save_msg">Vous devez enregistrer les modifications apportées au profil avant de continuer</string>
|
||||
<string name="profile_alert_delete_title">Supprimer le profil</string>
|
||||
<string name="profile_alert_delete_msg">Êtes-vous certain de vouloir supprimer le profil %s</string>
|
||||
<string name="profile_alert_delete_msg">Êtes-vous certain de vouloir supprimer le profil %s \?</string>
|
||||
<string name="select_base_profile_dialog_title">Sélectionnez un profil de base</string>
|
||||
<string name="shared_string_color_magenta">Magenta</string>
|
||||
<string name="shared_string_icon">icône</string>
|
||||
|
|
|
@ -372,7 +372,7 @@
|
|||
<string name="vector_data_missing">הורדת נתונים (‚בלתי מקוונים’) כדי להשתמש במפות באופן בלתי מקוון.</string>
|
||||
<string name="local_index_gpx_info_show">"
|
||||
\n
|
||||
\nיש ללחוץ לחיצה ארוכה כדי להגיע לאפשרויות"</string>
|
||||
\nלחיצה ארוכה לאפשרויות"</string>
|
||||
<string name="local_index_installed">גרסה מקומית</string>
|
||||
<string name="local_index_items_backuped">%1$d מתוך %2$d פריטים הושבתו.</string>
|
||||
<string name="local_index_items_deleted">%1$d מתוך %2$d פריטים נמחקו.</string>
|
||||
|
@ -1918,7 +1918,7 @@
|
|||
<string name="simulate_your_location_stop_descr">הפסקת הדמיית המיקום שלך.</string>
|
||||
<string name="simulate_your_location_descr">הדמיית המיקום שלך באמצעות נתיב מחושב או מסלול GPX מוקלט.</string>
|
||||
<string name="looking_up_address">הכתובת בחיפוש</string>
|
||||
<string name="av_locations_descr">קובץ GPX עם מיקומי הערות.</string>
|
||||
<string name="av_locations_descr">קובץ GPX עם מיקומים.</string>
|
||||
<string name="routing_attr_avoid_shuttle_train_name">התעלמות מרכבות שאטל</string>
|
||||
<string name="routing_attr_avoid_shuttle_train_description">הימנעות מרכבות שאטל</string>
|
||||
<string name="rendering_value_boldOutline_name">קו מתאר מודגש</string>
|
||||
|
@ -3077,4 +3077,16 @@
|
|||
<string name="turn_screen_on_sensor">להשתמש בחיישן מרחק</string>
|
||||
<string name="turn_screen_on_sensor_descr">יש לנופף ביד מול החלק העליון של חזית המכשיר כדי להדליק את המסך בזמן ניווט.</string>
|
||||
<string name="shared_string_track_is_saved">המסלול %s נשמר</string>
|
||||
<string name="profile_alert_cant_delete_base">לא ניתן למחוק את הפרופילים הבסיסיים של OsmAnd</string>
|
||||
<string name="profile_alert_need_save_title">שמירת שינויים</string>
|
||||
<string name="profile_alert_need_save_msg">עליך לשמור את השינויים לפרופיל כדי להמשיך</string>
|
||||
<string name="profile_alert_delete_title">מחיקת פרופיל</string>
|
||||
<string name="profile_alert_delete_msg">למחוק את הפרופיל %s\?</string>
|
||||
<string name="select_base_profile_dialog_title">בחירת פרופיל בסיס</string>
|
||||
<string name="process_downloading_service">שירות ההורדות של OsmAnd</string>
|
||||
<string name="press_again_to_change_the_map_orientation">יש לגעת שוב כדי לשנות את כיוון המפה</string>
|
||||
<string name="default_speed_dialog_msg">משמש לחישוב מועד ההגעה הצפוי במהלך הניווט</string>
|
||||
<string name="new_profile">פרופיל חדש</string>
|
||||
<string name="shared_string_crash">קריסה</string>
|
||||
<string name="last_launch_crashed">הטעינה האחרונה של OsmAnd נכשלה. נא לסייע לנו לשפר את OsmAnd על ידי שיתוף הודעת השגיאה.</string>
|
||||
</resources>
|
|
@ -3219,4 +3219,6 @@ Stendur fyrir svæði: %1$s x %2$s</string>
|
|||
<string name="shared_string_file_is_saved">%s er vistað</string>
|
||||
<string name="shared_string_open_track">Opna feril</string>
|
||||
<string name="shared_string_track_is_saved">Ferill %s er vistaður</string>
|
||||
<string name="app_mode_personal_transporter">Rafskutla (Segway)</string>
|
||||
<string name="sett_parrot_ext_input">Parrot</string>
|
||||
</resources>
|
|
@ -3202,5 +3202,5 @@ Rappresenta l\'area: %1$s x %2$s</string>
|
|||
<string name="routeInfo_tracktype_name">Fermezza superficiale</string>
|
||||
<string name="shared_string_file_is_saved">%s è salvato</string>
|
||||
<string name="shared_string_open_track">Apri traccia</string>
|
||||
<string name="shared_string_track_is_saved">Traccia %s è salvato</string>
|
||||
<string name="shared_string_track_is_saved">Traccia %s salvata</string>
|
||||
</resources>
|
|
@ -391,7 +391,7 @@
|
|||
<string name="poi_laundry">Pralnia</string>
|
||||
<string name="poi_car_rental">Wypożyczalnia samochodów</string>
|
||||
<string name="poi_dock">Dok</string>
|
||||
<string name="poi_toilets">Toalety</string>
|
||||
<string name="poi_toilets">Ubikacja;Toalety</string>
|
||||
<string name="poi_sauna">Sauna</string>
|
||||
<string name="poi_brothel">Dom publiczny</string>
|
||||
<string name="poi_mortuary">Kostnica</string>
|
||||
|
@ -3602,4 +3602,5 @@
|
|||
<string name="poi_charcoal_pile">Stos węgla drzewnego</string>
|
||||
<string name="poi_historic_tank">Zbiornik historyczny</string>
|
||||
<string name="poi_hookah_lounge">Hookah lounge - Salon fajki wodnej (shisha)</string>
|
||||
<string name="poi_source_biomass">Źródło energii: biomasa</string>
|
||||
</resources>
|
|
@ -1653,7 +1653,7 @@ Długość %2$s</string>
|
|||
<string name="poi_dialog_poi_type">Rodzaj użytecznego miejsca</string>
|
||||
<string name="poi_action_delete">usuń</string>
|
||||
<string name="building_number">Numer budynku</string>
|
||||
<string name="av_locations_descr">Plik śladu GPX z notatkami o położeniach.</string>
|
||||
<string name="av_locations_descr">Plik GPX z lokalizacjami.</string>
|
||||
<string name="rendering_value_boldOutline_name">Pogrubione kontury</string>
|
||||
<string name="download_live_updates">Aktualizowanie na bieżąco</string>
|
||||
<string name="commit_poi">Wyślij użyteczne miejsce</string>
|
||||
|
@ -3097,7 +3097,7 @@ Reprezentuje obszar: %1$s x %2$s</string>
|
|||
<string name="profile_alert_delete_title">Usuń profil</string>
|
||||
<string name="profile_alert_delete_msg">Czy na pewno chcesz usunąć profil %s\?</string>
|
||||
<string name="select_base_profile_dialog_title">Wybierz profil bazowy</string>
|
||||
<string name="select_base_profile_dialog_message">Niestandardowy profil aplikacji powinien być oparty na jednym z domyślnych profili aplikacji. Wybrany profil definiuje podstawowe ustawienia: ustawienia widżetów, jednostek prędkości i odległości. W łańcuchu poniżej Nazwa Profilu można dowiedzieć się, które profile nawigacyjne są odpowiednie dla każdego profilu aplikacji.</string>
|
||||
<string name="select_base_profile_dialog_message">Oprzyj swój profil niestandardowy na jednym z domyślnych profili aplikacji, który określa podstawowe ustawienia, takie jak domyślna widoczność widgetów i jednostek prędkości i odległości. Są to domyślne profile aplikacji, wraz z przykładami profili niestandardowych, które można rozszerzyć na:</string>
|
||||
<string name="select_nav_profile_dialog_title">Wybierz typ nawigacji</string>
|
||||
<string name="base_profile_descr_car">Samochód, ciężarówka, motocykl</string>
|
||||
<string name="base_profile_descr_bicycle">Rower górski, motorower, koń</string>
|
||||
|
@ -3156,7 +3156,7 @@ Reprezentuje obszar: %1$s x %2$s</string>
|
|||
<string name="app_mode_personal_transporter">Transporter osobisty</string>
|
||||
<string name="precision_hdop_and_vdop">Precyzja w poziomie: %1$s, w pionie: %2$s</string>
|
||||
<string name="precision_hdop">Precyzja w poziomie: %s</string>
|
||||
<string name="app_mode_offroad">Offroad</string>
|
||||
<string name="app_mode_offroad">Poza drogą</string>
|
||||
<string name="edit_profile_setup_subtitle">Profil zachowa własne ustawienia</string>
|
||||
<string name="edit_profile_setup_map_subtitle">Wybierz domyślne opcje mapy dla profilu</string>
|
||||
<string name="edit_profile_screen_options_subtitle">Wybierz domyślne opcje ekranu dla profilu</string>
|
||||
|
@ -3186,4 +3186,26 @@ Reprezentuje obszar: %1$s x %2$s</string>
|
|||
<string name="shared_string_file_is_saved">%s jest zapisany</string>
|
||||
<string name="shared_string_open_track">Otwórz ślad</string>
|
||||
<string name="shared_string_track_is_saved">Ślad %s jest zapisany</string>
|
||||
<string name="release_3_4">• Profile aplikacji: Stwórz własny profil dla własnych potrzeb, z niestandardową ikoną i kolorem
|
||||
\n
|
||||
\n• Teraz można dostosować domyślne ustawienia dowolnego profilu i prędkości min/max
|
||||
\n
|
||||
\n• Dodano widget dla bieżących współrzędnych
|
||||
\n
|
||||
\n• Dodano opcje pokazania kompasu i linijki promienia na mapie
|
||||
\n
|
||||
\n• Napraw Rejestrowanie śladu tła
|
||||
\n
|
||||
\n• Ulepszone pliki do pobrania mapy w tle
|
||||
\n
|
||||
\n• Zwrócona opcja \"Turn Screen on\"
|
||||
\n
|
||||
\n• Poprawiono wybór języka Wikipedii
|
||||
\n
|
||||
\n• Poprawiono zachowanie przycisku kompasu podczas nawigacji
|
||||
\n
|
||||
\n• Inne poprawki błędów
|
||||
\n
|
||||
\n</string>
|
||||
<string name="edit_profile_setup_title">Konfiguracja Profilu</string>
|
||||
</resources>
|
|
@ -2955,7 +2955,7 @@ Pôr do Sol: %2$s</string>
|
|||
<string name="rendering_attr_smoothness_horrible_name">Horrível</string>
|
||||
<string name="rendering_attr_smoothness_very_horrible_name">Muito horrível</string>
|
||||
<string name="rendering_attr_smoothness_impassable_name">Intransitável</string>
|
||||
<string name="rendering_attr_highway_class_motorway_name">Autoestrada/Via expressa</string>
|
||||
<string name="rendering_attr_highway_class_motorway_name">Autoestrada</string>
|
||||
<string name="rendering_attr_highway_class_state_road_name">Rodovia</string>
|
||||
<string name="rendering_attr_highway_class_road_name">Avenida/Estrada</string>
|
||||
<string name="rendering_attr_highway_class_street_name">Rua</string>
|
||||
|
|
|
@ -1546,7 +1546,7 @@
|
|||
<string name="simulate_your_location_stop_descr">Parar de simular a sua posição.</string>
|
||||
<string name="simulate_your_location_descr">Simule a sua posição utilizando uma rota calculada ou uma trajeto GPX gravado.</string>
|
||||
<string name="looking_up_address">A procurar o endereço</string>
|
||||
<string name="av_locations_descr">Ficheiro GPX com anotações de posições.</string>
|
||||
<string name="av_locations_descr">Ficheiro GPX com posições.</string>
|
||||
<string name="av_locations">Localizações</string>
|
||||
<string name="plugin_settings">Complementos</string>
|
||||
<string name="routing_attr_avoid_shuttle_train_name">Evitar transporte de comboio</string>
|
||||
|
@ -2137,7 +2137,7 @@
|
|||
\nDê-nos a sua opinião</string>
|
||||
<string name="commiting_way">Cometendo caminho…</string>
|
||||
<string name="increase_search_radius_to">Aumentar o raio de pesquisa para %1$s</string>
|
||||
<string name="send_search_query_description">Enviaremos a sua consulta de pesquisa: <b>\"%1$s\"</b>, bem como a sua localização.<br/>
|
||||
<string name="send_search_query_description">Enviaremos a sua consulta de pesquisa: <b>\"%1$s\"</b> e a sua localização.<br/>
|
||||
<br/> Nenhuma informação pessoal é recolhida. Os dados de pesquisa só servem para melhorar o algoritmo de pesquisa.<br/>
|
||||
</string>
|
||||
<string name="send_search_query">Enviar a consulta de pesquisa?</string>
|
||||
|
@ -3053,11 +3053,11 @@
|
|||
<string name="choose_data_to_share">Escolha o tipo de dados que pretende partilhar:</string>
|
||||
<string name="downloaded_maps">Mapas descarregados</string>
|
||||
<string name="visited_screens">Ecrãs visitadas</string>
|
||||
<string name="collected_data_descr">Lista de dados que você deseja compartilhar com OsmAnd.</string>
|
||||
<string name="downloaded_maps_collect_descr">Coletamos esses dados para entender quais mapas de quais regiões e países são os mais populares.</string>
|
||||
<string name="visited_screens_collect_descr">Coletamos esses dados para entender quais recursos são os mais populares de OsmAnd.</string>
|
||||
<string name="collected_data_descr">Define quais dados você permite que OsmAnd compartilhe.</string>
|
||||
<string name="downloaded_maps_collect_descr">Ajude-nos a entender quais mapas de quais regiões e países são os mais populares.</string>
|
||||
<string name="visited_screens_collect_descr">Ajude-nos a entender quais recursos são os mais populares de OsmAnd.</string>
|
||||
<string name="privacy_and_security_change_descr">Ao tocar em \"Permitir\" você concorda com nossos %1$s</string>
|
||||
<string name="settings_privacy_and_security">Privacidade e Segurança</string>
|
||||
<string name="settings_privacy_and_security">Privacidade e segurança</string>
|
||||
<string name="settings_privacy_and_security_desc">Escolha quais dados você está compartilhando conosco</string>
|
||||
<string name="shared_string_no_thank_you">Não, obrigado</string>
|
||||
<string name="shared_string_allow">Permitir</string>
|
||||
|
@ -3178,4 +3178,32 @@
|
|||
<string name="edit_profile_nav_settings_subtitle">Selecione as configurações de navegação predefinidas para o perfil</string>
|
||||
<string name="routing_attr_max_num_changes_description">Especificar a quantidade máxima de modificações</string>
|
||||
<string name="routing_attr_max_num_changes_name">Quantidade de modificações</string>
|
||||
<string name="turn_screen_on_router">Despertar na curva</string>
|
||||
<string name="turn_screen_on_time_descr">Defina o tempo para a qual o ecrã será ativado.</string>
|
||||
<string name="turn_screen_on_sensor">Utilizar sensor de proximidade</string>
|
||||
<string name="turn_screen_on_sensor_descr">Acene sua mão sobre o ecrã para ligar-lo ao navegar.</string>
|
||||
<string name="rendering_attr_highway_class_track_grade1_name">Grau 1</string>
|
||||
<string name="rendering_attr_highway_class_track_grade2_name">Grau 2</string>
|
||||
<string name="rendering_attr_highway_class_track_grade3_name">Grau 3</string>
|
||||
<string name="rendering_attr_highway_class_track_grade4_name">Grau 4</string>
|
||||
<string name="rendering_attr_highway_class_track_grade5_name">Grau 5</string>
|
||||
<string name="external_input_device">Aparelhos de entrada externos</string>
|
||||
<string name="external_input_device_descr">Selecione um aparelho como um teclado genérico ou WunderLINQ para controles externos.</string>
|
||||
<string name="sett_no_ext_input">Nenhum</string>
|
||||
<string name="sett_generic_ext_input">Teclado Genérico</string>
|
||||
<string name="sett_wunderlinq_ext_input">WunderLINQ</string>
|
||||
<string name="sett_parrot_ext_input">Parrot</string>
|
||||
<string name="turn_on_profile_desc">Por favor, ative pelo menos um perfil de aplicação para usar esta configuração.</string>
|
||||
<string name="rendering_attr_winter_road_name">Estrada do inverno</string>
|
||||
<string name="rendering_attr_ice_road_name">Estrada de gelo</string>
|
||||
<string name="routeInfo_winter_ice_road_name">Estradas de inverno e gelo</string>
|
||||
<string name="rendering_attr_tracktype_grade1_name">Sólido (pavimentado)</string>
|
||||
<string name="rendering_attr_tracktype_grade2_name">Sólido (não pavimentado)</string>
|
||||
<string name="rendering_attr_tracktype_grade3_name">Maioritariamente sólido</string>
|
||||
<string name="rendering_attr_tracktype_grade4_name">Maioritariamente macio</string>
|
||||
<string name="rendering_attr_tracktype_grade5_name">Macio</string>
|
||||
<string name="routeInfo_tracktype_name">Dureza da superfície</string>
|
||||
<string name="shared_string_file_is_saved">%s está gravado</string>
|
||||
<string name="shared_string_open_track">Abrir faixa</string>
|
||||
<string name="shared_string_track_is_saved">A faixa% s está gravada</string>
|
||||
</resources>
|
|
@ -1477,12 +1477,17 @@ public class OsmandAidlApi {
|
|||
boolean active = app.getSelectedGpxHelper().getSelectedFileByPath(file.getAbsolutePath()) != null;
|
||||
long modifiedTime = dataItem.getFileLastModifiedTime();
|
||||
long fileSize = file.length();
|
||||
int color = dataItem.getColor();
|
||||
String colorName = "";
|
||||
if (color != 0) {
|
||||
colorName = ConfigureMapMenu.GpxAppearanceAdapter.parseTrackColorName(app.getRendererRegistry().getCurrentSelectedRenderer(), color);
|
||||
}
|
||||
AGpxFileDetails details = null;
|
||||
GPXTrackAnalysis analysis = dataItem.getAnalysis();
|
||||
if (analysis != null) {
|
||||
details = createGpxFileDetails(analysis);
|
||||
}
|
||||
files.add(new AGpxFile(fileName, modifiedTime, fileSize, active, details));
|
||||
files.add(new AGpxFile(fileName, modifiedTime, fileSize, active, colorName, details));
|
||||
}
|
||||
//}
|
||||
}
|
||||
|
|
|
@ -4,9 +4,6 @@ import android.os.Parcel;
|
|||
import android.os.Parcelable;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class AGpxFile implements Parcelable {
|
||||
|
||||
|
@ -14,13 +11,15 @@ public class AGpxFile implements Parcelable {
|
|||
private long modifiedTime;
|
||||
private long fileSize;
|
||||
private boolean active;
|
||||
private String color;
|
||||
private AGpxFileDetails details;
|
||||
|
||||
public AGpxFile(@NonNull String fileName, long modifiedTime, long fileSize, boolean active, @Nullable AGpxFileDetails details) {
|
||||
public AGpxFile(@NonNull String fileName, long modifiedTime, long fileSize, boolean active, String color, @Nullable AGpxFileDetails details) {
|
||||
this.fileName = fileName;
|
||||
this.modifiedTime = modifiedTime;
|
||||
this.fileSize = fileSize;
|
||||
this.active = active;
|
||||
this.color = color;
|
||||
this.details = details;
|
||||
}
|
||||
|
||||
|
@ -55,6 +54,10 @@ public class AGpxFile implements Parcelable {
|
|||
return active;
|
||||
}
|
||||
|
||||
public String getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
public AGpxFileDetails getDetails() {
|
||||
return details;
|
||||
}
|
||||
|
@ -69,6 +72,7 @@ public class AGpxFile implements Parcelable {
|
|||
if (details != null) {
|
||||
out.writeParcelable(details, flags);
|
||||
}
|
||||
out.writeString(color);
|
||||
}
|
||||
|
||||
private void readFromParcel(Parcel in) {
|
||||
|
@ -77,16 +81,16 @@ public class AGpxFile implements Parcelable {
|
|||
fileSize = in.readLong();
|
||||
active = in.readByte() != 0;
|
||||
|
||||
boolean hasDetails= in.readByte() != 0;
|
||||
boolean hasDetails = in.readByte() != 0;
|
||||
if (hasDetails) {
|
||||
details = in.readParcelable(AGpxFileDetails.class.getClassLoader());
|
||||
} else {
|
||||
details = null;
|
||||
}
|
||||
color = in.readString();
|
||||
}
|
||||
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -509,12 +509,12 @@ public class SettingsGeneralActivity extends SettingsBaseActivity implements OnR
|
|||
new String[]{getString(R.string.sett_no_ext_input), getString(R.string.sett_generic_ext_input), getString(R.string.sett_wunderlinq_ext_input), getString(R.string.sett_parrot_ext_input)}, new Integer[]{OsmandSettings.NO_EXTERNAL_DEVICE,
|
||||
OsmandSettings.GENERIC_EXTERNAL_DEVICE, OsmandSettings.WUNDERLINQ_EXTERNAL_DEVICE, OsmandSettings.PARROT_EXTERNAL_DEVICE});
|
||||
|
||||
misc.addPreference(createCheckBoxPreference(settings.MAP_EMPTY_STATE_ALLOWED, R.string.tap_on_map_to_hide_interface, R.string.tap_on_map_to_hide_interface_descr));
|
||||
misc.addPreference(createCheckBoxPreference(settings.USE_KALMAN_FILTER_FOR_COMPASS, R.string.use_kalman_filter_compass, R.string.use_kalman_filter_compass_descr));
|
||||
misc.addPreference(createCheckBoxPreference(settings.USE_MAGNETIC_FIELD_SENSOR_COMPASS, R.string.use_magnetic_sensor, R.string.use_magnetic_sensor_descr));
|
||||
misc.addPreference(createCheckBoxPreference(settings.DO_NOT_USE_ANIMATIONS, R.string.do_not_use_animations, R.string.do_not_use_animations_descr));
|
||||
misc.addPreference(createCheckBoxPreference(settings.MAP_EMPTY_STATE_ALLOWED, R.string.tap_on_map_to_hide_interface, R.string.tap_on_map_to_hide_interface_descr));
|
||||
misc.addPreference(createCheckBoxPreference(settings.DO_NOT_SHOW_STARTUP_MESSAGES, R.string.do_not_show_startup_messages, R.string.do_not_show_startup_messages_desc));
|
||||
misc.addPreference(createCheckBoxPreference(settings.ANIMATE_MY_LOCATION,R.string.animate_my_location, R.string.animate_my_location_desc));
|
||||
misc.addPreference(createCheckBoxPreference(settings.DO_NOT_USE_ANIMATIONS, R.string.do_not_use_animations, R.string.do_not_use_animations_descr));
|
||||
misc.addPreference(createCheckBoxPreference(settings.DO_NOT_SHOW_STARTUP_MESSAGES, R.string.do_not_show_startup_messages, R.string.do_not_show_startup_messages_desc));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -23,7 +23,6 @@ import android.widget.ListView;
|
|||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.io.File;
|
||||
import net.osmand.AndroidUtils;
|
||||
import net.osmand.GPXUtilities;
|
||||
import net.osmand.PlatformUtil;
|
||||
|
@ -58,6 +57,7 @@ import net.osmand.util.Algorithms;
|
|||
|
||||
import org.apache.commons.logging.Log;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
@ -1415,11 +1415,11 @@ public class ConfigureMapMenu {
|
|||
public static int parseTrackColor(RenderingRulesStorage renderer, String colorName) {
|
||||
int defaultColor = -1;
|
||||
RenderingRule gpxRule = null;
|
||||
if(renderer!=null) {
|
||||
if (renderer != null) {
|
||||
gpxRule = renderer.getRenderingAttributeRule("gpx");
|
||||
}
|
||||
if (gpxRule != null && gpxRule.getIfElseChildren().size() > 0) {
|
||||
List<RenderingRule> rules = renderer.getRenderingAttributeRule("gpx").getIfElseChildren().get(0).getIfElseChildren();
|
||||
List<RenderingRule> rules = gpxRule.getIfElseChildren().get(0).getIfElseChildren();
|
||||
for (RenderingRule r : rules) {
|
||||
String cName = r.getStringPropertyValue(CURRENT_TRACK_COLOR_ATTR);
|
||||
if (!Algorithms.isEmpty(cName) && cName.equals(colorName)) {
|
||||
|
@ -1433,6 +1433,23 @@ public class ConfigureMapMenu {
|
|||
return defaultColor;
|
||||
}
|
||||
|
||||
public static String parseTrackColorName(RenderingRulesStorage renderer, int color) {
|
||||
RenderingRule gpxRule = null;
|
||||
if (renderer != null) {
|
||||
gpxRule = renderer.getRenderingAttributeRule("gpx");
|
||||
}
|
||||
if (gpxRule != null && gpxRule.getIfElseChildren().size() > 0) {
|
||||
List<RenderingRule> rules = gpxRule.getIfElseChildren().get(0).getIfElseChildren();
|
||||
for (RenderingRule r : rules) {
|
||||
String cName = r.getStringPropertyValue(CURRENT_TRACK_COLOR_ATTR);
|
||||
if (!Algorithms.isEmpty(cName) && color == r.getIntPropertyValue(COLOR_ATTR)) {
|
||||
return cName;
|
||||
}
|
||||
}
|
||||
}
|
||||
return Algorithms.colorToString(color);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public View getView(int position, View convertView, @NonNull ViewGroup parent) {
|
||||
|
|
|
@ -1160,8 +1160,12 @@ public class MapInfoWidgetsFactory {
|
|||
} catch (RuntimeException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
latitudeIcon.setImageDrawable(iconsCache.getIcon(nightMode ? R.drawable.widget_coordinates_latitude_night : R.drawable.widget_coordinates_latitude_day));
|
||||
longitudeIcon.setImageDrawable(iconsCache.getIcon(nightMode ? R.drawable.widget_coordinates_longitude_night : R.drawable.widget_coordinates_longitude_day));
|
||||
int latDayImgId = lat >= 0 ? R.drawable.widget_coordinates_latitude_north_day : R.drawable.widget_coordinates_latitude_south_day;
|
||||
int latNightImgId = lat >= 0 ? R.drawable.widget_coordinates_latitude_north_night : R.drawable.widget_coordinates_latitude_south_night;
|
||||
int lonDayImgId = lon >= 0 ? R.drawable.widget_coordinates_longitude_east_day : R.drawable.widget_coordinates_longitude_west_day;
|
||||
int lonNightImgId = lon >= 0 ? R.drawable.widget_coordinates_longitude_east_night : R.drawable.widget_coordinates_longitude_west_night;
|
||||
latitudeIcon.setImageDrawable(iconsCache.getIcon(nightMode ? latDayImgId : latNightImgId));
|
||||
longitudeIcon.setImageDrawable(iconsCache.getIcon(nightMode ? lonDayImgId : lonNightImgId));
|
||||
latitudeText.setText(latitude);
|
||||
longitudeText.setText(longitude);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue