@@ -9,7 +9,6 @@ import android.content.pm.PackageManager
99import android.net.Uri
1010import android.provider.CallLog
1111import android.provider.ContactsContract
12- import android.util.TypedValue
1312import android.view.Gravity
1413import android.view.LayoutInflater
1514import android.view.View
@@ -22,12 +21,12 @@ import androidx.core.content.ContextCompat
2221import androidx.recyclerview.widget.RecyclerView
2322import com.addev.listaspam.R
2423import com.addev.listaspam.util.CallLogEntry
25- import com.addev.listaspam.util.SpamUtils
2624import com.addev.listaspam.util.addNumberToWhitelist
2725import com.addev.listaspam.util.removeSpamNumber
2826import com.addev.listaspam.util.removeWhitelistNumber
2927import com.addev.listaspam.util.saveSpamNumber
3028import java.text.SimpleDateFormat
29+ import java.util.Locale
3130
3231class CallLogAdapter (
3332 private val context : Context ,
@@ -41,12 +40,18 @@ class CallLogAdapter(
4140 }
4241
4342 companion object {
44- // URLs
4543 const val GOOGLE_URL_TEMPLATE = " https://www.google.com/search?q=%s"
4644 const val REPORT_URL_TEMPLATE = " https://www.listaspam.com/busca.php?Telefono=%s#denuncia"
4745 }
4846
49- private val formatter = SimpleDateFormat (" dd/MM/yyyy HH:mm:ss" )
47+ private val locale = Locale .getDefault()
48+
49+ private val formatter: SimpleDateFormat = if (locale.language == " en" ) {
50+ SimpleDateFormat (" MM/dd/yyyy hh:mm:ss a" , locale)
51+ } else {
52+ SimpleDateFormat (" dd/MM/yyyy HH:mm:ss" , locale)
53+ }
54+
5055 private var onItemChangedListener: OnItemChangedListener ? = null
5156
5257 override fun onCreateViewHolder (parent : ViewGroup , viewType : Int ): CallLogViewHolder {
@@ -56,7 +61,11 @@ class CallLogAdapter(
5661
5762 override fun onBindViewHolder (holder : CallLogViewHolder , position : Int ) {
5863 val callLog = callLogs[position]
59- holder.bind(callLog, blockedNumbers.contains(callLog.number), whitelistNumbers.contains(callLog.number))
64+ holder.bind(
65+ callLog,
66+ blockedNumbers.contains(callLog.number),
67+ whitelistNumbers.contains(callLog.number)
68+ )
6069 }
6170
6271 override fun getItemCount (): Int = callLogs.size
@@ -93,14 +102,36 @@ class CallLogAdapter(
93102 actionTextView.text = action
94103
95104 if (callLog.type == CallLog .Calls .BLOCKED_TYPE ) {
96- actionTextView.setTextColor(ContextCompat .getColor(context, android.R .color.holo_red_light))
105+ actionTextView.setTextColor(
106+ ContextCompat .getColor(
107+ context,
108+ android.R .color.holo_red_light
109+ )
110+ )
97111 } else {
98- actionTextView.setTextColor(ContextCompat .getColor(context, android.R .color.darker_gray))
112+ actionTextView.setTextColor(
113+ ContextCompat .getColor(
114+ context,
115+ android.R .color.darker_gray
116+ )
117+ )
99118 }
100119
101120 when {
102- isBlocked -> numberTextView.setTextColor(ContextCompat .getColor(context, android.R .color.holo_red_light))
103- isWhitelisted -> numberTextView.setTextColor(ContextCompat .getColor(context, android.R .color.holo_blue_dark))
121+ isBlocked -> numberTextView.setTextColor(
122+ ContextCompat .getColor(
123+ context,
124+ android.R .color.holo_red_light
125+ )
126+ )
127+
128+ isWhitelisted -> numberTextView.setTextColor(
129+ ContextCompat .getColor(
130+ context,
131+ android.R .color.holo_blue_dark
132+ )
133+ )
134+
104135 else -> {
105136 numberTextView.setTextColor(ContextCompat .getColor(context, R .color.textColor))
106137 }
@@ -110,10 +141,16 @@ class CallLogAdapter(
110141 overflowMenuButton.visibility = View .GONE
111142 return
112143 }
113-
144+
114145 overflowMenuButton.visibility = View .VISIBLE
115146 overflowMenuButton.setOnClickListener {
116- val popupMenu = PopupMenu (itemView.context, overflowMenuButton, Gravity .NO_GRAVITY , android.R .attr.popupMenuStyle, R .style.PopupMenuStyle )
147+ val popupMenu = PopupMenu (
148+ itemView.context,
149+ overflowMenuButton,
150+ Gravity .NO_GRAVITY ,
151+ android.R .attr.popupMenuStyle,
152+ R .style.PopupMenuStyle
153+ )
117154 popupMenu.inflate(R .menu.item_actions)
118155
119156 setDynamicTitles(popupMenu, isBlocked, isWhitelisted)
@@ -124,10 +161,12 @@ class CallLogAdapter(
124161 searchAction(number)
125162 true
126163 }
164+
127165 R .id.report_action -> {
128166 reportAction(number)
129167 true
130168 }
169+
131170 R .id.whitelist_action -> {
132171 if (isWhitelisted) {
133172 removeWhitelistNumber(context, number)
@@ -137,6 +176,7 @@ class CallLogAdapter(
137176 onItemChangedListener?.onItemChanged(number)
138177 true
139178 }
179+
140180 R .id.block_action -> {
141181 if (isBlocked) {
142182 removeSpamNumber(context, number)
@@ -146,6 +186,7 @@ class CallLogAdapter(
146186 onItemChangedListener?.onItemChanged(number)
147187 true
148188 }
189+
149190 else -> false
150191 }
151192 }
@@ -181,9 +222,15 @@ class CallLogAdapter(
181222 }
182223
183224 private fun getContactName (context : Context , phoneNumber : String ): String? {
184- if (ContextCompat .checkSelfPermission(context, Manifest .permission.READ_CONTACTS ) == PackageManager .PERMISSION_GRANTED ) {
225+ if (ContextCompat .checkSelfPermission(
226+ context,
227+ Manifest .permission.READ_CONTACTS
228+ ) == PackageManager .PERMISSION_GRANTED
229+ ) {
185230 val contentResolver = context.contentResolver
186- val uri = ContactsContract .PhoneLookup .CONTENT_FILTER_URI .buildUpon().appendPath(phoneNumber).build()
231+ val uri =
232+ ContactsContract .PhoneLookup .CONTENT_FILTER_URI .buildUpon().appendPath(phoneNumber)
233+ .build()
187234 val projection = arrayOf(ContactsContract .PhoneLookup .DISPLAY_NAME )
188235
189236 contentResolver.query(uri, projection, null , null , null )?.use { cursor ->
0 commit comments