Commit ebee665f authored by Mygod's avatar Mygod

Migrate away from deprecated APIs with core 1.3.0-alpha05

parent f34226a4
......@@ -33,6 +33,7 @@ import android.widget.TextView
import androidx.core.net.toUri
import androidx.core.text.HtmlCompat
import androidx.core.text.parseAsHtml
import androidx.core.view.ViewCompat
import com.github.shadowsocks.widget.ListHolderListener
import com.github.shadowsocks.widget.MainListListener
import com.google.android.gms.oss.licenses.OssLicensesMenuActivity
......@@ -43,10 +44,10 @@ class AboutFragment : ToolbarFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
view.setOnApplyWindowInsetsListener(ListHolderListener)
ViewCompat.setOnApplyWindowInsetsListener(view, ListHolderListener)
toolbar.title = getString(R.string.about_title, BuildConfig.VERSION_NAME)
view.findViewById<TextView>(R.id.tv_about).apply {
setOnApplyWindowInsetsListener(MainListListener)
ViewCompat.setOnApplyWindowInsetsListener(this, MainListListener)
text = SpannableStringBuilder(resources.openRawResource(R.raw.about).bufferedReader().readText()
.parseAsHtml(HtmlCompat.FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM)).apply {
for (span in getSpans(0, length, URLSpan::class.java)) {
......
......@@ -39,6 +39,7 @@ import android.widget.SearchView
import androidx.annotation.UiThread
import androidx.appcompat.app.AppCompatActivity
import androidx.core.util.set
import androidx.core.view.ViewCompat
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.LinearLayoutManager
......@@ -240,7 +241,7 @@ class AppManager : AppCompatActivity() {
}
initProxiedUids()
list.setOnApplyWindowInsetsListener(ListListener)
ViewCompat.setOnApplyWindowInsetsListener(list, ListListener)
list.layoutManager = LinearLayoutManager(this, RecyclerView.VERTICAL, false)
list.itemAnimator = DefaultItemAnimator()
list.adapter = appsAdapter
......
......@@ -24,6 +24,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.view.ViewCompat
import com.github.shadowsocks.widget.ListHolderListener
class GlobalSettingsFragment : ToolbarFragment() {
......@@ -32,7 +33,7 @@ class GlobalSettingsFragment : ToolbarFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
view.setOnApplyWindowInsetsListener(ListHolderListener)
ViewCompat.setOnApplyWindowInsetsListener(view, ListHolderListener)
toolbar.setTitle(R.string.settings)
}
}
......@@ -23,6 +23,7 @@ package com.github.shadowsocks
import android.os.Build
import android.os.Bundle
import android.view.View
import androidx.core.view.ViewCompat
import androidx.preference.EditTextPreference
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
......@@ -78,7 +79,7 @@ class GlobalSettingsPreferenceFragment : PreferenceFragmentCompat() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
listView.setOnApplyWindowInsetsListener(MainListListener)
ViewCompat.setOnApplyWindowInsetsListener(listView, MainListListener)
}
override fun onDestroy() {
......
......@@ -23,15 +23,17 @@ package com.github.shadowsocks
import android.content.ActivityNotFoundException
import android.os.Bundle
import android.os.RemoteException
import android.view.*
import android.view.KeyCharacterMap
import android.view.KeyEvent
import android.view.MenuItem
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.browser.customtabs.CustomTabColorSchemeParams
import androidx.browser.customtabs.CustomTabsIntent
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import androidx.core.view.GravityCompat
import androidx.core.view.updateLayoutParams
import androidx.core.view.*
import androidx.drawerlayout.widget.DrawerLayout
import androidx.preference.PreferenceDataStore
import com.github.shadowsocks.acl.CustomRulesFragment
......@@ -132,13 +134,13 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false)
setContentView(R.layout.layout_main)
snackbar = findViewById(R.id.snackbar)
snackbar.setOnApplyWindowInsetsListener(ListHolderListener)
ViewCompat.setOnApplyWindowInsetsListener(snackbar, ListHolderListener)
stats = findViewById(R.id.stats)
stats.setOnClickListener { if (state == BaseService.State.Connected) stats.testConnection() }
drawer = findViewById(R.id.drawer)
drawer.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
navigation = findViewById(R.id.navigation)
navigation.setNavigationItemSelectedListener(this)
if (savedInstanceState == null) {
......@@ -148,9 +150,9 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref
fab = findViewById(R.id.fab)
fab.setOnClickListener { toggle() }
fab.setOnApplyWindowInsetsListener { view, insets ->
ViewCompat.setOnApplyWindowInsetsListener(fab) { view, insets ->
view.updateLayoutParams<ViewGroup.MarginLayoutParams> {
bottomMargin = insets.systemWindowInsetBottom +
bottomMargin = insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom +
resources.getDimensionPixelOffset(R.dimen.mtrl_bottomappbar_fab_bottom_margin)
}
insets
......
......@@ -34,6 +34,7 @@ import androidx.activity.result.component1
import androidx.activity.result.component2
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
import androidx.core.view.ViewCompat
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.whenCreated
import androidx.preference.*
......@@ -125,7 +126,7 @@ class ProfileConfigFragment : PreferenceFragmentCompat(),
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
listView.setOnApplyWindowInsetsListener(ListListener)
ViewCompat.setOnApplyWindowInsetsListener(listView, ListListener)
}
private fun initPlugins() {
......
......@@ -39,6 +39,7 @@ import androidx.appcompat.widget.PopupMenu
import androidx.appcompat.widget.Toolbar
import androidx.appcompat.widget.TooltipCompat
import androidx.core.os.bundleOf
import androidx.core.view.ViewCompat
import androidx.fragment.app.DialogFragment
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.*
......@@ -328,13 +329,13 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
view.setOnApplyWindowInsetsListener(ListHolderListener)
ViewCompat.setOnApplyWindowInsetsListener(view, ListHolderListener)
toolbar.setTitle(R.string.profiles)
toolbar.inflateMenu(R.menu.profile_manager_menu)
toolbar.setOnMenuItemClickListener(this)
ProfileManager.ensureNotEmpty()
profilesList = view.findViewById(R.id.list)
profilesList.setOnApplyWindowInsetsListener(MainListListener)
ViewCompat.setOnApplyWindowInsetsListener(profilesList, MainListListener)
profilesList.layoutManager = layoutManager
profilesList.addItemDecoration(DividerItemDecoration(context, layoutManager.orientation))
layoutManager.scrollToPosition(profilesAdapter.profiles.indexOfFirst { it.id == DataStore.profileId })
......
......@@ -28,6 +28,7 @@ import android.view.ViewGroup
import android.widget.CheckedTextView
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import androidx.core.view.ViewCompat
import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
......@@ -93,7 +94,7 @@ class UdpFallbackProfileActivity : AppCompatActivity() {
toolbar.setNavigationOnClickListener { finish() }
findViewById<RecyclerView>(R.id.list).apply {
setOnApplyWindowInsetsListener(ListListener)
ViewCompat.setOnApplyWindowInsetsListener(this, ListListener)
itemAnimator = DefaultItemAnimator()
adapter = profilesAdapter
layoutManager = LinearLayoutManager(this@UdpFallbackProfileActivity, RecyclerView.VERTICAL, false).apply {
......
......@@ -36,6 +36,8 @@ import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.Toolbar
import androidx.core.content.ContextCompat
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager
......@@ -378,7 +380,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener,
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
view.setOnApplyWindowInsetsListener(ListHolderListener)
ViewCompat.setOnApplyWindowInsetsListener(view, ListHolderListener)
if (savedInstanceState != null) {
selectedItems.addAll(savedInstanceState.getStringArray(SELECTED_SUBNETS)
?.mapNotNull { Subnet.fromString(it) } ?: listOf())
......@@ -393,7 +395,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener,
toolbar.setOnMenuItemClickListener(this)
val activity = activity as MainActivity
list = view.findViewById(R.id.list)
list.setOnApplyWindowInsetsListener(MainListListener)
ViewCompat.setOnApplyWindowInsetsListener(list, MainListListener)
list.layoutManager = LinearLayoutManager(activity, RecyclerView.VERTICAL, false)
list.itemAnimator = DefaultItemAnimator()
list.adapter = adapter
......@@ -496,7 +498,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener,
// for dark mode, it's roughly 850? (#303030)
val colorId = if (resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK !=
Configuration.UI_MODE_NIGHT_YES) {
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
WindowInsetsControllerCompat(window, window.decorView).isAppearanceLightStatusBars = true
R.color.material_grey_300
} else android.R.color.black
window.statusBarColor = ContextCompat.getColor(activity, colorId)
......@@ -530,7 +532,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener,
val window = activity.window
window.statusBarColor = ContextCompat.getColor(activity,
activity.theme.resolveResourceId(android.R.attr.statusBarColor))
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE
WindowInsetsControllerCompat(window, window.decorView).isAppearanceLightStatusBars = false
toolbar.touchscreenBlocksFocus = false
selectedItems.clear()
onSelectedItemsUpdated()
......
......@@ -33,6 +33,7 @@ import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.Toolbar
import androidx.core.view.ViewCompat
import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager
......@@ -215,7 +216,7 @@ class SubscriptionFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
view.setOnApplyWindowInsetsListener(ListHolderListener)
ViewCompat.setOnApplyWindowInsetsListener(view, ListHolderListener)
toolbar.setTitle(R.string.subscriptions)
toolbar.inflateMenu(R.menu.subscription_menu)
toolbar.setOnMenuItemClickListener(this)
......@@ -224,7 +225,7 @@ class SubscriptionFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener
}
val activity = activity as MainActivity
list = view.findViewById(R.id.list)
list.setOnApplyWindowInsetsListener(MainListListener)
ViewCompat.setOnApplyWindowInsetsListener(list, MainListListener)
list.layoutManager = LinearLayoutManager(activity, RecyclerView.VERTICAL, false)
list.itemAnimator = DefaultItemAnimator()
list.adapter = adapter
......
......@@ -30,6 +30,7 @@ import android.widget.CheckedTextView
import android.widget.Switch
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import androidx.core.view.ViewCompat
import androidx.recyclerview.widget.DefaultItemAnimator
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
......@@ -104,7 +105,7 @@ class ConfigActivity : AppCompatActivity() {
switch = findViewById(R.id.serviceSwitch)
switch.isChecked = taskerOption.switchOn
findViewById<RecyclerView>(R.id.list).apply {
setOnApplyWindowInsetsListener(ListListener)
ViewCompat.setOnApplyWindowInsetsListener(this, ListListener)
itemAnimator = DefaultItemAnimator()
adapter = profilesAdapter
layoutManager = LinearLayoutManager(this@ConfigActivity, RecyclerView.VERTICAL, false).apply {
......
......@@ -21,33 +21,35 @@
package com.github.shadowsocks.widget
import android.view.View
import android.view.WindowInsets
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.updatePadding
import androidx.core.graphics.Insets
import androidx.core.view.*
import com.github.shadowsocks.R
object ListHolderListener : View.OnApplyWindowInsetsListener {
override fun onApplyWindowInsets(view: View, insets: WindowInsets): WindowInsets {
view.updatePadding(insets.systemWindowInsetLeft, insets.systemWindowInsetTop, insets.systemWindowInsetRight)
@Suppress("DEPRECATION")
return insets.replaceSystemWindowInsets(0, 0, 0, insets.systemWindowInsetBottom)
object ListHolderListener : OnApplyWindowInsetsListener {
override fun onApplyWindowInsets(view: View, insets: WindowInsetsCompat): WindowInsetsCompat {
val statusBarInsets = insets.getInsets(WindowInsetsCompat.Type.statusBars())
view.setPadding(statusBarInsets.left, statusBarInsets.top, statusBarInsets.right, statusBarInsets.bottom)
return WindowInsetsCompat.Builder(insets).apply {
setInsets(WindowInsetsCompat.Type.statusBars(), Insets.NONE)
}.build()
}
fun setup(activity: AppCompatActivity) = activity.findViewById<View>(android.R.id.content).run {
setOnApplyWindowInsetsListener(ListHolderListener)
systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
fun setup(activity: AppCompatActivity) = activity.findViewById<View>(android.R.id.content).let {
ViewCompat.setOnApplyWindowInsetsListener(it, ListHolderListener)
WindowCompat.setDecorFitsSystemWindows(activity.window, false)
}
}
object MainListListener : View.OnApplyWindowInsetsListener {
override fun onApplyWindowInsets(view: View, insets: WindowInsets) = insets.apply {
object MainListListener : OnApplyWindowInsetsListener {
override fun onApplyWindowInsets(view: View, insets: WindowInsetsCompat) = insets.apply {
view.updatePadding(bottom = view.resources.getDimensionPixelOffset(R.dimen.main_list_padding_bottom) +
systemWindowInsetBottom)
insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom)
}
}
object ListListener : View.OnApplyWindowInsetsListener {
override fun onApplyWindowInsets(view: View, insets: WindowInsets) = insets.apply {
view.updatePadding(bottom = systemWindowInsetBottom)
object ListListener : OnApplyWindowInsetsListener {
override fun onApplyWindowInsets(view: View, insets: WindowInsetsCompat) = insets.apply {
view.updatePadding(bottom = insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom)
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment