From 336df5008dcecf08aa9a0414266c0d80c24d89c2 Mon Sep 17 00:00:00 2001 From: pppscn <35696959@qq.com> Date: Tue, 18 Jan 2022 14:40:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=8F=91=E9=80=81?= =?UTF-8?q?=E9=80=9A=E9=81=93=E6=96=B0=E5=A2=9E=E6=98=AF=E5=90=A6=E5=90=AF?= =?UTF-8?q?=E7=94=A8=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../idormy/sms/forwarder/SenderActivity.java | 153 ++++++++++++------ .../sms/forwarder/adapter/SenderAdapter.java | 3 + .../idormy/sms/forwarder/model/RuleModel.java | 1 + .../idormy/sms/forwarder/model/RuleTable.java | 1 + .../sms/forwarder/model/SenderModel.java | 15 +- .../idormy/sms/forwarder/sender/SendUtil.java | 10 +- .../idormy/sms/forwarder/utils/DbHelper.java | 13 +- app/src/main/res/drawable/ic_round_pause.xml | 5 + app/src/main/res/drawable/ic_round_play.xml | 5 + .../res/layout/alert_dialog_setview_bark.xml | 12 +- .../layout/alert_dialog_setview_dingding.xml | 19 ++- .../res/layout/alert_dialog_setview_email.xml | 12 +- .../layout/alert_dialog_setview_feishu.xml | 12 +- .../layout/alert_dialog_setview_gotify.xml | 12 +- .../layout/alert_dialog_setview_pushplus.xml | 12 +- .../layout/alert_dialog_setview_qywxapp.xml | 13 +- .../alert_dialog_setview_qywxgrouprobot.xml | 12 +- .../alert_dialog_setview_serverchan.xml | 12 +- .../res/layout/alert_dialog_setview_sms.xml | 12 +- .../layout/alert_dialog_setview_telegram.xml | 10 ++ .../layout/alert_dialog_setview_webnotify.xml | 12 +- app/src/main/res/layout/item_sender.xml | 33 +++- app/src/main/res/values-en/strings.xml | 5 +- app/src/main/res/values/strings.xml | 5 +- 24 files changed, 324 insertions(+), 75 deletions(-) create mode 100644 app/src/main/res/drawable/ic_round_pause.xml create mode 100644 app/src/main/res/drawable/ic_round_play.xml diff --git a/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java b/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java index 8c6f52f7..8f12091b 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java +++ b/app/src/main/java/com/idormy/sms/forwarder/SenderActivity.java @@ -1,5 +1,6 @@ package com.idormy.sms.forwarder; +import static com.idormy.sms.forwarder.model.SenderModel.STATUS_OFF; import static com.idormy.sms.forwarder.model.SenderModel.STATUS_ON; import static com.idormy.sms.forwarder.model.SenderModel.TYPE_BARK; import static com.idormy.sms.forwarder.model.SenderModel.TYPE_DINGDING; @@ -309,8 +310,11 @@ public class SenderActivity extends AppCompatActivity { View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_dingding, null); final EditText editTextDingdingName = view1.findViewById(R.id.editTextDingdingName); - if (senderModel != null) + @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchDingdingEnable = view1.findViewById(R.id.switchDingdingEnable); + if (senderModel != null) { editTextDingdingName.setText(senderModel.getName()); + switchDingdingEnable.setChecked(senderModel.getStatusChecked()); + } final ClearEditText editTextDingdingToken = view1.findViewById(R.id.editTextDingdingToken); if (dingDingSettingVo != null) editTextDingdingToken.setText(dingDingSettingVo.getToken()); @@ -339,7 +343,7 @@ public class SenderActivity extends AppCompatActivity { SenderModel newSenderModel = new SenderModel(); newSenderModel.setName(editTextDingdingName.getText().toString().trim()); newSenderModel.setType(TYPE_DINGDING); - newSenderModel.setStatus(STATUS_ON); + newSenderModel.setStatus(switchDingdingEnable.isChecked() ? STATUS_ON : STATUS_OFF); DingDingSettingVo dingDingSettingVoNew = new DingDingSettingVo( editTextDingdingToken.getText().toString().trim(), editTextDingdingSecret.getText().toString().trim(), @@ -352,7 +356,7 @@ public class SenderActivity extends AppCompatActivity { } else { senderModel.setName(editTextDingdingName.getText().toString().trim()); senderModel.setType(TYPE_DINGDING); - senderModel.setStatus(STATUS_ON); + senderModel.setStatus(switchDingdingEnable.isChecked() ? STATUS_ON : STATUS_OFF); DingDingSettingVo dingDingSettingVoNew = new DingDingSettingVo( editTextDingdingToken.getText().toString().trim(), editTextDingdingSecret.getText().toString().trim(), @@ -411,7 +415,11 @@ public class SenderActivity extends AppCompatActivity { View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_email, null); final EditText editTextEmailName = view1.findViewById(R.id.editTextEmailName); - if (senderModel != null) editTextEmailName.setText(senderModel.getName()); + @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchEmailEnable = view1.findViewById(R.id.switchEmailEnable); + if (senderModel != null) { + editTextEmailName.setText(senderModel.getName()); + switchEmailEnable.setChecked(senderModel.getStatusChecked()); + } final EditText editTextEmailHost = view1.findViewById(R.id.editTextEmailHost); final EditText editTextEmailPort = view1.findViewById(R.id.editTextEmailPort); @@ -469,7 +477,7 @@ public class SenderActivity extends AppCompatActivity { SenderModel newSenderModel = new SenderModel(); newSenderModel.setName(editTextEmailName.getText().toString().trim()); newSenderModel.setType(TYPE_EMAIL); - newSenderModel.setStatus(STATUS_ON); + newSenderModel.setStatus(switchEmailEnable.isChecked() ? STATUS_ON : STATUS_OFF); newSenderModel.setJsonSetting(JSON.toJSONString(emailSettingVoNew)); SenderUtil.addSender(newSenderModel); initSenders(); @@ -477,7 +485,7 @@ public class SenderActivity extends AppCompatActivity { } else { senderModel.setName(editTextEmailName.getText().toString().trim()); senderModel.setType(TYPE_EMAIL); - senderModel.setStatus(STATUS_ON); + senderModel.setStatus(switchEmailEnable.isChecked() ? STATUS_ON : STATUS_OFF); senderModel.setJsonSetting(JSON.toJSONString(emailSettingVoNew)); SenderUtil.updateSender(senderModel); initSenders(); @@ -567,7 +575,12 @@ public class SenderActivity extends AppCompatActivity { View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_bark, null); final EditText editTextBarkName = view1.findViewById(R.id.editTextBarkName); - if (senderModel != null) editTextBarkName.setText(senderModel.getName()); + @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchBarkEnable = view1.findViewById(R.id.switchBarkEnable); + if (senderModel != null) { + editTextBarkName.setText(senderModel.getName()); + switchBarkEnable.setChecked(senderModel.getStatusChecked()); + } + final ClearEditText editTextBarkServer = view1.findViewById(R.id.editTextBarkServer); if (barkSettingVo != null) editTextBarkServer.setText(barkSettingVo.getServer()); final EditText editTextBarkIcon = view1.findViewById(R.id.editTextBarkIcon); @@ -589,7 +602,7 @@ public class SenderActivity extends AppCompatActivity { SenderModel newSenderModel = new SenderModel(); newSenderModel.setName(editTextBarkName.getText().toString().trim()); newSenderModel.setType(TYPE_BARK); - newSenderModel.setStatus(STATUS_ON); + newSenderModel.setStatus(switchBarkEnable.isChecked() ? STATUS_ON : STATUS_OFF); BarkSettingVo barkSettingVoNew = new BarkSettingVo( editTextBarkServer.getText().toString().trim(), editTextBarkIcon.getText().toString().trim() @@ -601,7 +614,7 @@ public class SenderActivity extends AppCompatActivity { } else { senderModel.setName(editTextBarkName.getText().toString().trim()); senderModel.setType(TYPE_BARK); - senderModel.setStatus(STATUS_ON); + senderModel.setStatus(switchBarkEnable.isChecked() ? STATUS_ON : STATUS_OFF); BarkSettingVo barkSettingVoNew = new BarkSettingVo( editTextBarkServer.getText().toString().trim(), editTextBarkIcon.getText().toString().trim() @@ -654,7 +667,12 @@ public class SenderActivity extends AppCompatActivity { View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_serverchan, null); final EditText editTextServerChanName = view1.findViewById(R.id.editTextServerChanName); - if (senderModel != null) editTextServerChanName.setText(senderModel.getName()); + @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchServerChanEnable = view1.findViewById(R.id.switchServerChanEnable); + if (senderModel != null) { + editTextServerChanName.setText(senderModel.getName()); + switchServerChanEnable.setChecked(senderModel.getStatusChecked()); + } + final ClearEditText editTextServerChanSendKey = view1.findViewById(R.id.editTextServerChanSendKey); if (serverchanSettingVo != null) editTextServerChanSendKey.setText(serverchanSettingVo.getSendKey()); @@ -675,7 +693,7 @@ public class SenderActivity extends AppCompatActivity { SenderModel newSenderModel = new SenderModel(); newSenderModel.setName(editTextServerChanName.getText().toString().trim()); newSenderModel.setType(TYPE_SERVER_CHAN); - newSenderModel.setStatus(STATUS_ON); + newSenderModel.setStatus(switchServerChanEnable.isChecked() ? STATUS_ON : STATUS_OFF); ServerChanSettingVo serverChanSettingVoNew = new ServerChanSettingVo( editTextServerChanSendKey.getText().toString().trim() ); @@ -686,7 +704,7 @@ public class SenderActivity extends AppCompatActivity { } else { senderModel.setName(editTextServerChanName.getText().toString().trim()); senderModel.setType(TYPE_SERVER_CHAN); - senderModel.setStatus(STATUS_ON); + senderModel.setStatus(switchServerChanEnable.isChecked() ? STATUS_ON : STATUS_OFF); ServerChanSettingVo serverChanSettingVoNew = new ServerChanSettingVo( editTextServerChanSendKey.getText().toString().trim() ); @@ -738,15 +756,22 @@ public class SenderActivity extends AppCompatActivity { View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_webnotify, null); final EditText editTextWebNotifyName = view1.findViewById(R.id.editTextWebNotifyName); - if (senderModel != null) editTextWebNotifyName.setText(senderModel.getName()); + @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchWebNotifyEnable = view1.findViewById(R.id.switchWebNotifyEnable); + if (senderModel != null) { + editTextWebNotifyName.setText(senderModel.getName()); + switchWebNotifyEnable.setChecked(senderModel.getStatusChecked()); + } + final EditText editTextWebNotifyWebServer = view1.findViewById(R.id.editTextWebNotifyWebServer); - if (webNotifySettingVo != null) editTextWebNotifyWebServer.setText(webNotifySettingVo.getWebServer()); final EditText editTextWebNotifyWebParams = view1.findViewById(R.id.editTextWebNotifyWebParams); - if (webNotifySettingVo != null) editTextWebNotifyWebParams.setText(webNotifySettingVo.getWebParams()); final ClearEditText editTextWebNotifySecret = view1.findViewById(R.id.editTextWebNotifySecret); - if (webNotifySettingVo != null) editTextWebNotifySecret.setText(webNotifySettingVo.getSecret()); final RadioGroup radioGroupWebNotifyMethod = view1.findViewById(R.id.radioGroupWebNotifyMethod); - if (webNotifySettingVo != null) radioGroupWebNotifyMethod.check(webNotifySettingVo.getWebNotifyMethodCheckId()); + if (webNotifySettingVo != null) { + editTextWebNotifyWebServer.setText(webNotifySettingVo.getWebServer()); + editTextWebNotifyWebParams.setText(webNotifySettingVo.getWebParams()); + editTextWebNotifySecret.setText(webNotifySettingVo.getSecret()); + radioGroupWebNotifyMethod.check(webNotifySettingVo.getWebNotifyMethodCheckId()); + } Button buttonWebNotifyOk = view1.findViewById(R.id.buttonWebNotifyOk); Button buttonWebNotifyDel = view1.findViewById(R.id.buttonWebNotifyDel); @@ -769,13 +794,13 @@ public class SenderActivity extends AppCompatActivity { SenderModel newSenderModel = new SenderModel(); newSenderModel.setName(editTextWebNotifyName.getText().toString().trim()); newSenderModel.setType(TYPE_WEB_NOTIFY); - newSenderModel.setStatus(STATUS_ON); + newSenderModel.setStatus(switchWebNotifyEnable.isChecked() ? STATUS_ON : STATUS_OFF); newSenderModel.setJsonSetting(JSON.toJSONString(webNotifySettingVoNew)); SenderUtil.addSender(newSenderModel); } else { senderModel.setName(editTextWebNotifyName.getText().toString().trim()); senderModel.setType(TYPE_WEB_NOTIFY); - senderModel.setStatus(STATUS_ON); + senderModel.setStatus(switchWebNotifyEnable.isChecked() ? STATUS_ON : STATUS_OFF); senderModel.setJsonSetting(JSON.toJSONString(webNotifySettingVoNew)); SenderUtil.updateSender(senderModel); } @@ -825,10 +850,16 @@ public class SenderActivity extends AppCompatActivity { View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_qywxgrouprobot, null); final EditText editTextQYWXGroupRobotName = view1.findViewById(R.id.editTextQYWXGroupRobotName); - if (senderModel != null) editTextQYWXGroupRobotName.setText(senderModel.getName()); + @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchQYWXGroupRobotEnable = view1.findViewById(R.id.switchQYWXGroupRobotEnable); + if (senderModel != null) { + editTextQYWXGroupRobotName.setText(senderModel.getName()); + switchQYWXGroupRobotEnable.setChecked(senderModel.getStatusChecked()); + } + final ClearEditText editTextQYWXGroupRobotWebHook = view1.findViewById(R.id.editTextQYWXGroupRobotWebHook); - if (qywxGroupRobotSettingVo != null) + if (qywxGroupRobotSettingVo != null) { editTextQYWXGroupRobotWebHook.setText(qywxGroupRobotSettingVo.getWebHook()); + } Button buttonQyWxGroupRobotOk = view1.findViewById(R.id.buttonQyWxGroupRobotOk); Button buttonQyWxGroupRobotDel = view1.findViewById(R.id.buttonQyWxGroupRobotDel); @@ -846,7 +877,7 @@ public class SenderActivity extends AppCompatActivity { SenderModel newSenderModel = new SenderModel(); newSenderModel.setName(editTextQYWXGroupRobotName.getText().toString().trim()); newSenderModel.setType(TYPE_QYWX_GROUP_ROBOT); - newSenderModel.setStatus(STATUS_ON); + newSenderModel.setStatus(switchQYWXGroupRobotEnable.isChecked() ? STATUS_ON : STATUS_OFF); QYWXGroupRobotSettingVo qywxGroupRobotSettingVoNew = new QYWXGroupRobotSettingVo( editTextQYWXGroupRobotWebHook.getText().toString().trim() ); @@ -857,7 +888,7 @@ public class SenderActivity extends AppCompatActivity { } else { senderModel.setName(editTextQYWXGroupRobotName.getText().toString().trim()); senderModel.setType(TYPE_QYWX_GROUP_ROBOT); - senderModel.setStatus(STATUS_ON); + senderModel.setStatus(switchQYWXGroupRobotEnable.isChecked() ? STATUS_ON : STATUS_OFF); QYWXGroupRobotSettingVo qywxGroupRobotSettingVoNew = new QYWXGroupRobotSettingVo( editTextQYWXGroupRobotWebHook.getText().toString().trim() ); @@ -908,8 +939,12 @@ public class SenderActivity extends AppCompatActivity { View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_qywxapp, null); final EditText editTextQYWXAppName = view1.findViewById(R.id.editTextQYWXAppName); - if (senderModel != null) + @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchQYWXAppEnable = view1.findViewById(R.id.switchQYWXAppEnable); + if (senderModel != null) { editTextQYWXAppName.setText(senderModel.getName()); + switchQYWXAppEnable.setChecked(senderModel.getStatusChecked()); + } + final EditText editTextQYWXAppCorpID = view1.findViewById(R.id.editTextQYWXAppCorpID); final EditText editTextQYWXAppAgentID = view1.findViewById(R.id.editTextQYWXAppAgentID); final ClearEditText editTextQYWXAppSecret = view1.findViewById(R.id.editTextQYWXAppSecret); @@ -957,7 +992,7 @@ public class SenderActivity extends AppCompatActivity { SenderModel newSenderModel = new SenderModel(); newSenderModel.setName(editTextQYWXAppName.getText().toString().trim()); newSenderModel.setType(TYPE_QYWX_APP); - newSenderModel.setStatus(STATUS_ON); + newSenderModel.setStatus(switchQYWXAppEnable.isChecked() ? STATUS_ON : STATUS_OFF); QYWXAppSettingVo QYWXAppSettingVoNew = new QYWXAppSettingVo( editTextQYWXAppCorpID.getText().toString().trim(), editTextQYWXAppAgentID.getText().toString().trim(), @@ -971,7 +1006,7 @@ public class SenderActivity extends AppCompatActivity { } else { senderModel.setName(editTextQYWXAppName.getText().toString().trim()); senderModel.setType(TYPE_QYWX_APP); - senderModel.setStatus(STATUS_ON); + senderModel.setStatus(switchQYWXAppEnable.isChecked() ? STATUS_ON : STATUS_OFF); QYWXAppSettingVo QYWXAppSettingVoNew = new QYWXAppSettingVo( editTextQYWXAppCorpID.getText().toString().trim(), editTextQYWXAppAgentID.getText().toString().trim(), @@ -1031,7 +1066,11 @@ public class SenderActivity extends AppCompatActivity { View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_telegram, null); final EditText editTextTelegramName = view1.findViewById(R.id.editTextTelegramName); - if (senderModel != null) editTextTelegramName.setText(senderModel.getName()); + @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchTelegramEnable = view1.findViewById(R.id.switchTelegramEnable); + if (senderModel != null) { + editTextTelegramName.setText(senderModel.getName()); + switchTelegramEnable.setChecked(senderModel.getStatusChecked()); + } final ClearEditText editTextTelegramApiToken = view1.findViewById(R.id.editTextTelegramApiToken); final EditText editTextTelegramChatId = view1.findViewById(R.id.editTextTelegramChatId); @@ -1108,7 +1147,7 @@ public class SenderActivity extends AppCompatActivity { SenderModel newSenderModel = new SenderModel(); newSenderModel.setName(editTextTelegramName.getText().toString().trim()); newSenderModel.setType(TYPE_TELEGRAM); - newSenderModel.setStatus(STATUS_ON); + newSenderModel.setStatus(switchTelegramEnable.isChecked() ? STATUS_ON : STATUS_OFF); TelegramSettingVo telegramSettingVoNew = new TelegramSettingVo( editTextTelegramApiToken.getText().toString().trim(), editTextTelegramChatId.getText().toString().trim(), @@ -1128,7 +1167,7 @@ public class SenderActivity extends AppCompatActivity { } else { senderModel.setName(editTextTelegramName.getText().toString().trim()); senderModel.setType(TYPE_TELEGRAM); - senderModel.setStatus(STATUS_ON); + senderModel.setStatus(switchTelegramEnable.isChecked() ? STATUS_ON : STATUS_OFF); TelegramSettingVo telegramSettingVoNew = new TelegramSettingVo( editTextTelegramApiToken.getText().toString().trim(), editTextTelegramChatId.getText().toString().trim(), @@ -1200,13 +1239,20 @@ public class SenderActivity extends AppCompatActivity { View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_sms, null); final EditText editTextSmsName = view1.findViewById(R.id.editTextSmsName); - if (senderModel != null) editTextSmsName.setText(senderModel.getName()); + @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchSmsEnable = view1.findViewById(R.id.switchSmsEnable); + if (senderModel != null) { + editTextSmsName.setText(senderModel.getName()); + switchSmsEnable.setChecked(senderModel.getStatusChecked()); + } + final RadioGroup radioGroupSmsSimSlot = view1.findViewById(R.id.radioGroupSmsSimSlot); - if (smsSettingVo != null) radioGroupSmsSimSlot.check(smsSettingVo.getSmsSimSlotCheckId()); final EditText editTextSmsMobiles = view1.findViewById(R.id.editTextSmsMobiles); - if (smsSettingVo != null) editTextSmsMobiles.setText(smsSettingVo.getMobiles()); @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchSmsOnlyNoNetwork = view1.findViewById(R.id.switchSmsOnlyNoNetwork); - if (smsSettingVo != null) switchSmsOnlyNoNetwork.setChecked(smsSettingVo.getOnlyNoNetwork()); + if (smsSettingVo != null) { + radioGroupSmsSimSlot.check(smsSettingVo.getSmsSimSlotCheckId()); + editTextSmsMobiles.setText(smsSettingVo.getMobiles()); + switchSmsOnlyNoNetwork.setChecked(smsSettingVo.getOnlyNoNetwork()); + } Button buttonSmsOk = view1.findViewById(R.id.buttonSmsOk); Button buttonSmsDel = view1.findViewById(R.id.buttonSmsDel); @@ -1224,7 +1270,7 @@ public class SenderActivity extends AppCompatActivity { SenderModel newSenderModel = new SenderModel(); newSenderModel.setName(editTextSmsName.getText().toString().trim()); newSenderModel.setType(TYPE_SMS); - newSenderModel.setStatus(STATUS_ON); + newSenderModel.setStatus(switchSmsEnable.isChecked() ? STATUS_ON : STATUS_OFF); SmsSettingVo smsSettingVoNew = new SmsSettingVo( newSenderModel.getSmsSimSlotId(radioGroupSmsSimSlot.getCheckedRadioButtonId()), editTextSmsMobiles.getText().toString().trim(), @@ -1237,7 +1283,7 @@ public class SenderActivity extends AppCompatActivity { } else { senderModel.setName(editTextSmsName.getText().toString().trim()); senderModel.setType(TYPE_SMS); - senderModel.setStatus(STATUS_ON); + senderModel.setStatus(switchSmsEnable.isChecked() ? STATUS_ON : STATUS_OFF); SmsSettingVo smsSettingVoNew = new SmsSettingVo( senderModel.getSmsSimSlotId(radioGroupSmsSimSlot.getCheckedRadioButtonId()), editTextSmsMobiles.getText().toString().trim(), @@ -1295,14 +1341,18 @@ public class SenderActivity extends AppCompatActivity { View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_feishu, null); final EditText editTextFeishuName = view1.findViewById(R.id.editTextFeishuName); - if (senderModel != null) + @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchFeishuEnable = view1.findViewById(R.id.switchFeishuEnable); + if (senderModel != null) { editTextFeishuName.setText(senderModel.getName()); + switchFeishuEnable.setChecked(senderModel.getStatusChecked()); + } + final EditText editTextFeishuWebhook = view1.findViewById(R.id.editTextFeishuWebhook); - if (feiShuSettingVo != null) - editTextFeishuWebhook.setText(feiShuSettingVo.getWebhook()); final ClearEditText editTextFeishuSecret = view1.findViewById(R.id.editTextFeishuSecret); - if (feiShuSettingVo != null) + if (feiShuSettingVo != null) { + editTextFeishuWebhook.setText(feiShuSettingVo.getWebhook()); editTextFeishuSecret.setText(feiShuSettingVo.getSecret()); + } Button buttonFeishuOk = view1.findViewById(R.id.buttonFeishuOk); Button buttonFeishuDel = view1.findViewById(R.id.buttonFeishuDel); @@ -1319,7 +1369,7 @@ public class SenderActivity extends AppCompatActivity { SenderModel newSenderModel = new SenderModel(); newSenderModel.setName(editTextFeishuName.getText().toString().trim()); newSenderModel.setType(TYPE_FEISHU); - newSenderModel.setStatus(STATUS_ON); + newSenderModel.setStatus(switchFeishuEnable.isChecked() ? STATUS_ON : STATUS_OFF); FeiShuSettingVo feiShuSettingVoNew = new FeiShuSettingVo( editTextFeishuWebhook.getText().toString().trim(), editTextFeishuSecret.getText().toString().trim()); @@ -1330,7 +1380,7 @@ public class SenderActivity extends AppCompatActivity { } else { senderModel.setName(editTextFeishuName.getText().toString().trim()); senderModel.setType(TYPE_FEISHU); - senderModel.setStatus(STATUS_ON); + senderModel.setStatus(switchFeishuEnable.isChecked() ? STATUS_ON : STATUS_OFF); FeiShuSettingVo feiShuSettingVoNew = new FeiShuSettingVo( editTextFeishuWebhook.getText().toString().trim(), editTextFeishuSecret.getText().toString().trim()); @@ -1382,6 +1432,12 @@ public class SenderActivity extends AppCompatActivity { View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_pushplus, null); final EditText editTextPushPlusName = view1.findViewById(R.id.editTextPushPlusName); + @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchPushPlusEnable = view1.findViewById(R.id.switchPushPlusEnable); + if (senderModel != null) { + editTextPushPlusName.setText(senderModel.getName()); + switchPushPlusEnable.setChecked(senderModel.getStatusChecked()); + } + final ClearEditText editTextPushPlusToken = view1.findViewById(R.id.editTextPushPlusToken); final EditText editTextPushPlusTopic = view1.findViewById(R.id.editTextPushPlusTopic); final EditText editTextPushPlusTemplate = view1.findViewById(R.id.editTextPushPlusTemplate); @@ -1391,7 +1447,6 @@ public class SenderActivity extends AppCompatActivity { final EditText editTextPushPlusValidTime = view1.findViewById(R.id.editTextPushPlusValidTime); if (pushPlusSettingVo != null) { - editTextPushPlusName.setText(senderModel.getName()); editTextPushPlusToken.setText(pushPlusSettingVo.getToken()); editTextPushPlusTopic.setText(pushPlusSettingVo.getTopic()); editTextPushPlusTemplate.setText(pushPlusSettingVo.getTemplate()); @@ -1416,7 +1471,7 @@ public class SenderActivity extends AppCompatActivity { SenderModel newSenderModel = new SenderModel(); newSenderModel.setName(editTextPushPlusName.getText().toString().trim()); newSenderModel.setType(TYPE_PUSHPLUS); - newSenderModel.setStatus(STATUS_ON); + newSenderModel.setStatus(switchPushPlusEnable.isChecked() ? STATUS_ON : STATUS_OFF); PushPlusSettingVo pushPlusSettingVoNew = new PushPlusSettingVo( editTextPushPlusToken.getText().toString().trim(), editTextPushPlusTopic.getText().toString().trim(), @@ -1433,7 +1488,7 @@ public class SenderActivity extends AppCompatActivity { } else { senderModel.setName(editTextPushPlusName.getText().toString()); senderModel.setType(TYPE_PUSHPLUS); - senderModel.setStatus(STATUS_ON); + senderModel.setStatus(switchPushPlusEnable.isChecked() ? STATUS_ON : STATUS_OFF); PushPlusSettingVo pushPlusSettingVoNew = new PushPlusSettingVo( editTextPushPlusToken.getText().toString().trim(), editTextPushPlusTopic.getText().toString().trim(), @@ -1501,7 +1556,11 @@ public class SenderActivity extends AppCompatActivity { View view1 = View.inflate(SenderActivity.this, R.layout.alert_dialog_setview_gotify, null); final EditText editTextGotifyName = view1.findViewById(R.id.editTextGotifyName); - if (senderModel != null) editTextGotifyName.setText(senderModel.getName()); + @SuppressLint("UseSwitchCompatOrMaterialCode") final Switch switchGotifyEnable = view1.findViewById(R.id.switchGotifyEnable); + if (senderModel != null) { + editTextGotifyName.setText(senderModel.getName()); + switchGotifyEnable.setChecked(senderModel.getStatusChecked()); + } final ClearEditText editTextGotifyWebServer = view1.findViewById(R.id.editTextGotifyWebServer); final EditText editTextGotifyTitle = view1.findViewById(R.id.editTextGotifyTitle); @@ -1540,7 +1599,7 @@ public class SenderActivity extends AppCompatActivity { SenderModel newSenderModel = new SenderModel(); newSenderModel.setName(editTextGotifyName.getText().toString().trim()); newSenderModel.setType(TYPE_GOTIFY); - newSenderModel.setStatus(STATUS_ON); + newSenderModel.setStatus(switchGotifyEnable.isChecked() ? STATUS_ON : STATUS_OFF); newSenderModel.setJsonSetting(JSON.toJSONString(gotifySettingVoNew)); SenderUtil.addSender(newSenderModel); initSenders(); @@ -1548,7 +1607,7 @@ public class SenderActivity extends AppCompatActivity { } else { senderModel.setName(editTextGotifyName.getText().toString().trim()); senderModel.setType(TYPE_GOTIFY); - senderModel.setStatus(STATUS_ON); + senderModel.setStatus(switchGotifyEnable.isChecked() ? STATUS_ON : STATUS_OFF); senderModel.setJsonSetting(JSON.toJSONString(gotifySettingVoNew)); SenderUtil.updateSender(senderModel); initSenders(); diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/SenderAdapter.java b/app/src/main/java/com/idormy/sms/forwarder/adapter/SenderAdapter.java index 6cf1ecc8..cee01407 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/SenderAdapter.java +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/SenderAdapter.java @@ -60,6 +60,7 @@ public class SenderAdapter extends ArrayAdapter { // 避免每次调用getView()时都要重新获取控件实例 viewHolder = new ViewHolder(); viewHolder.senderImage = view.findViewById(R.id.sender_image); + viewHolder.senderStatus = view.findViewById(R.id.sender_status); viewHolder.senderName = view.findViewById(R.id.sender_name); // 将ViewHolder存储在View中(即将控件的实例存储在其中) @@ -72,6 +73,7 @@ public class SenderAdapter extends ArrayAdapter { // 获取控件实例,并调用set...方法使其显示出来 if (senderModel != null) { viewHolder.senderImage.setImageResource(senderModel.getImageId()); + viewHolder.senderStatus.setImageResource(senderModel.getStatusImageId()); viewHolder.senderName.setText(senderModel.getName()); } @@ -123,6 +125,7 @@ public class SenderAdapter extends ArrayAdapter { // 定义一个内部类,用于对控件的实例进行缓存 static class ViewHolder { ImageView senderImage; + ImageView senderStatus; TextView senderName; } diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/RuleModel.java b/app/src/main/java/com/idormy/sms/forwarder/model/RuleModel.java index 9c640394..69395194 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/model/RuleModel.java +++ b/app/src/main/java/com/idormy/sms/forwarder/model/RuleModel.java @@ -85,6 +85,7 @@ public class RuleModel { private String smsTemplate; private boolean switchRegexReplace; private String regexReplace; + private int status; public static String getRuleMatch(String filed, String check, String value, String simSlot) { String SimStr = SIM_SLOT_MAP.get(simSlot) + "卡 "; diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/RuleTable.java b/app/src/main/java/com/idormy/sms/forwarder/model/RuleTable.java index 0046066e..356a7f3b 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/model/RuleTable.java +++ b/app/src/main/java/com/idormy/sms/forwarder/model/RuleTable.java @@ -20,5 +20,6 @@ public final class RuleTable { public static final String COLUMN_NAME_SIM_SLOT = "sim_slot"; public static final String COLUMN_SMS_TEMPLATE = "sms_template"; public static final String COLUMN_REGEX_REPLACE = "regex_replace"; + public static final String COLUMN_NAME_STATUS = "status"; } } diff --git a/app/src/main/java/com/idormy/sms/forwarder/model/SenderModel.java b/app/src/main/java/com/idormy/sms/forwarder/model/SenderModel.java index da0e38ae..afc4b55a 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/model/SenderModel.java +++ b/app/src/main/java/com/idormy/sms/forwarder/model/SenderModel.java @@ -97,7 +97,6 @@ public class SenderModel { case (TYPE_SMS): default: return R.mipmap.sms; - } } @@ -111,6 +110,20 @@ public class SenderModel { } } + public int getStatusImageId() { + switch (status) { + case (STATUS_OFF): + return R.drawable.ic_round_pause; + case (STATUS_ON): + default: + return R.drawable.ic_round_play; + } + } + + public boolean getStatusChecked() { + return !(status == STATUS_OFF); + } + @NonNull @Override public String toString() { diff --git a/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java b/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java index e7cc7724..c8529ee5 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java +++ b/app/src/main/java/com/idormy/sms/forwarder/sender/SendUtil.java @@ -1,5 +1,6 @@ package com.idormy.sms.forwarder.sender; +import static com.idormy.sms.forwarder.model.SenderModel.STATUS_OFF; import static com.idormy.sms.forwarder.model.SenderModel.TYPE_BARK; import static com.idormy.sms.forwarder.model.SenderModel.TYPE_DINGDING; import static com.idormy.sms.forwarder.model.SenderModel.TYPE_EMAIL; @@ -166,7 +167,14 @@ public class SendUtil { public static void senderSendMsg(Handler handError, SmsVo smsVo, SenderModel senderModel, long logId, String smsTemplate, String regexReplace) { - Log.i(TAG, "senderSendMsg smsVo:" + smsVo + "senderModel:" + senderModel); + Log.i(TAG, "senderSendMsg smsVo:" + smsVo.toString() + "senderModel:" + senderModel.toString()); + + if (senderModel.getStatus() == STATUS_OFF) { + LogUtil.updateLog(logId, 0, "发送通道已被禁用!"); + Log.i(TAG, "发送通道已被禁用!"); + return; + } + switch (senderModel.getType()) { case TYPE_DINGDING: //try phrase json setting diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/DbHelper.java b/app/src/main/java/com/idormy/sms/forwarder/utils/DbHelper.java index 30f83acc..25d1316d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/DbHelper.java +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/DbHelper.java @@ -16,7 +16,7 @@ import java.util.List; public class DbHelper extends SQLiteOpenHelper { // If you change the database schema, you must increment the database version. public static final String TAG = "DbHelper"; - public static final int DATABASE_VERSION = 8; + public static final int DATABASE_VERSION = 9; public static final String DATABASE_NAME = "sms_forwarder.db"; private static final List SQL_CREATE_ENTRIES = @@ -41,12 +41,13 @@ public class DbHelper extends SQLiteOpenHelper { RuleTable.RuleEntry.COLUMN_NAME_TIME + " TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP," + RuleTable.RuleEntry.COLUMN_SMS_TEMPLATE + " TEXT NOT NULL DEFAULT ''," + RuleTable.RuleEntry.COLUMN_REGEX_REPLACE + " TEXT NOT NULL DEFAULT ''," + + RuleTable.RuleEntry.COLUMN_NAME_STATUS + " INTEGER NOT NULL DEFAULT 1," + RuleTable.RuleEntry.COLUMN_NAME_SIM_SLOT + " TEXT NOT NULL DEFAULT 'ALL')" , "CREATE TABLE " + SenderTable.SenderEntry.TABLE_NAME + " (" + SenderTable.SenderEntry._ID + " INTEGER PRIMARY KEY," + SenderTable.SenderEntry.COLUMN_NAME_NAME + " TEXT," + - SenderTable.SenderEntry.COLUMN_NAME_STATUS + " INTEGER," + - SenderTable.SenderEntry.COLUMN_NAME_TYPE + " INTEGER," + + SenderTable.SenderEntry.COLUMN_NAME_STATUS + " INTEGER NOT NULL DEFAULT 1," + + SenderTable.SenderEntry.COLUMN_NAME_TYPE + " INTEGER NOT NULL DEFAULT 1," + SenderTable.SenderEntry.COLUMN_NAME_JSON_SETTING + " TEXT," + SenderTable.SenderEntry.COLUMN_NAME_TIME + " TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)" ); @@ -113,6 +114,12 @@ public class DbHelper extends SQLiteOpenHelper { String sql = "update " + LogTable.LogEntry.TABLE_NAME + " set " + LogTable.LogEntry.COLUMN_NAME_FORWARD_STATUS + " = 2 where " + LogTable.LogEntry.COLUMN_NAME_FORWARD_STATUS + " = 1 "; db.execSQL(sql); } + if (oldVersion < 9) { //规则/通道状态:0=禁用,1=启用 + String sql = "Alter table " + RuleTable.RuleEntry.TABLE_NAME + " add column " + RuleTable.RuleEntry.COLUMN_NAME_STATUS + " INTEGER NOT NULL DEFAULT 1 "; + db.execSQL(sql); + sql = "update " + SenderTable.SenderEntry.TABLE_NAME + " set " + SenderTable.SenderEntry.COLUMN_NAME_STATUS + " = 1 "; + db.execSQL(sql); + } } public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { diff --git a/app/src/main/res/drawable/ic_round_pause.xml b/app/src/main/res/drawable/ic_round_pause.xml new file mode 100644 index 00000000..c243424d --- /dev/null +++ b/app/src/main/res/drawable/ic_round_pause.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_round_play.xml b/app/src/main/res/drawable/ic_round_play.xml new file mode 100644 index 00000000..4e33efa8 --- /dev/null +++ b/app/src/main/res/drawable/ic_round_play.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/alert_dialog_setview_bark.xml b/app/src/main/res/layout/alert_dialog_setview_bark.xml index 7c6c6a01..269f9492 100644 --- a/app/src/main/res/layout/alert_dialog_setview_bark.xml +++ b/app/src/main/res/layout/alert_dialog_setview_bark.xml @@ -28,10 +28,20 @@ android:layout_height="wrap_content" android:layout_marginStart="3dp" android:autofillHints="" - android:ems="11" + android:ems="9" android:inputType="text" android:text="" tools:ignore="LabelFor" /> + + + + diff --git a/app/src/main/res/layout/alert_dialog_setview_email.xml b/app/src/main/res/layout/alert_dialog_setview_email.xml index aebb481b..5931cba6 100644 --- a/app/src/main/res/layout/alert_dialog_setview_email.xml +++ b/app/src/main/res/layout/alert_dialog_setview_email.xml @@ -28,11 +28,21 @@ android:layout_height="wrap_content" android:layout_marginStart="3dp" android:autofillHints="" - android:ems="11" + android:ems="10" android:inputType="text" android:maxLines="1" android:text="" tools:ignore="LabelFor,TextFields" /> + + + + + + + + + + + + + + + + + + + + + tools:ignore="UseCompoundDrawables" + android:background="@android:color/white" + android:gravity="center_vertical" + android:orientation="horizontal" + android:padding="5dp"> - + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index c0432b7a..b8b7fe20 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -117,10 +117,10 @@ The specified member cannot be blank or select @all Phone number cannot be blank New Sender - Bark Group Name + Bark Group Name/Status Bark-Server, e.g. https://bark.bms.ink/XXXXXXXX/ Bark-Icon (optional), e.g. http://day.app/assets/images/avatar.jpg - Name + Name/Staus Token e.g. the XXXXXX part of https://oapi.dingtalk.com/robot/send?access_token=XXXXXX Secret (optional) At Mobiles e.g. 18888888888,19999999999 @@ -279,4 +279,5 @@ Priority(1 – 9) 5 Please enter the WebServer + Is Enable diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d7220ab2..5a0f21df 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -117,10 +117,10 @@ 指定成员 不能为空 或者 选择@all 接收手机号不能为空 添加发送通道 - 设置分组名称 + 分组名称/状态 设置Bark-Server地址,示例:https://bark.bms.ink/XXXXXXXX/ 设置推送消息图标(可选),示例:http://day.app/assets/images/avatar.jpg - 设置名称 + 名称/状态 设置Token 例如 https://oapi.dingtalk.com/robot/send?access_token=XXXXXX 中的 XXXXXX 加签 Secret (没有可不填) 转发时@某人 填写某人的手机号,多个用逗号分开 例如:18888888888,19999999999 @@ -278,4 +278,5 @@ 优先级(1 - 9) 5 请输入WebServer + 是否启用