New feature: remaining tasks tip
This commit is contained in:
parent
baeecb343b
commit
a903c8ef98
5 changed files with 58 additions and 27 deletions
|
|
@ -7,6 +7,7 @@ import android.view.ViewGroup
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.lifecycle.Observer
|
import androidx.lifecycle.Observer
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
|
import cn.super12138.todo.R
|
||||||
import cn.super12138.todo.databinding.FragmentProgressBinding
|
import cn.super12138.todo.databinding.FragmentProgressBinding
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -26,18 +27,28 @@ class ProgressFragment : Fragment() {
|
||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
viewModel = ViewModelProvider(requireActivity()).get(ProgressFragmentViewModel::class.java)
|
viewModel = ViewModelProvider(requireActivity())[ProgressFragmentViewModel::class.java]
|
||||||
|
|
||||||
viewModel.progress.observe(viewLifecycleOwner, Observer { value ->
|
viewModel.progress.observe(viewLifecycleOwner, Observer { value ->
|
||||||
binding.progressBar.setProgressCompat(value, true)
|
binding.progressBar.setProgressCompat(value, true)
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.totalCount.observe(viewLifecycleOwner, Observer { total ->
|
viewModel.totalCount.observe(viewLifecycleOwner, Observer { total ->
|
||||||
binding.totalTextView.text = total.toString()
|
binding.totalCount.text = total.toString()
|
||||||
})
|
})
|
||||||
|
|
||||||
viewModel.completeCount.observe(viewLifecycleOwner, Observer { complete ->
|
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()
|
viewModel.updateProgress()
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import kotlinx.coroutines.launch
|
||||||
class ProgressFragmentViewModel : ViewModel() {
|
class ProgressFragmentViewModel : ViewModel() {
|
||||||
val totalCount: MutableLiveData<Int> = MutableLiveData()
|
val totalCount: MutableLiveData<Int> = MutableLiveData()
|
||||||
val completeCount: MutableLiveData<Int> = MutableLiveData()
|
val completeCount: MutableLiveData<Int> = MutableLiveData()
|
||||||
|
val remainCount: MutableLiveData<Int> = MutableLiveData()
|
||||||
val progress: MutableLiveData<Int> = MutableLiveData()
|
val progress: MutableLiveData<Int> = MutableLiveData()
|
||||||
|
|
||||||
fun updateProgress() {
|
fun updateProgress() {
|
||||||
|
|
@ -22,6 +23,7 @@ class ProgressFragmentViewModel : ViewModel() {
|
||||||
progress.postValue(calcProgress.toInt())
|
progress.postValue(calcProgress.toInt())
|
||||||
completeCount.postValue(complete)
|
completeCount.postValue(complete)
|
||||||
totalCount.postValue(total)
|
totalCount.postValue(total)
|
||||||
|
remainCount.postValue(total - complete)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
android:layout_marginLeft="15dp"
|
android:layout_marginLeft="15dp"
|
||||||
android:layout_marginRight="15dp"
|
android:layout_marginRight="15dp"
|
||||||
android:max="100"
|
android:max="100"
|
||||||
app:indicatorSize="160dp"
|
app:indicatorSize="170dp"
|
||||||
app:indicatorTrackGapSize="10dp"
|
app:indicatorTrackGapSize="10dp"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
|
@ -26,38 +26,54 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:orientation="horizontal"
|
android:orientation="vertical"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
<TextView
|
<LinearLayout
|
||||||
android:id="@+id/completeTextView"
|
android:layout_width="match_parent"
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="0"
|
android:gravity="center"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Display1"
|
android:orientation="horizontal">
|
||||||
android:textColor="?android:attr/textColorPrimary"
|
|
||||||
android:textStyle="bold" />
|
<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
|
<TextView
|
||||||
android:id="@+id/textView"
|
android:id="@+id/remain_count"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="/"
|
android:textAlignment="center"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Display2"
|
android:visibility="gone"
|
||||||
android:textColor="?android:attr/textColorPrimary"
|
android:textSize="12sp" />
|
||||||
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" />
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -68,4 +68,5 @@
|
||||||
<string name="info_state_complete">状态:已完成</string>
|
<string name="info_state_complete">状态:已完成</string>
|
||||||
<string name="info_state_incomplete">状态:未完成</string>
|
<string name="info_state_incomplete">状态:未完成</string>
|
||||||
<string name="info_uuid">UUID:%s</string>
|
<string name="info_uuid">UUID:%s</string>
|
||||||
|
<string name="remain_text">剩余 %s 项任务</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
@ -68,4 +68,5 @@
|
||||||
<string name="info_state_complete">State: complete</string>
|
<string name="info_state_complete">State: complete</string>
|
||||||
<string name="info_state_incomplete">State: incomplete</string>
|
<string name="info_state_incomplete">State: incomplete</string>
|
||||||
<string name="info_uuid">UUID: %s</string>
|
<string name="info_uuid">UUID: %s</string>
|
||||||
|
<string name="remain_text">s% tasks remaining</string>
|
||||||
</resources>
|
</resources>
|
||||||
Loading…
Reference in a new issue