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
bd658576
Commit
bd658576
authored
Jul 22, 2017
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add locale settings
parent
c325deb4
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
157 additions
and
4 deletions
+157
-4
MagiskManager.java
app/src/main/java/com/topjohnwu/magisk/MagiskManager.java
+43
-1
SettingsActivity.java
app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java
+47
-1
Activity.java
...c/main/java/com/topjohnwu/magisk/components/Activity.java
+11
-0
SuLogEntry.java
.../main/java/com/topjohnwu/magisk/superuser/SuLogEntry.java
+4
-2
Utils.java
app/src/main/java/com/topjohnwu/magisk/utils/Utils.java
+46
-0
strings.xml
app/src/main/res/values-ko/strings.xml
+1
-0
strings.xml
app/src/main/res/values-zh-rTW/strings.xml
+2
-0
strings.xml
app/src/main/res/values/strings.xml
+2
-0
app_settings.xml
app/src/main/res/xml/app_settings.xml
+1
-0
No files found.
app/src/main/java/com/topjohnwu/magisk/MagiskManager.java
View file @
bd658576
...
...
@@ -5,22 +5,27 @@ import android.app.NotificationChannel;
import
android.app.NotificationManager
;
import
android.content.Context
;
import
android.content.SharedPreferences
;
import
android.content.res.Configuration
;
import
android.content.res.Resources
;
import
android.os.Build
;
import
android.os.Handler
;
import
android.preference.PreferenceManager
;
import
android.text.TextUtils
;
import
android.widget.Toast
;
import
com.topjohnwu.magisk.asyncs.ParallelTask
;
import
com.topjohnwu.magisk.database.RepoDatabaseHelper
;
import
com.topjohnwu.magisk.database.SuDatabaseHelper
;
import
com.topjohnwu.magisk.module.Module
;
import
com.topjohnwu.magisk.utils.CallbackEvent
;
import
com.topjohnwu.magisk.utils.Logger
;
import
com.topjohnwu.magisk.utils.SafetyNetHelper
;
import
com.topjohnwu.magisk.utils.Shell
;
import
com.topjohnwu.magisk.utils.Utils
;
import
java.io.File
;
import
java.util.List
;
import
java.util.Locale
;
import
java.util.Map
;
public
class
MagiskManager
extends
Application
{
...
...
@@ -45,6 +50,7 @@ public class MagiskManager extends Application {
public
final
CallbackEvent
<
Void
>
repoLoadDone
=
new
CallbackEvent
<>();
public
final
CallbackEvent
<
Void
>
updateCheckDone
=
new
CallbackEvent
<>();
public
final
CallbackEvent
<
Void
>
safetyNetDone
=
new
CallbackEvent
<>();
public
final
CallbackEvent
<
Void
>
localeDone
=
new
CallbackEvent
<>();
// Info
public
String
magiskVersionString
;
...
...
@@ -65,10 +71,13 @@ public class MagiskManager extends Application {
// Data
public
Map
<
String
,
Module
>
moduleMap
;
public
List
<
String
>
blockList
;
public
List
<
Locale
>
locales
;
// Configurations
public
static
boolean
shellLogging
;
public
static
boolean
devLogging
;
public
static
Locale
locale
;
public
static
Locale
defaultLocale
;
public
boolean
magiskHide
;
public
boolean
isDarkTheme
;
...
...
@@ -90,6 +99,37 @@ public class MagiskManager extends Application {
private
static
Handler
mHandler
=
new
Handler
();
private
static
class
LoadLocale
extends
ParallelTask
<
Void
,
Void
,
Void
>
{
LoadLocale
(
Context
context
)
{
super
(
context
);
}
@Override
protected
Void
doInBackground
(
Void
...
voids
)
{
getMagiskManager
().
locales
=
Utils
.
getAvailableLocale
(
getMagiskManager
());
return
null
;
}
@Override
protected
void
onPostExecute
(
Void
aVoid
)
{
getMagiskManager
().
localeDone
.
trigger
();
}
}
public
void
setLocale
()
{
String
localeTag
=
prefs
.
getString
(
"locale"
,
""
);
if
(
localeTag
.
isEmpty
())
{
locale
=
defaultLocale
;
}
else
{
locale
=
Locale
.
forLanguageTag
(
localeTag
);
}
Resources
res
=
getBaseContext
().
getResources
();
Configuration
config
=
new
Configuration
(
res
.
getConfiguration
());
config
.
setLocale
(
locale
);
res
.
updateConfiguration
(
config
,
res
.
getDisplayMetrics
());
}
@Override
public
void
onCreate
()
{
super
.
onCreate
();
...
...
@@ -98,6 +138,9 @@ public class MagiskManager extends Application {
shell
=
Shell
.
getShell
();
suDB
=
new
SuDatabaseHelper
(
this
);
repoDB
=
new
RepoDatabaseHelper
(
this
);
defaultLocale
=
Locale
.
getDefault
();
setLocale
();
new
LoadLocale
(
this
).
exec
();
}
public
void
toast
(
String
msg
,
int
duration
)
{
...
...
@@ -117,7 +160,6 @@ public class MagiskManager extends Application {
devLogging
=
false
;
shellLogging
=
false
;
}
magiskHide
=
prefs
.
getBoolean
(
"magiskhide"
,
true
);
initSU
();
updateMagiskInfo
();
updateBlockInfo
();
...
...
app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java
View file @
bd658576
...
...
@@ -15,10 +15,13 @@ import android.widget.Toast;
import
com.topjohnwu.magisk.components.Activity
;
import
com.topjohnwu.magisk.database.SuDatabaseHelper
;
import
com.topjohnwu.magisk.utils.CallbackEvent
;
import
com.topjohnwu.magisk.utils.Logger
;
import
com.topjohnwu.magisk.utils.Shell
;
import
com.topjohnwu.magisk.utils.Utils
;
import
java.util.Locale
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
...
...
@@ -55,13 +58,15 @@ public class SettingsActivity extends Activity {
}
public
static
class
SettingsFragment
extends
PreferenceFragment
implements
SharedPreferences
.
OnSharedPreferenceChangeListener
{
implements
SharedPreferences
.
OnSharedPreferenceChangeListener
,
CallbackEvent
.
Listener
<
Void
>{
private
SharedPreferences
prefs
;
private
PreferenceScreen
prefScreen
;
private
ListPreference
suAccess
,
autoRes
,
suNotification
,
requestTimeout
,
multiuserMode
,
namespaceMode
;
private
MagiskManager
magiskManager
;
private
PreferenceCategory
generalCatagory
;
@Override
public
void
onCreate
(
Bundle
savedInstanceState
)
{
...
...
@@ -71,6 +76,7 @@ public class SettingsActivity extends Activity {
prefScreen
=
getPreferenceScreen
();
magiskManager
=
Utils
.
getMagiskManager
(
getActivity
());
generalCatagory
=
(
PreferenceCategory
)
findPreference
(
"general"
);
PreferenceCategory
magiskCategory
=
(
PreferenceCategory
)
findPreference
(
"magisk"
);
PreferenceCategory
suCategory
=
(
PreferenceCategory
)
findPreference
(
"superuser"
);
PreferenceCategory
developer
=
(
PreferenceCategory
)
findPreference
(
"developer"
);
...
...
@@ -118,16 +124,41 @@ public class SettingsActivity extends Activity {
}
}
private
ListPreference
setLocalePreference
(
ListPreference
lp
)
{
if
(
lp
==
null
)
{
lp
=
new
ListPreference
(
getActivity
());
}
CharSequence
[]
entries
=
new
CharSequence
[
magiskManager
.
locales
.
size
()
+
1
];
CharSequence
[]
entryValues
=
new
CharSequence
[
magiskManager
.
locales
.
size
()
+
1
];
entries
[
0
]
=
getString
(
R
.
string
.
system_default
);
entryValues
[
0
]
=
""
;
int
i
=
1
;
for
(
Locale
locale
:
magiskManager
.
locales
)
{
entries
[
i
]
=
locale
.
getDisplayName
(
locale
);
entryValues
[
i
++]
=
locale
.
toLanguageTag
();
}
lp
.
setEntries
(
entries
);
lp
.
setEntryValues
(
entryValues
);
lp
.
setTitle
(
R
.
string
.
language
);
lp
.
setKey
(
"locale"
);
lp
.
setSummary
(
MagiskManager
.
locale
.
getDisplayName
(
MagiskManager
.
locale
));
return
lp
;
}
@Override
public
void
onResume
()
{
super
.
onResume
();
prefs
.
registerOnSharedPreferenceChangeListener
(
this
);
magiskManager
.
localeDone
.
register
(
this
);
if
(
magiskManager
.
localeDone
.
isTriggered
)
onTrigger
(
null
);
}
@Override
public
void
onPause
()
{
super
.
onPause
();
prefs
.
unregisterOnSharedPreferenceChangeListener
(
this
);
magiskManager
.
localeDone
.
unRegister
(
this
);
}
@Override
...
...
@@ -200,6 +231,11 @@ public class SettingsActivity extends Activity {
case
"shell_logging"
:
MagiskManager
.
shellLogging
=
prefs
.
getBoolean
(
"shell_logging"
,
false
);
break
;
case
"locale"
:
magiskManager
.
setLocale
();
magiskManager
.
reloadMainActivity
.
trigger
();
getActivity
().
recreate
();
break
;
}
setSummary
();
}
...
...
@@ -218,6 +254,16 @@ public class SettingsActivity extends Activity {
namespaceMode
.
setSummary
(
getResources
()
.
getStringArray
(
R
.
array
.
namespace_summary
)[
magiskManager
.
suNamespaceMode
]);
}
@Override
public
void
onTrigger
(
CallbackEvent
<
Void
>
event
)
{
ListPreference
language
=
setLocalePreference
(
null
);
language
.
setOnPreferenceClickListener
((
pref
)
->
{
setLocalePreference
((
ListPreference
)
pref
);
return
false
;
});
generalCatagory
.
addPreference
(
language
);
}
}
}
app/src/main/java/com/topjohnwu/magisk/components/Activity.java
View file @
bd658576
package
com
.
topjohnwu
.
magisk
.
components
;
import
android.content.res.Configuration
;
import
android.support.v7.app.AppCompatActivity
;
import
android.view.WindowManager
;
import
com.topjohnwu.magisk.MagiskManager
;
import
com.topjohnwu.magisk.R
;
import
com.topjohnwu.magisk.utils.Utils
;
import
java.util.Locale
;
public
class
Activity
extends
AppCompatActivity
{
public
Activity
()
{
super
();
Configuration
configuration
=
new
Configuration
();
configuration
.
setLocale
(
MagiskManager
.
locale
);
applyOverrideConfiguration
(
configuration
);
}
@Override
public
MagiskManager
getApplicationContext
()
{
return
(
MagiskManager
)
super
.
getApplicationContext
();
...
...
app/src/main/java/com/topjohnwu/magisk/superuser/SuLogEntry.java
View file @
bd658576
...
...
@@ -5,6 +5,8 @@ import android.database.Cursor;
import
android.os.Parcel
;
import
android.os.Parcelable
;
import
com.topjohnwu.magisk.MagiskManager
;
import
java.text.DateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
...
...
@@ -48,11 +50,11 @@ public class SuLogEntry implements Parcelable {
}
public
String
getDateString
()
{
return
DateFormat
.
getDateInstance
(
DateFormat
.
MEDIUM
).
format
(
date
);
return
DateFormat
.
getDateInstance
(
DateFormat
.
MEDIUM
,
MagiskManager
.
locale
).
format
(
date
);
}
public
String
getTimeString
()
{
return
new
SimpleDateFormat
(
"h:mm a"
,
Locale
.
US
).
format
(
date
);
return
new
SimpleDateFormat
(
"h:mm a"
,
MagiskManager
.
locale
).
format
(
date
);
}
...
...
app/src/main/java/com/topjohnwu/magisk/utils/Utils.java
View file @
bd658576
...
...
@@ -10,18 +10,23 @@ import android.content.Intent;
import
android.content.IntentFilter
;
import
android.content.SharedPreferences
;
import
android.content.pm.PackageManager
;
import
android.content.res.Configuration
;
import
android.content.res.Resources
;
import
android.database.Cursor
;
import
android.net.ConnectivityManager
;
import
android.net.NetworkInfo
;
import
android.net.Uri
;
import
android.os.Environment
;
import
android.provider.OpenableColumns
;
import
android.support.annotation.IdRes
;
import
android.support.annotation.StringRes
;
import
android.support.design.widget.Snackbar
;
import
android.support.v4.app.ActivityCompat
;
import
android.support.v4.app.FragmentActivity
;
import
android.support.v4.app.TaskStackBuilder
;
import
android.support.v7.app.NotificationCompat
;
import
android.text.TextUtils
;
import
android.util.DisplayMetrics
;
import
android.widget.Toast
;
import
com.topjohnwu.magisk.MagiskManager
;
...
...
@@ -33,7 +38,12 @@ import com.topjohnwu.magisk.receivers.DownloadReceiver;
import
com.topjohnwu.magisk.receivers.ManagerUpdate
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Locale
;
public
class
Utils
{
...
...
@@ -246,4 +256,40 @@ public class Utils {
public
static
void
rmMagiskHide
(
Shell
shell
,
String
pkg
)
{
shell
.
su_raw
(
"magiskhide --rm "
+
pkg
);
}
public
static
String
getLocaleString
(
Context
context
,
Locale
locale
,
@StringRes
int
id
)
{
Configuration
config
=
context
.
getResources
().
getConfiguration
();
config
.
setLocale
(
locale
);
Context
localizedContext
=
context
.
createConfigurationContext
(
config
);
return
localizedContext
.
getString
(
id
);
}
public
static
List
<
Locale
>
getAvailableLocale
(
Context
context
)
{
List
<
Locale
>
locales
=
new
ArrayList
<>();
HashSet
<
String
>
set
=
new
HashSet
<>();
Locale
locale
;
// Add default locale
locales
.
add
(
Locale
.
ENGLISH
);
set
.
add
(
getLocaleString
(
context
,
Locale
.
ENGLISH
,
R
.
string
.
download
));
// Add some special locales
locales
.
add
(
Locale
.
TAIWAN
);
set
.
add
(
getLocaleString
(
context
,
Locale
.
TAIWAN
,
R
.
string
.
download
));
locale
=
new
Locale
(
"pt"
,
"BR"
);
locales
.
add
(
locale
);
set
.
add
(
getLocaleString
(
context
,
locale
,
R
.
string
.
download
));
// Other locales
for
(
String
s
:
context
.
getAssets
().
getLocales
())
{
locale
=
Locale
.
forLanguageTag
(
s
);
if
(
set
.
add
(
getLocaleString
(
context
,
locale
,
R
.
string
.
download
)))
{
locales
.
add
(
locale
);
}
}
Collections
.
sort
(
locales
,
(
l1
,
l2
)
->
l1
.
getDisplayName
(
l1
).
compareTo
(
l2
.
getDisplayName
(
l2
)));
return
locales
;
}
}
\ No newline at end of file
app/src/main/res/values-ko/strings.xml
View file @
bd658576
...
...
@@ -192,5 +192,6 @@
<string
name=
"pid"
>
PID:\u0020
</string>
<string
name=
"target_uid"
>
대상 UID:\u0020
</string>
<string
name=
"command"
>
명령:\u0020
</string>
<string
name=
"download"
>
다운로드
</string>
</resources>
app/src/main/res/values-zh-rTW/strings.xml
View file @
bd658576
...
...
@@ -219,5 +219,7 @@
<string
name=
"reinstall"
>
重新安裝
</string>
<string
name=
"update"
>
更新
</string>
<string
name=
"magisk_updates"
>
Magisk 更新
</string>
<string
name=
"system_default"
>
(系統預設)
</string>
<string
name=
"language"
>
語言
</string>
</resources>
app/src/main/res/values/strings.xml
View file @
bd658576
...
...
@@ -145,6 +145,8 @@
<string
name=
"settings_notification_summary"
>
Show update notifications when new version is available
</string>
<string
name=
"settings_clear_cache_title"
>
Clear Repo Cache
</string>
<string
name=
"settings_clear_cache_summary"
>
Clear the cached information for online repos, forces the app to refresh online
</string>
<string
name=
"language"
>
Language
</string>
<string
name=
"system_default"
>
(System Default)
</string>
<string
name=
"settings_core_only_title"
>
Magisk Core Only Mode
</string>
<string
name=
"settings_core_only_summary"
>
Enable only core features, all modules will not be loaded. MagiskSU, MagiskHide, and systemless hosts will still be enabled
</string>
...
...
app/src/main/res/xml/app_settings.xml
View file @
bd658576
...
...
@@ -2,6 +2,7 @@
android:layout_marginTop=
"?attr/actionBarSize"
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<PreferenceCategory
android:key=
"general"
android:title=
"@string/settings_general_category"
>
<SwitchPreference
...
...
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