mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-05 12:07:25 +00:00
Added SwipeToRefresh layout for the passes recycler
This commit is contained in:
1 parent
3f125602cf
commit
bb8a060ef3
2 files changed
+29
-47
No files matched your search
@@ -25,7 +25,6 @@ import android.view.LayoutInflater
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.ImageButton
|
import android.widget.ImageButton
|
||||||
import android.widget.ProgressBar
|
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
@@ -34,6 +33,7 @@ import androidx.lifecycle.ViewModelProvider
|
|||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
import com.github.amsacode.predict4java.TLE
|
import com.github.amsacode.predict4java.TLE
|
||||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
import com.rtbishop.look4sat.MainViewModel
|
import com.rtbishop.look4sat.MainViewModel
|
||||||
@@ -46,21 +46,21 @@ import java.util.concurrent.TimeUnit
|
|||||||
class SkyFragment : Fragment() {
|
class SkyFragment : Fragment() {
|
||||||
|
|
||||||
private lateinit var viewModel: MainViewModel
|
private lateinit var viewModel: MainViewModel
|
||||||
private lateinit var recViewCurrent: RecyclerView
|
|
||||||
private lateinit var recViewFuture: RecyclerView
|
private lateinit var recViewFuture: RecyclerView
|
||||||
private lateinit var recAdapterCurrent: RecyclerView.Adapter<*>
|
|
||||||
private lateinit var recAdapterFuture: SatPassAdapter
|
private lateinit var recAdapterFuture: SatPassAdapter
|
||||||
private lateinit var timeToAos: TextView
|
private lateinit var timeToAos: TextView
|
||||||
private lateinit var btnRefresh: ImageButton
|
private lateinit var btnRefresh: ImageButton
|
||||||
private lateinit var progressBar: ProgressBar
|
|
||||||
private lateinit var fab: FloatingActionButton
|
private lateinit var fab: FloatingActionButton
|
||||||
private lateinit var aosTimer: CountDownTimer
|
private lateinit var aosTimer: CountDownTimer
|
||||||
|
private lateinit var swipeLayout: SwipeRefreshLayout
|
||||||
private lateinit var satPassList: List<SatPass>
|
private lateinit var satPassList: List<SatPass>
|
||||||
|
private lateinit var mainActivity: MainActivity
|
||||||
private var isTimerSet: Boolean = false
|
private var isTimerSet: Boolean = false
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
viewModel = ViewModelProvider(activity as MainActivity).get(MainViewModel::class.java)
|
mainActivity = activity as MainActivity
|
||||||
|
viewModel = ViewModelProvider(mainActivity).get(MainViewModel::class.java)
|
||||||
recAdapterFuture = SatPassAdapter()
|
recAdapterFuture = SatPassAdapter()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,15 +76,15 @@ class SkyFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun setupViews(view: View) {
|
private fun setupViews(view: View) {
|
||||||
timeToAos = (activity as MainActivity).findViewById(R.id.toolbar_time_to_aos)
|
timeToAos = (mainActivity).findViewById(R.id.toolbar_time_to_aos)
|
||||||
btnRefresh = (activity as MainActivity).findViewById(R.id.toolbar_btn_refresh)
|
btnRefresh = (mainActivity).findViewById(R.id.toolbar_btn_refresh)
|
||||||
progressBar = view.findViewById(R.id.sky_progressbar)
|
swipeLayout = view.findViewById(R.id.swipeRefreshLayout)
|
||||||
recViewFuture = view.findViewById(R.id.sky_recycler_future)
|
recViewFuture = view.findViewById(R.id.sky_recycler_future)
|
||||||
fab = view.findViewById(R.id.sky_fab)
|
fab = view.findViewById(R.id.sky_fab)
|
||||||
|
|
||||||
satPassList = viewModel.satPassList
|
satPassList = viewModel.satPassList
|
||||||
recViewFuture.apply {
|
recViewFuture.apply {
|
||||||
layoutManager = LinearLayoutManager(activity as MainActivity)
|
layoutManager = LinearLayoutManager(mainActivity)
|
||||||
adapter = recAdapterFuture
|
adapter = recAdapterFuture
|
||||||
}
|
}
|
||||||
recAdapterFuture.setList(satPassList)
|
recAdapterFuture.setList(satPassList)
|
||||||
@@ -93,6 +93,7 @@ class SkyFragment : Fragment() {
|
|||||||
resetTimer()
|
resetTimer()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
swipeLayout.setOnRefreshListener { calculatePasses() }
|
||||||
btnRefresh.setOnClickListener { calculatePasses() }
|
btnRefresh.setOnClickListener { calculatePasses() }
|
||||||
fab.setOnClickListener {
|
fab.setOnClickListener {
|
||||||
showSelectSatDialog(viewModel.tleMainList, viewModel.selectionList)
|
showSelectSatDialog(viewModel.tleMainList, viewModel.selectionList)
|
||||||
@@ -106,7 +107,7 @@ class SkyFragment : Fragment() {
|
|||||||
val tleCheckedArray = BooleanArray(tleMainList.size).apply {
|
val tleCheckedArray = BooleanArray(tleMainList.size).apply {
|
||||||
selectionList.forEach { this[it] = true }
|
selectionList.forEach { this[it] = true }
|
||||||
}
|
}
|
||||||
val builder = AlertDialog.Builder(activity as MainActivity)
|
val builder = AlertDialog.Builder(mainActivity)
|
||||||
builder.setTitle(getString(R.string.dialog_select_sat))
|
builder.setTitle(getString(R.string.dialog_select_sat))
|
||||||
.setMultiChoiceItems(tleNameArray, tleCheckedArray) { _, which, isChecked ->
|
.setMultiChoiceItems(tleNameArray, tleCheckedArray) { _, which, isChecked ->
|
||||||
if (isChecked) selectionList.add(which)
|
if (isChecked) selectionList.add(which)
|
||||||
@@ -130,18 +131,16 @@ class SkyFragment : Fragment() {
|
|||||||
|
|
||||||
private fun calculatePasses() {
|
private fun calculatePasses() {
|
||||||
lifecycleScope.launch(Dispatchers.Main) {
|
lifecycleScope.launch(Dispatchers.Main) {
|
||||||
recViewFuture.visibility = View.INVISIBLE
|
|
||||||
progressBar.visibility = View.VISIBLE
|
|
||||||
progressBar.isIndeterminate = true
|
|
||||||
viewModel.getPasses()
|
viewModel.getPasses()
|
||||||
satPassList = viewModel.satPassList
|
satPassList = viewModel.satPassList
|
||||||
recAdapterFuture.setList(satPassList)
|
recAdapterFuture.setList(satPassList)
|
||||||
recAdapterFuture.notifyDataSetChanged()
|
recAdapterFuture.notifyDataSetChanged()
|
||||||
progressBar.isIndeterminate = false
|
|
||||||
progressBar.visibility = View.INVISIBLE
|
|
||||||
recViewFuture.visibility = View.VISIBLE
|
|
||||||
if (satPassList.isNotEmpty()) setTimer(satPassList.first().pass.startTime.time)
|
if (satPassList.isNotEmpty()) setTimer(satPassList.first().pass.startTime.time)
|
||||||
else resetTimer()
|
else {
|
||||||
|
resetTimer()
|
||||||
|
timeToAos.text = String.format(getString(R.string.pattern_aos), 0, 0, 0)
|
||||||
|
}
|
||||||
|
swipeLayout.isRefreshing = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,7 +170,6 @@ class SkyFragment : Fragment() {
|
|||||||
if (isTimerSet) {
|
if (isTimerSet) {
|
||||||
aosTimer.cancel()
|
aosTimer.cancel()
|
||||||
isTimerSet = false
|
isTimerSet = false
|
||||||
}
|
} else timeToAos.text = String.format(getString(R.string.pattern_aos), 0, 0, 0)
|
||||||
timeToAos.text = String.format(getString(R.string.pattern_aos), 0, 0, 0)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,37 +4,21 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<ProgressBar
|
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
android:id="@+id/sky_progressbar"
|
android:id="@+id/swipeRefreshLayout"
|
||||||
style="?android:attr/progressBarStyle"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:visibility="invisible"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
|
||||||
android:id="@+id/sky_recycler_current"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent">
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
|
||||||
|
|
||||||
</androidx.recyclerview.widget.RecyclerView>
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/sky_recycler_future"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||||
android:id="@+id/sky_recycler_future"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/sky_recycler_current">
|
|
||||||
|
|
||||||
</androidx.recyclerview.widget.RecyclerView>
|
|
||||||
|
|
||||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
android:id="@+id/sky_fab"
|
android:id="@+id/sky_fab"
|
||||||
|
|||||||
Reference in new issue
Block a user