ui: misc cleanups to AppListDialogFragment
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
parent
7db0fa915e
commit
2c625f56fd
@ -12,13 +12,13 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.ViewTreeObserver
|
import android.view.ViewTreeObserver
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
import androidx.fragment.app.Fragment
|
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||||
import com.google.zxing.integration.android.IntentIntegrator
|
import com.google.zxing.integration.android.IntentIntegrator
|
||||||
import com.wireguard.android.R
|
import com.wireguard.android.R
|
||||||
import com.wireguard.android.activity.TunnelCreatorActivity
|
import com.wireguard.android.activity.TunnelCreatorActivity
|
||||||
|
import com.wireguard.android.util.requireTargetFragment
|
||||||
import com.wireguard.android.util.resolveAttribute
|
import com.wireguard.android.util.resolveAttribute
|
||||||
|
|
||||||
class AddTunnelsSheet : BottomSheetDialogFragment() {
|
class AddTunnelsSheet : BottomSheetDialogFragment() {
|
||||||
@ -81,10 +81,6 @@ class AddTunnelsSheet : BottomSheetDialogFragment() {
|
|||||||
behavior?.removeBottomSheetCallback(bottomSheetCallback)
|
behavior?.removeBottomSheetCallback(bottomSheetCallback)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun requireTargetFragment(): Fragment {
|
|
||||||
return requireNotNull(targetFragment) { "A target fragment should always be set" }
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun onRequestCreateConfig() {
|
private fun onRequestCreateConfig() {
|
||||||
startActivity(Intent(activity, TunnelCreatorActivity::class.java))
|
startActivity(Intent(activity, TunnelCreatorActivity::class.java))
|
||||||
}
|
}
|
||||||
|
@ -21,11 +21,12 @@ import com.wireguard.android.databinding.AppListDialogFragmentBinding
|
|||||||
import com.wireguard.android.databinding.ObservableKeyedArrayList
|
import com.wireguard.android.databinding.ObservableKeyedArrayList
|
||||||
import com.wireguard.android.model.ApplicationData
|
import com.wireguard.android.model.ApplicationData
|
||||||
import com.wireguard.android.util.ErrorMessages
|
import com.wireguard.android.util.ErrorMessages
|
||||||
|
import com.wireguard.android.util.requireTargetFragment
|
||||||
|
|
||||||
class AppListDialogFragment : DialogFragment() {
|
class AppListDialogFragment : DialogFragment() {
|
||||||
private val appData: ObservableKeyedArrayList<String, ApplicationData> = ObservableKeyedArrayList()
|
private val appData = ObservableKeyedArrayList<String, ApplicationData>()
|
||||||
private var currentlySelectedApps = emptyList<String>()
|
private var currentlySelectedApps = emptyList<String>()
|
||||||
private var initiallyExcluded: Boolean = false
|
private var initiallyExcluded = false
|
||||||
private var button: Button? = null
|
private var button: Button? = null
|
||||||
private var tabs: TabLayout? = null
|
private var tabs: TabLayout? = null
|
||||||
|
|
||||||
@ -65,6 +66,7 @@ class AppListDialogFragment : DialogFragment() {
|
|||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
require(requireTargetFragment() is AppSelectionListener) { "${requireTargetFragment()} must implement AppSelectionListener" }
|
||||||
currentlySelectedApps = (arguments?.getStringArrayList(KEY_SELECTED_APPS) ?: emptyList())
|
currentlySelectedApps = (arguments?.getStringArrayList(KEY_SELECTED_APPS) ?: emptyList())
|
||||||
initiallyExcluded = arguments?.getBoolean(KEY_IS_EXCLUDED) ?: true
|
initiallyExcluded = arguments?.getBoolean(KEY_IS_EXCLUDED) ?: true
|
||||||
}
|
}
|
||||||
@ -86,12 +88,14 @@ class AppListDialogFragment : DialogFragment() {
|
|||||||
binding.executePendingBindings()
|
binding.executePendingBindings()
|
||||||
alertDialogBuilder.setView(binding.root)
|
alertDialogBuilder.setView(binding.root)
|
||||||
tabs = binding.tabs
|
tabs = binding.tabs
|
||||||
tabs!!.selectTab(binding.tabs.getTabAt(if (initiallyExcluded) 0 else 1))
|
tabs?.apply {
|
||||||
tabs!!.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
|
selectTab(binding.tabs.getTabAt(if (initiallyExcluded) 0 else 1))
|
||||||
|
addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
|
||||||
override fun onTabReselected(tab: TabLayout.Tab?) = Unit
|
override fun onTabReselected(tab: TabLayout.Tab?) = Unit
|
||||||
override fun onTabUnselected(tab: TabLayout.Tab?) = Unit
|
override fun onTabUnselected(tab: TabLayout.Tab?) = Unit
|
||||||
override fun onTabSelected(tab: TabLayout.Tab?) = setButtonText()
|
override fun onTabSelected(tab: TabLayout.Tab?) = setButtonText()
|
||||||
})
|
})
|
||||||
|
}
|
||||||
alertDialogBuilder.setPositiveButton(" ") { _, _ -> setSelectionAndDismiss() }
|
alertDialogBuilder.setPositiveButton(" ") { _, _ -> setSelectionAndDismiss() }
|
||||||
alertDialogBuilder.setNegativeButton(R.string.cancel) { dialog, _ -> dialog.dismiss() }
|
alertDialogBuilder.setNegativeButton(R.string.cancel) { dialog, _ -> dialog.dismiss() }
|
||||||
alertDialogBuilder.setNeutralButton(R.string.toggle_all) { _, _ -> }
|
alertDialogBuilder.setNeutralButton(R.string.toggle_all) { _, _ -> }
|
||||||
@ -119,7 +123,7 @@ class AppListDialogFragment : DialogFragment() {
|
|||||||
selectedApps.add(data.packageName)
|
selectedApps.add(data.packageName)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
(targetFragment as AppSelectionListener?)!!.onSelectedAppsSelected(selectedApps, tabs?.selectedTabPosition == 0)
|
(requireTargetFragment() as AppSelectionListener).onSelectedAppsSelected(selectedApps, tabs?.selectedTabPosition == 0)
|
||||||
dismiss()
|
dismiss()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,9 +8,14 @@ package com.wireguard.android.util
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.TypedValue
|
import android.util.TypedValue
|
||||||
import androidx.annotation.AttrRes
|
import androidx.annotation.AttrRes
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
|
||||||
fun Context.resolveAttribute(@AttrRes attrRes: Int): Int {
|
fun Context.resolveAttribute(@AttrRes attrRes: Int): Int {
|
||||||
val typedValue = TypedValue()
|
val typedValue = TypedValue()
|
||||||
theme.resolveAttribute(attrRes, typedValue, true)
|
theme.resolveAttribute(attrRes, typedValue, true)
|
||||||
return typedValue.data
|
return typedValue.data
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Fragment.requireTargetFragment(): Fragment {
|
||||||
|
return requireNotNull(targetFragment) { "A target fragment should always be set for $this" }
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user