Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
com.ccwangluo.accelerator
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sheteng
com.ccwangluo.accelerator
Commits
fdf2da1b
Commit
fdf2da1b
authored
Aug 22, 2019
by
Mygod
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Immersive theme everywhere
parent
2b5d708e
Changes
20
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
120 additions
and
65 deletions
+120
-65
core/src/main/java/com/github/shadowsocks/utils/Utils.kt
core/src/main/java/com/github/shadowsocks/utils/Utils.kt
+0
-17
mobile/src/main/java/com/github/shadowsocks/AboutFragment.kt
mobile/src/main/java/com/github/shadowsocks/AboutFragment.kt
+4
-0
mobile/src/main/java/com/github/shadowsocks/AppManager.kt
mobile/src/main/java/com/github/shadowsocks/AppManager.kt
+4
-7
mobile/src/main/java/com/github/shadowsocks/GlobalSettingsFragment.kt
...ain/java/com/github/shadowsocks/GlobalSettingsFragment.kt
+2
-0
mobile/src/main/java/com/github/shadowsocks/GlobalSettingsPreferenceFragment.kt
...om/github/shadowsocks/GlobalSettingsPreferenceFragment.kt
+7
-0
mobile/src/main/java/com/github/shadowsocks/MainActivity.kt
mobile/src/main/java/com/github/shadowsocks/MainActivity.kt
+9
-4
mobile/src/main/java/com/github/shadowsocks/ProfileConfigActivity.kt
...main/java/com/github/shadowsocks/ProfileConfigActivity.kt
+2
-2
mobile/src/main/java/com/github/shadowsocks/ProfileConfigFragment.kt
...main/java/com/github/shadowsocks/ProfileConfigFragment.kt
+2
-5
mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt
.../src/main/java/com/github/shadowsocks/ProfilesFragment.kt
+8
-1
mobile/src/main/java/com/github/shadowsocks/UdpFallbackProfileActivity.kt
...java/com/github/shadowsocks/UdpFallbackProfileActivity.kt
+4
-7
mobile/src/main/java/com/github/shadowsocks/acl/CustomRulesFragment.kt
...in/java/com/github/shadowsocks/acl/CustomRulesFragment.kt
+4
-0
mobile/src/main/java/com/github/shadowsocks/tasker/ConfigActivity.kt
...main/java/com/github/shadowsocks/tasker/ConfigActivity.kt
+4
-7
mobile/src/main/java/com/github/shadowsocks/widget/WindowInsetsListeners.kt
...va/com/github/shadowsocks/widget/WindowInsetsListeners.kt
+53
-0
mobile/src/main/res/layout/layout_about.xml
mobile/src/main/res/layout/layout_about.xml
+2
-1
mobile/src/main/res/layout/layout_custom_rules.xml
mobile/src/main/res/layout/layout_custom_rules.xml
+1
-1
mobile/src/main/res/layout/layout_global_settings.xml
mobile/src/main/res/layout/layout_global_settings.xml
+2
-1
mobile/src/main/res/layout/layout_list.xml
mobile/src/main/res/layout/layout_list.xml
+2
-2
mobile/src/main/res/layout/layout_main.xml
mobile/src/main/res/layout/layout_main.xml
+8
-7
mobile/src/main/res/values/dimen.xml
mobile/src/main/res/values/dimen.xml
+1
-0
mobile/src/main/res/values/styles.xml
mobile/src/main/res/values/styles.xml
+1
-3
No files found.
core/src/main/java/com/github/shadowsocks/utils/Utils.kt
View file @
fdf2da1b
...
...
@@ -34,11 +34,7 @@ import android.os.Build
import
android.system.Os
import
android.system.OsConstants
import
android.util.TypedValue
import
android.view.View
import
android.view.ViewGroup
import
androidx.annotation.AttrRes
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.view.updateLayoutParams
import
androidx.preference.Preference
import
com.crashlytics.android.Crashlytics
import
kotlinx.coroutines.Dispatchers
...
...
@@ -125,19 +121,6 @@ fun Resources.Theme.resolveResourceId(@AttrRes resId: Int): Int {
val
Intent
.
datas
get
()
=
listOfNotNull
(
data
)
+
(
clipData
?.
asIterable
()
?.
mapNotNull
{
it
.
uri
}
?:
emptyList
())
fun
AppCompatActivity
.
consumeSystemWindowInsetsWithList
()
=
findViewById
<
View
>(
android
.
R
.
id
.
content
).
apply
{
setOnApplyWindowInsetsListener
{
v
,
insets
->
v
.
updateLayoutParams
<
ViewGroup
.
MarginLayoutParams
>
{
leftMargin
=
insets
.
systemWindowInsetLeft
topMargin
=
insets
.
systemWindowInsetTop
rightMargin
=
insets
.
systemWindowInsetRight
}
@Suppress
(
"DEPRECATION"
)
insets
.
replaceSystemWindowInsets
(
0
,
0
,
0
,
insets
.
systemWindowInsetBottom
)
}
systemUiVisibility
=
View
.
SYSTEM_UI_FLAG_LAYOUT_STABLE
or
View
.
SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
}
fun
printLog
(
t
:
Throwable
)
{
Crashlytics
.
logException
(
t
)
t
.
printStackTrace
()
...
...
mobile/src/main/java/com/github/shadowsocks/AboutFragment.kt
View file @
fdf2da1b
...
...
@@ -33,6 +33,8 @@ import android.widget.TextView
import
androidx.core.net.toUri
import
androidx.core.text.HtmlCompat
import
androidx.core.text.parseAsHtml
import
com.github.shadowsocks.widget.ListHolderListener
import
com.github.shadowsocks.widget.MainListListener
class
AboutFragment
:
ToolbarFragment
()
{
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?):
View
?
=
...
...
@@ -40,8 +42,10 @@ class AboutFragment : ToolbarFragment() {
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
super
.
onViewCreated
(
view
,
savedInstanceState
)
view
.
setOnApplyWindowInsetsListener
(
ListHolderListener
)
toolbar
.
title
=
getString
(
R
.
string
.
about_title
,
BuildConfig
.
VERSION_NAME
)
view
.
findViewById
<
TextView
>(
R
.
id
.
tv_about
).
apply
{
setOnApplyWindowInsetsListener
(
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
))
{
...
...
mobile/src/main/java/com/github/shadowsocks/AppManager.kt
View file @
fdf2da1b
...
...
@@ -42,7 +42,6 @@ import androidx.annotation.UiThread
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.content.getSystemService
import
androidx.core.util.set
import
androidx.core.view.updatePadding
import
androidx.recyclerview.widget.DefaultItemAnimator
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
...
...
@@ -52,7 +51,8 @@ import com.github.shadowsocks.preference.DataStore
import
com.github.shadowsocks.utils.DirectBoot
import
com.github.shadowsocks.utils.Key
import
com.github.shadowsocks.utils.SingleInstanceActivity
import
com.github.shadowsocks.utils.consumeSystemWindowInsetsWithList
import
com.github.shadowsocks.widget.ListHolderListener
import
com.github.shadowsocks.widget.ListListener
import
com.google.android.material.snackbar.Snackbar
import
kotlinx.android.synthetic.main.layout_apps.*
import
kotlinx.android.synthetic.main.layout_apps_item.view.*
...
...
@@ -214,7 +214,7 @@ class AppManager : AppCompatActivity() {
super
.
onCreate
(
savedInstanceState
)
SingleInstanceActivity
.
register
(
this
)
?:
return
setContentView
(
R
.
layout
.
layout_apps
)
consumeSystemWindowInsetsWithList
(
)
ListHolderListener
.
setup
(
this
)
setSupportActionBar
(
toolbar
)
supportActionBar
!!
.
setDisplayHomeAsUpEnabled
(
true
)
...
...
@@ -237,10 +237,7 @@ class AppManager : AppCompatActivity() {
}
initProxiedUids
()
list
.
setOnApplyWindowInsetsListener
{
v
,
insets
->
v
.
updatePadding
(
bottom
=
insets
.
systemWindowInsetBottom
)
insets
.
consumeSystemWindowInsets
()
}
list
.
setOnApplyWindowInsetsListener
(
ListListener
)
list
.
layoutManager
=
LinearLayoutManager
(
this
,
RecyclerView
.
VERTICAL
,
false
)
list
.
itemAnimator
=
DefaultItemAnimator
()
list
.
adapter
=
appsAdapter
...
...
mobile/src/main/java/com/github/shadowsocks/GlobalSettingsFragment.kt
View file @
fdf2da1b
...
...
@@ -24,6 +24,7 @@ import android.os.Bundle
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
com.github.shadowsocks.widget.ListHolderListener
class
GlobalSettingsFragment
:
ToolbarFragment
()
{
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?):
View
?
=
...
...
@@ -31,6 +32,7 @@ class GlobalSettingsFragment : ToolbarFragment() {
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
super
.
onViewCreated
(
view
,
savedInstanceState
)
view
.
setOnApplyWindowInsetsListener
(
ListHolderListener
)
toolbar
.
setTitle
(
R
.
string
.
settings
)
if
(
savedInstanceState
!=
null
)
return
...
...
mobile/src/main/java/com/github/shadowsocks/GlobalSettingsPreferenceFragment.kt
View file @
fdf2da1b
...
...
@@ -24,6 +24,7 @@ import android.app.Activity
import
android.content.Intent
import
android.os.Build
import
android.os.Bundle
import
android.view.View
import
androidx.preference.EditTextPreference
import
androidx.preference.Preference
import
androidx.preference.PreferenceFragmentCompat
...
...
@@ -38,6 +39,7 @@ import com.github.shadowsocks.preference.EditTextPreferenceModifiers
import
com.github.shadowsocks.preference.HostsSummaryProvider
import
com.github.shadowsocks.utils.readableMessage
import
com.github.shadowsocks.utils.remove
import
com.github.shadowsocks.widget.MainListListener
class
GlobalSettingsPreferenceFragment
:
PreferenceFragmentCompat
()
{
companion
object
{
...
...
@@ -115,6 +117,11 @@ class GlobalSettingsPreferenceFragment : PreferenceFragmentCompat() {
serviceMode
.
onPreferenceChangeListener
=
onServiceModeChange
}
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
super
.
onViewCreated
(
view
,
savedInstanceState
)
listView
.
setOnApplyWindowInsetsListener
(
MainListListener
)
}
override
fun
onDisplayPreferenceDialog
(
preference
:
Preference
?)
{
if
(
preference
==
hosts
)
BrowsableEditTextPreferenceDialogFragment
().
apply
{
setKey
(
hosts
.
key
)
...
...
mobile/src/main/java/com/github/shadowsocks/MainActivity.kt
View file @
fdf2da1b
...
...
@@ -29,10 +29,7 @@ import android.os.Bundle
import
android.os.Handler
import
android.os.RemoteException
import
android.util.Log
import
android.view.KeyCharacterMap
import
android.view.KeyEvent
import
android.view.MenuItem
import
android.view.View
import
android.view.*
import
androidx.appcompat.app.AppCompatActivity
import
androidx.browser.customtabs.CustomTabColorSchemeParams
import
androidx.browser.customtabs.CustomTabsIntent
...
...
@@ -40,6 +37,7 @@ 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.drawerlayout.widget.DrawerLayout
import
androidx.preference.PreferenceDataStore
import
com.crashlytics.android.Crashlytics
...
...
@@ -170,6 +168,13 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Callback, OnPref
fab
=
findViewById
(
R
.
id
.
fab
)
fab
.
setOnClickListener
{
toggle
()
}
fab
.
setOnApplyWindowInsetsListener
{
view
,
insets
->
view
.
updateLayoutParams
<
ViewGroup
.
MarginLayoutParams
>
{
bottomMargin
=
insets
.
systemWindowInsetBottom
+
resources
.
getDimensionPixelOffset
(
R
.
dimen
.
mtrl_bottomappbar_fab_bottom_margin
)
}
insets
}
changeState
(
BaseService
.
State
.
Idle
)
// reset everything to init state
connection
.
connect
(
this
,
this
)
...
...
mobile/src/main/java/com/github/shadowsocks/ProfileConfigActivity.kt
View file @
fdf2da1b
...
...
@@ -33,7 +33,7 @@ import com.github.shadowsocks.plugin.Empty
import
com.github.shadowsocks.plugin.PluginContract
import
com.github.shadowsocks.preference.DataStore
import
com.github.shadowsocks.utils.SingleInstanceActivity
import
com.github.shadowsocks.
utils.consumeSystemWindowInsetsWithList
import
com.github.shadowsocks.
widget.ListHolderListener
class
ProfileConfigActivity
:
AppCompatActivity
()
{
companion
object
{
...
...
@@ -55,7 +55,7 @@ class ProfileConfigActivity : AppCompatActivity() {
super
.
onCreate
(
savedInstanceState
)
SingleInstanceActivity
.
register
(
this
)
?:
return
setContentView
(
R
.
layout
.
layout_profile_config
)
consumeSystemWindowInsetsWithList
(
)
ListHolderListener
.
setup
(
this
)
setSupportActionBar
(
findViewById
(
R
.
id
.
toolbar
))
supportActionBar
!!
.
apply
{
setDisplayHomeAsUpEnabled
(
true
)
...
...
mobile/src/main/java/com/github/shadowsocks/ProfileConfigFragment.kt
View file @
fdf2da1b
...
...
@@ -30,7 +30,6 @@ import android.os.Parcelable
import
android.view.MenuItem
import
android.view.View
import
androidx.appcompat.app.AlertDialog
import
androidx.core.view.updatePadding
import
androidx.preference.*
import
com.github.shadowsocks.Core.app
import
com.github.shadowsocks.database.Profile
...
...
@@ -38,6 +37,7 @@ import com.github.shadowsocks.database.ProfileManager
import
com.github.shadowsocks.plugin.*
import
com.github.shadowsocks.preference.*
import
com.github.shadowsocks.utils.*
import
com.github.shadowsocks.widget.ListListener
import
com.google.android.material.snackbar.Snackbar
import
kotlinx.android.parcel.Parcelize
...
...
@@ -116,10 +116,7 @@ class ProfileConfigFragment : PreferenceFragmentCompat(),
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
super
.
onViewCreated
(
view
,
savedInstanceState
)
listView
.
setOnApplyWindowInsetsListener
{
v
,
insets
->
v
.
updatePadding
(
bottom
=
insets
.
systemWindowInsetBottom
)
insets
.
consumeSystemWindowInsets
()
}
listView
.
setOnApplyWindowInsetsListener
(
ListListener
)
}
private
fun
initPlugins
()
{
...
...
mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt
View file @
fdf2da1b
...
...
@@ -22,7 +22,10 @@ package com.github.shadowsocks
import
android.annotation.SuppressLint
import
android.app.Activity
import
android.content.*
import
android.content.ActivityNotFoundException
import
android.content.ClipData
import
android.content.ClipboardManager
import
android.content.Intent
import
android.os.Bundle
import
android.text.format.Formatter
import
android.util.LongSparseArray
...
...
@@ -47,6 +50,8 @@ import com.github.shadowsocks.utils.Action
import
com.github.shadowsocks.utils.datas
import
com.github.shadowsocks.utils.printLog
import
com.github.shadowsocks.utils.readableMessage
import
com.github.shadowsocks.widget.ListHolderListener
import
com.github.shadowsocks.widget.MainListListener
import
com.github.shadowsocks.widget.UndoSnackbarManager
import
com.google.android.gms.ads.AdRequest
import
com.google.android.gms.ads.AdSize
...
...
@@ -301,6 +306,7 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener {
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
super
.
onViewCreated
(
view
,
savedInstanceState
)
view
.
setOnApplyWindowInsetsListener
(
ListHolderListener
)
toolbar
.
setTitle
(
R
.
string
.
profiles
)
toolbar
.
inflateMenu
(
R
.
menu
.
profile_manager_menu
)
toolbar
.
setOnMenuItemClickListener
(
this
)
...
...
@@ -309,6 +315,7 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener {
ProfileManager
.
ensureNotEmpty
()
val
profilesList
=
view
.
findViewById
<
RecyclerView
>(
R
.
id
.
list
)
profilesList
.
setOnApplyWindowInsetsListener
(
MainListListener
)
val
layoutManager
=
LinearLayoutManager
(
context
,
RecyclerView
.
VERTICAL
,
false
)
profilesList
.
layoutManager
=
layoutManager
profilesList
.
addItemDecoration
(
DividerItemDecoration
(
context
,
layoutManager
.
orientation
))
...
...
mobile/src/main/java/com/github/shadowsocks/UdpFallbackProfileActivity.kt
View file @
fdf2da1b
...
...
@@ -28,7 +28,6 @@ import android.view.ViewGroup
import
android.widget.CheckedTextView
import
androidx.appcompat.app.AppCompatActivity
import
androidx.appcompat.widget.Toolbar
import
androidx.core.view.updatePadding
import
androidx.recyclerview.widget.DefaultItemAnimator
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
...
...
@@ -37,8 +36,9 @@ import com.github.shadowsocks.database.ProfileManager
import
com.github.shadowsocks.plugin.PluginConfiguration
import
com.github.shadowsocks.preference.DataStore
import
com.github.shadowsocks.utils.SingleInstanceActivity
import
com.github.shadowsocks.utils.consumeSystemWindowInsetsWithList
import
com.github.shadowsocks.utils.resolveResourceId
import
com.github.shadowsocks.widget.ListHolderListener
import
com.github.shadowsocks.widget.ListListener
class
UdpFallbackProfileActivity
:
AppCompatActivity
()
{
inner
class
ProfileViewHolder
(
view
:
View
)
:
RecyclerView
.
ViewHolder
(
view
),
View
.
OnClickListener
{
...
...
@@ -87,7 +87,7 @@ class UdpFallbackProfileActivity : AppCompatActivity() {
}
SingleInstanceActivity
.
register
(
this
)
?:
return
setContentView
(
R
.
layout
.
layout_udp_fallback
)
consumeSystemWindowInsetsWithList
(
)
ListHolderListener
.
setup
(
this
)
val
toolbar
=
findViewById
<
Toolbar
>(
R
.
id
.
toolbar
)
toolbar
.
setTitle
(
R
.
string
.
udp_fallback
)
...
...
@@ -95,10 +95,7 @@ class UdpFallbackProfileActivity : AppCompatActivity() {
toolbar
.
setNavigationOnClickListener
{
finish
()
}
findViewById
<
RecyclerView
>(
R
.
id
.
list
).
apply
{
setOnApplyWindowInsetsListener
{
v
,
insets
->
v
.
updatePadding
(
bottom
=
insets
.
systemWindowInsetBottom
)
insets
.
consumeSystemWindowInsets
()
}
setOnApplyWindowInsetsListener
(
ListListener
)
itemAnimator
=
DefaultItemAnimator
()
adapter
=
profilesAdapter
layoutManager
=
LinearLayoutManager
(
this
@UdpFallbackProfileActivity
,
RecyclerView
.
VERTICAL
,
false
).
apply
{
...
...
mobile/src/main/java/com/github/shadowsocks/acl/CustomRulesFragment.kt
View file @
fdf2da1b
...
...
@@ -50,6 +50,8 @@ import com.github.shadowsocks.plugin.AlertDialogFragment
import
com.github.shadowsocks.utils.asIterable
import
com.github.shadowsocks.utils.readableMessage
import
com.github.shadowsocks.utils.resolveResourceId
import
com.github.shadowsocks.widget.ListHolderListener
import
com.github.shadowsocks.widget.MainListListener
import
com.github.shadowsocks.widget.UndoSnackbarManager
import
com.google.android.material.textfield.TextInputLayout
import
kotlinx.android.parcel.Parcelize
...
...
@@ -373,6 +375,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener,
override
fun
onViewCreated
(
view
:
View
,
savedInstanceState
:
Bundle
?)
{
super
.
onViewCreated
(
view
,
savedInstanceState
)
view
.
setOnApplyWindowInsetsListener
(
ListHolderListener
)
if
(
savedInstanceState
!=
null
)
{
selectedItems
.
addAll
(
savedInstanceState
.
getStringArray
(
SELECTED_SUBNETS
)
?.
mapNotNull
(
Subnet
.
Companion
::
fromString
)
?:
listOf
())
...
...
@@ -387,6 +390,7 @@ class CustomRulesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener,
toolbar
.
setOnMenuItemClickListener
(
this
)
val
activity
=
activity
as
MainActivity
list
=
view
.
findViewById
(
R
.
id
.
list
)
list
.
setOnApplyWindowInsetsListener
(
MainListListener
)
list
.
layoutManager
=
LinearLayoutManager
(
activity
,
RecyclerView
.
VERTICAL
,
false
)
list
.
itemAnimator
=
DefaultItemAnimator
()
list
.
adapter
=
adapter
...
...
mobile/src/main/java/com/github/shadowsocks/tasker/ConfigActivity.kt
View file @
fdf2da1b
...
...
@@ -30,15 +30,15 @@ import android.widget.CheckedTextView
import
android.widget.Switch
import
androidx.appcompat.app.AppCompatActivity
import
androidx.appcompat.widget.Toolbar
import
androidx.core.view.updatePadding
import
androidx.recyclerview.widget.DefaultItemAnimator
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
com.github.shadowsocks.R
import
com.github.shadowsocks.database.Profile
import
com.github.shadowsocks.database.ProfileManager
import
com.github.shadowsocks.utils.consumeSystemWindowInsetsWithList
import
com.github.shadowsocks.utils.resolveResourceId
import
com.github.shadowsocks.widget.ListHolderListener
import
com.github.shadowsocks.widget.ListListener
class
ConfigActivity
:
AppCompatActivity
()
{
inner
class
ProfileViewHolder
(
view
:
View
)
:
RecyclerView
.
ViewHolder
(
view
),
View
.
OnClickListener
{
...
...
@@ -94,7 +94,7 @@ class ConfigActivity : AppCompatActivity() {
}
taskerOption
=
Settings
.
fromIntent
(
intent
)
setContentView
(
R
.
layout
.
layout_tasker
)
consumeSystemWindowInsetsWithList
(
)
ListHolderListener
.
setup
(
this
)
val
toolbar
=
findViewById
<
Toolbar
>(
R
.
id
.
toolbar
)
toolbar
.
setTitle
(
R
.
string
.
app_name
)
...
...
@@ -104,10 +104,7 @@ class ConfigActivity : AppCompatActivity() {
switch
=
findViewById
(
R
.
id
.
serviceSwitch
)
switch
.
isChecked
=
taskerOption
.
switchOn
findViewById
<
RecyclerView
>(
R
.
id
.
list
).
apply
{
setOnApplyWindowInsetsListener
{
v
,
insets
->
v
.
updatePadding
(
bottom
=
insets
.
systemWindowInsetBottom
)
insets
.
consumeSystemWindowInsets
()
}
setOnApplyWindowInsetsListener
(
ListListener
)
itemAnimator
=
DefaultItemAnimator
()
adapter
=
profilesAdapter
layoutManager
=
LinearLayoutManager
(
this
@ConfigActivity
,
RecyclerView
.
VERTICAL
,
false
).
apply
{
...
...
mobile/src/main/java/com/github/shadowsocks/widget/WindowInsetsListeners.kt
0 → 100644
View file @
fdf2da1b
/*******************************************************************************
* *
* Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com> *
* Copyright (C) 2019 by Mygod Studio <contact-shadowsocks-android@mygod.be> *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
* *
*******************************************************************************/
package
com.github.shadowsocks.widget
import
android.view.View
import
android.view.WindowInsets
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.view.updatePadding
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
)
}
fun
setup
(
activity
:
AppCompatActivity
)
=
activity
.
findViewById
<
View
>(
android
.
R
.
id
.
content
).
apply
{
setOnApplyWindowInsetsListener
(
ListHolderListener
)
systemUiVisibility
=
View
.
SYSTEM_UI_FLAG_LAYOUT_STABLE
or
View
.
SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
}
}
object
MainListListener
:
View
.
OnApplyWindowInsetsListener
{
override
fun
onApplyWindowInsets
(
view
:
View
,
insets
:
WindowInsets
)
=
insets
.
apply
{
view
.
updatePadding
(
bottom
=
view
.
resources
.
getDimensionPixelOffset
(
R
.
dimen
.
main_list_padding_bottom
)
+
systemWindowInsetBottom
)
}
}
object
ListListener
:
View
.
OnApplyWindowInsetsListener
{
override
fun
onApplyWindowInsets
(
view
:
View
,
insets
:
WindowInsets
)
=
insets
.
apply
{
view
.
updatePadding
(
bottom
=
systemWindowInsetBottom
)
}
}
mobile/src/main/res/layout/layout_about.xml
View file @
fdf2da1b
...
...
@@ -4,7 +4,8 @@
android:orientation=
"vertical"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:id=
"@+id/about_container"
>
android:id=
"@+id/about_container"
android:fitsSystemWindows=
"true"
>
<include
layout=
"@layout/toolbar_light_dark"
/>
<androidx.core.widget.NestedScrollView
android:layout_width=
"match_parent"
...
...
mobile/src/main/res/layout/layout_custom_rules.xml
View file @
fdf2da1b
...
...
@@ -4,6 +4,7 @@
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"true"
android:orientation=
"vertical"
>
<include
layout=
"@layout/toolbar_light_dark"
/>
<FrameLayout
android:layout_width=
"match_parent"
...
...
@@ -13,7 +14,6 @@
android:id=
"@+id/list"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:paddingBottom=
"32dp"
android:clipToPadding=
"false"
app:fastScrollEnabled=
"true"
app:fastScrollHorizontalThumbDrawable=
"@drawable/fastscroll_thumb"
...
...
mobile/src/main/res/layout/layout_global_settings.xml
View file @
fdf2da1b
...
...
@@ -2,7 +2,8 @@
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:orientation=
"vertical"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"true"
>
<include
layout=
"@layout/toolbar_light_dark"
/>
<FrameLayout
android:id=
"@+id/content"
android:layout_width=
"match_parent"
...
...
mobile/src/main/res/layout/layout_list.xml
View file @
fdf2da1b
...
...
@@ -3,14 +3,14 @@
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
android:fitsSystemWindows=
"true"
>
<include
layout=
"@layout/toolbar_light_dark"
/>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/list"
tools:listitem=
"@layout/layout_profile"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"1"
android:paddingBottom=
"88dp"
android:scrollbars=
"vertical"
android:clipChildren=
"false"
android:clipToPadding=
"false"
/>
...
...
mobile/src/main/res/layout/layout_main.xml
View file @
fdf2da1b
...
...
@@ -6,19 +6,19 @@
android:id=
"@+id/drawer"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/color_primary"
android:fitsSystemWindows=
"true"
>
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id=
"@+id/snackbar"
android:background=
"?android:attr/windowBackground"
android:clipChildren=
"false"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"true"
>
<
Frame
Layout
<
androidx.coordinatorlayout.widget.Coordinator
Layout
android:id=
"@+id/fragment_holder"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
android:layout_height=
"match_parent"
android:fitsSystemWindows=
"true"
/>
<com.github.shadowsocks.widget.ServiceButton
android:id=
"@+id/fab"
...
...
@@ -26,7 +26,6 @@
android:layout_height=
"wrap_content"
android:elevation=
"6dp"
android:nextFocusDown=
"@+id/stats"
app:layout_dodgeInsetEdges=
"top"
app:layout_anchor=
"@id/stats"
app:backgroundTint=
"@color/background_service"
app:fabSize=
"normal"
...
...
@@ -38,6 +37,7 @@
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_gravity=
"bottom"
android:fitsSystemWindows=
"true"
android:nextFocusUp=
"@+id/fab"
app:backgroundTint=
"@color/background_stat"
app:contentInsetStart=
"0dp"
...
...
@@ -47,7 +47,7 @@
<GridLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"?attr/selectableItemBackground"
android:background=
"?a
ndroid:a
ttr/selectableItemBackground"
android:orientation=
"vertical"
android:padding=
"16dip"
>
...
...
@@ -128,6 +128,7 @@
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_gravity=
"start"
app:insetForeground=
"@null"
app:itemIconTint=
"@color/nav_item_tint"
app:itemTextColor=
"@color/nav_item_tint"
app:headerLayout=
"@layout/navigation_header"
...
...
mobile/src/main/res/values/dimen.xml
View file @
fdf2da1b
...
...
@@ -2,6 +2,7 @@
<resources>
<dimen
name=
"qr_code_size"
>
250dp
</dimen>
<dimen
name=
"profile_padding"
>
8dp
</dimen>
<dimen
name=
"main_list_padding_bottom"
>
88dp
</dimen>
<dimen
name=
"bottom_sheet_padding"
>
8dp
</dimen>
<dimen
name=
"stats_bar_scroll_threshold"
>
4dp
</dimen>
</resources>
mobile/src/main/res/values/styles.xml
View file @
fdf2da1b
<?xml version="1.0" encoding="utf-8"?>
<resources
xmlns:tools=
"http://schemas.android.com/tools"
>
<resources>
<style
name=
"Theme.Shadowsocks.Immersive.Navigation"
>
<item
name=
"android:statusBarColor"
>
@android:color/transparent
</item>
<item
name=
"android:navigationBarColor"
>
@android:color/transparent
</item>
<item
name=
"android:enforceNavigationBarContrast"
tools:targetApi=
"q"
>
false
</item>
</style>
</resources>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment