Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
Magisk
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Magisk
Commits
d83c7447
Commit
d83c7447
authored
May 10, 2019
by
Viktor De Pasquale
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Replaced base settings fragment by its kotlin counterpart
parent
843995cd
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
113 additions
and
118 deletions
+113
-118
BasePreferenceFragment.java
.../com/topjohnwu/magisk/ui/base/BasePreferenceFragment.java
+0
-73
BasePreferenceFragment.kt
...va/com/topjohnwu/magisk/ui/base/BasePreferenceFragment.kt
+67
-0
SettingsFragment.java
...va/com/topjohnwu/magisk/ui/settings/SettingsFragment.java
+46
-45
No files found.
app/src/main/java/com/topjohnwu/magisk/ui/base/BasePreferenceFragment.java
deleted
100644 → 0
View file @
843995cd
package
com
.
topjohnwu
.
magisk
.
ui
.
base
;
import
android.annotation.SuppressLint
;
import
android.content.SharedPreferences
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
com.topjohnwu.magisk.App
;
import
com.topjohnwu.magisk.R
;
import
androidx.preference.Preference
;
import
androidx.preference.PreferenceCategory
;
import
androidx.preference.PreferenceFragmentCompat
;
import
androidx.preference.PreferenceGroupAdapter
;
import
androidx.preference.PreferenceScreen
;
import
androidx.preference.PreferenceViewHolder
;
import
androidx.recyclerview.widget.RecyclerView
;
public
abstract
class
BasePreferenceFragment
extends
PreferenceFragmentCompat
implements
SharedPreferences
.
OnSharedPreferenceChangeListener
{
public
App
app
=
App
.
self
;
@Override
public
View
onCreateView
(
LayoutInflater
inflater
,
ViewGroup
container
,
Bundle
savedInstanceState
)
{
View
v
=
super
.
onCreateView
(
inflater
,
container
,
savedInstanceState
);
app
.
getPrefs
().
registerOnSharedPreferenceChangeListener
(
this
);
return
v
;
}
@Override
public
void
onDestroyView
()
{
app
.
getPrefs
().
unregisterOnSharedPreferenceChangeListener
(
this
);
super
.
onDestroyView
();
}
@Override
protected
RecyclerView
.
Adapter
onCreateAdapter
(
PreferenceScreen
preferenceScreen
)
{
return
new
PreferenceGroupAdapter
(
preferenceScreen
)
{
@SuppressLint
(
"RestrictedApi"
)
@Override
public
void
onBindViewHolder
(
PreferenceViewHolder
holder
,
int
position
)
{
super
.
onBindViewHolder
(
holder
,
position
);
Preference
preference
=
getItem
(
position
);
if
(
preference
instanceof
PreferenceCategory
)
setZeroPaddingToLayoutChildren
(
holder
.
itemView
);
else
{
View
iconFrame
=
holder
.
itemView
.
findViewById
(
R
.
id
.
icon_frame
);
if
(
iconFrame
!=
null
)
{
iconFrame
.
setVisibility
(
preference
.
getIcon
()
==
null
?
View
.
GONE
:
View
.
VISIBLE
);
}
}
}
};
}
private
void
setZeroPaddingToLayoutChildren
(
View
view
)
{
if
(!(
view
instanceof
ViewGroup
))
return
;
ViewGroup
viewGroup
=
(
ViewGroup
)
view
;
int
childCount
=
viewGroup
.
getChildCount
();
for
(
int
i
=
0
;
i
<
childCount
;
i
++)
{
setZeroPaddingToLayoutChildren
(
viewGroup
.
getChildAt
(
i
));
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
JELLY_BEAN_MR1
)
viewGroup
.
setPaddingRelative
(
0
,
viewGroup
.
getPaddingTop
(),
viewGroup
.
getPaddingEnd
(),
viewGroup
.
getPaddingBottom
());
else
viewGroup
.
setPadding
(
0
,
viewGroup
.
getPaddingTop
(),
viewGroup
.
getPaddingRight
(),
viewGroup
.
getPaddingBottom
());
}
}
}
app/src/main/java/com/topjohnwu/magisk/ui/base/BasePreferenceFragment.kt
0 → 100644
View file @
d83c7447
package
com.topjohnwu.magisk.ui.base
import
android.annotation.SuppressLint
import
android.content.SharedPreferences
import
android.os.Build
import
android.os.Bundle
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
androidx.core.view.children
import
androidx.core.view.isVisible
import
androidx.preference.*
import
androidx.recyclerview.widget.RecyclerView
import
com.topjohnwu.magisk.App
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.data.database.MagiskDB
import
com.topjohnwu.magisk.data.database.RepoDatabaseHelper
import
org.koin.android.ext.android.inject
abstract
class
BasePreferenceFragment
:
PreferenceFragmentCompat
(),
SharedPreferences
.
OnSharedPreferenceChangeListener
{
protected
val
prefs
:
SharedPreferences
by
inject
()
protected
val
app
:
App
by
inject
()
protected
val
database
:
MagiskDB
by
inject
()
protected
val
repoDB
:
RepoDatabaseHelper
by
inject
()
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?
):
View
?
{
val
v
=
super
.
onCreateView
(
inflater
,
container
,
savedInstanceState
)
prefs
.
registerOnSharedPreferenceChangeListener
(
this
)
return
v
}
override
fun
onDestroyView
()
{
prefs
.
unregisterOnSharedPreferenceChangeListener
(
this
)
super
.
onDestroyView
()
}
override
fun
onCreateAdapter
(
preferenceScreen
:
PreferenceScreen
):
RecyclerView
.
Adapter
<*>
{
return
object
:
PreferenceGroupAdapter
(
preferenceScreen
)
{
@SuppressLint
(
"RestrictedApi"
)
override
fun
onBindViewHolder
(
holder
:
PreferenceViewHolder
,
position
:
Int
)
{
super
.
onBindViewHolder
(
holder
,
position
)
when
(
val
preference
=
getItem
(
position
))
{
is
PreferenceCategory
->
setZeroPaddingToLayoutChildren
(
holder
.
itemView
)
else
->
holder
.
itemView
.
findViewById
<
View
>(
R
.
id
.
icon_frame
)
?.
isVisible
=
preference
.
icon
!=
null
}
}
}
}
private
fun
setZeroPaddingToLayoutChildren
(
view
:
View
)
{
(
view
as
?
ViewGroup
)
?.
children
?.
forEach
{
setZeroPaddingToLayoutChildren
(
it
)
}
?:
return
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
JELLY_BEAN_MR1
)
view
.
setPaddingRelative
(
0
,
view
.
paddingTop
,
view
.
paddingEnd
,
view
.
paddingBottom
)
else
view
.
setPadding
(
0
,
view
.
paddingTop
,
view
.
paddingRight
,
view
.
paddingBottom
)
}
}
app/src/main/java/com/topjohnwu/magisk/ui/settings/SettingsFragment.java
View file @
d83c7447
...
...
@@ -36,25 +36,57 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import
io.reactivex.schedulers.Schedulers
;
import
kotlin.Pair
;
public
class
SettingsFragment
extends
BasePreferenceFragment
{
public
final
class
SettingsFragment
extends
BasePreferenceFragment
{
private
ListPreference
updateChannel
,
autoRes
,
suNotification
,
requestTimeout
,
rootConfig
,
multiuserConfig
,
nsConfig
;
@SuppressWarnings
(
"ResultOfMethodCallIgnored"
)
@SuppressLint
(
"CheckResult"
)
private
static
void
setLocalePreference
(
ListPreference
lp
)
{
lp
.
setSummary
(
"Loading"
);
lp
.
setEnabled
(
false
);
LocaleManager
.
getAvailableLocales
()
.
flattenAsFlowable
(
locales
->
locales
)
.
map
(
locale
->
new
Pair
<>(
locale
.
getDisplayName
(
locale
),
LocaleManager
.
toLanguageTag
(
locale
)))
.
toList
()
.
map
(
list
->
{
CharSequence
[]
names
=
new
CharSequence
[
list
.
size
()
+
1
];
CharSequence
[]
values
=
new
CharSequence
[
list
.
size
()
+
1
];
names
[
0
]
=
LocaleManager
.
getString
(
LocaleManager
.
getDefaultLocale
(),
R
.
string
.
system_default
);
values
[
0
]
=
""
;
int
i
=
1
;
for
(
Pair
<
String
,
String
>
item
:
list
)
{
names
[
i
]
=
item
.
getFirst
();
values
[
i
++]
=
item
.
getSecond
();
}
return
new
Pair
<>(
names
,
values
);
})
.
subscribeOn
(
Schedulers
.
computation
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
it
->
{
lp
.
setEnabled
(
true
);
lp
.
setEntries
(
it
.
getFirst
());
lp
.
setEntryValues
(
it
.
getSecond
());
lp
.
setSummary
(
LocaleManager
.
getLocale
().
getDisplayName
(
LocaleManager
.
getLocale
()));
},
Throwable:
:
printStackTrace
);
}
@Override
public
void
onStart
()
{
public
final
void
onStart
()
{
super
.
onStart
();
setHasOptionsMenu
(
true
);
requireActivity
().
setTitle
(
R
.
string
.
settings
);
}
@Override
public
void
onCreatePreferences
(
Bundle
savedInstanceState
,
String
rootKey
)
{
public
final
void
onCreatePreferences
(
Bundle
savedInstanceState
,
String
rootKey
)
{
getPreferenceManager
().
setStorageDeviceProtected
();
setPreferencesFromResource
(
R
.
xml
.
app_settings
,
rootKey
);
boolean
showSuperuser
=
Utils
.
showSuperUser
();
app
.
getPrefs
().
edit
()
getPrefs
().
edit
()
.
putBoolean
(
Config
.
Key
.
SU_FINGERPRINT
,
FingerprintHelper
.
useFingerprint
())
.
apply
();
...
...
@@ -74,8 +106,8 @@ public class SettingsFragment extends BasePreferenceFragment {
return
true
;
});
findPreference
(
"clear"
).
setOnPreferenceClickListener
(
pref
->
{
app
.
getPrefs
().
edit
().
remove
(
Config
.
Key
.
ETAG_KEY
).
apply
();
app
.
getRepoDB
().
clearRepo
();
getPrefs
().
edit
().
remove
(
Config
.
Key
.
ETAG_KEY
).
apply
();
getRepoDB
().
clearRepo
();
Utils
.
toast
(
R
.
string
.
repo_cache_cleared
,
Toast
.
LENGTH_SHORT
);
return
true
;
});
...
...
@@ -102,7 +134,7 @@ public class SettingsFragment extends BasePreferenceFragment {
if
(
channel
==
Config
.
Value
.
CUSTOM_CHANNEL
)
{
View
v
=
LayoutInflater
.
from
(
requireActivity
()).
inflate
(
R
.
layout
.
custom_channel_dialog
,
null
);
EditText
url
=
v
.
findViewById
(
R
.
id
.
custom_url
);
url
.
setText
(
app
.
getPrefs
().
getString
(
Config
.
Key
.
CUSTOM_CHANNEL
,
""
));
url
.
setText
(
getPrefs
().
getString
(
Config
.
Key
.
CUSTOM_CHANNEL
,
""
));
new
AlertDialog
.
Builder
(
requireActivity
())
.
setTitle
(
R
.
string
.
settings_update_custom
)
.
setView
(
v
)
...
...
@@ -150,11 +182,12 @@ public class SettingsFragment extends BasePreferenceFragment {
}
if
(
Shell
.
rootAccess
()
&&
Const
.
USER_ID
==
0
)
{
if
(
app
.
getPackageName
().
equals
(
BuildConfig
.
APPLICATION_ID
))
{
if
(
getApp
()
.
getPackageName
().
equals
(
BuildConfig
.
APPLICATION_ID
))
{
generalCatagory
.
removePreference
(
restoreManager
);
}
else
{
if
(!
Networking
.
checkNetworkStatus
(
app
))
if
(!
Networking
.
checkNetworkStatus
(
requireContext
()))
{
generalCatagory
.
removePreference
(
restoreManager
);
}
generalCatagory
.
removePreference
(
hideManager
);
}
}
else
{
...
...
@@ -172,45 +205,13 @@ public class SettingsFragment extends BasePreferenceFragment {
}
}
@SuppressWarnings
(
"ResultOfMethodCallIgnored"
)
@SuppressLint
(
"CheckResult"
)
private
void
setLocalePreference
(
ListPreference
lp
)
{
lp
.
setSummary
(
"Loading"
);
lp
.
setEnabled
(
false
);
LocaleManager
.
getAvailableLocales
()
.
flattenAsFlowable
(
locales
->
locales
)
.
map
(
locale
->
new
Pair
<>(
locale
.
getDisplayName
(
locale
),
LocaleManager
.
toLanguageTag
(
locale
)))
.
toList
()
.
map
(
list
->
{
CharSequence
[]
names
=
new
CharSequence
[
list
.
size
()
+
1
];
CharSequence
[]
values
=
new
CharSequence
[
list
.
size
()
+
1
];
names
[
0
]
=
LocaleManager
.
getString
(
LocaleManager
.
getDefaultLocale
(),
R
.
string
.
system_default
);
values
[
0
]
=
""
;
int
i
=
1
;
for
(
Pair
<
String
,
String
>
item
:
list
)
{
names
[
i
]
=
item
.
getFirst
();
values
[
i
++]
=
item
.
getSecond
();
}
return
new
Pair
<>(
names
,
values
);
})
.
subscribeOn
(
Schedulers
.
computation
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
it
->
{
lp
.
setEnabled
(
true
);
lp
.
setEntries
(
it
.
getFirst
());
lp
.
setEntryValues
(
it
.
getSecond
());
lp
.
setSummary
(
LocaleManager
.
getLocale
().
getDisplayName
(
LocaleManager
.
getLocale
()));
},
Throwable:
:
printStackTrace
);
}
@Override
public
void
onSharedPreferenceChanged
(
SharedPreferences
prefs
,
String
key
)
{
public
final
void
onSharedPreferenceChanged
(
SharedPreferences
prefs
,
String
key
)
{
switch
(
key
)
{
case
Config
.
Key
.
ROOT_ACCESS
:
case
Config
.
Key
.
SU_MULTIUSER_MODE
:
case
Config
.
Key
.
SU_MNT_NS
:
app
.
getDB
().
setSettings
(
key
,
Utils
.
getPrefsInt
(
prefs
,
key
));
getDatabase
().
setSettings
(
key
,
Utils
.
getPrefsInt
(
prefs
,
key
));
break
;
case
Config
.
Key
.
DARK_THEME
:
requireActivity
().
recreate
();
...
...
@@ -234,7 +235,7 @@ public class SettingsFragment extends BasePreferenceFragment {
}
break
;
case
Config
.
Key
.
LOCALE
:
LocaleManager
.
setLocale
(
app
);
LocaleManager
.
setLocale
(
getApp
()
);
requireActivity
().
recreate
();
break
;
case
Config
.
Key
.
UPDATE_CHANNEL
:
...
...
@@ -249,7 +250,7 @@ public class SettingsFragment extends BasePreferenceFragment {
}
@Override
public
boolean
onPreferenceTreeClick
(
Preference
preference
)
{
public
final
boolean
onPreferenceTreeClick
(
Preference
preference
)
{
String
key
=
preference
.
getKey
();
switch
(
key
)
{
case
Config
.
Key
.
SU_FINGERPRINT
:
...
...
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