Compare commits

10 Commits

Author SHA1 Message Date
乌堆小透明
1836176853 New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin
2022-03-26 21:43:41 +08:00
乌堆小透明
06065b58c1 New translations strings.xml (Spanish)
[ci skip] New translations from Crowdin
2022-03-26 21:36:14 +08:00
乌堆小透明
6f78f83da1 New translations strings.xml (Chinese Traditional)
[ci skip] New translations from Crowdin
2022-03-26 17:19:33 +08:00
LittleTurtle2333
6f91cab9b8 Update version to 1.5.4 2022-03-26 16:31:52 +08:00
乌堆小透明
ca2ffa4c3f New Crowdin updates (#109)
* New translations strings.xml (Vietnamese)
[ci skip] New translations from Crowdin

* New translations strings.xml (Chinese Simplified)
[ci skip] New translations from Crowdin

* New translations strings.xml (Turkish)
[ci skip] New translations from Crowdin

* New translations strings.xml (Russian)
[ci skip] New translations from Crowdin
2022-03-26 16:30:41 +08:00
LittleTurtle2333
f44f095c65 修复大移动类型左右边距范围异常 2022-03-26 16:23:06 +08:00
LittleTurtle2333
68c67d139b 新增大移动类型图标自定义 2022-03-26 16:07:55 +08:00
LittleTurtle2333
2b1eaf6634 新增电池百分比大小自定义 2022-03-26 16:07:14 +08:00
LittleTurtle2333
c91a46cabb 修复部分版本下拉时钟变小 2022-03-26 14:22:36 +08:00
LittleTurtle2333
a7947d5a2f 修复一处时钟错误 2022-03-26 00:32:48 +08:00
13 changed files with 344 additions and 42 deletions

View File

@@ -12,8 +12,8 @@ android {
applicationId = "com.lt2333.simplicitytools"
minSdk = 31
targetSdk = 32
versionCode = 54
versionName = "1.5.3"
versionCode = 55
versionName = "1.5.4"
}
buildTypes {

View File

@@ -498,32 +498,6 @@ class SettingsActivity : MIUIActivity() {
menuButton.visibility = View.VISIBLE
return ArrayList<BaseView>().apply {
add(TitleTextV(resId = R.string.statusbar))
add(
TextSummaryWithSwitchV(
TextSummaryV(
textId = R.string.big_mobile_type_icon
),
SwitchV("big_mobile_type_icon")
)
)
add(
TextSummaryWithSwitchV(
TextSummaryV(
textId = R.string.hide_battery_percentage_icon,
tipsId = R.string.hide_battery_percentage_icon_summary
),
SwitchV("hide_battery_percentage_icon")
)
)
add(
TextSummaryWithSwitchV(
TextSummaryV(
textId = R.string.remove_the_maximum_number_of_notification_icons,
tipsId = R.string.remove_the_maximum_number_of_notification_icons_summary
),
SwitchV("remove_the_maximum_number_of_notification_icons")
)
)
add(
TextSummaryWithSwitchV(
TextSummaryV(
@@ -725,6 +699,227 @@ class SettingsActivity : MIUIActivity() {
)
)
)
val big_mobile_type_icon_binding = getDataBinding(
SPUtils.getBoolean(
activity,
"big_mobile_type_icon",
false
)
) { view, flags, data ->
when (flags) {
1 -> (view as Switch).isEnabled = data as Boolean
2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE
}
}
add(
TextSummaryWithSwitchV(
TextSummaryV(
textId = R.string.big_mobile_type_icon
),
SwitchV(
"big_mobile_type_icon",
dataBindingSend = big_mobile_type_icon_binding.bindingSend
)
)
)
add(
TextSummaryWithSwitchV(
TextSummaryV(
textId = R.string.big_mobile_type_icon_bold
),
SwitchV("big_mobile_type_icon_bold", true),
dataBindingRecv = big_mobile_type_icon_binding.binding.getRecv(2)
)
)
add(
TextSummaryArrowV(
TextSummaryV(
textId = R.string.big_mobile_type_icon_size,
onClickListener = {
MIUIDialog(activity).apply {
setTitle(R.string.big_mobile_type_icon_size)
setEditText(
"",
"${activity.getString(R.string.def)}12.5, ${activity.getString(R.string.current)}${
OwnSP.ownSP.getFloat(
"big_mobile_type_icon_size",
12.5f
)
}"
)
setLButton(textId = R.string.cancel) {
dismiss()
}
setRButton(textId = R.string.Done) {
if (getEditText() != "") {
OwnSP.ownSP.edit().run {
putFloat(
"big_mobile_type_icon_size",
getEditText().toFloat()
)
apply()
}
}
dismiss()
}
show()
}
}), dataBindingRecv = big_mobile_type_icon_binding.binding.getRecv(2)
)
)
add(
TextSummaryArrowV(
TextSummaryV(
textId = R.string.big_mobile_type_icon_up_and_down_position
) {
MIUIDialog(activity).apply {
setTitle(R.string.big_mobile_type_icon_up_and_down_position)
setMessage("${activity.getString(R.string.range)} -15~15")
setEditText(
"",
"${activity.getString(R.string.def)}0, ${activity.getString(R.string.current)}${
OwnSP.ownSP.getInt(
"big_mobile_type_icon_up_and_down_position",
0
)
}"
)
setLButton(textId = R.string.cancel) {
dismiss()
}
setRButton(textId = R.string.Done) {
if (getEditText().isNotEmpty()) {
try {
val value = getEditText().toInt()
if (value in (-15..15)) {
OwnSP.ownSP.edit().run {
putInt(
"big_mobile_type_icon_up_and_down_position",
value
)
apply()
}
dismiss()
return@setRButton
}
} catch (_: Throwable) {
}
}
Toast.makeText(
activity,
R.string.input_error,
Toast.LENGTH_SHORT
).show()
}
show()
}
}, dataBindingRecv = big_mobile_type_icon_binding.binding.getRecv(2)
)
)
add(
TextSummaryArrowV(
TextSummaryV(
textId = R.string.big_mobile_type_icon_left_and_right_margins
) {
MIUIDialog(activity).apply {
setTitle(R.string.big_mobile_type_icon_left_and_right_margins)
setMessage("${activity.getString(R.string.range)} 0~30")
setEditText(
"",
"${activity.getString(R.string.def)}0, ${activity.getString(R.string.current)}${
OwnSP.ownSP.getInt(
"big_mobile_type_icon_left_and_right_margins",
0
)
}"
)
setLButton(textId = R.string.cancel) {
dismiss()
}
setRButton(textId = R.string.Done) {
if (getEditText().isNotEmpty()) {
try {
val value = getEditText().toInt()
if (value in (0..30)) {
OwnSP.ownSP.edit().run {
putInt(
"big_mobile_type_icon_left_and_right_margins",
value
)
apply()
}
dismiss()
return@setRButton
}
} catch (_: Throwable) {
}
}
Toast.makeText(
activity,
R.string.input_error,
Toast.LENGTH_SHORT
).show()
}
show()
}
}, dataBindingRecv = big_mobile_type_icon_binding.binding.getRecv(2)
)
)
add(
TextSummaryWithSwitchV(
TextSummaryV(
textId = R.string.remove_the_maximum_number_of_notification_icons,
tipsId = R.string.remove_the_maximum_number_of_notification_icons_summary
),
SwitchV("remove_the_maximum_number_of_notification_icons")
)
)
add(
TextSummaryArrowV(
TextSummaryV(
textId = R.string.battery_percentage_font_size,
onClickListener = {
MIUIDialog(activity).apply {
setTitle(R.string.battery_percentage_font_size)
setMessage(R.string.zero_do_no_change)
setEditText(
"",
"${activity.getString(R.string.current)}${
OwnSP.ownSP.getFloat(
"battery_percentage_font_size",
0f
)
}"
)
setLButton(textId = R.string.cancel) {
dismiss()
}
setRButton(textId = R.string.Done) {
if (getEditText() != "") {
OwnSP.ownSP.edit().run {
putFloat(
"battery_percentage_font_size",
getEditText().toFloat()
)
apply()
}
}
dismiss()
}
show()
}
})
)
)
add(
TextSummaryWithSwitchV(
TextSummaryV(
textId = R.string.hide_battery_percentage_icon,
tipsId = R.string.hide_battery_percentage_icon_summary
),
SwitchV("hide_battery_percentage_icon")
)
)
add(LineV())
add(TitleTextV(resId = R.string.status_bar_network_speed))
add(

View File

@@ -60,6 +60,8 @@ class SystemUI : IXposedHookLoadPackage {
DoubleLineNetworkSpeed().handleLoadPackage(lpparam)
//大移动类型
StatusBarBigMobileTypeIcon().handleLoadPackage(lpparam)
//电量百分比
BatteryPercentage().handleLoadPackage(lpparam)
}
}

View File

@@ -0,0 +1,24 @@
package com.lt2333.simplicitytools.hook.app.systemui
import android.util.TypedValue
import android.widget.TextView
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.getObjectField
import com.lt2333.simplicitytools.util.hookAfterMethod
import de.robv.android.xposed.IXposedHookLoadPackage
import de.robv.android.xposed.callbacks.XC_LoadPackage
class BatteryPercentage : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
val size = XSPUtils.getFloat("battery_percentage_font_size", 0f)
if (size == 0f) return
"com.android.systemui.statusbar.views.MiuiBatteryMeterView".hookAfterMethod(
lpparam.classLoader,
"updateResources"
) {
(it.thisObject.getObjectField("mBatteryPercentView") as TextView).setTextSize(
TypedValue.COMPLEX_UNIT_DIP, size
)
}
}
}

