From e4fcb302eef1b24933bb34123036fbc84c551b95 Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Tue, 29 May 2018 16:26:04 +0300 Subject: [PATCH] collapse history of multiple calls to/from same peer --- .../com/tutpro/baresip/HistoryActivity.kt | 39 +++++++------ .../com/tutpro/baresip/HistoryListAdapter.kt | 28 ++++++--- .../kotlin/com/tutpro/baresip/HistoryRow.kt | 9 ++- .../kotlin/com/tutpro/baresip/UserAgent.kt | 7 +++ .../main/res/drawable/arrow_down_green.png | Bin 521 -> 351 bytes app/src/main/res/drawable/arrow_down_red.png | Bin 525 -> 305 bytes app/src/main/res/drawable/arrow_up_green.png | Bin 520 -> 320 bytes app/src/main/res/drawable/arrow_up_red.png | Bin 521 -> 286 bytes app/src/main/res/layout/history_row.xml | 53 ++++++++++-------- 9 files changed, 86 insertions(+), 50 deletions(-) diff --git a/app/src/main/kotlin/com/tutpro/baresip/HistoryActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/HistoryActivity.kt index 5662d26c..696bbace 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/HistoryActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/HistoryActivity.kt @@ -92,28 +92,31 @@ class HistoryActivity : AppCompatActivity() { if (Utils.uriHostPart(peer_uri) == Utils.uriHostPart(aor)) { peer_uri = Utils.uriUserPart(peer_uri) } - val time: String - if (isToday(h.time)) { - val fmt = SimpleDateFormat("HH:mm") - time = fmt.format(h.time.time) + var direction: Int + if (h.direction == "in") + if (h.connected) + direction = R.drawable.arrow_down_green + else + direction = R.drawable.arrow_down_red + else + if (h.connected) + direction = R.drawable.arrow_up_green + else + direction = R.drawable.arrow_up_red + if (uaHistory.isNotEmpty() && (uaHistory.last().peerURI == peer_uri)) { + uaHistory.last().directions.add(direction) } else { - val fmt = SimpleDateFormat("MMM dd") - time = fmt.format(h.time.time) - } - if (h.direction == "in") { - if (h.connected) { - uaHistory.add(HistoryRow(peer_uri, R.drawable.arrow_down_green, time)) + val time: String + if (isToday(h.time)) { + val fmt = SimpleDateFormat("HH:mm") + time = fmt.format(h.time.time) } else { - uaHistory.add(HistoryRow(peer_uri, R.drawable.arrow_down_red, time)) - } - } else { - if (h.connected) { - uaHistory.add(HistoryRow(peer_uri, R.drawable.arrow_up_green, time)) - } else { - uaHistory.add(HistoryRow(peer_uri, R.drawable.arrow_up_red, time)) + val fmt = SimpleDateFormat("dd.MM") + time = fmt.format(h.time.time) } + uaHistory.add(HistoryRow(peer_uri, direction, time)) + posAtHistory.add(i) } - posAtHistory.add(i) } } } diff --git a/app/src/main/kotlin/com/tutpro/baresip/HistoryListAdapter.kt b/app/src/main/kotlin/com/tutpro/baresip/HistoryListAdapter.kt index 4b4b86ff..3b0d3ce2 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/HistoryListAdapter.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/HistoryListAdapter.kt @@ -6,6 +6,7 @@ import android.view.View import android.view.ViewGroup import android.widget.ArrayAdapter import android.widget.ImageView +import android.widget.LinearLayout import android.widget.TextView import java.util.* @@ -16,18 +17,27 @@ class HistoryListAdapter(private val cxt: Context, private val rows: ArrayList 3) { + val etc = rowView.findViewById(R.id.etc) as TextView + etc.text = "..." + break + } + val dirView = ImageView(cxt) + val params = LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT) + dirView.layoutParams = params + dirView.setPadding(0, 5, 0, 0) + dirView.setImageResource(d) + directions.addView(dirView) + count++ + } val peerURIView = rowView.findViewById(R.id.peer_uri) as TextView peerURIView.text = row.peerURI val timeView = rowView.findViewById(R.id.time) as TextView - val now = GregorianCalendar() - if (row.time.get(Calendar.YEAR).equals(now.get(Calendar.YEAR)) && - row.time.get(Calendar.DAY_OF_YEAR).equals(now.get(Calendar.DAY_OF_YEAR))) - timeView.text = String.format("%02d", row.time.get(Calendar.HOUR_OF_DAY)) + ":" + - String.format("%02d", row.time.get(Calendar.HOUR_OF_DAY)) - else - timeView.text = row.time + timeView.text = row.time return rowView } diff --git a/app/src/main/kotlin/com/tutpro/baresip/HistoryRow.kt b/app/src/main/kotlin/com/tutpro/baresip/HistoryRow.kt index 346458c4..2dd52571 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/HistoryRow.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/HistoryRow.kt @@ -1,3 +1,10 @@ package com.tutpro.baresip -class HistoryRow(val peerURI: String, val direction: Int, val time: String) +class HistoryRow(val peerURI: String, val direction: Int, val time: String) { + + val directions = ArrayList() + + init { + directions.add(direction) + } +} diff --git a/app/src/main/kotlin/com/tutpro/baresip/UserAgent.kt b/app/src/main/kotlin/com/tutpro/baresip/UserAgent.kt index 8c10af61..6b521c86 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/UserAgent.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/UserAgent.kt @@ -22,6 +22,13 @@ class UserAgent (val uap: String) { return null } + fun findAorIndex(uas: ArrayList, aor: String): Int? { + for (i in uas.indices) { + if (uas[i].aor == aor) return i + } + return null + } + fun register(uas: ArrayList) { for (ua in uas) { if (ua_register(ua.uap) != 0) diff --git a/app/src/main/res/drawable/arrow_down_green.png b/app/src/main/res/drawable/arrow_down_green.png index a624261b85b0d335e4070dd699dc53ad03754627..b20c9a26365394fcd459220390d46f23b15aa0e9 100644 GIT binary patch delta 313 zcmV-90mlA`1m6N7iBL{Q4GJ0x0000DNk~Le0000F0000K2nGNE08+e+3;3 zFfR8&(nA0M0PIObK~y-)?bESJ13?hR@n3=g8xc`lFkmYxSlaIk2of!?6Q4t{$pZ+A z?N)+Su(G)_g}q|1m+LGAjo56ZmkS!~oMu_R`S0$xGs6tgnk2*&I@rQ}SyXRzIqimn zS8$tGKZRSEZ+don7SI3iZ{e82e_~8wttmOC(2Xf9)ZKiFVN79Z0=SGJPU_$@tfQY> z^J}a2(Z%^UxGbs>4seV;jI%VxK90~Ui|T38hYfIv>pT>%*ufPpaML(d+4CJ%@s19j zv0E0^%hZvKDQw^&>mS(6wx-v)EUHHw=54PIgt>;Y4zP`pzlcw`GB=L@4+V`z00000 LNkvXXu0mjfx!;Ey delta 484 zcmV0P(n*KK zMvQ?b8h%;uu~TTSBcRU#=Pb#ve}xUNEI6}wK!g;H0O%a`4?r9MF*5Ay4v4$H=7TXs z&t3qtX54bes7Q=n3w!h;9{azRl#}t9T6kJf1q)>u#E`) z2BpSZ?KZLDrMGS;R@AI1D>^Ihs9flI#~fozBnuna!n)^PxNOPq1XR_1RW|Ch0Yk0q zakz!DGyL$(Qzc7kLc!bmqG4Uxn3M7f;#T(UQ^z-tJuzibeaDuxEpVY}eyq9(Q^__KG>biNEpYEIXZnydWD(DH* a=&Ce+3;3 zF&rk1vVs5r0KQ2?K~y-)?UOMI!axv3pTU5QXb_adRwCGV2EhXe0dHkvBf*=AjdnJI zTE}lQS|wRsv2(iFowqZeoe#eVK`59CLLWF5oCI-IO;E!(fL2|D;2UXw*cTRb1c~GC zhk|z5#aeI>M3yIl%X3KtJ;711U@C)Cfdsj&<_orbD<}k`s?hBT7zHpf# zx5An2_T2J~py@J1B-jhCg0tWz*a^DtI%+JqTgO6>ern0gsnel<;?(II58e!4B7&uE QbpQYW07*qoM6N<$f(S}yI{*Lx delta 488 zcmVH$6xAYHv~Q7>#6Zge&4kK~AR5P+X>rex(jD{Nox}Tl-}gDsiDcAa z;t|H6jRwCK`HPA}fEZ2e+XWDJyDS7@ zf}XtqW|_Igol&9~y%-3fB=iiCo8{glWke^`gAXA69 zT1J&>G|i<`JdB8=u+lQs66JP?ah=!S_}I^6Jv{CvjrUy4^|D&z{C5w@q9=l zLO+8E@3R4>a@SUemDA&@bk?XAWnZ^c{F-{gJ#($@4rJjA|(PO5T(xV*!SfQ~-WrPz2 zhPR79vG9N^OX)H)0m07JJ~Gu|j`dM$VvYGZuDwfL{PXQI>p01E7MlFH&-B|2@qepG ePqE8)@6;cgxorbmz5Lq%0000e+3;3 zD+Gni&<_9r0L@86K~y-)?a@6>0$~^g;71`O7KT{u1vrEi$#(oC-e6;4u%Pk?(ou4U zJp^>y84uwF)ZI<3Ja&1yfg27KN(Jivy_pSSsRa-R7Jh~Y3F>;!S{H; z=%}0XGV5W!CH1SKUK|YPW!AwnZ{G2N7A|pJ74=K<*?E~=U>1QJTm`o<3qSeiF@_l6 z70uv5=;M9iTTJnUMre(gr{O2V-Kb{0Eyg?v{|n7;OUqO(RZ*|7`fbk#@gLsBC)UA7 fhu?4){Kv2Xul6w=3o90@00000NkvXXu0mjfgMD;0 delta 483 zcmV<90UZ9o0*C}5iBL{Q4GJ0x0000DNk~Le0000G0000G2nGNE03Y-JVUZy*e*+By zH3Wo8VC4V+0hLKaK~y-)mD9g#lTj4L@z0yQi7{HOU9@6Fsz?zl21T);f=CCY8Ye+0 z*4ckVaCQ};f{L_7rFAGyu3fA{rlMdixF`tXk0kGP$fXT7Z^5%%?!C|RJ)C>aE!rxE zrS?dC6Y?ZUu6b0+bx#CMuS{Cjf9fSmdzx#?COorGT>&?w%5GWG{8w7sWIkb=x*0>R zDIs8&V}^|SY0j#4KA>j1x;cAYQHZxCw6W8OK{Y?j`n&y>=$Qf-jK4=!5)aSB!fBh~>W7aZK zL5N){#4 Z`wLNka$5HuaOeO4002ovPDHLkV1fpJ)pq~@ diff --git a/app/src/main/res/drawable/arrow_up_red.png b/app/src/main/res/drawable/arrow_up_red.png index 10fc2bc671cbf8daa18afb5dd1e75eb28d9b569e..bab5da035594b933403bef520fe56f5ae6ea3aab 100644 GIT binary patch delta 247 zcmVe+3;3 zCkL=_&ba^p0INwvK~y-)?UOMMf>01dAI1VI=}f3;y#WWH^Du-nPNaFWgZ+2n10vj4;6Bv=SGg7_P_6i85x1#^R4<)4D7pb_i^J9{HY-+_@} zD`*8P!NK0T9}U5UubBy!f}=fiO}`j|Ye6NL2@=DJb0w&U;8+m)+{4b{u&GU(iK*0RyKdin{)sG002ovPDHLkV1iu!VkiIr delta 484 zcmVFpyvCdnjAF!0bGae>H`)DpQyGA-0%o#dlALy(xbAw-Bczut@17G4D zR)(oZ`J~gkR9E{vq@)P&I$N%e2UQsa=mtO(AVsS%m-bv;s`xt=c6Wxc3e_k#XKz^T ar~3nz`*K<+JpKm&0000 + android:descendantFocusability="blocksDescendants" > - + + + android:textSize="18sp" + android:maxLines="1" + android:text="" /> + + - -