Browse Source

ui: misc cleanups to AppListDialogFragment

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
master
Harsh Shandilya 4 years ago
parent
commit
2c625f56fd
No known key found for this signature in database GPG Key ID: 366D7BBAD1031E80
3 changed files with 19 additions and 14 deletions
  1. +1
    -5
      ui/src/main/java/com/wireguard/android/fragment/AddTunnelsSheet.kt
  2. +13
    -9
      ui/src/main/java/com/wireguard/android/fragment/AppListDialogFragment.kt
  3. +5
    -0
      ui/src/main/java/com/wireguard/android/util/Extensions.kt

+ 1
- 5
ui/src/main/java/com/wireguard/android/fragment/AddTunnelsSheet.kt View File

@@ -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))
} }


+ 13
- 9
ui/src/main/java/com/wireguard/android/fragment/AppListDialogFragment.kt View File

@@ -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!!.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabReselected(tab: TabLayout.Tab?) = Unit
override fun onTabUnselected(tab: TabLayout.Tab?) = Unit
override fun onTabSelected(tab: TabLayout.Tab?) = setButtonText()
})
tabs?.apply {
selectTab(binding.tabs.getTabAt(if (initiallyExcluded) 0 else 1))
addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabReselected(tab: TabLayout.Tab?) = Unit
override fun onTabUnselected(tab: TabLayout.Tab?) = Unit
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()
} }




+ 5
- 0
ui/src/main/java/com/wireguard/android/util/Extensions.kt View File

@@ -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…
Cancel
Save