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 {
|
||||
private const val TAG = "SVXRemote"
|
||||
private const val TALK_LOG_MAX = 15
|
||||
}
|
||||
|
||||
private lateinit var statusChip: TextView
|
||||
@@ -66,6 +67,10 @@ class MainActivity : Activity(), SvxService.Listener {
|
||||
private val mainHandler = Handler(Looper.getMainLooper())
|
||||
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 monitoring = false
|
||||
private var connectedSettings: ConnectionSettings? = null
|
||||
@@ -136,6 +141,8 @@ class MainActivity : Activity(), SvxService.Listener {
|
||||
|
||||
lblCallsign.setOnClickListener { showNodesDialog() }
|
||||
|
||||
lblTalker.setOnClickListener { showTalkLogDialog() }
|
||||
|
||||
// Удержание на названии программы (> 2 с) — выбор профиля настроек
|
||||
lblAppTitle.setOnTouchListener { _, event ->
|
||||
when (event.actionMasked) {
|
||||
@@ -331,6 +338,10 @@ class MainActivity : Activity(), SvxService.Listener {
|
||||
|
||||
override fun onTalkerStart(tg: Long, callsign: String) {
|
||||
mainHandler.post {
|
||||
talkLog.addLast(TalkLogEntry(System.currentTimeMillis(), callsign, tg))
|
||||
while (talkLog.size > TALK_LOG_MAX) {
|
||||
talkLog.removeFirst()
|
||||
}
|
||||
val priority = monitoring && settings.groups.firstOrNull() == tg
|
||||
if (priority) {
|
||||
priorityActive = true
|
||||
@@ -581,6 +592,23 @@ class MainActivity : Activity(), SvxService.Listener {
|
||||
.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() {
|
||||
val groups = (settings.groups + settings.talkGroup).distinct()
|
||||
if (groups.isEmpty()) {
|
||||
|
||||
@@ -81,6 +81,10 @@
|
||||
<string name="profile_current"> (текущий)</string>
|
||||
<string name="profile_empty">не настроен</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="ptt_disabled">Нет связи</string>
|
||||
|
||||
Reference in New Issue
Block a user