View File

@@ -9,6 +9,7 @@ import android.view.ViewGroup
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import com.lt2333.simplicitytools.util.XSPUtils
import com.lt2333.simplicitytools.util.hasEnable
import com.lt2333.simplicitytools.util.hookAfterMethod
import com.lt2333.simplicitytools.util.hookBeforeMethod
@@ -18,6 +19,11 @@ import de.robv.android.xposed.callbacks.XC_LoadPackage
class StatusBarBigMobileTypeIcon : IXposedHookLoadPackage {
val upAndDownPosition = XSPUtils.getInt("big_mobile_type_icon_up_and_down_position", 0)
val leftAndRightMargin = XSPUtils.getInt("big_mobile_type_icon_left_and_right_margins", 0)
val isBold = XSPUtils.getBoolean("big_mobile_type_icon_bold", true)
val size = XSPUtils.getFloat("big_mobile_type_icon_size", 12.5f)
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
hasEnable("big_mobile_type_icon") {
"com.android.systemui.statusbar.StatusBarMobileView".hookAfterMethod(
@@ -63,10 +69,13 @@ class StatusBarBigMobileTypeIcon : IXposedHookLoadPackage {
val newLinearLayoutLP = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT
)
).also {
}
val newLinearlayout = LinearLayout(context).also {
it.layoutParams = newLinearLayoutLP
it.id = mobile_container_left_ID
it.setPadding(leftAndRightMargin, 0, leftAndRightMargin, 0)
}
XposedHelpers.setObjectField(it.thisObject, "mMobileLeftContainer", newLinearlayout)
RightParentLayout.addView(
@@ -86,10 +95,13 @@ class StatusBarBigMobileTypeIcon : IXposedHookLoadPackage {
LinearLayout.LayoutParams.WRAP_CONTENT
).also {
it.gravity = Gravity.CENTER_VERTICAL
it.topMargin = upAndDownPosition
}
mobile_type.also {
it.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 12.5F)
it.typeface = Typeface.DEFAULT_BOLD
it.setTextSize(TypedValue.COMPLEX_UNIT_DIP, size)
if (isBold) {
it.typeface = Typeface.DEFAULT_BOLD
}
it.layoutParams = mobile_type_lp
}

View File

@@ -18,7 +18,7 @@ import java.text.SimpleDateFormat
import java.util.*
class StatusBarTimeCustomization : IXposedHookLoadPackage {
private val isYear = XSPUtils.getBoolean("status_bar_time_year", false)
private val isMonth = XSPUtils.getBoolean("status_bar_time_month", false)
private val isDay = XSPUtils.getBoolean("status_bar_time_day", false)
@@ -38,11 +38,17 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage {
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) {
if (isOpen) {
var c: Context? = null
val miuiClockClass = "com.android.systemui.statusbar.views.MiuiClock".findClass(lpparam.classLoader)
miuiClockClass.hookAfterConstructor(Context::class.java, AttributeSet::class.java, Integer.TYPE) {
val miuiClockClass =
"com.android.systemui.statusbar.views.MiuiClock".findClass(lpparam.classLoader)
miuiClockClass.hookAfterConstructor(
Context::class.java,
AttributeSet::class.java,
Integer.TYPE
) {
try {
c = it.args[0] as Context
val textV = it.thisObject as TextView
if (textV.resources.getResourceEntryName(textV.id) != "clock") return@hookAfterConstructor
textV.isSingleLine = false
if (isDoubleLine) {
str = "\n"
@@ -51,7 +57,7 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage {
clock_double_line_size = getClockDoubleSize.toFloat()
}
textV.setTextSize(TypedValue.COMPLEX_UNIT_DIP, clock_double_line_size)
textV.setLineSpacing(0F,0.8F)
textV.setLineSpacing(0F, 0.8F)
} else {
if (getClockSize != 0) {
val clock_size = getClockSize.toFloat()
@@ -68,8 +74,7 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage {
Handler(textV.context.mainLooper).post(r)
}
}
if (textV.resources.getResourceEntryName(textV.id) == "clock")
Timer().scheduleAtFixedRate(T(), 1000 - System.currentTimeMillis() % 1000, 1000)
Timer().scheduleAtFixedRate(T(), 1000 - System.currentTimeMillis() % 1000, 1000)
} catch (e: java.lang.Exception) {
}
}
@@ -77,9 +82,13 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage {
try {
val textV = it.thisObject as TextView
if (textV.resources.getResourceEntryName(textV.id) == "clock") {
val t = Settings.System.getString(c!!.contentResolver, Settings.System.TIME_12_24)
val t = Settings.System.getString(
c!!.contentResolver,
Settings.System.TIME_12_24
)
val is24 = t == "24"
now_time = Calendar.getInstance().time
textV.text = getDate(c!!, t) + str + getTime(c!!, t)
textV.text = getDate(c!!) + str + getTime(c!!, is24)
}
} catch (e: Exception) {
}
@@ -89,7 +98,7 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage {
@SuppressLint("SimpleDateFormat")
private fun getDate(context: Context, t: String): String {
private fun getDate(context: Context): String {
var datePattern = ""
val isZh = isZh(context)
@@ -130,10 +139,10 @@ class StatusBarTimeCustomization : IXposedHookLoadPackage {
}
@SuppressLint("SimpleDateFormat")
private fun getTime(context: Context, t: String): String {
private fun getTime(context: Context, t: Boolean): String {
var timePattern = ""
val isZh = isZh(context)
timePattern += if (t == "24") "HH:mm" else "h:mm"
timePattern += if (t) "HH:mm" else "h:mm"
if (isSecond) timePattern += ":ss"
timePattern = SimpleDateFormat(timePattern).format(now_time)
if (isZh) timePattern = getPeriod(isZh) + timePattern else timePattern += getPeriod(isZh)

View File

@@ -178,4 +178,12 @@
<string name="right">Derecha</string>
<string name="big_mobile_type_icon">Icono grande de red móvil</string>
<string name="can_notification_slide">Hacer que todas las notificaciones puedan deslizarse hacia una ventana pequeña</string>
<string name="battery_percentage_font_size">Tamaño de la fuente del porcentaje de batería</string>
<string name="zero_do_no_change">0: sin cambios</string>
<string name="big_mobile_type_icon_size">Tamaño del icono red móvil grande</string>
<string name="big_mobile_type_icon_bold">Icono red móvil grande en negrita</string>
<string name="big_mobile_type_icon_up_and_down_position">Posición arriba y abajo del icono red móvil grande</string>
<string name="input_error">Error de entrada</string>
<string name="range">Rango: </string>
<string name="big_mobile_type_icon_left_and_right_margins">Margen izquierdo y derecho del icono de red móvil grande</string>
</resources>

View File

@@ -182,4 +182,12 @@
<string name="right">Вправо</string>
<string name="big_mobile_type_icon">Большая иконка типа сети</string>
<string name="can_notification_slide">Сделать так, чтобы все уведомления можно было сдвинуть в всплывающее окно</string>
<string name="battery_percentage_font_size">Размер шрифта процентов заряда батареи</string>
<string name="zero_do_no_change">0: не изменять</string>
<string name="big_mobile_type_icon_size">Размер большого значка типа сети</string>
<string name="big_mobile_type_icon_bold">Жирный шрифт большого значка типа сети</string>
<string name="big_mobile_type_icon_up_and_down_position">Регулировка по высоте типа сети</string>
<string name="input_error">Ошибка ввода</string>
<string name="range">Диапазон: </string>
<string name="big_mobile_type_icon_left_and_right_margins">Положение типа сети по горизонтали</string>
</resources>

View File

@@ -178,4 +178,13 @@
<string name="left">Sol</string>
<string name="right">Sağ </string>
<string name="big_mobile_type_icon">Büyük mobil ikon tipi</string>
<string name="can_notification_slide">Tüm bildirimlerin küçük pencereye kaydırılabilmesini sağlayın</string>
<string name="battery_percentage_font_size">Pil yüzdesi yazı tipi boyutu</string>
<string name="zero_do_no_change">0: değiştirme</string>
<string name="big_mobile_type_icon_size">Büyük mobil tip simge boyutu</string>
<string name="big_mobile_type_icon_bold">Büyük mobil tip simgesi kalın</string>
<string name="big_mobile_type_icon_up_and_down_position">Büyük mobil tip simgesi yukarı ve aşağı konumu</string>
<string name="input_error">Giriş hatası</string>
<string name="range">Menzil:</string>
<string name="big_mobile_type_icon_left_and_right_margins">Büyük mobil tip simgesi sol ve sağ kenar boşlukları</string>
</resources>

View File

@@ -67,14 +67,18 @@
<string name="third_party_open_source_statement">Tuyên Bố Về Mã Nguồn Mở Của Bên Thứ Ba</string>
<string name="corepacth">Gỡ bỏ các hạn chế</string>
<string name="corepacth_summary">Hỗ trợ hạ cấp/khác chữ ký/không ký cài đặt</string>
<string name="prevent_recovery_of_battery_optimization_white_list">Ngăn chặn sự khôi phục của danh sách trắng tối ưu hoá pin</string>
<string name="failed_after_restart">Nó sẽ được khôi phục sau khi khởi động lại hệ thống</string>
<string name="battery_optimization">Tối ưu hóa pin</string>
<string name="battery_optimization_summary">Mở nhanh menu tối ưu hóa pin bị ẩn bởi MIUI</string>
<string name="app_coolapk_url">Tới và đánh giá chúng tôi 5 sao</string>
<string name="app_coolapk_url_summary">Điều này có thể giúp chúng tôi dễ được biết tới hơn</string>
<string name="qq_channel">Tham gia kênh QQ chính thức</string>
<string name="tg_channel">Tham gia kênh TG chính thức</string>
<string name="tg_channel_summary">Bạn có thể vào nhóm trò chuyện trên kênh</string>
<string name="discussions">Thảo luận</string>
<string name="remove_lock_screen_camera">Gỡ chức năng camera khỏi màn hình khoá</string>
<string name="only_official_default_themes_are_supported">Chỉ hỗ trợ những chủ đề mặc định chính thức</string>
<string name="lock_one_hundred">Đặt 100 điểm cho ứng dụng Bảo mật</string>
<string name="scope">Phạm vi</string>
<string name="scope_android">Framework Hệ Thống</string>
@@ -113,13 +117,20 @@
<string name="left_margin">Lề trái (0: Tự động)</string>
<string name="right_margin">Lề phải (0: Tự động)</string>
<string name="updater">Trình cập nhật</string>
<string name="remove_ota_validate">*Gỡ xác thực OTA [LAB]</string>
<string name="settings">Cài đặt</string>
<string name="show_notification_importance">Hiện thông báo quan trọng</string>
<string name="remove_ad">Gỡ quảng cáo</string>
<string name="remove_thememanager_ads">Gỡ bỏ quảng cáo cho Trình quản lí chủ đề</string>
<string name="enable_wave_charge_animation">Bật hoạt ảnh dạng sóng khi sạc</string>
<string name="max_wallpaper_scale">Tỉ lệ hình nền tối đa</string>
<string name="def">"Mặc định: "</string>
<string name="current">Hiện tại:</string>
<string name="participate_in_translation">Tham gia dịch</string>
<string name="participate_in_translation_summary">Giúp chúng tôi dịch ứng dụng sang ngôn ngữ của bạn</string>
<string name="hide_icon">Ẩn biểu tượng</string>
<string name="double_tap_to_sleep">Chạm hai lần để tắt màn hình</string>
<string name="home_double_tap_to_sleep_summary">Chạm hai lần vào vùng trống để tắt màn hình</string>
<string name="qs_custom_rows">Hàng</string>
<string name="qs_custom_columns">Cột</string>
</resources>

View File

@@ -178,4 +178,12 @@
<string name="right">右边</string>
<string name="big_mobile_type_icon">大移动类型图标</string>
<string name="can_notification_slide">强制允许全部通知可使用小窗</string>
<string name="battery_percentage_font_size">电池百分比字体大小</string>
<string name="zero_do_no_change">0: 不更改</string>
<string name="big_mobile_type_icon_size">大移动类型图标大小</string>
<string name="big_mobile_type_icon_bold">大移动类型图标加粗</string>
<string name="big_mobile_type_icon_up_and_down_position">大移动类型图标上下位置</string>
<string name="input_error">输入错误</string>
<string name="range">范围:</string>
<string name="big_mobile_type_icon_left_and_right_margins">大移动类型图标左右边距</string>
</resources>

View File

@@ -178,4 +178,12 @@
<string name="right">置右</string>
<string name="big_mobile_type_icon">大行動網路圖示</string>
<string name="can_notification_slide">強制允許全部通知可使用小窗</string>
<string name="battery_percentage_font_size">電量百分比字體大小</string>
<string name="zero_do_no_change">0不修改</string>
<string name="big_mobile_type_icon_size">大行動網路圖示大小</string>
<string name="big_mobile_type_icon_bold">大行動網路圖示加粗</string>
<string name="big_mobile_type_icon_up_and_down_position">大行動網路圖示上下位置</string>
<string name="input_error">輸入錯誤</string>
<string name="range">範圍:</string>
<string name="big_mobile_type_icon_left_and_right_margins">大行動網路圖示左右邊距</string>
</resources>

View File

@@ -182,4 +182,12 @@
<string name="right">Right</string>
<string name="big_mobile_type_icon">Big Mobile Type Icon</string>
<string name="can_notification_slide">Make all notification can be slide to small window</string>
<string name="battery_percentage_font_size">Battery percentage font size</string>
<string name="zero_do_no_change">0: do not change</string>
<string name="big_mobile_type_icon_size">Big mobile type icon size</string>
<string name="big_mobile_type_icon_bold">Big mobile type icon bold</string>
<string name="big_mobile_type_icon_up_and_down_position">Big mobile type icon up and down position</string>
<string name="input_error">Input error</string>
<string name="range">Range: </string>
<string name="big_mobile_type_icon_left_and_right_margins">Big mobile type icon left and right margins</string>
</resources>