Add last talkers log (15 entries, time/callsign/TG)
This commit is contained in:
@@ -42,6 +42,7 @@ class MainActivity : Activity(), SvxService.Listener {
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val TAG = "SVXRemote"
|
private const val TAG = "SVXRemote"
|
||||||
|
private const val TALK_LOG_MAX = 15
|
||||||
}
|
}
|
||||||
|
|
||||||
private lateinit var statusChip: TextView
|
private lateinit var statusChip: TextView
|
||||||
@@ -66,6 +67,10 @@ class MainActivity : Activity(), SvxService.Listener {
|
|||||||
private val mainHandler = Handler(Looper.getMainLooper())
|
private val mainHandler = Handler(Looper.getMainLooper())
|
||||||
private var titleHoldRunnable: Runnable? = null
|
private var titleHoldRunnable: Runnable? = null
|
||||||
|
|
||||||
|
private data class TalkLogEntry(val time: Long, val callsign: String, val tg: Long)
|
||||||
|
|
||||||
|
private val talkLog = ArrayDeque<TalkLogEntry>()
|
||||||
|
|
||||||
private var connected = false
|
private var connected = false
|
||||||
private var monitoring = false
|
private var monitoring = false
|
||||||
private var connectedSettings: ConnectionSettings? = null
|
private var connectedSettings: ConnectionSettings? = null
|
||||||
@@ -136,6 +141,8 @@ class MainActivity : Activity(), SvxService.Listener {
|
|||||||
|
|
||||||
lblCallsign.setOnClickListener { showNodesDialog() }
|
lblCallsign.setOnClickListener { showNodesDialog() }
|
||||||
|
|
||||||
|
lblTalker.setOnClickListener { showTalkLogDialog() }
|
||||||
|
|
||||||
// Удержание на названии программы (> 2 с) — выбор профиля настроек
|
// Удержание на названии программы (> 2 с) — выбор профиля настроек
|
||||||
lblAppTitle.setOnTouchListener { _, event ->
|
lblAppTitle.setOnTouchListener { _, event ->
|
||||||
when (event.actionMasked) {
|
when (event.actionMasked) {
|
||||||
@@ -331,6 +338,10 @@ class MainActivity : Activity(), SvxService.Listener {
|
|||||||
|
|
||||||
override fun onTalkerStart(tg: Long, callsign: String) {
|
override fun onTalkerStart(tg: Long, callsign: String) {
|
||||||
mainHandler.post {
|
mainHandler.post {
|
||||||
|
talkLog.addLast(TalkLogEntry(System.currentTimeMillis(), callsign, tg))
|
||||||
|
while (talkLog.size > TALK_LOG_MAX) {
|
||||||
|
talkLog.removeFirst()
|
||||||
|
}
|
||||||
val priority = monitoring && settings.groups.firstOrNull() == tg
|
val priority = monitoring && settings.groups.firstOrNull() == tg
|
||||||
if (priority) {
|
if (priority) {
|
||||||
priorityActive = true
|
priorityActive = true
|
||||||
@@ -581,6 +592,23 @@ class MainActivity : Activity(), SvxService.Listener {
|
|||||||
.show()
|
.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Лог последних выходов на передачу (до 15, время — позывной — группа). */
|
||||||
|
private fun showTalkLogDialog() {
|
||||||
|
if (talkLog.isEmpty()) {
|
||||||
|
toast(getString(R.string.talk_log_empty))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
val fmt = java.text.SimpleDateFormat("HH:mm", java.util.Locale.getDefault())
|
||||||
|
val items = talkLog.map { e ->
|
||||||
|
getString(R.string.talk_log_entry, fmt.format(java.util.Date(e.time)), e.callsign, e.tg)
|
||||||
|
}.toTypedArray()
|
||||||
|
AlertDialog.Builder(this)
|
||||||
|
.setTitle(R.string.talk_log_title)
|
||||||
|
.setItems(items, null)
|
||||||
|
.setPositiveButton(R.string.close, null)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
|
|
||||||
private fun showGroupsDialog() {
|
private fun showGroupsDialog() {
|
||||||
val groups = (settings.groups + settings.talkGroup).distinct()
|
val groups = (settings.groups + settings.talkGroup).distinct()
|
||||||
if (groups.isEmpty()) {
|
if (groups.isEmpty()) {
|
||||||
|
|||||||
@@ -81,6 +81,10 @@
|
|||||||
<string name="profile_current"> (текущий)</string>
|
<string name="profile_current"> (текущий)</string>
|
||||||
<string name="profile_empty">не настроен</string>
|
<string name="profile_empty">не настроен</string>
|
||||||
<string name="cancel">Отмена</string>
|
<string name="cancel">Отмена</string>
|
||||||
|
<string name="talk_log_title">Последние передачи</string>
|
||||||
|
<string name="talk_log_empty">Журнала передач пока нет</string>
|
||||||
|
<string name="talk_log_entry">%1$s %2$s TG%3$d</string>
|
||||||
|
<string name="close">Закрыть</string>
|
||||||
|
|
||||||
<string name="settings_not_configured">Настройки не заданы</string>
|
<string name="settings_not_configured">Настройки не заданы</string>
|
||||||
<string name="ptt_disabled">Нет связи</string>
|
<string name="ptt_disabled">Нет связи</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user