This commit is contained in:
lunaticbum 2024-08-23 17:27:44 +09:00
parent b567dba95c
commit 281ae10712
4 changed files with 40 additions and 25 deletions

View File

@ -34,6 +34,7 @@ import androidx.biometric.BiometricPrompt
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager
import androidx.lifecycle.LiveData import androidx.lifecycle.LiveData
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.work.OneTimeWorkRequest import androidx.work.OneTimeWorkRequest
import androidx.work.OneTimeWorkRequestBuilder import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.PeriodicWorkRequestBuilder import androidx.work.PeriodicWorkRequestBuilder
@ -87,11 +88,15 @@ internal class LauncherHome : Fragment() {
binding.favAppsGroup.visibility = View.GONE binding.favAppsGroup.visibility = View.GONE
mWorkManager = WorkManager.getInstance(lActivity!!.application); mWorkManager = WorkManager.getInstance(lActivity!!.application);
mWorkManager?.cancelAllWork()
mWorkManager?.enqueue(PeriodicWorkRequestBuilder<RecentSmsGetter>(30, TimeUnit.MINUTES).addTag("RecentSmsGetter").build()) mWorkManager?.enqueue(PeriodicWorkRequestBuilder<RecentSmsGetter>(30, TimeUnit.MINUTES).addTag("RecentSmsGetter").build())
mWorkManager?.enqueue(PeriodicWorkRequestBuilder<MissedCallGetter>(30, TimeUnit.MINUTES).addTag("MissedCallGetter").build()) mWorkManager?.enqueue(PeriodicWorkRequestBuilder<MissedCallGetter>(30, TimeUnit.MINUTES).addTag("MissedCallGetter").build())
mSmsWorkInfo = mWorkManager?.getWorkInfosByTagLiveData("RecentSmsGetter"); mSmsWorkInfo = mWorkManager?.getWorkInfosByTagLiveData("RecentSmsGetter");
mSavedWorkInfo = mWorkManager?.getWorkInfosByTagLiveData("MissedCallGetter"); mSavedWorkInfo = mWorkManager?.getWorkInfosByTagLiveData("MissedCallGetter");
getOutputWorkInfo().observeForever { getOutputWorkInfo().observeForever {
BLog.LOGE("getOutputWorkInfo.last() >>> ${it.size}")
BLog.LOGE("getOutputWorkInfo.last() >>> ${it.first().outputData.size()}")
BLog.LOGE("getOutputWorkInfo.last() >>> ${it.last().outputData.size()}")
it.last()?.outputData?.keyValueMap?.forEach { t, u -> it.last()?.outputData?.keyValueMap?.forEach { t, u ->
try { try {
if (u is String) { if (u is String) {
@ -108,11 +113,16 @@ internal class LauncherHome : Fragment() {
} }
getSmsInfos().observeForever { getSmsInfos().observeForever {
BLog.LOGE("getSmsInfos.last() >>> ${it.size}")
BLog.LOGE("getSmsInfos.last() >>> ${it.first().outputData.size()}")
BLog.LOGE("getSmsInfos.last() >>> ${it.last().outputData.size()}")
it.last()?.outputData?.keyValueMap?.forEach { t, u -> it.last()?.outputData?.keyValueMap?.forEach { t, u ->
try { try {
if (u is String) { if (u is String) {
BLog.LOGE("getSmsInfos() u >>> ${u}")
Gson().fromJson(u,RecentSmsLog::class.java)?.let { Gson().fromJson(u,RecentSmsLog::class.java)?.let {
smsList.add(it) smsList.add(it)
BLog.LOGE("getSmsInfos() u -> it >>> ${it}")
} }
} }
} catch (e : Exception) { } catch (e : Exception) {
@ -161,26 +171,24 @@ internal class LauncherHome : Fragment() {
binding.missedCalls.setOnClickListener { binding.missedCalls.setOnClickListener {
binding.missedCalls.isChecked = true binding.missedCalls.isChecked = true
BLog.LOGE("binding.missedCalls >> ${binding.missedCalls.isChecked}") BLog.LOGE("binding.missedCalls >> ${binding.missedCalls.isChecked}")
if (callList.size > 0 && isAdded && isResumed && isVisible) { try {
try { BLog.LOGE("callList >>> ${callList.size}")
BLog.LOGE("callList >>> ${callList.size}") binding.notes.layoutManager = LinearLayoutManager(requireContext())
binding.notes.adapter = MissedCallsAdapter(callList, requireContext()) binding.notes.adapter = MissedCallsAdapter(callList, requireContext())
binding.notes.invalidate() (binding.notes.adapter as? MissedCallsAdapter)?.notifyDataSetChanged()
} catch (e : Exception) { } catch (e : Exception) {
}
}} }}
binding.recentSms.setOnClickListener { binding.recentSms.setOnClickListener {
binding.recentSms.isChecked = true binding.recentSms.isChecked = true
BLog.LOGE("binding.recentSms >> ${binding.recentSms.isChecked}") BLog.LOGE("binding.recentSms >> ${binding.recentSms.isChecked}")
if (smsList.size > 0 && isAdded && isResumed && isVisible) { try {
try { BLog.LOGE("callList >>> ${smsList.size}")
BLog.LOGE("callList >>> ${smsList.size}") binding.notes.layoutManager = LinearLayoutManager(requireContext())
binding.notes.adapter = SmsLogsAdapter(smsList, requireContext()) binding.notes.adapter = SmsLogsAdapter(smsList, requireContext())
binding.notes.invalidate() (binding.notes.adapter as? SmsLogsAdapter)?.notifyDataSetChanged()
} catch (e : Exception) { } catch (e : Exception) {
}
} }
} }
binding.summaryChoose.setOnCheckedChangeListener { group, checkedId -> binding.summaryChoose.setOnCheckedChangeListener { group, checkedId ->

View File

@ -36,10 +36,11 @@ import rasel.lunar.launcher.utils.BLog
import rasel.lunar.launcher.utils.RecentSmsLog import rasel.lunar.launcher.utils.RecentSmsLog
import java.util.* import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
import kotlin.collections.List
internal class SmsLogsAdapter( internal class SmsLogsAdapter(
private val callList: ArrayList<RecentSmsLog>, private val smsList: ArrayList<RecentSmsLog>,
private val context: Context) : RecyclerView.Adapter<SmsLogsAdapter.SmsLogHolder>() { private val context: Context) : RecyclerView.Adapter<SmsLogsAdapter.SmsLogHolder>() {
private val currentFragment = lActivity!!.supportFragmentManager.findFragmentById(R.id.mainFragmentsContainer) private val currentFragment = lActivity!!.supportFragmentManager.findFragmentById(R.id.mainFragmentsContainer)
@ -50,20 +51,20 @@ internal class SmsLogsAdapter(
} }
override fun getItemCount(): Int { override fun getItemCount(): Int {
// BLog.LOGE("callList.size >>> ${callList.size}") BLog.LOGE("smsList.size >>> ${smsList.size}")
return callList.size return smsList.size
} }
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
override fun onBindViewHolder(holder: SmsLogHolder, position: Int) { override fun onBindViewHolder(holder: SmsLogHolder, position: Int) {
val todo = callList[position] val todo = smsList[position]
BLog.LOGE("callList >>> ${callList[position]}") BLog.LOGE("smsList >>> ${smsList[position]}")
holder.view.itemText.text = "\u25CF ${todo.person} ${todo.addr} , ${todo.body} : ${todo.pstDate} : ${todo.type}" holder.view.itemText.text = "\u25CF ${todo.person} ${todo.addr} , ${todo.body} : ${todo.pstDate} : ${todo.type}"
/* multiline texts are enabled for TodoManager */ /* multiline texts are enabled for TodoManager */
holder.view.itemText.isSingleLine = false // holder.view.itemText.isSingleLine = false
/* launch edit or update dialog on item click */ /* launch edit or update dialog on item click */
holder.view.itemText.setOnClickListener { updateDialog(position) } // holder.view.itemText.setOnClickListener { updateDialog(position) }
/* copy texts on long click */ /* copy texts on long click */
holder.view.itemText.setOnLongClickListener { holder.view.itemText.setOnLongClickListener {

View File

@ -1,5 +1,6 @@
package rasel.lunar.launcher.utils package rasel.lunar.launcher.utils
import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.provider.CallLog import android.provider.CallLog
import android.provider.Telephony import android.provider.Telephony
@ -19,6 +20,7 @@ class MissedCallGetter : Worker {
} }
@SuppressLint("RestrictedApi")
override fun doWork(): Result { override fun doWork(): Result {
var resultData = Data.Builder() var resultData = Data.Builder()
var dateParam = Date(System.currentTimeMillis() - (1000 * 60 * 60 * 24)).time.toString() var dateParam = Date(System.currentTimeMillis() - (1000 * 60 * 60 * 24)).time.toString()
@ -117,6 +119,7 @@ class RecentSmsGetter : Worker {
} }
@SuppressLint("RestrictedApi")
override fun doWork(): Result { override fun doWork(): Result {
BLog.LOGE("phNumber == onStart") BLog.LOGE("phNumber == onStart")
var resultData = Data.Builder() var resultData = Data.Builder()
@ -174,7 +177,8 @@ class RecentSmsGetter : Worker {
smsBody, smsBody,
callerName ?: "" callerName ?: ""
) )
resultData.put(phNumber +" _"+ reciveDate, log.toJson()) BLog.LOGE("resultData put ${phNumber +"_"+ reciveDate} >>> ${log.toJson()}")
resultData.put(phNumber +"_"+ reciveDate, log.toJson())
} }
@ -187,6 +191,7 @@ class RecentSmsGetter : Worker {
managedCursor.close() managedCursor.close()
} }
} }
return Result.success(resultData.build()); return Result.success(resultData.build());
} }

View File

@ -106,15 +106,16 @@
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/notes" android:id="@+id/notes"
android:layout_width="@dimen/zero" android:layout_width="@dimen/zero"
android:layout_height="200dp" android:layout_height="0dp"
android:overScrollMode="never" android:overScrollMode="never"
android:padding="20dp" android:padding="20dp"
android:scrollbars="none" android:scrollbars="none"
app:layoutManager="LinearLayoutManager" app:layoutManager="LinearLayoutManager"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/summaryChoose"
app:layout_constraintTop_toBottomOf="@+id/summaryChoose" /> app:layout_constraintBottom_toBottomOf="parent"
/>
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/favAppsGroup" android:id="@+id/favAppsGroup"