mirror of
https://github.com/pppscn/SmsForwarder
synced 2025-08-02 17:07:41 +08:00
新增:自动任务·快捷指令 (开发中)
This commit is contained in:
parent
5fb9f1b75c
commit
95e9f22816
@ -3,6 +3,10 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:installLocation="internalOnly">
|
||||
|
||||
<uses-feature
|
||||
android:name="android.hardware.telephony"
|
||||
android:required="false" />
|
||||
|
||||
<uses-permission
|
||||
android:name="android.permission.QUERY_ALL_PACKAGES"
|
||||
tools:ignore="QueryAllPackagesPermission" />
|
||||
@ -239,6 +243,11 @@
|
||||
<action android:name="android.service.notification.NotificationListenerService" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
<service
|
||||
android:name=".workers.CronWorker"
|
||||
android:exported="false"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE" />
|
||||
|
||||
|
||||
<receiver
|
||||
android:name=".receiver.BootReceiver"
|
||||
|
@ -41,7 +41,11 @@ class TaskPagingAdapter(private val itemClickListener: OnItemClickListener) : Pa
|
||||
for (condition in conditionList) {
|
||||
val layoutConditionItem = View.inflate(App.context, R.layout.item_setting, null) as LinearLayout
|
||||
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)
|
||||
}
|
||||
}
|
||||
@ -50,12 +54,14 @@ class TaskPagingAdapter(private val itemClickListener: OnItemClickListener) : Pa
|
||||
holder.binding.layoutActionsIcons.removeAllViews()
|
||||
if (item.actions.isNotEmpty()) {
|
||||
val actionList = Gson().fromJson(item.actions, Array<TaskSetting>::class.java).toMutableList()
|
||||
//Log.d("TaskPagingAdapter", "actionList:$actionList")
|
||||
for (action in actionList) {
|
||||
//Log.d("TaskPagingAdapter", "action:$action")
|
||||
val layoutActionItem = View.inflate(App.context, R.layout.item_setting, null) as LinearLayout
|
||||
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)
|
||||
}
|
||||
}
|
||||
@ -69,7 +75,11 @@ class TaskPagingAdapter(private val itemClickListener: OnItemClickListener) : Pa
|
||||
} else {
|
||||
holder.binding.layoutImage.visibility = View.VISIBLE
|
||||
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.ivEdit.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_CRON
|
||||
import com.idormy.sms.forwarder.utils.TASK_CONDITION_NETWORK
|
||||
import com.idormy.sms.forwarder.utils.TASK_CONDITION_SIM
|
||||
import kotlinx.parcelize.Parcelize
|
||||
import java.util.Date
|
||||
|
||||
@ -36,7 +37,8 @@ data class Task(
|
||||
TASK_CONDITION_CRON -> R.drawable.auto_task_icon_custom_time
|
||||
TASK_CONDITION_BATTERY -> R.drawable.auto_task_icon_battery
|
||||
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_NOTIFICATION -> R.drawable.auto_task_icon_sender
|
||||
TASK_ACTION_FRPC -> R.drawable.auto_task_icon_frpc
|
||||
@ -44,6 +46,20 @@ data class Task(
|
||||
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
|
||||
get() = when (status) {
|
||||
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
|
||||
|
||||
data class CronSetting(
|
||||
var expression: String,
|
||||
var description: String = "",
|
||||
var description: String = "", //描述
|
||||
var expression: String = "", //表达式
|
||||
) : 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
|
||||
|
||||
data class SmsSetting(
|
||||
var description: String = "",
|
||||
var simSlot: Int = 1,
|
||||
var phoneNumbers: String = "",
|
||||
var msgContent: String = "",
|
||||
var description: String = "", //描述
|
||||
var simSlot: Int = 1, //卡槽
|
||||
var phoneNumbers: String = "", //手机号码
|
||||
var msgContent: String = "", //短信内容
|
||||
) : Serializable
|
||||
|
@ -13,10 +13,10 @@ import java.io.Serializable
|
||||
|
||||
data class TaskSetting(
|
||||
val type: Int, // TASK_CONDITION_FRAGMENT_LIST 索引加上 KEY_BACK_CODE_CONDITION 或者 TASK_ACTION_FRAGMENT_LIST 索引加上 KEY_BACK_CODE_ACTION
|
||||
val title: String,
|
||||
val description: String,
|
||||
var setting: String = "",
|
||||
var position: Int = -1
|
||||
val title: String, //标题
|
||||
val description: String, //描述
|
||||
var setting: String = "", //设置
|
||||
var position: Int = -1 //位置
|
||||
) : Serializable {
|
||||
|
||||
val iconId: Int
|
||||
@ -24,11 +24,24 @@ data class TaskSetting(
|
||||
TASK_CONDITION_CRON -> R.drawable.auto_task_icon_custom_time
|
||||
TASK_CONDITION_BATTERY -> R.drawable.auto_task_icon_battery
|
||||
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_NOTIFICATION -> R.drawable.auto_task_icon_sender
|
||||
TASK_ACTION_FRPC -> R.drawable.auto_task_icon_frpc
|
||||
TASK_ACTION_HTTPSERVER -> R.drawable.auto_task_icon_http_server
|
||||
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) {
|
||||
R.id.layout_add_condition -> {
|
||||
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))
|
||||
val widgetItemAdapter = WidgetItemAdapter(TASK_CONDITION_FRAGMENT_LIST)
|
||||
widgetItemAdapter.setOnItemClickListener(that)
|
||||
@ -347,10 +349,6 @@ class TasksEditFragment : BaseFragment<FragmentTasksEditBinding?>(), View.OnClic
|
||||
try {
|
||||
dialog.dismiss()
|
||||
Log.d(TAG, "onItemClick: $widgetInfo")
|
||||
if (pos > 0) {
|
||||
XToastUtils.info("暂不支持,敬请期待……")
|
||||
return
|
||||
}
|
||||
//判断点击的是条件还是动作
|
||||
if (widgetInfo.classPath.contains(".condition.")) {
|
||||
//判断是否已经添加过该类型条件
|
||||
@ -385,54 +383,18 @@ class TasksEditFragment : BaseFragment<FragmentTasksEditBinding?>(), View.OnClic
|
||||
super.onFragmentResult(requestCode, resultCode, data)
|
||||
Log.d(TAG, "requestCode:$requestCode resultCode:$resultCode data:$data")
|
||||
if (data != null) {
|
||||
val extras = data.extras
|
||||
val extras = data.extras ?: return
|
||||
|
||||
val description: String?
|
||||
var setting: String? = null
|
||||
if (resultCode in KEY_BACK_CODE_CONDITION..KEY_BACK_CODE_CONDITION + 999) {
|
||||
setting = extras!!.getString(KEY_BACK_DATA_CONDITION)
|
||||
if (setting == null) return
|
||||
setting = extras.getString(KEY_BACK_DATA_CONDITION) ?: return
|
||||
//注意:TASK_CONDITION_XXX 枚举值 等于 TASK_CONDITION_FRAGMENT_LIST 索引加上 KEY_BACK_CODE_CONDITION,不可改变
|
||||
val widgetInfoIndex = resultCode - KEY_BACK_CODE_CONDITION
|
||||
if (widgetInfoIndex >= TASK_CONDITION_FRAGMENT_LIST.size) return
|
||||
val widgetInfo = TASK_CONDITION_FRAGMENT_LIST[widgetInfoIndex]
|
||||
val taskSetting: TaskSetting
|
||||
when (resultCode) {
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
description = extras.getString(KEY_BACK_DESCRIPTION_CONDITION) ?: widgetInfo.name.toString()
|
||||
val taskSetting = TaskSetting(resultCode, widgetInfo.name, description, setting, requestCode)
|
||||
//requestCode: 等于 itemListConditions 的索引加1
|
||||
if (requestCode == 0) {
|
||||
taskSetting.position = itemListConditions.size
|
||||
@ -443,51 +405,13 @@ class TasksEditFragment : BaseFragment<FragmentTasksEditBinding?>(), View.OnClic
|
||||
conditionsAdapter.notifyDataSetChanged()
|
||||
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) {
|
||||
setting = extras!!.getString(KEY_BACK_DATA_ACTION)
|
||||
if (setting == null) return
|
||||
setting = extras.getString(KEY_BACK_DATA_ACTION) ?: return
|
||||
//注意:TASK_ACTION_XXX 枚举值 等于 TASK_ACTION_FRAGMENT_LIST 索引加上 KEY_BACK_CODE_ACTION,不可改变
|
||||
val widgetInfoIndex = resultCode - KEY_BACK_CODE_ACTION
|
||||
if (widgetInfoIndex >= TASK_ACTION_FRAGMENT_LIST.size) return
|
||||
val widgetInfo = TASK_ACTION_FRAGMENT_LIST[widgetInfoIndex]
|
||||
val taskSetting: TaskSetting
|
||||
when (resultCode) {
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
description = extras.getString(KEY_BACK_DESCRIPTION_ACTION) ?: widgetInfo.name.toString()
|
||||
val taskSetting = TaskSetting(resultCode, widgetInfo.name, description, setting, requestCode)
|
||||
//requestCode: 等于 itemListActions 的索引加1
|
||||
if (requestCode == 0) {
|
||||
taskSetting.position = itemListActions.size
|
||||
|
@ -136,6 +136,6 @@ class FrpcFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.On
|
||||
//检查设置
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun checkSetting(): CronSetting {
|
||||
return CronSetting(expression, description)
|
||||
return CronSetting(description, expression)
|
||||
}
|
||||
}
|
@ -136,6 +136,6 @@ class HttpServerFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), V
|
||||
//检查设置
|
||||
@SuppressLint("SetTextI18n")
|
||||
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.content.Intent
|
||||
import android.os.BatteryManager
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
@ -9,9 +10,10 @@ 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.FragmentTasksActionSendSmsBinding
|
||||
import com.idormy.sms.forwarder.entity.task.CronSetting
|
||||
import com.idormy.sms.forwarder.databinding.FragmentTasksConditionBatteryBinding
|
||||
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_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_BATTERY
|
||||
@ -26,7 +28,7 @@ import com.xuexiang.xui.widget.actionbar.TitleBar
|
||||
|
||||
@Page(name = "Battery")
|
||||
@Suppress("PrivatePropertyName")
|
||||
class BatteryFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.OnClickListener {
|
||||
class BatteryFragment : BaseFragment<FragmentTasksConditionBatteryBinding?>(), View.OnClickListener {
|
||||
|
||||
private val TAG: String = BatteryFragment::class.java.simpleName
|
||||
var titleBar: TitleBar? = null
|
||||
@ -36,8 +38,7 @@ class BatteryFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
||||
@AutoWired(name = KEY_EVENT_DATA_CONDITION)
|
||||
var eventData: String? = null
|
||||
|
||||
private var expression = "* * * * * ? *"
|
||||
private var description = "测试描述"
|
||||
private var description = ""
|
||||
|
||||
override fun initArgs() {
|
||||
XRouter.getInstance().inject(this)
|
||||
@ -46,8 +47,8 @@ class BatteryFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
||||
override fun viewBindingInflate(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup,
|
||||
): FragmentTasksActionSendSmsBinding {
|
||||
return FragmentTasksActionSendSmsBinding.inflate(inflater, container, false)
|
||||
): FragmentTasksConditionBatteryBinding {
|
||||
return FragmentTasksConditionBatteryBinding.inflate(inflater, container, false)
|
||||
}
|
||||
|
||||
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")
|
||||
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")
|
||||
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 -> {
|
||||
val settingVo = checkSetting()
|
||||
val intent = Intent()
|
||||
intent.putExtra(KEY_BACK_DESCRIPTION_CONDITION, description)
|
||||
intent.putExtra(KEY_BACK_DATA_CONDITION, Gson().toJson(settingVo))
|
||||
setFragmentResult(TASK_CONDITION_BATTERY, intent)
|
||||
popToBack()
|
||||
@ -135,7 +154,26 @@ class BatteryFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
||||
|
||||
//检查设置
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun checkSetting(): CronSetting {
|
||||
return CronSetting(expression, description)
|
||||
private fun checkSetting(): BatterySetting {
|
||||
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.idormy.sms.forwarder.R
|
||||
import com.idormy.sms.forwarder.core.BaseFragment
|
||||
import com.idormy.sms.forwarder.databinding.FragmentTasksActionSendSmsBinding
|
||||
import com.idormy.sms.forwarder.entity.task.CronSetting
|
||||
import com.idormy.sms.forwarder.databinding.FragmentTasksConditionChargeBinding
|
||||
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_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_CHARGE
|
||||
@ -26,7 +27,7 @@ import com.xuexiang.xui.widget.actionbar.TitleBar
|
||||
|
||||
@Page(name = "Charge")
|
||||
@Suppress("PrivatePropertyName")
|
||||
class ChargeFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.OnClickListener {
|
||||
class ChargeFragment : BaseFragment<FragmentTasksConditionChargeBinding?>(), View.OnClickListener {
|
||||
|
||||
private val TAG: String = ChargeFragment::class.java.simpleName
|
||||
var titleBar: TitleBar? = null
|
||||
@ -36,9 +37,6 @@ class ChargeFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.
|
||||
@AutoWired(name = KEY_EVENT_DATA_CONDITION)
|
||||
var eventData: String? = null
|
||||
|
||||
private var expression = "* * * * * ? *"
|
||||
private var description = "测试描述"
|
||||
|
||||
override fun initArgs() {
|
||||
XRouter.getInstance().inject(this)
|
||||
}
|
||||
@ -46,8 +44,8 @@ class ChargeFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.
|
||||
override fun viewBindingInflate(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup,
|
||||
): FragmentTasksActionSendSmsBinding {
|
||||
return FragmentTasksActionSendSmsBinding.inflate(inflater, container, false)
|
||||
): FragmentTasksConditionChargeBinding {
|
||||
return FragmentTasksConditionChargeBinding.inflate(inflater, container, false)
|
||||
}
|
||||
|
||||
override fun initTitle(): TitleBar? {
|
||||
@ -73,8 +71,10 @@ class ChargeFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.
|
||||
|
||||
Log.d(TAG, "initViews eventData:$eventData")
|
||||
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")
|
||||
binding!!.rgStatus.check(settingVo.getStatusCheckId())
|
||||
binding!!.rgPlugged.check(settingVo.getPluggedCheckId())
|
||||
}
|
||||
}
|
||||
|
||||
@ -121,6 +121,7 @@ class ChargeFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.
|
||||
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_CHARGE, intent)
|
||||
popToBack()
|
||||
@ -134,8 +135,9 @@ class ChargeFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.
|
||||
}
|
||||
|
||||
//检查设置
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun checkSetting(): CronSetting {
|
||||
return CronSetting(expression, description)
|
||||
private fun checkSetting(): ChargeSetting {
|
||||
val statusCheckId = binding!!.rgStatus.checkedRadioButtonId
|
||||
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.entity.task.CronSetting
|
||||
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_CRON
|
||||
@ -201,6 +202,7 @@ class CronFragment : BaseFragment<FragmentTasksConditionCronBinding?>(), View.On
|
||||
R.id.btn_save -> {
|
||||
val settingVo = checkSetting()
|
||||
val intent = Intent()
|
||||
intent.putExtra(KEY_BACK_DESCRIPTION_CONDITION, description)
|
||||
intent.putExtra(KEY_BACK_DATA_CONDITION, Gson().toJson(settingVo))
|
||||
setFragmentResult(TASK_CONDITION_CRON, intent)
|
||||
popToBack()
|
||||
@ -1644,6 +1646,6 @@ class CronFragment : BaseFragment<FragmentTasksConditionCronBinding?>(), View.On
|
||||
options.isNeedSpaceBetweenWords = locale == Locale("zh") || locale == Locale("ja") || locale == Locale("ko")
|
||||
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.idormy.sms.forwarder.R
|
||||
import com.idormy.sms.forwarder.core.BaseFragment
|
||||
import com.idormy.sms.forwarder.databinding.FragmentTasksActionSendSmsBinding
|
||||
import com.idormy.sms.forwarder.entity.task.CronSetting
|
||||
import com.idormy.sms.forwarder.databinding.FragmentTasksConditionNetworkBinding
|
||||
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_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_NETWORK
|
||||
@ -26,7 +27,7 @@ import com.xuexiang.xui.widget.actionbar.TitleBar
|
||||
|
||||
@Page(name = "Network")
|
||||
@Suppress("PrivatePropertyName")
|
||||
class NetworkFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View.OnClickListener {
|
||||
class NetworkFragment : BaseFragment<FragmentTasksConditionNetworkBinding?>(), View.OnClickListener {
|
||||
|
||||
private val TAG: String = NetworkFragment::class.java.simpleName
|
||||
var titleBar: TitleBar? = null
|
||||
@ -36,9 +37,6 @@ class NetworkFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
||||
@AutoWired(name = KEY_EVENT_DATA_CONDITION)
|
||||
var eventData: String? = null
|
||||
|
||||
private var expression = "* * * * * ? *"
|
||||
private var description = "测试描述"
|
||||
|
||||
override fun initArgs() {
|
||||
XRouter.getInstance().inject(this)
|
||||
}
|
||||
@ -46,8 +44,8 @@ class NetworkFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
||||
override fun viewBindingInflate(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup,
|
||||
): FragmentTasksActionSendSmsBinding {
|
||||
return FragmentTasksActionSendSmsBinding.inflate(inflater, container, false)
|
||||
): FragmentTasksConditionNetworkBinding {
|
||||
return FragmentTasksConditionNetworkBinding.inflate(inflater, container, false)
|
||||
}
|
||||
|
||||
override fun initTitle(): TitleBar? {
|
||||
@ -73,8 +71,9 @@ class NetworkFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
||||
|
||||
Log.d(TAG, "initViews eventData:$eventData")
|
||||
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")
|
||||
binding!!.rgNetworkState.check(settingVo.getNetworkStateCheckId())
|
||||
}
|
||||
}
|
||||
|
||||
@ -121,6 +120,7 @@ class NetworkFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
||||
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_NETWORK, intent)
|
||||
popToBack()
|
||||
@ -134,8 +134,8 @@ class NetworkFragment : BaseFragment<FragmentTasksActionSendSmsBinding?>(), View
|
||||
}
|
||||
|
||||
//检查设置
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun checkSetting(): CronSetting {
|
||||
return CronSetting(expression, description)
|
||||
private fun checkSetting(): NetworkSetting {
|
||||
val networkStateCheckId = binding!!.rgNetworkState.checkedRadioButtonId
|
||||
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 java.util.Date
|
||||
|
||||
@Suppress("PrivatePropertyName")
|
||||
@Suppress("PrivatePropertyName", "UNUSED_PARAMETER")
|
||||
class SimStateReceiver : BroadcastReceiver() {
|
||||
|
||||
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_BACK_CODE_CONDITION = 1000
|
||||
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_EVENT_DATA_ACTION = "event_data_action"
|
||||
const val KEY_BACK_CODE_ACTION = 2000
|
||||
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,不可改变
|
||||
const val TASK_CONDITION_CRON = 1000
|
||||
const val TASK_CONDITION_BATTERY = 1001
|
||||
const val TASK_CONDITION_CHARGE = 1002
|
||||
const val TASK_CONDITION_NETWORK = 1003
|
||||
const val TASK_CONDITION_SIM = 1004
|
||||
var TASK_CONDITION_FRAGMENT_LIST = listOf(
|
||||
PageInfo(
|
||||
getString(R.string.task_cron),
|
||||
@ -525,7 +528,14 @@ var TASK_CONDITION_FRAGMENT_LIST = listOf(
|
||||
"com.idormy.sms.forwarder.fragment.condition.NetworkFragment",
|
||||
"{\"\":\"\"}",
|
||||
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"?>
|
||||
<vector android:height="25.0dip" android:width="25.0dip" android:autoMirrored="true" android:viewportWidth="25.0" android:viewportHeight="25.0"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<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: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" />
|
||||
<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" />
|
||||
<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>
|
@ -1,6 +1,19 @@
|
||||
<?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"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<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" />
|
||||
<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" />
|
||||
<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: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>
|
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
|
||||
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" />
|
||||
<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
|
||||
android:scaleX="0.8"
|
||||
android:scaleY="0.8"
|
||||
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>
|
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"?>
|
||||
<vector android:height="28.0dip" android:width="28.0dip" android:viewportWidth="28.0" android:viewportHeight="28.0"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<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: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" />
|
||||
<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="#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>
|
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">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
|
@ -21,7 +21,7 @@
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/senderBarStyle"
|
||||
style="@style/taskBarStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
@ -29,7 +29,15 @@
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
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
|
||||
android:id="@+id/rg_sim_slot"
|
||||
@ -55,7 +63,7 @@
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
style="@style/senderBarStyle"
|
||||
style="@style/taskBarStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
@ -63,7 +71,15 @@
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
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
|
||||
android:id="@+id/et_phone_numbers"
|
||||
@ -80,7 +96,7 @@
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
style="@style/senderBarStyle"
|
||||
style="@style/taskBarStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
@ -88,7 +104,15 @@
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
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
|
||||
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_name">Test Channel</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="rematch">Rematch</string>
|
||||
<string name="from">From: </string>
|
||||
@ -929,12 +930,15 @@
|
||||
<string name="battery_unspecified_failure">Unspecified Failure</string>
|
||||
<string name="battery_cold">Cold</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_voltage">Voltage: %s</string>
|
||||
<string name="battery_temperature">Temperature: %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_plugged">Plugged: %s</string>
|
||||
<string name="battery_plugged_title">Plugged</string>
|
||||
|
||||
<string name="server_history">History</string>
|
||||
<string name="server_test">Login</string>
|
||||
@ -1073,9 +1077,11 @@
|
||||
<string name="net_3g">3G Net</string>
|
||||
<string name="net_4g">4G Net</string>
|
||||
<string name="net_5g">5G Net</string>
|
||||
<string name="net_mobile">Mobile</string>
|
||||
<string name="net_wifi">WiFi</string>
|
||||
<string name="net_ethernet">Ethernet</string>
|
||||
<string name="net_unknown">Unknown</string>
|
||||
<string name="network_state">Network State: %s</string>
|
||||
<string name="wifi_ssid">WiFi SSID</string>
|
||||
|
||||
<string name="enable_location_tag">Enable {{LOCATION}} Tag</string>
|
||||
@ -1104,12 +1110,14 @@
|
||||
<string name="add_action_tips">例如:禁用所有转发通道</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="task_cron">Cron</string>
|
||||
<string name="task_charge">Charge</string>
|
||||
<string name="task_battery">Battery</string>
|
||||
<string name="task_network">Network</string>
|
||||
<string name="task_sim">SIM Status</string>
|
||||
<string name="task_sendsms">Send Sms</string>
|
||||
<string name="task_notification">Notification</string>
|
||||
<string name="task_frpc">Frpc Setting</string>
|
||||
@ -1162,8 +1170,8 @@
|
||||
<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_recent_day">Last day of month recent days</string>
|
||||
<string name="weeks_of_week_1">第</string>
|
||||
<string name="weeks_of_week_2">周的星期</string>
|
||||
<string name="weeks_of_week_1">The</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_1">The last week</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="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>
|
||||
|
@ -443,7 +443,7 @@
|
||||
<string name="invalid_server_ip">请输入服务端IP</string>
|
||||
<string name="on_wireless_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="failed_to_get_ip">获取IP失败</string>
|
||||
<string name="sms">短 信</string>
|
||||
@ -583,6 +583,7 @@
|
||||
<string name="test_sender_name">测试通道</string>
|
||||
<string name="test_sim_info" tools:ignore="Typos">SIM1_测试运营商_18888888888</string>
|
||||
<string name="keep_reminding">持续提醒</string>
|
||||
<string name="keep_reminding_tips">超过预设值之后,每次电量变化继续触发</string>
|
||||
<string name="resend">重发消息</string>
|
||||
<string name="rematch">重新匹配规则</string>
|
||||
<string name="from">来源:</string>
|
||||
@ -930,12 +931,15 @@
|
||||
<string name="battery_unspecified_failure">未知错误</string>
|
||||
<string name="battery_cold">温度过低</string>
|
||||
<string name="battery_level">剩余电量:%s</string>
|
||||
<string name="battery_level_title">剩余电量</string>
|
||||
<string name="battery_scale">充满电量:%s</string>
|
||||
<string name="battery_voltage">当前电压:%s</string>
|
||||
<string name="battery_temperature">当前温度:%s</string>
|
||||
<string name="battery_status">电池状态:%s</string>
|
||||
<string name="battery_status_title">电池状态</string>
|
||||
<string name="battery_health">健康度:%s</string>
|
||||
<string name="battery_plugged">充电器:%s</string>
|
||||
<string name="battery_plugged_title">充电器</string>
|
||||
|
||||
<string name="server_history">历史记录</string>
|
||||
<string name="server_test">登录服务</string>
|
||||
@ -1074,9 +1078,11 @@
|
||||
<string name="net_3g">3G网络</string>
|
||||
<string name="net_4g">4G网络</string>
|
||||
<string name="net_5g">5G网络</string>
|
||||
<string name="net_mobile">移动网络</string>
|
||||
<string name="net_wifi">WiFi</string>
|
||||
<string name="net_ethernet">有线网络</string>
|
||||
<string name="net_unknown">未知网络</string>
|
||||
<string name="network_state">网络状态:%s</string>
|
||||
<string name="wifi_ssid">WiFi名称</string>
|
||||
|
||||
<string name="enable_location_tag">启用 {{定位信息}} 标签</string>
|
||||
@ -1105,12 +1111,14 @@
|
||||
<string name="add_action_tips">例如:禁用所有转发通道</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="task_cron">定时任务</string>
|
||||
<string name="task_charge">充电状态</string>
|
||||
<string name="task_battery">电量使用</string>
|
||||
<string name="task_network">网络状态</string>
|
||||
<string name="task_sim">SIM卡状态</string>
|
||||
<string name="task_sendsms">发送短信</string>
|
||||
<string name="task_notification">通道推送</string>
|
||||
<string name="task_frpc">设置 Frpc</string>
|
||||
@ -1173,4 +1181,15 @@
|
||||
<string name="next_execution_times">最近 %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>
|
||||
|
@ -229,7 +229,7 @@
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">wrap_content</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>
|
||||
</style>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user