New feature: remaining tasks tip

This commit is contained in:
Super12138 2024-04-13 10:17:45 +08:00
parent baeecb343b
commit a903c8ef98
5 changed files with 58 additions and 27 deletions

View file

@ -7,6 +7,7 @@ import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import cn.super12138.todo.R
import cn.super12138.todo.databinding.FragmentProgressBinding
@ -26,18 +27,28 @@ class ProgressFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel = ViewModelProvider(requireActivity()).get(ProgressFragmentViewModel::class.java)
viewModel = ViewModelProvider(requireActivity())[ProgressFragmentViewModel::class.java]
viewModel.progress.observe(viewLifecycleOwner, Observer { value ->
binding.progressBar.setProgressCompat(value, true)
})
viewModel.totalCount.observe(viewLifecycleOwner, Observer { total ->
binding.totalTextView.text = total.toString()
binding.totalCount.text = total.toString()
})
viewModel.completeCount.observe(viewLifecycleOwner, Observer { complete ->
binding.completeTextView.text = complete.toString()
binding.completeCount.text = complete.toString()
})
viewModel.remainCount.observe(viewLifecycleOwner, Observer { remain ->
if (remain == 0) {
binding.remainCount.visibility = View.GONE
} else {
binding.remainCount.visibility = View.VISIBLE
binding.remainCount.text =
String.format(getString(R.string.remain_text), remain.toString())
}
})
viewModel.updateProgress()

View file

@ -10,6 +10,7 @@ import kotlinx.coroutines.launch
class ProgressFragmentViewModel : ViewModel() {
val totalCount: MutableLiveData<Int> = MutableLiveData()
val completeCount: MutableLiveData<Int> = MutableLiveData()
val remainCount: MutableLiveData<Int> = MutableLiveData()
val progress: MutableLiveData<Int> = MutableLiveData()
fun updateProgress() {
@ -22,6 +23,7 @@ class ProgressFragmentViewModel : ViewModel() {
progress.postValue(calcProgress.toInt())
completeCount.postValue(complete)
totalCount.postValue(total)
remainCount.postValue(total - complete)
}
}
}

View file

@ -12,7 +12,7 @@
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:max="100"
app:indicatorSize="160dp"
app:indicatorSize="170dp"
app:indicatorTrackGapSize="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
@ -26,38 +26,54 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/completeTextView"
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="0"
android:textAppearance="@style/TextAppearance.AppCompat.Display1"
android:textColor="?android:attr/textColorPrimary"
android:textStyle="bold" />
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/complete_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:text="0"
android:textAppearance="?attr/textAppearanceDisplaySmall"
android:textColor="?android:attr/textColorPrimary"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="/"
android:textAppearance="?attr/textAppearanceDisplayMedium"
android:textColor="?android:attr/textColorPrimary"
android:textStyle="bold" />
<TextView
android:id="@+id/total_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:text="0"
android:textAppearance="?attr/textAppearanceDisplayMedium"
android:textColor="?android:attr/textColorPrimary"
android:textStyle="bold" />
</LinearLayout>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:id="@+id/remain_count"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="/"
android:textAppearance="@style/TextAppearance.AppCompat.Display2"
android:textColor="?android:attr/textColorPrimary"
android:textStyle="bold" />
<TextView
android:id="@+id/totalTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textAppearance="@style/TextAppearance.AppCompat.Display2"
android:textColor="?android:attr/textColorPrimary"
android:textStyle="bold" />
android:textAlignment="center"
android:visibility="gone"
android:textSize="12sp" />
</LinearLayout>

View file

@ -68,4 +68,5 @@
<string name="info_state_complete">状态:已完成</string>
<string name="info_state_incomplete">状态:未完成</string>
<string name="info_uuid">UUID%s</string>
<string name="remain_text">剩余 %s 项任务</string>
</resources>

View file

@ -68,4 +68,5 @@
<string name="info_state_complete">State: complete</string>
<string name="info_state_incomplete">State: incomplete</string>
<string name="info_uuid">UUID: %s</string>
<string name="remain_text">s% tasks remaining</string>
</resources>