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

View File

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

View File

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

View File

@ -106,15 +106,16 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/notes"
android:layout_width="@dimen/zero"
android:layout_height="200dp"
android:layout_height="0dp"
android:overScrollMode="never"
android:padding="20dp"
android:scrollbars="none"
app:layoutManager="LinearLayoutManager"
app:layout_constraintEnd_toEndOf="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
android:id="@+id/favAppsGroup"