mirror of
https://github.com/pppscn/SmsForwarder
synced 2025-08-03 01:17:41 +08:00
新增:自动任务·快捷指令 (开发中)
This commit is contained in:
parent
5fb9f1b75c
commit
95e9f22816
@ -3,6 +3,10 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:installLocation="internalOnly">
|
android:installLocation="internalOnly">
|
||||||
|
|
||||||
|
<uses-feature
|
||||||
|
android:name="android.hardware.telephony"
|
||||||
|
android:required="false" />
|
||||||
|
|
||||||
<uses-permission
|
<uses-permission
|
||||||
android:name="android.permission.QUERY_ALL_PACKAGES"
|
android:name="android.permission.QUERY_ALL_PACKAGES"
|
||||||
tools:ignore="QueryAllPackagesPermission" />
|
tools:ignore="QueryAllPackagesPermission" />
|
||||||
@ -239,6 +243,11 @@
|
|||||||
<action android:name="android.service.notification.NotificationListenerService" />
|
<action android:name="android.service.notification.NotificationListenerService" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</service>
|
</service>
|
||||||
|
<service
|
||||||
|
android:name=".workers.CronWorker"
|
||||||
|
android:exported="false"
|
||||||
|
android:permission="android.permission.BIND_JOB_SERVICE" />
|
||||||
|
|
||||||
|
|
||||||
<receiver
|
<receiver
|
||||||
android:name=".receiver.BootReceiver"
|
android:name=".receiver.BootReceiver"
|
||||||
|
@ -41,7 +41,11 @@ class TaskPagingAdapter(private val itemClickListener: OnItemClickListener) : Pa
|
|||||||
for (condition in conditionList) {
|
for (condition in conditionList) {
|
||||||
val layoutConditionItem = View.inflate(App.context, R.layout.item_setting, null) as LinearLayout
|
val layoutConditionItem = View.inflate(App.context, R.layout.item_setting, null) as LinearLayout
|
||||||
val ivConditionIcon = layoutConditionItem.findViewById<ImageView>(R.id.iv_setting_icon)
|
val ivConditionIcon = layoutConditionItem.findViewById<ImageView>(R.id.iv_setting_icon)
|
||||||
ivConditionIcon.setImageResource(condition.iconId)
|
if (item.status == 0) {
|
||||||
|
ivConditionIcon.setImageResource(condition.greyIconId)
|
||||||
|
} else {
|
||||||
|
ivConditionIcon.setImageResource(condition.iconId)
|
||||||
|
}
|
||||||
holder.binding.layoutConditionsIcons.addView(layoutConditionItem)
|
holder.binding.layoutConditionsIcons.addView(layoutConditionItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -50,12 +54,14 @@ class TaskPagingAdapter(private val itemClickListener: OnItemClickListener) : Pa
|
|||||||
holder.binding.layoutActionsIcons.removeAllViews()
|
holder.binding.layoutActionsIcons.removeAllViews()
|
||||||
if (item.actions.isNotEmpty()) {
|
if (item.actions.isNotEmpty()) {
|
||||||
val actionList = Gson().fromJson(item.actions, Array<TaskSetting>::class.java).toMutableList()
|
val actionList = Gson().fromJson(item.actions, Array<TaskSetting>::class.java).toMutableList()
|
||||||
//Log.d("TaskPagingAdapter", "actionList:$actionList")
|
|
||||||
for (action in actionList) {
|
for (action in actionList) {
|
||||||
//Log.d("TaskPagingAdapter", "action:$action")
|
|
||||||
val layoutActionItem = View.inflate(App.context, R.layout.item_setting, null) as LinearLayout
|
val layoutActionItem = View.inflate(App.context, R.layout.item_setting, null) as LinearLayout
|
||||||
val ivActionIcon = layoutActionItem.findViewById<ImageView>(R.id.iv_setting_icon)
|
val ivActionIcon = layoutActionItem.findViewById<ImageView>(R.id.iv_setting_icon)
|
||||||
ivActionIcon.setImageResource(action.iconId)
|
if (item.status == 0) {
|
||||||
|
ivActionIcon.setImageResource(action.greyIconId)
|
||||||
|
} else {
|
||||||
|
ivActionIcon.setImageResource(action.iconId)
|
||||||
|
}
|
||||||
holder.binding.layoutActionsIcons.addView(layoutActionItem)
|
holder.binding.layoutActionsIcons.addView(layoutActionItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -69,7 +75,11 @@ class TaskPagingAdapter(private val itemClickListener: OnItemClickListener) : Pa
|
|||||||
} else {
|
} else {
|
||||||
holder.binding.layoutImage.visibility = View.VISIBLE
|
holder.binding.layoutImage.visibility = View.VISIBLE
|
||||||
holder.binding.layoutIcons.visibility = View.GONE
|
holder.binding.layoutIcons.visibility = View.GONE
|
||||||
holder.binding.ivImage.setImageResource(item.imageId)
|
if (item.status == 0) {
|
||||||
|
holder.binding.ivImage.setImageResource(item.greyImageId)
|
||||||
|
} else {
|
||||||
|
holder.binding.ivImage.setImageResource(item.imageId)
|
||||||
|
}
|
||||||
holder.binding.ivStatus.setImageResource(item.statusImageId)
|
holder.binding.ivStatus.setImageResource(item.statusImageId)
|
||||||
holder.binding.ivEdit.visibility = View.GONE
|
holder.binding.ivEdit.visibility = View.GONE
|
||||||
holder.binding.ivDelete.visibility = View.GONE
|
holder.binding.ivDelete.visibility = View.GONE
|
||||||
|
@ -14,6 +14,7 @@ import com.idormy.sms.forwarder.utils.TASK_CONDITION_BATTERY
|
|||||||
import com.idormy.sms.forwarder.utils.TASK_CONDITION_CHARGE
|
import com.idormy.sms.forwarder.utils.TASK_CONDITION_CHARGE
|
||||||
import com.idormy.sms.forwarder.utils.TASK_CONDITION_CRON
|
import com.idormy.sms.forwarder.utils.TASK_CONDITION_CRON
|
||||||
import com.idormy.sms.forwarder.utils.TASK_CONDITION_NETWORK
|
import com.idormy.sms.forwarder.utils.TASK_CONDITION_NETWORK
|
||||||
|
import com.idormy.sms.forwarder.utils.TASK_CONDITION_SIM
|
||||||
import kotlinx.parcelize.Parcelize
|
import kotlinx.parcelize.Parcelize
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
|
||||||
@ -36,7 +37,8 @@ data class Task(
|
|||||||
TASK_CONDITION_CRON -> R.drawable.auto_task_icon_custom_time
|
TASK_CONDITION_CRON -> R.drawable.auto_task_icon_custom_time
|
||||||
TASK_CONDITION_BATTERY -> R.drawable.auto_task_icon_battery
|
TASK_CONDITION_BATTERY -> R.drawable.auto_task_icon_battery
|
||||||
TASK_CONDITION_CHARGE -> R.drawable.auto_task_icon_charge
|
TASK_CONDITION_CHARGE -> R.drawable.auto_task_icon_charge
|
||||||
TASK_CONDITION_NETWORK -> R.drawable.auto_task_icon_wlan
|
TASK_CONDITION_NETWORK -> R.drawable.auto_task_icon_network
|
||||||
|
TASK_CONDITION_SIM -> R.drawable.auto_task_icon_sim
|
||||||
TASK_ACTION_SENDSMS -> R.drawable.auto_task_icon_sms
|
TASK_ACTION_SENDSMS -> R.drawable.auto_task_icon_sms
|
||||||
TASK_ACTION_NOTIFICATION -> R.drawable.auto_task_icon_sender
|
TASK_ACTION_NOTIFICATION -> R.drawable.auto_task_icon_sender
|
||||||
TASK_ACTION_FRPC -> R.drawable.auto_task_icon_frpc
|
TASK_ACTION_FRPC -> R.drawable.auto_task_icon_frpc
|
||||||
@ -44,6 +46,20 @@ data class Task(
|
|||||||
else -> R.drawable.auto_task_icon_custom_time
|
else -> R.drawable.auto_task_icon_custom_time
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val greyImageId: Int
|
||||||
|
get() = when (type) {
|
||||||
|
TASK_CONDITION_CRON -> R.drawable.auto_task_icon_custom_time_grey
|
||||||
|
TASK_CONDITION_BATTERY -> R.drawable.auto_task_icon_battery_grey
|
||||||
|
TASK_CONDITION_CHARGE -> R.drawable.auto_task_icon_charge_grey
|
||||||
|
TASK_CONDITION_NETWORK -> R.drawable.auto_task_icon_network_grey
|
||||||
|
TASK_CONDITION_SIM -> R.drawable.auto_task_icon_sim_grey
|
||||||
|
TASK_ACTION_SENDSMS -> R.drawable.auto_task_icon_sms_grey
|
||||||
|
TASK_ACTION_NOTIFICATION -> R.drawable.auto_task_icon_sender_grey
|
||||||
|
TASK_ACTION_FRPC -> R.drawable.auto_task_icon_frpc_grey
|
||||||
|
TASK_ACTION_HTTPSERVER -> R.drawable.auto_task_icon_http_server_grey
|
||||||
|
else -> R.drawable.auto_task_icon_custom_time_grey
|
||||||
|
}
|
||||||
|
|
||||||
val statusImageId: Int
|
val statusImageId: Int
|
||||||
get() = when (status) {
|
get() = when (status) {
|
||||||
STATUS_OFF -> R.drawable.icon_off
|
STATUS_OFF -> R.drawable.icon_off
|
||||||
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.idormy.sms.forwarder.entity.task
|
||||||
|
|
||||||
|
import android.os.BatteryManager
|
||||||
|
import com.idormy.sms.forwarder.R
|
||||||
|
import java.io.Serializable
|
||||||
|
|
||||||
|
data class BatterySetting(
|
||||||
|
var description: String = "", //描述
|
||||||
|
var status: Int = BatteryManager.BATTERY_STATUS_CHARGING, //状态
|
||||||
|
var levelMin: Int = 1, //电量下限
|
||||||
|
var levelMax: Int = 100, //电量上限
|
||||||
|
var keepReminding: Boolean = false, //持续提醒
|
||||||
|
) : Serializable {
|
||||||
|
|
||||||
|
fun getStatusCheckId(): Int {
|
||||||
|
return when (status) {
|
||||||
|
BatteryManager.BATTERY_STATUS_CHARGING -> R.id.rb_battery_charging
|
||||||
|
BatteryManager.BATTERY_STATUS_DISCHARGING -> R.id.rb_battery_discharging
|
||||||
|
else -> R.id.rb_battery_charging
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,74 @@
|
|||||||
|
package com.idormy.sms.forwarder.entity.task
|
||||||
|
|
||||||
|
import android.os.BatteryManager
|
||||||
|
import com.idormy.sms.forwarder.R
|
||||||
|
import com.xuexiang.xui.utils.ResUtils
|
||||||
|
import com.xuexiang.xutil.resource.ResUtils.getString
|
||||||
|
import java.io.Serializable
|
||||||
|
|
||||||
|
@Suppress("DEPRECATION", "unused")
|
||||||
|
data class ChargeSetting(
|
||||||
|
var description: String = "", //描述
|
||||||
|
var status: Int = BatteryManager.BATTERY_STATUS_UNKNOWN, //状态
|
||||||
|
var plugged: Int = BatteryManager.BATTERY_PLUGGED_AC, //充电方式
|
||||||
|
) : Serializable {
|
||||||
|
|
||||||
|
constructor(statusCheckId: Int, pluggedCheckId: Int) : this() {
|
||||||
|
status = when (statusCheckId) {
|
||||||
|
R.id.rb_battery_charging -> BatteryManager.BATTERY_STATUS_CHARGING
|
||||||
|
R.id.rb_battery_discharging -> BatteryManager.BATTERY_STATUS_DISCHARGING
|
||||||
|
R.id.rb_battery_not_charging -> BatteryManager.BATTERY_STATUS_NOT_CHARGING
|
||||||
|
R.id.rb_battery_full -> BatteryManager.BATTERY_STATUS_FULL
|
||||||
|
R.id.rb_battery_unknown -> BatteryManager.BATTERY_STATUS_UNKNOWN
|
||||||
|
else -> BatteryManager.BATTERY_STATUS_UNKNOWN
|
||||||
|
}
|
||||||
|
plugged = when (pluggedCheckId) {
|
||||||
|
R.id.rb_plugged_ac -> BatteryManager.BATTERY_PLUGGED_AC
|
||||||
|
R.id.rb_plugged_usb -> BatteryManager.BATTERY_PLUGGED_USB
|
||||||
|
R.id.rb_plugged_wireless -> BatteryManager.BATTERY_PLUGGED_WIRELESS
|
||||||
|
else -> BatteryManager.BATTERY_PLUGGED_AC
|
||||||
|
}
|
||||||
|
description = String.format(getString(R.string.battery_status), getStatusStr(status))
|
||||||
|
description += ", " + String.format(getString(R.string.battery_plugged), getPluggedStr(plugged))
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getStatusStr(status: Int): String {
|
||||||
|
return when (status) {
|
||||||
|
BatteryManager.BATTERY_STATUS_CHARGING -> ResUtils.getString(R.string.battery_charging)
|
||||||
|
BatteryManager.BATTERY_STATUS_DISCHARGING -> ResUtils.getString(R.string.battery_discharging)
|
||||||
|
BatteryManager.BATTERY_STATUS_NOT_CHARGING -> ResUtils.getString(R.string.battery_not_charging)
|
||||||
|
BatteryManager.BATTERY_STATUS_FULL -> ResUtils.getString(R.string.battery_full)
|
||||||
|
BatteryManager.BATTERY_STATUS_UNKNOWN -> ResUtils.getString(R.string.battery_unknown)
|
||||||
|
else -> ResUtils.getString(R.string.battery_unknown)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getStatusCheckId(): Int {
|
||||||
|
return when (status) {
|
||||||
|
BatteryManager.BATTERY_STATUS_CHARGING -> R.id.rb_battery_charging
|
||||||
|
BatteryManager.BATTERY_STATUS_DISCHARGING -> R.id.rb_battery_discharging
|
||||||
|
BatteryManager.BATTERY_STATUS_NOT_CHARGING -> R.id.rb_battery_not_charging
|
||||||
|
BatteryManager.BATTERY_STATUS_FULL -> R.id.rb_battery_full
|
||||||
|
BatteryManager.BATTERY_STATUS_UNKNOWN -> R.id.rb_battery_unknown
|
||||||
|
else -> R.id.rb_battery_charging
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getPluggedStr(plugged: Int): String {
|
||||||
|
return when (plugged) {
|
||||||
|
BatteryManager.BATTERY_PLUGGED_AC -> ResUtils.getString(R.string.battery_ac)
|
||||||
|
BatteryManager.BATTERY_PLUGGED_USB -> ResUtils.getString(R.string.battery_usb)
|
||||||
|
BatteryManager.BATTERY_PLUGGED_WIRELESS -> ResUtils.getString(R.string.battery_wireless)
|
||||||
|
else -> ResUtils.getString(R.string.battery_unknown)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getPluggedCheckId(): Int {
|
||||||
|
return when (plugged) {
|
||||||
|
BatteryManager.BATTERY_PLUGGED_AC -> R.id.rb_plugged_ac
|
||||||
|
BatteryManager.BATTERY_PLUGGED_USB -> R.id.rb_plugged_usb
|
||||||
|
BatteryManager.BATTERY_PLUGGED_WIRELESS -> R.id.rb_plugged_wireless
|
||||||
|
else -> R.id.rb_plugged_unknown
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -3,6 +3,6 @@ package com.idormy.sms.forwarder.entity.task
|
|||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
|
||||||
data class CronSetting(
|
data class CronSetting(
|
||||||
var expression: String,
|
var description: String = "", //描述
|
||||||
var description: String = "",
|
var expression: String = "", //表达式
|
||||||
) : Serializable
|
) : Serializable
|
||||||
|
@ -0,0 +1,41 @@
|
|||||||
|
package com.idormy.sms.forwarder.entity.task
|
||||||
|
|
||||||
|
import com.idormy.sms.forwarder.R
|
||||||
|
import com.xuexiang.xutil.resource.ResUtils.getString
|
||||||
|
import java.io.Serializable
|
||||||
|
|
||||||
|
data class NetworkSetting(
|
||||||
|
var description: String = "", //描述
|
||||||
|
var networkState: Int = 0, //网络状态:0-没有网络,1-移动网络,2-WiFi,3-以太网, 4-未知
|
||||||
|
) : Serializable {
|
||||||
|
|
||||||
|
constructor(networkStateCheckId: Int) : this() {
|
||||||
|
networkState = when (networkStateCheckId) {
|
||||||
|
R.id.rb_no_network -> 0
|
||||||
|
R.id.rb_net_mobile -> 1
|
||||||
|
R.id.rb_net_wifi -> 2
|
||||||
|
R.id.rb_net_ethernet -> 3
|
||||||
|
else -> 4
|
||||||
|
}
|
||||||
|
description = String.format(
|
||||||
|
getString(R.string.network_state),
|
||||||
|
when (networkState) {
|
||||||
|
0 -> getString(R.string.no_network)
|
||||||
|
1 -> getString(R.string.net_mobile)
|
||||||
|
2 -> getString(R.string.net_wifi)
|
||||||
|
3 -> getString(R.string.net_ethernet)
|
||||||
|
else -> getString(R.string.net_unknown)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getNetworkStateCheckId(): Int {
|
||||||
|
return when (networkState) {
|
||||||
|
0 -> R.id.rb_no_network
|
||||||
|
1 -> R.id.rb_net_mobile
|
||||||
|
2 -> R.id.rb_net_wifi
|
||||||
|
3 -> R.id.rb_net_ethernet
|
||||||
|
else -> R.id.rb_net_unknown
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
package com.idormy.sms.forwarder.entity.task
|
||||||
|
|
||||||
|
import com.idormy.sms.forwarder.R
|
||||||
|
import com.xuexiang.xutil.resource.ResUtils.getString
|
||||||
|
import java.io.Serializable
|
||||||
|
|
||||||
|
data class SimSetting(
|
||||||
|
var description: String = "", //描述
|
||||||
|
var simState: Int = 0, //SIM卡状态:0-未知状态,1-卡被移除,5-卡已准备就绪
|
||||||
|
) : Serializable {
|
||||||
|
|
||||||
|
constructor(simStateCheckId: Int) : this() {
|
||||||
|
simState = when (simStateCheckId) {
|
||||||
|
R.id.rb_sim_state_absent -> 1
|
||||||
|
R.id.rb_sim_state_ready -> 5
|
||||||
|
else -> 0
|
||||||
|
}
|
||||||
|
description = String.format(
|
||||||
|
getString(R.string.sim_state),
|
||||||
|
when (simState) {
|
||||||
|
1 -> getString(R.string.sim_state_absent)
|
||||||
|
5 -> getString(R.string.sim_state_ready)
|
||||||
|
else -> getString(R.string.sim_state_unknown)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getSimStateCheckId(): Int {
|
||||||
|
return when (simState) {
|
||||||
|
1 -> R.id.rb_sim_state_absent
|
||||||
|
5 -> R.id.rb_sim_state_ready
|
||||||
|
else -> R.id.rb_sim_state_unknown
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -3,8 +3,8 @@ package com.idormy.sms.forwarder.entity.task
|
|||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
|
|
||||||
data class SmsSetting(
|
data class SmsSetting(
|
||||||
var description: String = "",
|
var description: String = "", //描述
|
||||||
var simSlot: Int = 1,
|
var simSlot: Int = 1, //卡槽
|
||||||
var phoneNumbers: String = "",
|
var phoneNumbers: String = "", //手机号码
|
||||||
var msgContent: String = "",
|
var msgContent: String = "", //短信内容
|
||||||
) : Serializable
|
) : Serializable
|
||||||
|
@ -13,10 +13,10 @@ import java.io.Serializable
|
|||||||
|
|
||||||
data class TaskSetting(
|
data class TaskSetting(
|
||||||
val type: Int, // TASK_CONDITION_FRAGMENT_LIST 索引加上 KEY_BACK_CODE_CONDITION 或者 TASK_ACTION_FRAGMENT_LIST 索引加上 KEY_BACK_CODE_ACTION
|
val type: Int, // TASK_CONDITION_FRAGMENT_LIST 索引加上 KEY_BACK_CODE_CONDITION 或者 TASK_ACTION_FRAGMENT_LIST 索引加上 KEY_BACK_CODE_ACTION
|
||||||
val title: String,
|
val title: String, //标题
|
||||||
val description: String,
|
val description: String, //描述
|
||||||
var setting: String = "",
|
var setting: String = "", //设置
|
||||||
var position: Int = -1
|
var position: Int = -1 //位置
|
||||||
) : Serializable {
|
) : Serializable {
|
||||||
|
|
||||||
val iconId: Int
|
val iconId: Int
|
||||||
@ -24,11 +24,24 @@ data class TaskSetting(
|
|||||||
TASK_CONDITION_CRON -> R.drawable.auto_task_icon_custom_time
|
TASK_CONDITION_CRON -> R.drawable.auto_task_icon_custom_time
|
||||||
TASK_CONDITION_BATTERY -> R.drawable.auto_task_icon_battery
|
TASK_CONDITION_BATTERY -> R.drawable.auto_task_icon_battery
|
||||||
TASK_CONDITION_CHARGE -> R.drawable.auto_task_icon_charge
|
TASK_CONDITION_CHARGE -> R.drawable.auto_task_icon_charge
|
||||||
TASK_CONDITION_NETWORK -> R.drawable.auto_task_icon_wlan
|
TASK_CONDITION_NETWORK -> R.drawable.auto_task_icon_network
|
||||||
TASK_ACTION_SENDSMS -> R.drawable.auto_task_icon_sms
|
TASK_ACTION_SENDSMS -> R.drawable.auto_task_icon_sms
|
||||||
TASK_ACTION_NOTIFICATION -> R.drawable.auto_task_icon_sender
|
TASK_ACTION_NOTIFICATION -> R.drawable.auto_task_icon_sender
|
||||||
TASK_ACTION_FRPC -> R.drawable.auto_task_icon_frpc
|
TASK_ACTION_FRPC -> R.drawable.auto_task_icon_frpc
|
||||||
TASK_ACTION_HTTPSERVER -> R.drawable.auto_task_icon_http_server
|
TASK_ACTION_HTTPSERVER -> R.drawable.auto_task_icon_http_server
|
||||||
else -> R.drawable.auto_task_icon_sms
|
else -> R.drawable.auto_task_icon_sms
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val greyIconId: Int
|
||||||
|
get() = when (type) {
|
||||||
|
TASK_CONDITION_CRON -> R.drawable.auto_task_icon_custom_time_grey
|
||||||
|
TASK_CONDITION_BATTERY -> R.drawable.auto_task_icon_battery_grey
|
||||||
|
TASK_CONDITION_CHARGE -> R.drawable.auto_task_icon_charge_grey
|
||||||
|
TASK_CONDITION_NETWORK -> R.drawable.auto_task_icon_network_grey
|
||||||
|
TASK_ACTION_SENDSMS -> R.drawable.auto_task_icon_sms_grey
|
||||||
|
TASK_ACTION_NOTIFICATION -> R.drawable.auto_task_icon_sender_grey
|
||||||
|
TASK_ACTION_FRPC -> R.drawable.auto_task_icon_frpc_grey
|
||||||
|
TASK_ACTION_HTTPSERVER -> R.drawable.auto_task_icon_http_server_grey
|
||||||
|
else -> R.drawable.auto_task_icon_sms_grey
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -166,8 +166,10 @@ class TasksEditFragment : BaseFragment<FragmentTasksEditBinding?>(), View.OnClic
|
|||||||
when (v.id) {
|
when (v.id) {
|
||||||
R.id.layout_add_condition -> {
|
R.id.layout_add_condition -> {
|
||||||
val view: View = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_task_condition_bottom_sheet, null)
|
val view: View = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_task_condition_bottom_sheet, null)
|
||||||
val recyclerView: RecyclerView = view.findViewById(R.id.recyclerView)
|
val tvTitle: TextView = view.findViewById(R.id.tv_title)
|
||||||
|
tvTitle.text = if (itemListConditions.isEmpty()) getString(R.string.select_task_trigger) else getString(R.string.select_task_condition)
|
||||||
|
|
||||||
|
val recyclerView: RecyclerView = view.findViewById(R.id.recyclerView)
|
||||||
WidgetUtils.initGridRecyclerView(recyclerView, 4, DensityUtils.dp2px(1f))
|
WidgetUtils.initGridRecyclerView(recyclerView, 4, DensityUtils.dp2px(1f))
|
||||||
val widgetItemAdapter = WidgetItemAdapter(TASK_CONDITION_FRAGMENT_LIST)
|
val widgetItemAdapter = WidgetItemAdapter(TASK_CONDITION_FRAGMENT_LIST)
|
||||||
widgetItemAdapter.setOnItemClickListener(that)
|
widgetItemAdapter.setOnItemClickListener(that)
|
||||||
@ -347,10 +349,6 @@ class TasksEditFragment : BaseFragment<FragmentTasksEditBinding?>(), View.OnClic
|
|||||||
try {
|
try {
|
||||||
dialog.dismiss()
|
dialog.dismiss()
|
||||||
Log.d(TAG, "onItemClick: $widgetInfo")
|
Log.d(TAG, "onItemClick: $widgetInfo")
|
||||||
if (pos > 0) {
|
|
||||||
XToastUtils.info("暂不支持,敬请期待……")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
//判断点击的是条件还是动作
|
//判断点击的是条件还是动作
|
||||||
if (widgetInfo.classPath.contains(".condition.")) {
|
if (widgetInfo.classPath.contains(".condition.")) {
|
||||||
//判断是否已经添加过该类型条件
|
//判断是否已经添加过该类型条件
|
||||||
@ -385,54 +383,18 @@ class TasksEditFragment : BaseFragment<FragmentTasksEditBinding?>(), View.OnClic
|
|||||||
super.onFragmentResult(requestCode, resultCode, data)
|
super.onFragmentResult(requestCode, resultCode, data)
|
||||||
Log.d(TAG, "requestCode:$requestCode resultCode:$resultCode data:$data")
|
Log.d(TAG, "requestCode:$requestCode resultCode:$resultCode data:$data")
|
||||||
if (data != null) {
|
if (data != null) {
|
||||||
val extras = data.extras
|
val extras = data.extras ?: return
|
||||||
|
|
||||||
|
val description: String?
|
||||||
var setting: String? = null
|
var setting: String? = null
|
||||||
if (resultCode in KEY_BACK_CODE_CONDITION..KEY_BACK_CODE_CONDITION + 999) {
|
if (resultCode in KEY_BACK_CODE_CONDITION..KEY_BACK_CODE_CONDITION + 999) {
|
||||||
setting = extras!!.getString(KEY_BACK_DATA_CONDITION)
|
setting = extras.getString(KEY_BACK_DATA_CONDITION) ?: return
|
||||||
if (setting == null) return
|
|
||||||
//注意:TASK_CONDITION_XXX 枚举值 等于 TASK_CONDITION_FRAGMENT_LIST 索引加上 KEY_BACK_CODE_CONDITION,不可改变
|
//注意:TASK_CONDITION_XXX 枚举值 等于 TASK_CONDITION_FRAGMENT_LIST 索引加上 KEY_BACK_CODE_CONDITION,不可改变
|
||||||
val widgetInfoIndex = resultCode - KEY_BACK_CODE_CONDITION
|
val widgetInfoIndex = resultCode - KEY_BACK_CODE_CONDITION
|
||||||
if (widgetInfoIndex >= TASK_CONDITION_FRAGMENT_LIST.size) return
|
if (widgetInfoIndex >= TASK_CONDITION_FRAGMENT_LIST.size) return
|
||||||
val widgetInfo = TASK_CONDITION_FRAGMENT_LIST[widgetInfoIndex]
|
val widgetInfo = TASK_CONDITION_FRAGMENT_LIST[widgetInfoIndex]
|
||||||
val taskSetting: TaskSetting
|
description = extras.getString(KEY_BACK_DESCRIPTION_CONDITION) ?: widgetInfo.name.toString()
|
||||||
when (resultCode) {
|
val taskSetting = TaskSetting(resultCode, widgetInfo.name, description, setting, requestCode)
|
||||||
|
|
||||||
TASK_CONDITION_CRON -> {
|
|
||||||
val settingVo = Gson().fromJson(setting, CronSetting::class.java)
|
|
||||||
Log.d(TAG, settingVo.toString())
|
|
||||||
taskSetting = TaskSetting(
|
|
||||||
resultCode, widgetInfo.name, settingVo.description, setting, requestCode
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
TASK_CONDITION_BATTERY -> {
|
|
||||||
val settingVo = Gson().fromJson(setting, CronSetting::class.java)
|
|
||||||
Log.d(TAG, settingVo.toString())
|
|
||||||
taskSetting = TaskSetting(
|
|
||||||
resultCode, widgetInfo.name, settingVo.description, setting, requestCode
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
TASK_CONDITION_CHARGE -> {
|
|
||||||
val settingVo = Gson().fromJson(setting, CronSetting::class.java)
|
|
||||||
Log.d(TAG, settingVo.toString())
|
|
||||||
taskSetting = TaskSetting(
|
|
||||||
resultCode, widgetInfo.name, settingVo.description, setting, requestCode
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
TASK_CONDITION_NETWORK -> {
|
|
||||||
val settingVo = Gson().fromJson(setting, CronSetting::class.java)
|
|
||||||
Log.d(TAG, settingVo.toString())
|
|
||||||
taskSetting = TaskSetting(
|
|
||||||
resultCode, widgetInfo.name, settingVo.description, setting, requestCode
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
else -> {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//requestCode: 等于 itemListConditions 的索引加1
|
//requestCode: 等于 itemListConditions 的索引加1
|
||||||
if (requestCode == 0) {
|
if (requestCode == 0) {
|
||||||
taskSetting.position = itemListConditions.size
|
taskSetting.position = itemListConditions.size
|
||||||
@ -443,51 +405,13 @@ class TasksEditFragment : BaseFragment<FragmentTasksEditBinding?>(), View.OnClic
|
|||||||
conditionsAdapter.notifyDataSetChanged()
|
conditionsAdapter.notifyDataSetChanged()
|
||||||
binding!!.layoutAddCondition.visibility = if (itemListConditions.size >= MAX_SETTING_NUM) View.GONE else View.VISIBLE
|
binding!!.layoutAddCondition.visibility = if (itemListConditions.size >= MAX_SETTING_NUM) View.GONE else View.VISIBLE
|
||||||
} else if (resultCode in KEY_BACK_CODE_ACTION..KEY_BACK_CODE_ACTION + 999) {
|
} else if (resultCode in KEY_BACK_CODE_ACTION..KEY_BACK_CODE_ACTION + 999) {
|
||||||
setting = extras!!.getString(KEY_BACK_DATA_ACTION)
|
setting = extras.getString(KEY_BACK_DATA_ACTION) ?: return
|
||||||
if (setting == null) return
|
|
||||||
//注意:TASK_ACTION_XXX 枚举值 等于 TASK_ACTION_FRAGMENT_LIST 索引加上 KEY_BACK_CODE_ACTION,不可改变
|
//注意:TASK_ACTION_XXX 枚举值 等于 TASK_ACTION_FRAGMENT_LIST 索引加上 KEY_BACK_CODE_ACTION,不可改变
|
||||||
val widgetInfoIndex = resultCode - KEY_BACK_CODE_ACTION
|
val widgetInfoIndex = resultCode - KEY_BACK_CODE_ACTION
|
||||||
if (widgetInfoIndex >= TASK_ACTION_FRAGMENT_LIST.size) return
|
if (widgetInfoIndex >= TASK_ACTION_FRAGMENT_LIST.size) return
|
||||||
val widgetInfo = TASK_ACTION_FRAGMENT_LIST[widgetInfoIndex]
|
val widgetInfo = TASK_ACTION_FRAGMENT_LIST[widgetInfoIndex]
|
||||||
val taskSetting: TaskSetting
|
description = extras.getString(KEY_BACK_DESCRIPTION_ACTION) ?: widgetInfo.name.toString()
|
||||||
when (resultCode) {
|
val taskSetting = TaskSetting(resultCode, widgetInfo.name, description, setting, requestCode)
|
||||||
|
|
||||||
TASK_ACTION_SENDSMS -> {
|
|
||||||
val settingVo = Gson().fromJson(setting, CronSetting::class.java)
|
|
||||||
Log.d(TAG, settingVo.toString())
|
|
||||||
taskSetting = TaskSetting(
|
|
||||||
resultCode, widgetInfo.name, settingVo.description, setting, requestCode
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
TASK_ACTION_NOTIFICATION -> {
|
|
||||||
val settingVo = Gson().fromJson(setting, CronSetting::class.java)
|
|
||||||
Log.d(TAG, settingVo.toString())
|
|
||||||
taskSetting = TaskSetting(
|
|
||||||
resultCode, widgetInfo.name, settingVo.description, setting, requestCode
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
TASK_ACTION_FRPC -> {
|
|
||||||
val settingVo = Gson().fromJson(setting, CronSetting::class.java)
|
|
||||||
Log.d(TAG, settingVo.toString())
|
|
||||||
taskSetting = TaskSetting(
|
|
||||||
resultCode, widgetInfo.name, settingVo.description, setting, requestCode
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
TASK_ACTION_HTTPSERVER -> {
|
|
||||||
val settingVo = Gson().fromJson(setting, CronSetting::class.java)
|
|
||||||
Log.d(TAG, settingVo.toString())
|
|
||||||
taskSetting = TaskSetting(
|
|
||||||
resultCode, widgetInfo.name, settingVo.description, setting, requestCode
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
else -> {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//requestCode: 等于 itemListActions 的索引加1
|
//requestCode: 等于 itemListActions 的索引加1
|
||||||
if (requestCode == 0) {
|
if (requestCode == 0) {
|
||||||
taskSetting.position = itemListActions.size
|
taskSetting.position = itemListActions.size
|
||||||
|
@ -136,6 +136,6 @@ class FrpcFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.On
|
|||||||
//检查设置
|
//检查设置
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
private fun checkSetting(): CronSetting {
|
private fun checkSetting(): CronSetting {
|
||||||
return CronSetting(expression, description)
|
return CronSetting(description, expression)
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -136,6 +136,6 @@ class HttpServerFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), V
|
|||||||
//检查设置
|
//检查设置
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
private fun checkSetting(): CronSetting {
|
private fun checkSetting(): CronSetting {
|
||||||
return CronSetting(expression, description)
|
return CronSetting(description, expression)
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,6 +2,7 @@ package com.idormy.sms.forwarder.fragment.condition
|
|||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.os.BatteryManager
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
@ -9,9 +10,10 @@ import android.view.ViewGroup
|
|||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import com.idormy.sms.forwarder.R
|
import com.idormy.sms.forwarder.R
|
||||||
import com.idormy.sms.forwarder.core.BaseFragment
|
import com.idormy.sms.forwarder.core.BaseFragment
|
||||||
import com.idormy.sms.forwarder.databinding.FragmentTasksActionSendSmsBinding
|
import com.idormy.sms.forwarder.databinding.FragmentTasksConditionBatteryBinding
|
||||||
import com.idormy.sms.forwarder.entity.task.CronSetting
|
import com.idormy.sms.forwarder.entity.task.BatterySetting
|
||||||
import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION
|
import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION
|
||||||
|
import com.idormy.sms.forwarder.utils.KEY_BACK_DESCRIPTION_CONDITION
|
||||||
import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_CONDITION
|
import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_CONDITION
|
||||||
import com.idormy.sms.forwarder.utils.KEY_TEST_CONDITION
|
import com.idormy.sms.forwarder.utils.KEY_TEST_CONDITION
|
||||||
import com.idormy.sms.forwarder.utils.TASK_CONDITION_BATTERY
|
import com.idormy.sms.forwarder.utils.TASK_CONDITION_BATTERY
|
||||||
@ -26,7 +28,7 @@ import com.xuexiang.xui.widget.actionbar.TitleBar
|
|||||||
|
|
||||||
@Page(name = "Battery")
|
@Page(name = "Battery")
|
||||||
@Suppress("PrivatePropertyName")
|
@Suppress("PrivatePropertyName")
|
||||||
class BatteryFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.OnClickListener {
|
class BatteryFragment : BaseFragment<FragmentTasksConditionBatteryBinding?>(), View.OnClickListener {
|
||||||
|
|
||||||
private val TAG: String = BatteryFragment::class.java.simpleName
|
private val TAG: String = BatteryFragment::class.java.simpleName
|
||||||
var titleBar: TitleBar? = null
|
var titleBar: TitleBar? = null
|
||||||
@ -36,8 +38,7 @@ class BatteryFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
|||||||
@AutoWired(name = KEY_EVENT_DATA_CONDITION)
|
@AutoWired(name = KEY_EVENT_DATA_CONDITION)
|
||||||
var eventData: String? = null
|
var eventData: String? = null
|
||||||
|
|
||||||
private var expression = "* * * * * ? *"
|
private var description = ""
|
||||||
private var description = "测试描述"
|
|
||||||
|
|
||||||
override fun initArgs() {
|
override fun initArgs() {
|
||||||
XRouter.getInstance().inject(this)
|
XRouter.getInstance().inject(this)
|
||||||
@ -46,8 +47,8 @@ class BatteryFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
|||||||
override fun viewBindingInflate(
|
override fun viewBindingInflate(
|
||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
container: ViewGroup,
|
container: ViewGroup,
|
||||||
): FragmentTasksActionSendSmsBinding {
|
): FragmentTasksConditionBatteryBinding {
|
||||||
return FragmentTasksActionSendSmsBinding.inflate(inflater, container, false)
|
return FragmentTasksConditionBatteryBinding.inflate(inflater, container, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun initTitle(): TitleBar? {
|
override fun initTitle(): TitleBar? {
|
||||||
@ -71,10 +72,27 @@ class BatteryFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
binding!!.rgStatus.setOnCheckedChangeListener { _, checkedId ->
|
||||||
|
if (checkedId == R.id.rb_battery_discharging) {
|
||||||
|
binding!!.xsbLevelMin.visibility = View.VISIBLE
|
||||||
|
binding!!.xsbLevelMax.visibility = View.GONE
|
||||||
|
} else {
|
||||||
|
binding!!.xsbLevelMin.visibility = View.GONE
|
||||||
|
binding!!.xsbLevelMax.visibility = View.VISIBLE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Log.d(TAG, "initViews eventData:$eventData")
|
Log.d(TAG, "initViews eventData:$eventData")
|
||||||
if (eventData != null) {
|
if (eventData != null) {
|
||||||
val settingVo = Gson().fromJson(eventData, CronSetting::class.java)
|
val settingVo = Gson().fromJson(eventData, BatterySetting::class.java)
|
||||||
Log.d(TAG, "initViews settingVo:$settingVo")
|
Log.d(TAG, "initViews settingVo:$settingVo")
|
||||||
|
binding!!.rgStatus.check(settingVo.getStatusCheckId())
|
||||||
|
binding!!.xsbLevelMin.setDefaultValue(settingVo.levelMin)
|
||||||
|
binding!!.xsbLevelMax.setDefaultValue(settingVo.levelMax)
|
||||||
|
binding!!.sbKeepReminding.isChecked = settingVo.keepReminding
|
||||||
|
} else {
|
||||||
|
binding!!.xsbLevelMin.setDefaultValue(10)
|
||||||
|
binding!!.xsbLevelMax.setDefaultValue(90)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,6 +139,7 @@ class BatteryFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
|||||||
R.id.btn_save -> {
|
R.id.btn_save -> {
|
||||||
val settingVo = checkSetting()
|
val settingVo = checkSetting()
|
||||||
val intent = Intent()
|
val intent = Intent()
|
||||||
|
intent.putExtra(KEY_BACK_DESCRIPTION_CONDITION, description)
|
||||||
intent.putExtra(KEY_BACK_DATA_CONDITION, Gson().toJson(settingVo))
|
intent.putExtra(KEY_BACK_DATA_CONDITION, Gson().toJson(settingVo))
|
||||||
setFragmentResult(TASK_CONDITION_BATTERY, intent)
|
setFragmentResult(TASK_CONDITION_BATTERY, intent)
|
||||||
popToBack()
|
popToBack()
|
||||||
@ -135,7 +154,26 @@ class BatteryFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
|||||||
|
|
||||||
//检查设置
|
//检查设置
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
private fun checkSetting(): CronSetting {
|
private fun checkSetting(): BatterySetting {
|
||||||
return CronSetting(expression, description)
|
val levelMin = binding!!.xsbLevelMin.selectedNumber
|
||||||
|
val levelMax = binding!!.xsbLevelMax.selectedNumber
|
||||||
|
val keepReminding = binding!!.sbKeepReminding.isChecked
|
||||||
|
val status: Int
|
||||||
|
if (binding!!.rgStatus.checkedRadioButtonId == R.id.rb_battery_discharging) {
|
||||||
|
status = BatteryManager.BATTERY_STATUS_DISCHARGING
|
||||||
|
description = if (keepReminding) {
|
||||||
|
String.format(getString(R.string.battery_discharged_below), levelMin.toString())
|
||||||
|
} else {
|
||||||
|
String.format(getString(R.string.battery_discharged_to), levelMin.toString())
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
status = BatteryManager.BATTERY_STATUS_CHARGING
|
||||||
|
description = if (keepReminding) {
|
||||||
|
String.format(getString(R.string.battery_charged_above), levelMax.toString())
|
||||||
|
} else {
|
||||||
|
String.format(getString(R.string.battery_charged_to), levelMax.toString())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return BatterySetting(description, status, levelMin, levelMax, keepReminding)
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -9,9 +9,10 @@ import android.view.ViewGroup
|
|||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import com.idormy.sms.forwarder.R
|
import com.idormy.sms.forwarder.R
|
||||||
import com.idormy.sms.forwarder.core.BaseFragment
|
import com.idormy.sms.forwarder.core.BaseFragment
|
||||||
import com.idormy.sms.forwarder.databinding.FragmentTasksActionSendSmsBinding
|
import com.idormy.sms.forwarder.databinding.FragmentTasksConditionChargeBinding
|
||||||
import com.idormy.sms.forwarder.entity.task.CronSetting
|
import com.idormy.sms.forwarder.entity.task.ChargeSetting
|
||||||
import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION
|
import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION
|
||||||
|
import com.idormy.sms.forwarder.utils.KEY_BACK_DESCRIPTION_CONDITION
|
||||||
import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_CONDITION
|
import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_CONDITION
|
||||||
import com.idormy.sms.forwarder.utils.KEY_TEST_CONDITION
|
import com.idormy.sms.forwarder.utils.KEY_TEST_CONDITION
|
||||||
import com.idormy.sms.forwarder.utils.TASK_CONDITION_CHARGE
|
import com.idormy.sms.forwarder.utils.TASK_CONDITION_CHARGE
|
||||||
@ -26,7 +27,7 @@ import com.xuexiang.xui.widget.actionbar.TitleBar
|
|||||||
|
|
||||||
@Page(name = "Charge")
|
@Page(name = "Charge")
|
||||||
@Suppress("PrivatePropertyName")
|
@Suppress("PrivatePropertyName")
|
||||||
class ChargeFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.OnClickListener {
|
class ChargeFragment : BaseFragment<FragmentTasksConditionChargeBinding?>(), View.OnClickListener {
|
||||||
|
|
||||||
private val TAG: String = ChargeFragment::class.java.simpleName
|
private val TAG: String = ChargeFragment::class.java.simpleName
|
||||||
var titleBar: TitleBar? = null
|
var titleBar: TitleBar? = null
|
||||||
@ -36,9 +37,6 @@ class ChargeFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.
|
|||||||
@AutoWired(name = KEY_EVENT_DATA_CONDITION)
|
@AutoWired(name = KEY_EVENT_DATA_CONDITION)
|
||||||
var eventData: String? = null
|
var eventData: String? = null
|
||||||
|
|
||||||
private var expression = "* * * * * ? *"
|
|
||||||
private var description = "测试描述"
|
|
||||||
|
|
||||||
override fun initArgs() {
|
override fun initArgs() {
|
||||||
XRouter.getInstance().inject(this)
|
XRouter.getInstance().inject(this)
|
||||||
}
|
}
|
||||||
@ -46,8 +44,8 @@ class ChargeFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.
|
|||||||
override fun viewBindingInflate(
|
override fun viewBindingInflate(
|
||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
container: ViewGroup,
|
container: ViewGroup,
|
||||||
): FragmentTasksActionSendSmsBinding {
|
): FragmentTasksConditionChargeBinding {
|
||||||
return FragmentTasksActionSendSmsBinding.inflate(inflater, container, false)
|
return FragmentTasksConditionChargeBinding.inflate(inflater, container, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun initTitle(): TitleBar? {
|
override fun initTitle(): TitleBar? {
|
||||||
@ -73,8 +71,10 @@ class ChargeFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.
|
|||||||
|
|
||||||
Log.d(TAG, "initViews eventData:$eventData")
|
Log.d(TAG, "initViews eventData:$eventData")
|
||||||
if (eventData != null) {
|
if (eventData != null) {
|
||||||
val settingVo = Gson().fromJson(eventData, CronSetting::class.java)
|
val settingVo = Gson().fromJson(eventData, ChargeSetting::class.java)
|
||||||
Log.d(TAG, "initViews settingVo:$settingVo")
|
Log.d(TAG, "initViews settingVo:$settingVo")
|
||||||
|
binding!!.rgStatus.check(settingVo.getStatusCheckId())
|
||||||
|
binding!!.rgPlugged.check(settingVo.getPluggedCheckId())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,6 +121,7 @@ class ChargeFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.
|
|||||||
R.id.btn_save -> {
|
R.id.btn_save -> {
|
||||||
val settingVo = checkSetting()
|
val settingVo = checkSetting()
|
||||||
val intent = Intent()
|
val intent = Intent()
|
||||||
|
intent.putExtra(KEY_BACK_DESCRIPTION_CONDITION, settingVo.description)
|
||||||
intent.putExtra(KEY_BACK_DATA_CONDITION, Gson().toJson(settingVo))
|
intent.putExtra(KEY_BACK_DATA_CONDITION, Gson().toJson(settingVo))
|
||||||
setFragmentResult(TASK_CONDITION_CHARGE, intent)
|
setFragmentResult(TASK_CONDITION_CHARGE, intent)
|
||||||
popToBack()
|
popToBack()
|
||||||
@ -134,8 +135,9 @@ class ChargeFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.
|
|||||||
}
|
}
|
||||||
|
|
||||||
//检查设置
|
//检查设置
|
||||||
@SuppressLint("SetTextI18n")
|
private fun checkSetting(): ChargeSetting {
|
||||||
private fun checkSetting(): CronSetting {
|
val statusCheckId = binding!!.rgStatus.checkedRadioButtonId
|
||||||
return CronSetting(expression, description)
|
val pluggedCheckId = binding!!.rgPlugged.checkedRadioButtonId
|
||||||
|
return ChargeSetting(statusCheckId = statusCheckId, pluggedCheckId = pluggedCheckId)
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -16,6 +16,7 @@ import com.idormy.sms.forwarder.core.BaseFragment
|
|||||||
import com.idormy.sms.forwarder.databinding.FragmentTasksConditionCronBinding
|
import com.idormy.sms.forwarder.databinding.FragmentTasksConditionCronBinding
|
||||||
import com.idormy.sms.forwarder.entity.task.CronSetting
|
import com.idormy.sms.forwarder.entity.task.CronSetting
|
||||||
import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION
|
import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION
|
||||||
|
import com.idormy.sms.forwarder.utils.KEY_BACK_DESCRIPTION_CONDITION
|
||||||
import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_CONDITION
|
import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_CONDITION
|
||||||
import com.idormy.sms.forwarder.utils.KEY_TEST_CONDITION
|
import com.idormy.sms.forwarder.utils.KEY_TEST_CONDITION
|
||||||
import com.idormy.sms.forwarder.utils.TASK_CONDITION_CRON
|
import com.idormy.sms.forwarder.utils.TASK_CONDITION_CRON
|
||||||
@ -201,6 +202,7 @@ class CronFragment : BaseFragment<FragmentTasksConditionCronBinding?>(), View.On
|
|||||||
R.id.btn_save -> {
|
R.id.btn_save -> {
|
||||||
val settingVo = checkSetting()
|
val settingVo = checkSetting()
|
||||||
val intent = Intent()
|
val intent = Intent()
|
||||||
|
intent.putExtra(KEY_BACK_DESCRIPTION_CONDITION, description)
|
||||||
intent.putExtra(KEY_BACK_DATA_CONDITION, Gson().toJson(settingVo))
|
intent.putExtra(KEY_BACK_DATA_CONDITION, Gson().toJson(settingVo))
|
||||||
setFragmentResult(TASK_CONDITION_CRON, intent)
|
setFragmentResult(TASK_CONDITION_CRON, intent)
|
||||||
popToBack()
|
popToBack()
|
||||||
@ -1644,6 +1646,6 @@ class CronFragment : BaseFragment<FragmentTasksConditionCronBinding?>(), View.On
|
|||||||
options.isNeedSpaceBetweenWords = locale == Locale("zh") || locale == Locale("ja") || locale == Locale("ko")
|
options.isNeedSpaceBetweenWords = locale == Locale("zh") || locale == Locale("ja") || locale == Locale("ko")
|
||||||
description = CronExpressionDescriptor.getDescription(expression, options, locale)
|
description = CronExpressionDescriptor.getDescription(expression, options, locale)
|
||||||
|
|
||||||
return CronSetting(expression, description)
|
return CronSetting(description, expression)
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -9,9 +9,10 @@ import android.view.ViewGroup
|
|||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import com.idormy.sms.forwarder.R
|
import com.idormy.sms.forwarder.R
|
||||||
import com.idormy.sms.forwarder.core.BaseFragment
|
import com.idormy.sms.forwarder.core.BaseFragment
|
||||||
import com.idormy.sms.forwarder.databinding.FragmentTasksActionSendSmsBinding
|
import com.idormy.sms.forwarder.databinding.FragmentTasksConditionNetworkBinding
|
||||||
import com.idormy.sms.forwarder.entity.task.CronSetting
|
import com.idormy.sms.forwarder.entity.task.NetworkSetting
|
||||||
import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION
|
import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION
|
||||||
|
import com.idormy.sms.forwarder.utils.KEY_BACK_DESCRIPTION_CONDITION
|
||||||
import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_CONDITION
|
import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_CONDITION
|
||||||
import com.idormy.sms.forwarder.utils.KEY_TEST_CONDITION
|
import com.idormy.sms.forwarder.utils.KEY_TEST_CONDITION
|
||||||
import com.idormy.sms.forwarder.utils.TASK_CONDITION_NETWORK
|
import com.idormy.sms.forwarder.utils.TASK_CONDITION_NETWORK
|
||||||
@ -26,7 +27,7 @@ import com.xuexiang.xui.widget.actionbar.TitleBar
|
|||||||
|
|
||||||
@Page(name = "Network")
|
@Page(name = "Network")
|
||||||
@Suppress("PrivatePropertyName")
|
@Suppress("PrivatePropertyName")
|
||||||
class NetworkFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.OnClickListener {
|
class NetworkFragment : BaseFragment<FragmentTasksConditionNetworkBinding?>(), View.OnClickListener {
|
||||||
|
|
||||||
private val TAG: String = NetworkFragment::class.java.simpleName
|
private val TAG: String = NetworkFragment::class.java.simpleName
|
||||||
var titleBar: TitleBar? = null
|
var titleBar: TitleBar? = null
|
||||||
@ -36,9 +37,6 @@ class NetworkFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
|||||||
@AutoWired(name = KEY_EVENT_DATA_CONDITION)
|
@AutoWired(name = KEY_EVENT_DATA_CONDITION)
|
||||||
var eventData: String? = null
|
var eventData: String? = null
|
||||||
|
|
||||||
private var expression = "* * * * * ? *"
|
|
||||||
private var description = "测试描述"
|
|
||||||
|
|
||||||
override fun initArgs() {
|
override fun initArgs() {
|
||||||
XRouter.getInstance().inject(this)
|
XRouter.getInstance().inject(this)
|
||||||
}
|
}
|
||||||
@ -46,8 +44,8 @@ class NetworkFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
|||||||
override fun viewBindingInflate(
|
override fun viewBindingInflate(
|
||||||
inflater: LayoutInflater,
|
inflater: LayoutInflater,
|
||||||
container: ViewGroup,
|
container: ViewGroup,
|
||||||
): FragmentTasksActionSendSmsBinding {
|
): FragmentTasksConditionNetworkBinding {
|
||||||
return FragmentTasksActionSendSmsBinding.inflate(inflater, container, false)
|
return FragmentTasksConditionNetworkBinding.inflate(inflater, container, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun initTitle(): TitleBar? {
|
override fun initTitle(): TitleBar? {
|
||||||
@ -73,8 +71,9 @@ class NetworkFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
|||||||
|
|
||||||
Log.d(TAG, "initViews eventData:$eventData")
|
Log.d(TAG, "initViews eventData:$eventData")
|
||||||
if (eventData != null) {
|
if (eventData != null) {
|
||||||
val settingVo = Gson().fromJson(eventData, CronSetting::class.java)
|
val settingVo = Gson().fromJson(eventData, NetworkSetting::class.java)
|
||||||
Log.d(TAG, "initViews settingVo:$settingVo")
|
Log.d(TAG, "initViews settingVo:$settingVo")
|
||||||
|
binding!!.rgNetworkState.check(settingVo.getNetworkStateCheckId())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,6 +120,7 @@ class NetworkFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
|||||||
R.id.btn_save -> {
|
R.id.btn_save -> {
|
||||||
val settingVo = checkSetting()
|
val settingVo = checkSetting()
|
||||||
val intent = Intent()
|
val intent = Intent()
|
||||||
|
intent.putExtra(KEY_BACK_DESCRIPTION_CONDITION, settingVo.description)
|
||||||
intent.putExtra(KEY_BACK_DATA_CONDITION, Gson().toJson(settingVo))
|
intent.putExtra(KEY_BACK_DATA_CONDITION, Gson().toJson(settingVo))
|
||||||
setFragmentResult(TASK_CONDITION_NETWORK, intent)
|
setFragmentResult(TASK_CONDITION_NETWORK, intent)
|
||||||
popToBack()
|
popToBack()
|
||||||
@ -134,8 +134,8 @@ class NetworkFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
|||||||
}
|
}
|
||||||
|
|
||||||
//检查设置
|
//检查设置
|
||||||
@SuppressLint("SetTextI18n")
|
private fun checkSetting(): NetworkSetting {
|
||||||
private fun checkSetting(): CronSetting {
|
val networkStateCheckId = binding!!.rgNetworkState.checkedRadioButtonId
|
||||||
return CronSetting(expression, description)
|
return NetworkSetting(networkStateCheckId)
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,141 @@
|
|||||||
|
package com.idormy.sms.forwarder.fragment.condition
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.content.Intent
|
||||||
|
import android.util.Log
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import com.google.gson.Gson
|
||||||
|
import com.idormy.sms.forwarder.R
|
||||||
|
import com.idormy.sms.forwarder.core.BaseFragment
|
||||||
|
import com.idormy.sms.forwarder.databinding.FragmentTasksConditionSimBinding
|
||||||
|
import com.idormy.sms.forwarder.entity.task.SimSetting
|
||||||
|
import com.idormy.sms.forwarder.utils.KEY_BACK_DATA_CONDITION
|
||||||
|
import com.idormy.sms.forwarder.utils.KEY_BACK_DESCRIPTION_CONDITION
|
||||||
|
import com.idormy.sms.forwarder.utils.KEY_EVENT_DATA_CONDITION
|
||||||
|
import com.idormy.sms.forwarder.utils.KEY_TEST_CONDITION
|
||||||
|
import com.idormy.sms.forwarder.utils.TASK_CONDITION_SIM
|
||||||
|
import com.idormy.sms.forwarder.utils.XToastUtils
|
||||||
|
import com.jeremyliao.liveeventbus.LiveEventBus
|
||||||
|
import com.xuexiang.xaop.annotation.SingleClick
|
||||||
|
import com.xuexiang.xpage.annotation.Page
|
||||||
|
import com.xuexiang.xrouter.annotation.AutoWired
|
||||||
|
import com.xuexiang.xrouter.launcher.XRouter
|
||||||
|
import com.xuexiang.xui.utils.CountDownButtonHelper
|
||||||
|
import com.xuexiang.xui.widget.actionbar.TitleBar
|
||||||
|
|
||||||
|
@Page(name = "Sim")
|
||||||
|
@Suppress("PrivatePropertyName")
|
||||||
|
class SimFragment : BaseFragment<FragmentTasksConditionSimBinding?>(), View.OnClickListener {
|
||||||
|
|
||||||
|
private val TAG: String = SimFragment::class.java.simpleName
|
||||||
|
var titleBar: TitleBar? = null
|
||||||
|
private var mCountDownHelper: CountDownButtonHelper? = null
|
||||||
|
|
||||||
|
@JvmField
|
||||||
|
@AutoWired(name = KEY_EVENT_DATA_CONDITION)
|
||||||
|
var eventData: String? = null
|
||||||
|
|
||||||
|
override fun initArgs() {
|
||||||
|
XRouter.getInstance().inject(this)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun viewBindingInflate(
|
||||||
|
inflater: LayoutInflater,
|
||||||
|
container: ViewGroup,
|
||||||
|
): FragmentTasksConditionSimBinding {
|
||||||
|
return FragmentTasksConditionSimBinding.inflate(inflater, container, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun initTitle(): TitleBar? {
|
||||||
|
titleBar = super.initTitle()!!.setImmersive(false).setTitle(R.string.task_sim)
|
||||||
|
return titleBar
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化控件
|
||||||
|
*/
|
||||||
|
override fun initViews() {
|
||||||
|
//测试按钮增加倒计时,避免重复点击
|
||||||
|
mCountDownHelper = CountDownButtonHelper(binding!!.btnTest, 3)
|
||||||
|
mCountDownHelper!!.setOnCountDownListener(object : CountDownButtonHelper.OnCountDownListener {
|
||||||
|
override fun onCountDown(time: Int) {
|
||||||
|
binding!!.btnTest.text = String.format(getString(R.string.seconds_n), time)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onFinished() {
|
||||||
|
binding!!.btnTest.text = getString(R.string.test)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
Log.d(TAG, "initViews eventData:$eventData")
|
||||||
|
if (eventData != null) {
|
||||||
|
val settingVo = Gson().fromJson(eventData, SimSetting::class.java)
|
||||||
|
Log.d(TAG, "initViews settingVo:$settingVo")
|
||||||
|
binding!!.rgSimState.check(settingVo.getSimStateCheckId())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint("SetTextI18n")
|
||||||
|
override fun initListeners() {
|
||||||
|
binding!!.btnTest.setOnClickListener(this)
|
||||||
|
binding!!.btnDel.setOnClickListener(this)
|
||||||
|
binding!!.btnSave.setOnClickListener(this)
|
||||||
|
LiveEventBus.get(KEY_TEST_CONDITION, String::class.java).observe(this) {
|
||||||
|
mCountDownHelper?.finish()
|
||||||
|
|
||||||
|
if (it == "success") {
|
||||||
|
XToastUtils.success("测试通过", 30000)
|
||||||
|
} else {
|
||||||
|
XToastUtils.error(it, 30000)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SingleClick
|
||||||
|
override fun onClick(v: View) {
|
||||||
|
try {
|
||||||
|
when (v.id) {
|
||||||
|
R.id.btn_test -> {
|
||||||
|
mCountDownHelper?.start()
|
||||||
|
Thread {
|
||||||
|
try {
|
||||||
|
val settingVo = checkSetting()
|
||||||
|
Log.d(TAG, settingVo.toString())
|
||||||
|
LiveEventBus.get(KEY_TEST_CONDITION, String::class.java).post("success")
|
||||||
|
} catch (e: Exception) {
|
||||||
|
LiveEventBus.get(KEY_TEST_CONDITION, String::class.java).post(e.message.toString())
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
}.start()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
R.id.btn_del -> {
|
||||||
|
popToBack()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
R.id.btn_save -> {
|
||||||
|
val settingVo = checkSetting()
|
||||||
|
val intent = Intent()
|
||||||
|
intent.putExtra(KEY_BACK_DESCRIPTION_CONDITION, settingVo.description)
|
||||||
|
intent.putExtra(KEY_BACK_DATA_CONDITION, Gson().toJson(settingVo))
|
||||||
|
setFragmentResult(TASK_CONDITION_SIM, intent)
|
||||||
|
popToBack()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
XToastUtils.error(e.message.toString(), 30000)
|
||||||
|
e.printStackTrace()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//检查设置
|
||||||
|
private fun checkSetting(): SimSetting {
|
||||||
|
val simStateCheckId = binding!!.rgSimState.checkedRadioButtonId
|
||||||
|
return SimSetting(simStateCheckId)
|
||||||
|
}
|
||||||
|
}
|
@ -19,7 +19,7 @@ import com.idormy.sms.forwarder.workers.SendWorker
|
|||||||
import com.xuexiang.xutil.resource.ResUtils.getString
|
import com.xuexiang.xutil.resource.ResUtils.getString
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
|
||||||
@Suppress("PrivatePropertyName")
|
@Suppress("PrivatePropertyName", "UNUSED_PARAMETER")
|
||||||
class SimStateReceiver : BroadcastReceiver() {
|
class SimStateReceiver : BroadcastReceiver() {
|
||||||
|
|
||||||
private var TAG = "SimStateReceiver"
|
private var TAG = "SimStateReceiver"
|
||||||
|
@ -487,17 +487,20 @@ const val KEY_TEST_CONDITION = "key_test_condition"
|
|||||||
const val KEY_EVENT_DATA_CONDITION = "event_data_condition"
|
const val KEY_EVENT_DATA_CONDITION = "event_data_condition"
|
||||||
const val KEY_BACK_CODE_CONDITION = 1000
|
const val KEY_BACK_CODE_CONDITION = 1000
|
||||||
const val KEY_BACK_DATA_CONDITION = "back_data_condition"
|
const val KEY_BACK_DATA_CONDITION = "back_data_condition"
|
||||||
|
const val KEY_BACK_DESCRIPTION_CONDITION = "back_description_condition"
|
||||||
|
|
||||||
const val KEY_TEST_ACTION = "key_test_action"
|
const val KEY_TEST_ACTION = "key_test_action"
|
||||||
const val KEY_EVENT_DATA_ACTION = "event_data_action"
|
const val KEY_EVENT_DATA_ACTION = "event_data_action"
|
||||||
const val KEY_BACK_CODE_ACTION = 2000
|
const val KEY_BACK_CODE_ACTION = 2000
|
||||||
const val KEY_BACK_DATA_ACTION = "back_data_action"
|
const val KEY_BACK_DATA_ACTION = "back_data_action"
|
||||||
|
const val KEY_BACK_DESCRIPTION_ACTION = "back_description_action"
|
||||||
|
|
||||||
//注意:TASK_CONDITION_XXX 枚举值 等于 TASK_CONDITION_FRAGMENT_LIST 索引加上 KEY_BACK_CODE_CONDITION,不可改变
|
//注意:TASK_CONDITION_XXX 枚举值 等于 TASK_CONDITION_FRAGMENT_LIST 索引加上 KEY_BACK_CODE_CONDITION,不可改变
|
||||||
const val TASK_CONDITION_CRON = 1000
|
const val TASK_CONDITION_CRON = 1000
|
||||||
const val TASK_CONDITION_BATTERY = 1001
|
const val TASK_CONDITION_BATTERY = 1001
|
||||||
const val TASK_CONDITION_CHARGE = 1002
|
const val TASK_CONDITION_CHARGE = 1002
|
||||||
const val TASK_CONDITION_NETWORK = 1003
|
const val TASK_CONDITION_NETWORK = 1003
|
||||||
|
const val TASK_CONDITION_SIM = 1004
|
||||||
var TASK_CONDITION_FRAGMENT_LIST = listOf(
|
var TASK_CONDITION_FRAGMENT_LIST = listOf(
|
||||||
PageInfo(
|
PageInfo(
|
||||||
getString(R.string.task_cron),
|
getString(R.string.task_cron),
|
||||||
@ -525,7 +528,14 @@ var TASK_CONDITION_FRAGMENT_LIST = listOf(
|
|||||||
"com.idormy.sms.forwarder.fragment.condition.NetworkFragment",
|
"com.idormy.sms.forwarder.fragment.condition.NetworkFragment",
|
||||||
"{\"\":\"\"}",
|
"{\"\":\"\"}",
|
||||||
CoreAnim.slide,
|
CoreAnim.slide,
|
||||||
R.drawable.auto_task_icon_wlan
|
R.drawable.auto_task_icon_network
|
||||||
|
),
|
||||||
|
PageInfo(
|
||||||
|
getString(R.string.task_sim),
|
||||||
|
"com.idormy.sms.forwarder.fragment.condition.SimFragment",
|
||||||
|
"{\"\":\"\"}",
|
||||||
|
CoreAnim.slide,
|
||||||
|
R.drawable.auto_task_icon_sim
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.idormy.sms.forwarder.utils.task
|
||||||
|
|
||||||
|
import com.idormy.sms.forwarder.utils.SP_ENABLE_SERVER_AUTORUN
|
||||||
|
import com.idormy.sms.forwarder.utils.SharedPreference
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自动任务工具类 —— 用于存储自动任务相关的配置
|
||||||
|
*/
|
||||||
|
class TaskUtils private constructor() {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
//是否启用HttpServer开机自启
|
||||||
|
var enableServerAutorun: Boolean by SharedPreference(SP_ENABLE_SERVER_AUTORUN, false)
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<vector android:height="25.0dip" android:width="25.0dip" android:autoMirrored="true" android:viewportWidth="25.0" android:viewportHeight="25.0"
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
android:width="25.0dip"
|
||||||
<path android:fillColor="@color/auto_task_icon_grey_bg" android:pathData="M6.66,0.66L18.66,0.66A6,6 0,0 1,24.66 6.66L24.66,18.66A6,6 0,0 1,18.66 24.66L6.66,24.66A6,6 0,0 1,0.66 18.66L0.66,6.66A6,6 0,0 1,6.66 0.66z" />
|
android:height="25.0dip"
|
||||||
<path android:fillColor="@color/auto_task_icon_grey" android:pathData="M12.66,18.66C15.973,18.66 18.66,15.973 18.66,12.66C18.66,9.346 15.973,6.66 12.66,6.66C9.346,6.66 6.66,9.346 6.66,12.66C6.66,15.973 9.346,18.66 12.66,18.66ZM12.66,20.535C17.009,20.535 20.535,17.009 20.535,12.66C20.535,8.31 17.009,4.785 12.66,4.785C8.31,4.785 4.785,8.31 4.785,12.66C4.785,17.009 8.31,20.535 12.66,20.535ZM11.535,10.222C11.535,9.704 11.954,9.285 12.472,9.285C12.99,9.285 13.41,9.704 13.41,10.222V11.91H15.097C15.615,11.91 16.035,12.329 16.035,12.847C16.035,13.365 15.615,13.785 15.097,13.785H12.472C12.44,13.785 12.408,13.783 12.376,13.78C11.903,13.732 11.535,13.333 11.535,12.847V10.222Z" android:fillType="evenOdd" />
|
android:autoMirrored="true"
|
||||||
|
android:viewportWidth="25.0"
|
||||||
|
android:viewportHeight="25.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="@color/auto_task_icon_grey_bg"
|
||||||
|
android:pathData="M6.66,0.66L18.66,0.66A6,6 0,0 1,24.66 6.66L24.66,18.66A6,6 0,0 1,18.66 24.66L6.66,24.66A6,6 0,0 1,0.66 18.66L0.66,6.66A6,6 0,0 1,6.66 0.66z" />
|
||||||
|
<path
|
||||||
|
android:fillColor="@color/auto_task_icon_grey"
|
||||||
|
android:fillType="evenOdd"
|
||||||
|
android:pathData="M12.66,18.66C15.973,18.66 18.66,15.973 18.66,12.66C18.66,9.346 15.973,6.66 12.66,6.66C9.346,6.66 6.66,9.346 6.66,12.66C6.66,15.973 9.346,18.66 12.66,18.66ZM12.66,20.535C17.009,20.535 20.535,17.009 20.535,12.66C20.535,8.31 17.009,4.785 12.66,4.785C8.31,4.785 4.785,8.31 4.785,12.66C4.785,17.009 8.31,20.535 12.66,20.535ZM11.535,10.222C11.535,9.704 11.954,9.285 12.472,9.285C12.99,9.285 13.41,9.704 13.41,10.222V11.91H15.097C15.615,11.91 16.035,12.329 16.035,12.847C16.035,13.365 15.615,13.785 15.097,13.785H12.472C12.44,13.785 12.408,13.783 12.376,13.78C11.903,13.732 11.535,13.333 11.535,12.847V10.222Z" />
|
||||||
</vector>
|
</vector>
|
@ -1,6 +1,19 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<vector android:height="25.0dip" android:width="25.0dip" android:autoMirrored="true" android:viewportWidth="25.0" android:viewportHeight="25.0"
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
android:width="25.0dip"
|
||||||
<path android:fillColor="@color/color_blue_primary_default" android:pathData="M6.66,0.66L18.66,0.66A6,6 0,0 1,24.66 6.66L24.66,18.66A6,6 0,0 1,18.66 24.66L6.66,24.66A6,6 0,0 1,0.66 18.66L0.66,6.66A6,6 0,0 1,6.66 0.66z" android:strokeAlpha="0.3" android:fillAlpha="0.3" />
|
android:height="25.0dip"
|
||||||
<path android:fillColor="#ffffffff" android:pathData="M12.66,18.66C15.973,18.66 18.66,15.973 18.66,12.66C18.66,9.346 15.973,6.66 12.66,6.66C9.346,6.66 6.66,9.346 6.66,12.66C6.66,15.973 9.346,18.66 12.66,18.66ZM12.66,20.535C17.009,20.535 20.535,17.009 20.535,12.66C20.535,8.31 17.009,4.785 12.66,4.785C8.31,4.785 4.785,8.31 4.785,12.66C4.785,17.009 8.31,20.535 12.66,20.535ZM11.535,10.222C11.535,9.704 11.954,9.285 12.472,9.285C12.99,9.285 13.41,9.704 13.41,10.222V11.91H15.097C15.615,11.91 16.035,12.329 16.035,12.847C16.035,13.365 15.615,13.785 15.097,13.785H12.472C12.44,13.785 12.408,13.783 12.376,13.78C11.903,13.732 11.535,13.333 11.535,12.847V10.222Z" android:strokeAlpha="0.3" android:fillAlpha="0.3" android:fillType="evenOdd" />
|
android:autoMirrored="true"
|
||||||
|
android:viewportWidth="25.0"
|
||||||
|
android:viewportHeight="25.0">
|
||||||
|
<path
|
||||||
|
android:fillAlpha="0.3"
|
||||||
|
android:fillColor="@color/color_blue_primary_default"
|
||||||
|
android:pathData="M6.66,0.66L18.66,0.66A6,6 0,0 1,24.66 6.66L24.66,18.66A6,6 0,0 1,18.66 24.66L6.66,24.66A6,6 0,0 1,0.66 18.66L0.66,6.66A6,6 0,0 1,6.66 0.66z"
|
||||||
|
android:strokeAlpha="0.3" />
|
||||||
|
<path
|
||||||
|
android:fillAlpha="0.3"
|
||||||
|
android:fillColor="#ffffffff"
|
||||||
|
android:fillType="evenOdd"
|
||||||
|
android:pathData="M12.66,18.66C15.973,18.66 18.66,15.973 18.66,12.66C18.66,9.346 15.973,6.66 12.66,6.66C9.346,6.66 6.66,9.346 6.66,12.66C6.66,15.973 9.346,18.66 12.66,18.66ZM12.66,20.535C17.009,20.535 20.535,17.009 20.535,12.66C20.535,8.31 17.009,4.785 12.66,4.785C8.31,4.785 4.785,8.31 4.785,12.66C4.785,17.009 8.31,20.535 12.66,20.535ZM11.535,10.222C11.535,9.704 11.954,9.285 12.472,9.285C12.99,9.285 13.41,9.704 13.41,10.222V11.91H15.097C15.615,11.91 16.035,12.329 16.035,12.847C16.035,13.365 15.615,13.785 15.097,13.785H12.472C12.44,13.785 12.408,13.783 12.376,13.78C11.903,13.732 11.535,13.333 11.535,12.847V10.222Z"
|
||||||
|
android:strokeAlpha="0.3" />
|
||||||
</vector>
|
</vector>
|
20
app/src/main/res/drawable/auto_task_icon_frpc_grey.xml
Normal file
20
app/src/main/res/drawable/auto_task_icon_frpc_grey.xml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="25.0dip"
|
||||||
|
android:height="25.0dip"
|
||||||
|
android:autoMirrored="true"
|
||||||
|
android:viewportWidth="25.0"
|
||||||
|
android:viewportHeight="25.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="@color/auto_task_icon_grey_bg"
|
||||||
|
android:pathData="M6.66,0.66L18.66,0.66A6,6 0,0 1,24.66 6.66L24.66,18.66A6,6 0,0 1,18.66 24.66L6.66,24.66A6,6 0,0 1,0.66 18.66L0.66,6.66A6,6 0,0 1,6.66 0.66z" />
|
||||||
|
<group
|
||||||
|
android:scaleX="0.8"
|
||||||
|
android:scaleY="0.8"
|
||||||
|
android:translateX="3.2"
|
||||||
|
android:translateY="3">
|
||||||
|
<path
|
||||||
|
android:fillColor="@color/auto_task_icon_grey"
|
||||||
|
android:pathData="M7.77,6.76L6.23,5.48 0.82,12l5.41,6.52 1.54,-1.28L3.42,12l4.35,-5.24zM7,13h2v-2L7,11v2zM17,11h-2v2h2v-2zM11,13h2v-2h-2v2zM17.77,5.48l-1.54,1.28L20.58,12l-4.35,5.24 1.54,1.28L23.18,12l-5.41,-6.52z" />
|
||||||
|
</group>
|
||||||
|
</vector>
|
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24.0dip"
|
||||||
|
android:height="24.0dip"
|
||||||
|
android:autoMirrored="true"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="@color/auto_task_icon_grey_bg"
|
||||||
|
android:pathData="M6,0L18,0A6,6 0,0 1,24 6L24,18A6,6 0,0 1,18 24L6,24A6,6 0,0 1,0 18L0,6A6,6 0,0 1,6 0z" />
|
||||||
|
<group
|
||||||
|
android:scaleX="0.8"
|
||||||
|
android:scaleY="0.8"
|
||||||
|
android:translateX="2.5"
|
||||||
|
android:translateY="2.5">
|
||||||
|
<path
|
||||||
|
android:fillColor="@color/auto_task_icon_grey"
|
||||||
|
android:pathData="M14,12l-2,2l-2,-2l2,-2L14,12zM12,6l2.12,2.12l2.5,-2.5L12,1L7.38,5.62l2.5,2.5L12,6zM6,12l2.12,-2.12l-2.5,-2.5L1,12l4.62,4.62l2.5,-2.5L6,12zM18,12l-2.12,2.12l2.5,2.5L23,12l-4.62,-4.62l-2.5,2.5L18,12zM12,18l-2.12,-2.12l-2.5,2.5L12,23l4.62,-4.62l-2.5,-2.5L12,18z" />
|
||||||
|
</group>
|
||||||
|
</vector>
|
20
app/src/main/res/drawable/auto_task_icon_sender_grey.xml
Normal file
20
app/src/main/res/drawable/auto_task_icon_sender_grey.xml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="25.0dip"
|
||||||
|
android:height="25.0dip"
|
||||||
|
android:autoMirrored="true"
|
||||||
|
android:viewportWidth="25.0"
|
||||||
|
android:viewportHeight="25.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="@color/auto_task_icon_grey_bg"
|
||||||
|
android:pathData="M6.66,0.66L18.66,0.66A6,6 0,0 1,24.66 6.66L24.66,18.66A6,6 0,0 1,18.66 24.66L6.66,24.66A6,6 0,0 1,0.66 18.66L0.66,6.66A6,6 0,0 1,6.66 0.66z" />
|
||||||
|
<group
|
||||||
|
android:scaleX="0.8"
|
||||||
|
android:scaleY="0.8"
|
||||||
|
android:translateX="3.2"
|
||||||
|
android:translateY="3">
|
||||||
|
<path
|
||||||
|
android:fillColor="@color/auto_task_icon_grey"
|
||||||
|
android:pathData="M2.01,21L23,12 2.01,3 2,10l15,2 -15,2z" />
|
||||||
|
</group>
|
||||||
|
</vector>
|
@ -8,8 +8,14 @@
|
|||||||
<path
|
<path
|
||||||
android:fillColor="@color/colorPrimaryDark"
|
android:fillColor="@color/colorPrimaryDark"
|
||||||
android:pathData="M6.66,0.66L18.66,0.66A6,6 0,0 1,24.66 6.66L24.66,18.66A6,6 0,0 1,18.66 24.66L6.66,24.66A6,6 0,0 1,0.66 18.66L0.66,6.66A6,6 0,0 1,6.66 0.66z" />
|
android:pathData="M6.66,0.66L18.66,0.66A6,6 0,0 1,24.66 6.66L24.66,18.66A6,6 0,0 1,18.66 24.66L6.66,24.66A6,6 0,0 1,0.66 18.66L0.66,6.66A6,6 0,0 1,6.66 0.66z" />
|
||||||
<path
|
<group
|
||||||
android:fillColor="#ffffffff"
|
android:scaleX="0.8"
|
||||||
android:fillType="evenOdd"
|
android:scaleY="0.8"
|
||||||
android:pathData="M19.99,4c0,-1.1 -0.89,-2 -1.99,-2h-8L4,8v12c0,1.1 0.9,2 2,2h12.01c1.1,0 1.99,-0.9 1.99,-2l-0.01,-16zM9,19L7,19v-2h2v2zM17,19h-2v-2h2v2zM9,15L7,15v-4h2v4zM13,19h-2v-4h2v4zM13,13h-2v-2h2v2zM17,15h-2v-4h2v4z" />
|
android:translateX="3.2"
|
||||||
|
android:translateY="3">
|
||||||
|
<path
|
||||||
|
android:fillColor="#ffffffff"
|
||||||
|
android:fillType="evenOdd"
|
||||||
|
android:pathData="M19.99,4c0,-1.1 -0.89,-2 -1.99,-2h-8L4,8v12c0,1.1 0.9,2 2,2h12.01c1.1,0 1.99,-0.9 1.99,-2l-0.01,-16zM9,19L7,19v-2h2v2zM17,19h-2v-2h2v2zM9,15L7,15v-4h2v4zM13,19h-2v-4h2v4zM13,13h-2v-2h2v2zM17,15h-2v-4h2v4z" />
|
||||||
|
</group>
|
||||||
</vector>
|
</vector>
|
21
app/src/main/res/drawable/auto_task_icon_sim_grey.xml
Normal file
21
app/src/main/res/drawable/auto_task_icon_sim_grey.xml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="25.0dip"
|
||||||
|
android:height="25.0dip"
|
||||||
|
android:autoMirrored="true"
|
||||||
|
android:viewportWidth="25.0"
|
||||||
|
android:viewportHeight="25.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="@color/auto_task_icon_grey_bg"
|
||||||
|
android:pathData="M6.66,0.66L18.66,0.66A6,6 0,0 1,24.66 6.66L24.66,18.66A6,6 0,0 1,18.66 24.66L6.66,24.66A6,6 0,0 1,0.66 18.66L0.66,6.66A6,6 0,0 1,6.66 0.66z" />
|
||||||
|
<group
|
||||||
|
android:scaleX="0.8"
|
||||||
|
android:scaleY="0.8"
|
||||||
|
android:translateX="3.2"
|
||||||
|
android:translateY="3">
|
||||||
|
<path
|
||||||
|
android:fillColor="@color/auto_task_icon_grey"
|
||||||
|
android:fillType="evenOdd"
|
||||||
|
android:pathData="M19.99,4c0,-1.1 -0.89,-2 -1.99,-2h-8L4,8v12c0,1.1 0.9,2 2,2h12.01c1.1,0 1.99,-0.9 1.99,-2l-0.01,-16zM9,19L7,19v-2h2v2zM17,19h-2v-2h2v2zM9,15L7,15v-4h2v4zM13,19h-2v-4h2v4zM13,13h-2v-2h2v2zM17,15h-2v-4h2v4z" />
|
||||||
|
</group>
|
||||||
|
</vector>
|
@ -1,6 +1,14 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<vector android:height="28.0dip" android:width="28.0dip" android:viewportWidth="28.0" android:viewportHeight="28.0"
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
android:width="28.0dip"
|
||||||
<path android:fillColor="#ffffb21d" android:pathData="M7.5,0L20.5,0A7.5,7.5 0,0 1,28 7.5L28,20.5A7.5,7.5 0,0 1,20.5 28L7.5,28A7.5,7.5 0,0 1,0 20.5L0,7.5A7.5,7.5 0,0 1,7.5 0z" />
|
android:height="28.0dip"
|
||||||
<path android:fillColor="#ffffffff" android:pathData="M5,9.2C5,8.08 5,7.52 5.218,7.092C5.41,6.716 5.716,6.41 6.092,6.218C6.52,6 7.08,6 8.2,6H19.8C20.92,6 21.48,6 21.908,6.218C22.284,6.41 22.59,6.716 22.782,7.092C23,7.52 23,8.08 23,9.2V16.8C23,17.92 23,18.48 22.782,18.908C22.59,19.284 22.284,19.59 21.908,19.782C21.48,20 20.92,20 19.8,20H8.484C8.304,20 8.214,20 8.127,20.015C8.05,20.029 7.975,20.052 7.903,20.083C7.822,20.119 7.747,20.169 7.597,20.269L7.597,20.269L6.244,21.171C5.84,21.44 5.638,21.575 5.47,21.565C5.324,21.556 5.189,21.484 5.101,21.367C5,21.234 5,20.991 5,20.505V9.2ZM9,11C9,10.448 9.448,10 10,10H18C18.552,10 19,10.448 19,11C19,11.552 18.552,12 18,12H10C9.448,12 9,11.552 9,11ZM10,14C9.448,14 9,14.448 9,15C9,15.552 9.448,16 10,16H14C14.552,16 15,15.552 15,15C15,14.448 14.552,14 14,14H10Z" android:fillType="evenOdd" />
|
android:viewportWidth="28.0"
|
||||||
|
android:viewportHeight="28.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="#ffffb21d"
|
||||||
|
android:pathData="M7.5,0L20.5,0A7.5,7.5 0,0 1,28 7.5L28,20.5A7.5,7.5 0,0 1,20.5 28L7.5,28A7.5,7.5 0,0 1,0 20.5L0,7.5A7.5,7.5 0,0 1,7.5 0z" />
|
||||||
|
<path
|
||||||
|
android:fillColor="#ffffffff"
|
||||||
|
android:fillType="evenOdd"
|
||||||
|
android:pathData="M5,9.2C5,8.08 5,7.52 5.218,7.092C5.41,6.716 5.716,6.41 6.092,6.218C6.52,6 7.08,6 8.2,6H19.8C20.92,6 21.48,6 21.908,6.218C22.284,6.41 22.59,6.716 22.782,7.092C23,7.52 23,8.08 23,9.2V16.8C23,17.92 23,18.48 22.782,18.908C22.59,19.284 22.284,19.59 21.908,19.782C21.48,20 20.92,20 19.8,20H8.484C8.304,20 8.214,20 8.127,20.015C8.05,20.029 7.975,20.052 7.903,20.083C7.822,20.119 7.747,20.169 7.597,20.269L7.597,20.269L6.244,21.171C5.84,21.44 5.638,21.575 5.47,21.565C5.324,21.556 5.189,21.484 5.101,21.367C5,21.234 5,20.991 5,20.505V9.2ZM9,11C9,10.448 9.448,10 10,10H18C18.552,10 19,10.448 19,11C19,11.552 18.552,12 18,12H10C9.448,12 9,11.552 9,11ZM10,14C9.448,14 9,14.448 9,15C9,15.552 9.448,16 10,16H14C14.552,16 15,15.552 15,15C15,14.448 14.552,14 14,14H10Z" />
|
||||||
</vector>
|
</vector>
|
14
app/src/main/res/drawable/auto_task_icon_sms_grey.xml
Normal file
14
app/src/main/res/drawable/auto_task_icon_sms_grey.xml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="28.0dip"
|
||||||
|
android:height="28.0dip"
|
||||||
|
android:viewportWidth="28.0"
|
||||||
|
android:viewportHeight="28.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="@color/auto_task_icon_grey_bg"
|
||||||
|
android:pathData="M7.5,0L20.5,0A7.5,7.5 0,0 1,28 7.5L28,20.5A7.5,7.5 0,0 1,20.5 28L7.5,28A7.5,7.5 0,0 1,0 20.5L0,7.5A7.5,7.5 0,0 1,7.5 0z" />
|
||||||
|
<path
|
||||||
|
android:fillColor="@color/auto_task_icon_grey"
|
||||||
|
android:fillType="evenOdd"
|
||||||
|
android:pathData="M5,9.2C5,8.08 5,7.52 5.218,7.092C5.41,6.716 5.716,6.41 6.092,6.218C6.52,6 7.08,6 8.2,6H19.8C20.92,6 21.48,6 21.908,6.218C22.284,6.41 22.59,6.716 22.782,7.092C23,7.52 23,8.08 23,9.2V16.8C23,17.92 23,18.48 22.782,18.908C22.59,19.284 22.284,19.59 21.908,19.782C21.48,20 20.92,20 19.8,20H8.484C8.304,20 8.214,20 8.127,20.015C8.05,20.029 7.975,20.052 7.903,20.083C7.822,20.119 7.747,20.169 7.597,20.269L7.597,20.269L6.244,21.171C5.84,21.44 5.638,21.575 5.47,21.565C5.324,21.556 5.189,21.484 5.101,21.367C5,21.234 5,20.991 5,20.505V9.2ZM9,11C9,10.448 9.448,10 10,10H18C18.552,10 19,10.448 19,11C19,11.552 18.552,12 18,12H10C9.448,12 9,11.552 9,11ZM10,14C9.448,14 9,14.448 9,15C9,15.552 9.448,16 10,16H14C14.552,16 15,15.552 15,15C15,14.448 14.552,14 14,14H10Z" />
|
||||||
|
</vector>
|
@ -7,6 +7,7 @@
|
|||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
android:id="@+id/tv_title"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
style="@style/senderBarStyle"
|
style="@style/taskBarStyle"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
@ -29,7 +29,15 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/sim_slot" />
|
android:text="@string/sim_slot"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:background="?attr/xui_config_color_separator_light" />
|
||||||
|
|
||||||
<RadioGroup
|
<RadioGroup
|
||||||
android:id="@+id/rg_sim_slot"
|
android:id="@+id/rg_sim_slot"
|
||||||
@ -55,7 +63,7 @@
|
|||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
style="@style/senderBarStyle"
|
style="@style/taskBarStyle"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
@ -63,7 +71,15 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/phone_numbers" />
|
android:text="@string/phone_numbers"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:background="?attr/xui_config_color_separator_light" />
|
||||||
|
|
||||||
<com.xuexiang.xui.widget.edittext.materialedittext.MaterialEditText
|
<com.xuexiang.xui.widget.edittext.materialedittext.MaterialEditText
|
||||||
android:id="@+id/et_phone_numbers"
|
android:id="@+id/et_phone_numbers"
|
||||||
@ -80,7 +96,7 @@
|
|||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
style="@style/senderBarStyle"
|
style="@style/taskBarStyle"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
@ -88,7 +104,15 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/msg_content" />
|
android:text="@string/msg_content"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:background="?attr/xui_config_color_separator_light" />
|
||||||
|
|
||||||
<com.xuexiang.xui.widget.edittext.materialedittext.MaterialEditText
|
<com.xuexiang.xui.widget.edittext.materialedittext.MaterialEditText
|
||||||
android:id="@+id/et_msg_content"
|
android:id="@+id/et_msg_content"
|
||||||
|
176
app/src/main/res/layout/fragment_tasks_condition_battery.xml
Normal file
176
app/src/main/res/layout/fragment_tasks_condition_battery.xml
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="?attr/xui_config_color_background"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<androidx.core.widget.NestedScrollView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:overScrollMode="never">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="5dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
style="@style/taskBarStyle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/battery_level_title"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:background="?attr/xui_config_color_separator_light" />
|
||||||
|
|
||||||
|
<RadioGroup
|
||||||
|
android:id="@+id/rg_status"
|
||||||
|
style="@style/rg_style"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingBottom="@dimen/config_padding_5dp">
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_battery_discharging"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:checked="true"
|
||||||
|
android:text="@string/discharged_to"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<com.xuexiang.xui.widget.picker.XSeekBar
|
||||||
|
android:id="@+id/xsb_level_min"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:xsb_insideRangeLineColor="#0bd97f"
|
||||||
|
app:xsb_insideRangeLineStrokeWidth="5dp"
|
||||||
|
app:xsb_isShowBubble="true"
|
||||||
|
app:xsb_isShowRuler="true"
|
||||||
|
app:xsb_max="100"
|
||||||
|
app:xsb_min="1"
|
||||||
|
app:xsb_numberTextColor="#ffffff"
|
||||||
|
app:xsb_numberTextSize="15sp"
|
||||||
|
app:xsb_outsideRangeLineColor="#f0f0f0"
|
||||||
|
app:xsb_outsideRangeLineStrokeWidth="5dp"
|
||||||
|
app:xsb_rulerColor="@color/xui_config_color_gray_4" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_battery_charging"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:text="@string/charged_to"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<com.xuexiang.xui.widget.picker.XSeekBar
|
||||||
|
android:id="@+id/xsb_level_max"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:visibility="gone"
|
||||||
|
app:xsb_insideRangeLineColor="#0bd97f"
|
||||||
|
app:xsb_insideRangeLineStrokeWidth="5dp"
|
||||||
|
app:xsb_isShowBubble="true"
|
||||||
|
app:xsb_isShowRuler="true"
|
||||||
|
app:xsb_max="100"
|
||||||
|
app:xsb_min="1"
|
||||||
|
app:xsb_numberTextColor="#ffffff"
|
||||||
|
app:xsb_numberTextSize="15sp"
|
||||||
|
app:xsb_outsideRangeLineColor="#f0f0f0"
|
||||||
|
app:xsb_outsideRangeLineStrokeWidth="5dp"
|
||||||
|
app:xsb_rulerColor="@color/xui_config_color_gray_4" />
|
||||||
|
|
||||||
|
</RadioGroup>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
style="@style/taskBarStyle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/keep_reminding"
|
||||||
|
android:textStyle="bold"
|
||||||
|
tools:ignore="RelativeOverlap" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/keep_reminding_tips"
|
||||||
|
android:textSize="10sp"
|
||||||
|
tools:ignore="SmallSp" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<com.xuexiang.xui.widget.button.switchbutton.SwitchButton
|
||||||
|
android:id="@+id/sb_keep_reminding"
|
||||||
|
style="@style/SwitchButtonStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:padding="10dp">
|
||||||
|
|
||||||
|
<com.xuexiang.xui.widget.textview.supertextview.SuperButton
|
||||||
|
android:id="@+id/btn_del"
|
||||||
|
style="@style/SuperButton.Gray.Icon"
|
||||||
|
android:drawableStart="@drawable/icon_delete"
|
||||||
|
android:paddingStart="15dp"
|
||||||
|
android:text="@string/discard"
|
||||||
|
android:textSize="11sp"
|
||||||
|
tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<com.xuexiang.xui.widget.textview.supertextview.SuperButton
|
||||||
|
android:id="@+id/btn_save"
|
||||||
|
style="@style/SuperButton.Blue.Icon"
|
||||||
|
android:layout_marginStart="10dp"
|
||||||
|
android:drawableStart="@drawable/icon_save"
|
||||||
|
android:paddingStart="15dp"
|
||||||
|
android:text="@string/submit"
|
||||||
|
android:textSize="11sp"
|
||||||
|
tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<com.xuexiang.xui.widget.textview.supertextview.SuperButton
|
||||||
|
android:id="@+id/btn_test"
|
||||||
|
style="@style/SuperButton.Green.Icon"
|
||||||
|
android:layout_marginStart="10dp"
|
||||||
|
android:drawableStart="@drawable/icon_test"
|
||||||
|
android:paddingStart="15dp"
|
||||||
|
android:text="@string/test"
|
||||||
|
android:textSize="11sp"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:ignore="RtlSymmetry" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
178
app/src/main/res/layout/fragment_tasks_condition_charge.xml
Normal file
178
app/src/main/res/layout/fragment_tasks_condition_charge.xml
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="?attr/xui_config_color_background"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<androidx.core.widget.NestedScrollView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:overScrollMode="never">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="5dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
style="@style/taskBarStyle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/battery_status_title"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:background="?attr/xui_config_color_separator_light" />
|
||||||
|
|
||||||
|
<RadioGroup
|
||||||
|
android:id="@+id/rg_status"
|
||||||
|
style="@style/rg_style"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingBottom="@dimen/config_padding_5dp">
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_battery_discharging"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:checked="true"
|
||||||
|
android:text="@string/battery_charging"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_battery_charging"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:text="@string/battery_discharging"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_battery_not_charging"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:text="@string/battery_not_charging"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_battery_full"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:text="@string/battery_full"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_battery_unknown"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:text="@string/battery_unknown"
|
||||||
|
tools:ignore="TouchTargetSizeCheck,DuplicateSpeakableTextCheck" />
|
||||||
|
|
||||||
|
</RadioGroup>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
style="@style/taskBarStyle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/battery_plugged_title"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:background="?attr/xui_config_color_separator_light" />
|
||||||
|
|
||||||
|
<RadioGroup
|
||||||
|
android:id="@+id/rg_plugged"
|
||||||
|
style="@style/rg_style"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingBottom="@dimen/config_padding_5dp">
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_plugged_ac"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:checked="true"
|
||||||
|
android:text="@string/battery_ac"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_plugged_usb"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:text="@string/battery_usb"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_plugged_wireless"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:text="@string/battery_wireless"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_plugged_unknown"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:text="@string/battery_unknown"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
</RadioGroup>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:padding="10dp">
|
||||||
|
|
||||||
|
<com.xuexiang.xui.widget.textview.supertextview.SuperButton
|
||||||
|
android:id="@+id/btn_del"
|
||||||
|
style="@style/SuperButton.Gray.Icon"
|
||||||
|
android:drawableStart="@drawable/icon_delete"
|
||||||
|
android:paddingStart="15dp"
|
||||||
|
android:text="@string/discard"
|
||||||
|
android:textSize="11sp"
|
||||||
|
tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<com.xuexiang.xui.widget.textview.supertextview.SuperButton
|
||||||
|
android:id="@+id/btn_save"
|
||||||
|
style="@style/SuperButton.Blue.Icon"
|
||||||
|
android:layout_marginStart="10dp"
|
||||||
|
android:drawableStart="@drawable/icon_save"
|
||||||
|
android:paddingStart="15dp"
|
||||||
|
android:text="@string/submit"
|
||||||
|
android:textSize="11sp"
|
||||||
|
tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<com.xuexiang.xui.widget.textview.supertextview.SuperButton
|
||||||
|
android:id="@+id/btn_test"
|
||||||
|
style="@style/SuperButton.Green.Icon"
|
||||||
|
android:layout_marginStart="10dp"
|
||||||
|
android:drawableStart="@drawable/icon_test"
|
||||||
|
android:paddingStart="15dp"
|
||||||
|
android:text="@string/test"
|
||||||
|
android:textSize="11sp"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:ignore="RtlSymmetry" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
124
app/src/main/res/layout/fragment_tasks_condition_network.xml
Normal file
124
app/src/main/res/layout/fragment_tasks_condition_network.xml
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="?attr/xui_config_color_background"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<androidx.core.widget.NestedScrollView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:overScrollMode="never">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="5dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
style="@style/taskBarStyle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/task_network"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:background="?attr/xui_config_color_separator_light" />
|
||||||
|
|
||||||
|
<RadioGroup
|
||||||
|
android:id="@+id/rg_network_state"
|
||||||
|
style="@style/rg_style"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingBottom="@dimen/config_padding_5dp">
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_no_network"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:checked="true"
|
||||||
|
android:text="@string/no_network"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_net_mobile"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:text="@string/net_mobile"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_net_wifi"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:text="@string/net_wifi"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_net_ethernet"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:text="@string/net_ethernet"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_net_unknown"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:text="@string/net_unknown"
|
||||||
|
tools:ignore="TouchTargetSizeCheck,DuplicateSpeakableTextCheck" />
|
||||||
|
|
||||||
|
</RadioGroup>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:padding="10dp">
|
||||||
|
|
||||||
|
<com.xuexiang.xui.widget.textview.supertextview.SuperButton
|
||||||
|
android:id="@+id/btn_del"
|
||||||
|
style="@style/SuperButton.Gray.Icon"
|
||||||
|
android:drawableStart="@drawable/icon_delete"
|
||||||
|
android:paddingStart="15dp"
|
||||||
|
android:text="@string/discard"
|
||||||
|
android:textSize="11sp"
|
||||||
|
tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<com.xuexiang.xui.widget.textview.supertextview.SuperButton
|
||||||
|
android:id="@+id/btn_save"
|
||||||
|
style="@style/SuperButton.Blue.Icon"
|
||||||
|
android:layout_marginStart="10dp"
|
||||||
|
android:drawableStart="@drawable/icon_save"
|
||||||
|
android:paddingStart="15dp"
|
||||||
|
android:text="@string/submit"
|
||||||
|
android:textSize="11sp"
|
||||||
|
tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<com.xuexiang.xui.widget.textview.supertextview.SuperButton
|
||||||
|
android:id="@+id/btn_test"
|
||||||
|
style="@style/SuperButton.Green.Icon"
|
||||||
|
android:layout_marginStart="10dp"
|
||||||
|
android:drawableStart="@drawable/icon_test"
|
||||||
|
android:paddingStart="15dp"
|
||||||
|
android:text="@string/test"
|
||||||
|
android:textSize="11sp"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:ignore="RtlSymmetry" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
112
app/src/main/res/layout/fragment_tasks_condition_sim.xml
Normal file
112
app/src/main/res/layout/fragment_tasks_condition_sim.xml
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="?attr/xui_config_color_background"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<androidx.core.widget.NestedScrollView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:overScrollMode="never">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="5dp"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
style="@style/taskBarStyle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/task_sim"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_marginBottom="5dp"
|
||||||
|
android:background="?attr/xui_config_color_separator_light" />
|
||||||
|
|
||||||
|
<RadioGroup
|
||||||
|
android:id="@+id/rg_sim_state"
|
||||||
|
style="@style/rg_style"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:paddingBottom="@dimen/config_padding_5dp">
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_sim_state_absent"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:checked="true"
|
||||||
|
android:text="@string/sim_state_absent"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_sim_state_ready"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:text="@string/sim_state_ready"
|
||||||
|
tools:ignore="TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<RadioButton
|
||||||
|
android:id="@+id/rb_sim_state_unknown"
|
||||||
|
style="@style/rg_rb_style_match"
|
||||||
|
android:text="@string/sim_state_unknown"
|
||||||
|
tools:ignore="TouchTargetSizeCheck,DuplicateSpeakableTextCheck" />
|
||||||
|
|
||||||
|
</RadioGroup>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:padding="10dp">
|
||||||
|
|
||||||
|
<com.xuexiang.xui.widget.textview.supertextview.SuperButton
|
||||||
|
android:id="@+id/btn_del"
|
||||||
|
style="@style/SuperButton.Gray.Icon"
|
||||||
|
android:drawableStart="@drawable/icon_delete"
|
||||||
|
android:paddingStart="15dp"
|
||||||
|
android:text="@string/discard"
|
||||||
|
android:textSize="11sp"
|
||||||
|
tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<com.xuexiang.xui.widget.textview.supertextview.SuperButton
|
||||||
|
android:id="@+id/btn_save"
|
||||||
|
style="@style/SuperButton.Blue.Icon"
|
||||||
|
android:layout_marginStart="10dp"
|
||||||
|
android:drawableStart="@drawable/icon_save"
|
||||||
|
android:paddingStart="15dp"
|
||||||
|
android:text="@string/submit"
|
||||||
|
android:textSize="11sp"
|
||||||
|
tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" />
|
||||||
|
|
||||||
|
<com.xuexiang.xui.widget.textview.supertextview.SuperButton
|
||||||
|
android:id="@+id/btn_test"
|
||||||
|
style="@style/SuperButton.Green.Icon"
|
||||||
|
android:layout_marginStart="10dp"
|
||||||
|
android:drawableStart="@drawable/icon_test"
|
||||||
|
android:paddingStart="15dp"
|
||||||
|
android:text="@string/test"
|
||||||
|
android:textSize="11sp"
|
||||||
|
android:visibility="gone"
|
||||||
|
tools:ignore="RtlSymmetry" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
@ -581,7 +581,8 @@
|
|||||||
<string name="test_sender_sms">[%s] Congratulations, the sending channel test is successful, please continue to add forwarding rules!</string>
|
<string name="test_sender_sms">[%s] Congratulations, the sending channel test is successful, please continue to add forwarding rules!</string>
|
||||||
<string name="test_sender_name">Test Channel</string>
|
<string name="test_sender_name">Test Channel</string>
|
||||||
<string name="test_sim_info" tools:ignore="Typos">SIM1_TestOperator_18888888888</string>
|
<string name="test_sim_info" tools:ignore="Typos">SIM1_TestOperator_18888888888</string>
|
||||||
<string name="keep_reminding">Continued</string>
|
<string name="keep_reminding">Keep Reminding</string>
|
||||||
|
<string name="keep_reminding_tips">After exceeding the preset value, each change in battery level continues to trigger.</string>
|
||||||
<string name="resend">Resend</string>
|
<string name="resend">Resend</string>
|
||||||
<string name="rematch">Rematch</string>
|
<string name="rematch">Rematch</string>
|
||||||
<string name="from">From: </string>
|
<string name="from">From: </string>
|
||||||
@ -929,12 +930,15 @@
|
|||||||
<string name="battery_unspecified_failure">Unspecified Failure</string>
|
<string name="battery_unspecified_failure">Unspecified Failure</string>
|
||||||
<string name="battery_cold">Cold</string>
|
<string name="battery_cold">Cold</string>
|
||||||
<string name="battery_level">Level: %s</string>
|
<string name="battery_level">Level: %s</string>
|
||||||
|
<string name="battery_level_title">Level</string>
|
||||||
<string name="battery_scale">Scale: %s</string>
|
<string name="battery_scale">Scale: %s</string>
|
||||||
<string name="battery_voltage">Voltage: %s</string>
|
<string name="battery_voltage">Voltage: %s</string>
|
||||||
<string name="battery_temperature">Temperature: %s</string>
|
<string name="battery_temperature">Temperature: %s</string>
|
||||||
<string name="battery_status">Status: %s</string>
|
<string name="battery_status">Status: %s</string>
|
||||||
|
<string name="battery_status_title">Status</string>
|
||||||
<string name="battery_health">Health: %s</string>
|
<string name="battery_health">Health: %s</string>
|
||||||
<string name="battery_plugged">Plugged: %s</string>
|
<string name="battery_plugged">Plugged: %s</string>
|
||||||
|
<string name="battery_plugged_title">Plugged</string>
|
||||||
|
|
||||||
<string name="server_history">History</string>
|
<string name="server_history">History</string>
|
||||||
<string name="server_test">Login</string>
|
<string name="server_test">Login</string>
|
||||||
@ -1073,9 +1077,11 @@
|
|||||||
<string name="net_3g">3G Net</string>
|
<string name="net_3g">3G Net</string>
|
||||||
<string name="net_4g">4G Net</string>
|
<string name="net_4g">4G Net</string>
|
||||||
<string name="net_5g">5G Net</string>
|
<string name="net_5g">5G Net</string>
|
||||||
|
<string name="net_mobile">Mobile</string>
|
||||||
<string name="net_wifi">WiFi</string>
|
<string name="net_wifi">WiFi</string>
|
||||||
<string name="net_ethernet">Ethernet</string>
|
<string name="net_ethernet">Ethernet</string>
|
||||||
<string name="net_unknown">Unknown</string>
|
<string name="net_unknown">Unknown</string>
|
||||||
|
<string name="network_state">Network State: %s</string>
|
||||||
<string name="wifi_ssid">WiFi SSID</string>
|
<string name="wifi_ssid">WiFi SSID</string>
|
||||||
|
|
||||||
<string name="enable_location_tag">Enable {{LOCATION}} Tag</string>
|
<string name="enable_location_tag">Enable {{LOCATION}} Tag</string>
|
||||||
@ -1104,12 +1110,14 @@
|
|||||||
<string name="add_action_tips">例如:禁用所有转发通道</string>
|
<string name="add_action_tips">例如:禁用所有转发通道</string>
|
||||||
<string name="add_action_continue">继续添加动作</string>
|
<string name="add_action_continue">继续添加动作</string>
|
||||||
|
|
||||||
<string name="select_task_condition">Please select condition</string>
|
<string name="select_task_trigger">Please select trigger condition</string>
|
||||||
|
<string name="select_task_condition">Please select additional condition</string>
|
||||||
<string name="select_task_action">Please select action</string>
|
<string name="select_task_action">Please select action</string>
|
||||||
<string name="task_cron">Cron</string>
|
<string name="task_cron">Cron</string>
|
||||||
<string name="task_charge">Charge</string>
|
<string name="task_charge">Charge</string>
|
||||||
<string name="task_battery">Battery</string>
|
<string name="task_battery">Battery</string>
|
||||||
<string name="task_network">Network</string>
|
<string name="task_network">Network</string>
|
||||||
|
<string name="task_sim">SIM Status</string>
|
||||||
<string name="task_sendsms">Send Sms</string>
|
<string name="task_sendsms">Send Sms</string>
|
||||||
<string name="task_notification">Notification</string>
|
<string name="task_notification">Notification</string>
|
||||||
<string name="task_frpc">Frpc Setting</string>
|
<string name="task_frpc">Frpc Setting</string>
|
||||||
@ -1162,8 +1170,8 @@
|
|||||||
<string name="recent_day_2">day of each month.</string>
|
<string name="recent_day_2">day of each month.</string>
|
||||||
<string name="last_day_of_month">Last day of month</string>
|
<string name="last_day_of_month">Last day of month</string>
|
||||||
<string name="last_day_of_month_recent_day">Last day of month recent days</string>
|
<string name="last_day_of_month_recent_day">Last day of month recent days</string>
|
||||||
<string name="weeks_of_week_1">第</string>
|
<string name="weeks_of_week_1">The</string>
|
||||||
<string name="weeks_of_week_2">周的星期</string>
|
<string name="weeks_of_week_2">th week\'s day</string>
|
||||||
<string name="last_week_of_month">The last [day of the week] of this month.</string>
|
<string name="last_week_of_month">The last [day of the week] of this month.</string>
|
||||||
<string name="last_week_of_month_1">The last week</string>
|
<string name="last_week_of_month_1">The last week</string>
|
||||||
<string name="last_week_of_month_2">of this month.</string>
|
<string name="last_week_of_month_2">of this month.</string>
|
||||||
@ -1172,4 +1180,15 @@
|
|||||||
<string name="next_execution_times">The next %s execution times:\n%s</string>
|
<string name="next_execution_times">The next %s execution times:\n%s</string>
|
||||||
|
|
||||||
<string name="send_sms_to">Use SIM-%s to send sms\n%s</string>
|
<string name="send_sms_to">Use SIM-%s to send sms\n%s</string>
|
||||||
|
<string name="discharged_to">Discharged to the specified battery level</string>
|
||||||
|
<string name="charged_to">Charged to the specified battery level</string>
|
||||||
|
<string name="battery_discharged_to">The battery discharged to %s%%</string>
|
||||||
|
<string name="battery_discharged_below">"The battery discharged below %s%%</string>
|
||||||
|
<string name="battery_charged_to">The battery charged to %s%%</string>
|
||||||
|
<string name="battery_charged_above">The battery charged above %s%%</string>
|
||||||
|
|
||||||
|
<string name="sim_state">SIM State:%s</string>
|
||||||
|
<string name="sim_state_absent">Absent</string>
|
||||||
|
<string name="sim_state_ready">Ready</string>
|
||||||
|
<string name="sim_state_unknown">Unknown</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -443,7 +443,7 @@
|
|||||||
<string name="invalid_server_ip">请输入服务端IP</string>
|
<string name="invalid_server_ip">请输入服务端IP</string>
|
||||||
<string name="on_wireless_network">当前处于无线网络</string>
|
<string name="on_wireless_network">当前处于无线网络</string>
|
||||||
<string name="on_mobile_network">当前处于移动网络</string>
|
<string name="on_mobile_network">当前处于移动网络</string>
|
||||||
<string name="no_network">当前没有网络</string>
|
<string name="no_network">没有网络</string>
|
||||||
<string name="not_connected_wifi">未连接Wifi</string>
|
<string name="not_connected_wifi">未连接Wifi</string>
|
||||||
<string name="failed_to_get_ip">获取IP失败</string>
|
<string name="failed_to_get_ip">获取IP失败</string>
|
||||||
<string name="sms">短 信</string>
|
<string name="sms">短 信</string>
|
||||||
@ -583,6 +583,7 @@
|
|||||||
<string name="test_sender_name">测试通道</string>
|
<string name="test_sender_name">测试通道</string>
|
||||||
<string name="test_sim_info" tools:ignore="Typos">SIM1_测试运营商_18888888888</string>
|
<string name="test_sim_info" tools:ignore="Typos">SIM1_测试运营商_18888888888</string>
|
||||||
<string name="keep_reminding">持续提醒</string>
|
<string name="keep_reminding">持续提醒</string>
|
||||||
|
<string name="keep_reminding_tips">超过预设值之后,每次电量变化继续触发</string>
|
||||||
<string name="resend">重发消息</string>
|
<string name="resend">重发消息</string>
|
||||||
<string name="rematch">重新匹配规则</string>
|
<string name="rematch">重新匹配规则</string>
|
||||||
<string name="from">来源:</string>
|
<string name="from">来源:</string>
|
||||||
@ -930,12 +931,15 @@
|
|||||||
<string name="battery_unspecified_failure">未知错误</string>
|
<string name="battery_unspecified_failure">未知错误</string>
|
||||||
<string name="battery_cold">温度过低</string>
|
<string name="battery_cold">温度过低</string>
|
||||||
<string name="battery_level">剩余电量:%s</string>
|
<string name="battery_level">剩余电量:%s</string>
|
||||||
|
<string name="battery_level_title">剩余电量</string>
|
||||||
<string name="battery_scale">充满电量:%s</string>
|
<string name="battery_scale">充满电量:%s</string>
|
||||||
<string name="battery_voltage">当前电压:%s</string>
|
<string name="battery_voltage">当前电压:%s</string>
|
||||||
<string name="battery_temperature">当前温度:%s</string>
|
<string name="battery_temperature">当前温度:%s</string>
|
||||||
<string name="battery_status">电池状态:%s</string>
|
<string name="battery_status">电池状态:%s</string>
|
||||||
|
<string name="battery_status_title">电池状态</string>
|
||||||
<string name="battery_health">健康度:%s</string>
|
<string name="battery_health">健康度:%s</string>
|
||||||
<string name="battery_plugged">充电器:%s</string>
|
<string name="battery_plugged">充电器:%s</string>
|
||||||
|
<string name="battery_plugged_title">充电器</string>
|
||||||
|
|
||||||
<string name="server_history">历史记录</string>
|
<string name="server_history">历史记录</string>
|
||||||
<string name="server_test">登录服务</string>
|
<string name="server_test">登录服务</string>
|
||||||
@ -1074,9 +1078,11 @@
|
|||||||
<string name="net_3g">3G网络</string>
|
<string name="net_3g">3G网络</string>
|
||||||
<string name="net_4g">4G网络</string>
|
<string name="net_4g">4G网络</string>
|
||||||
<string name="net_5g">5G网络</string>
|
<string name="net_5g">5G网络</string>
|
||||||
|
<string name="net_mobile">移动网络</string>
|
||||||
<string name="net_wifi">WiFi</string>
|
<string name="net_wifi">WiFi</string>
|
||||||
<string name="net_ethernet">有线网络</string>
|
<string name="net_ethernet">有线网络</string>
|
||||||
<string name="net_unknown">未知网络</string>
|
<string name="net_unknown">未知网络</string>
|
||||||
|
<string name="network_state">网络状态:%s</string>
|
||||||
<string name="wifi_ssid">WiFi名称</string>
|
<string name="wifi_ssid">WiFi名称</string>
|
||||||
|
|
||||||
<string name="enable_location_tag">启用 {{定位信息}} 标签</string>
|
<string name="enable_location_tag">启用 {{定位信息}} 标签</string>
|
||||||
@ -1105,12 +1111,14 @@
|
|||||||
<string name="add_action_tips">例如:禁用所有转发通道</string>
|
<string name="add_action_tips">例如:禁用所有转发通道</string>
|
||||||
<string name="add_action_continue">继续添加动作</string>
|
<string name="add_action_continue">继续添加动作</string>
|
||||||
|
|
||||||
<string name="select_task_condition">请选择条件</string>
|
<string name="select_task_trigger">请选择触发条件</string>
|
||||||
|
<string name="select_task_condition">请选择附加条件</string>
|
||||||
<string name="select_task_action">请选择动作</string>
|
<string name="select_task_action">请选择动作</string>
|
||||||
<string name="task_cron">定时任务</string>
|
<string name="task_cron">定时任务</string>
|
||||||
<string name="task_charge">充电状态</string>
|
<string name="task_charge">充电状态</string>
|
||||||
<string name="task_battery">电量使用</string>
|
<string name="task_battery">电量使用</string>
|
||||||
<string name="task_network">网络状态</string>
|
<string name="task_network">网络状态</string>
|
||||||
|
<string name="task_sim">SIM卡状态</string>
|
||||||
<string name="task_sendsms">发送短信</string>
|
<string name="task_sendsms">发送短信</string>
|
||||||
<string name="task_notification">通道推送</string>
|
<string name="task_notification">通道推送</string>
|
||||||
<string name="task_frpc">设置 Frpc</string>
|
<string name="task_frpc">设置 Frpc</string>
|
||||||
@ -1173,4 +1181,15 @@
|
|||||||
<string name="next_execution_times">最近 %s 次运行时间:\n%s</string>
|
<string name="next_execution_times">最近 %s 次运行时间:\n%s</string>
|
||||||
|
|
||||||
<string name="send_sms_to">通过卡槽 SIM-%s 发送短信到:\n%s</string>
|
<string name="send_sms_to">通过卡槽 SIM-%s 发送短信到:\n%s</string>
|
||||||
|
<string name="discharged_to">放电到指定电量</string>
|
||||||
|
<string name="charged_to">充电到指定电量</string>
|
||||||
|
<string name="battery_discharged_to">电池放电低到%s%%</string>
|
||||||
|
<string name="battery_discharged_below">电池放电低于%s%%</string>
|
||||||
|
<string name="battery_charged_to">电池充电达到%s%%</string>
|
||||||
|
<string name="battery_charged_above">电池充电高于%s%%</string>
|
||||||
|
|
||||||
|
<string name="sim_state">SIM卡状态:%s</string>
|
||||||
|
<string name="sim_state_absent">被移除</string>
|
||||||
|
<string name="sim_state_ready">已就绪</string>
|
||||||
|
<string name="sim_state_unknown">未知</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -229,7 +229,7 @@
|
|||||||
<item name="android:layout_width">match_parent</item>
|
<item name="android:layout_width">match_parent</item>
|
||||||
<item name="android:layout_height">wrap_content</item>
|
<item name="android:layout_height">wrap_content</item>
|
||||||
<item name="android:singleLine">true</item>
|
<item name="android:singleLine">true</item>
|
||||||
<item name="android:textSize">12sp</item>
|
<!--<item name="android:textSize">12sp</item>-->
|
||||||
<item name="android:button">@drawable/custom_radio_button</item>
|
<item name="android:button">@drawable/custom_radio_button</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user