diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/ClientFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/ClientFragment.kt index 8336224c..a6deb388 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/ClientFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/ClientFragment.kt @@ -30,6 +30,7 @@ import com.xuexiang.xpage.core.PageOption import com.xuexiang.xpage.model.PageInfo import com.xuexiang.xrouter.utils.TextUtils import com.xuexiang.xui.adapter.recyclerview.RecyclerViewHolder +import com.xuexiang.xui.utils.CountDownButtonHelper import com.xuexiang.xui.utils.DensityUtils import com.xuexiang.xui.utils.ResUtils import com.xuexiang.xui.utils.WidgetUtils @@ -45,13 +46,22 @@ class ClientFragment : BaseFragment(), val TAG: String = ClientFragment::class.java.simpleName private var appContext: App? = null private var serverConfig: ConfigData? = null + private var mCountDownHelper: CountDownButtonHelper? = null override fun initViews() { appContext = requireActivity().application as App - //val context = requireContext() - //Set Server-Logging for Server - //val serverLogging = ServerLogging(context.filesDir.absolutePath) - //appContext!!.httpServer.serverLogging = serverLogging + + //测试按钮增加倒计时,避免重复点击 + mCountDownHelper = CountDownButtonHelper(binding!!.btnServerTest, SettingUtils.requestTimeout) + mCountDownHelper!!.setOnCountDownListener(object : CountDownButtonHelper.OnCountDownListener { + override fun onCountDown(time: Int) { + binding!!.btnServerTest.text = String.format(getString(R.string.seconds_n), time) + } + + override fun onFinished() { + binding!!.btnServerTest.text = getString(R.string.server_test) + } + }) WidgetUtils.initGridRecyclerView(binding!!.recyclerView, 3, DensityUtils.dp2px(1f)) val widgetItemAdapter = WidgetItemAdapter(CLIENT_FRAGMENT_LIST) @@ -159,6 +169,7 @@ class ClientFragment : BaseFragment(), val requestMsg: String = Gson().toJson(msgMap) Log.i(TAG, "requestMsg:$requestMsg") + if (needToast) mCountDownHelper?.start() XHttp.post(requestUrl) .upJson(requestMsg) .keepJson(true) @@ -193,4 +204,9 @@ class ClientFragment : BaseFragment(), }) } + override fun onDestroyView() { + if (mCountDownHelper != null) mCountDownHelper!!.recycle() + super.onDestroyView() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/LoginFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/LoginFragment.kt index 06b43aea..fe830cac 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/LoginFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/LoginFragment.kt @@ -164,9 +164,7 @@ class LoginFragment : BaseFragment(), View.OnClickListene } override fun onDestroyView() { - if (mCountDownHelper != null) { - mCountDownHelper!!.recycle() - } + if (mCountDownHelper != null) mCountDownHelper!!.recycle() super.onDestroyView() } } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CloneFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CloneFragment.kt index fded53ad..53a2f1a4 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CloneFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CloneFragment.kt @@ -28,6 +28,7 @@ import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xpage.annotation.Page import com.xuexiang.xrouter.utils.TextUtils +import com.xuexiang.xui.utils.CountDownButtonHelper import com.xuexiang.xui.utils.ResUtils import com.xuexiang.xui.widget.actionbar.TitleBar import com.xuexiang.xutil.app.AppUtils @@ -44,6 +45,10 @@ class CloneFragment : BaseFragment(), View.OnClickL val TAG: String = SmsQueryFragment::class.java.simpleName private var backupPath: String? = null private val backupFile = "SmsForwarder.json" + private var pushCountDownHelper: CountDownButtonHelper? = null + private var pullCountDownHelper: CountDownButtonHelper? = null + private var exportCountDownHelper: CountDownButtonHelper? = null + private var importCountDownHelper: CountDownButtonHelper? = null override fun viewBindingInflate( inflater: LayoutInflater, @@ -96,6 +101,48 @@ class CloneFragment : BaseFragment(), View.OnClickL binding!!.layoutOffline.visibility = View.GONE } } + + //按钮增加倒计时,避免重复点击 + pushCountDownHelper = CountDownButtonHelper(binding!!.btnPush, SettingUtils.requestTimeout) + pushCountDownHelper!!.setOnCountDownListener(object : CountDownButtonHelper.OnCountDownListener { + override fun onCountDown(time: Int) { + binding!!.btnPush.text = String.format(getString(R.string.seconds_n), time) + } + + override fun onFinished() { + binding!!.btnPush.text = getString(R.string.push) + } + }) + pullCountDownHelper = CountDownButtonHelper(binding!!.btnPull, SettingUtils.requestTimeout) + pullCountDownHelper!!.setOnCountDownListener(object : CountDownButtonHelper.OnCountDownListener { + override fun onCountDown(time: Int) { + binding!!.btnPull.text = String.format(getString(R.string.seconds_n), time) + } + + override fun onFinished() { + binding!!.btnPull.text = getString(R.string.pull) + } + }) + exportCountDownHelper = CountDownButtonHelper(binding!!.btnExport, 3) + exportCountDownHelper!!.setOnCountDownListener(object : CountDownButtonHelper.OnCountDownListener { + override fun onCountDown(time: Int) { + binding!!.btnExport.text = String.format(getString(R.string.seconds_n), time) + } + + override fun onFinished() { + binding!!.btnExport.text = getString(R.string.export) + } + }) + importCountDownHelper = CountDownButtonHelper(binding!!.btnImport, 3) + importCountDownHelper!!.setOnCountDownListener(object : CountDownButtonHelper.OnCountDownListener { + override fun onCountDown(time: Int) { + binding!!.btnImport.text = String.format(getString(R.string.seconds_n), time) + } + + override fun onFinished() { + binding!!.btnImport.text = getString(R.string.imports) + } + }) } override fun initListeners() { @@ -115,6 +162,7 @@ class CloneFragment : BaseFragment(), View.OnClickL //导出配置 R.id.btn_export -> { try { + exportCountDownHelper?.start() val file = File(backupPath + File.separator + backupFile) //判断文件是否存在,存在则在创建之前删除 FileUtils.createFileByDeleteOldFile(file) @@ -133,6 +181,7 @@ class CloneFragment : BaseFragment(), View.OnClickL //导入配置 R.id.btn_import -> { try { + importCountDownHelper?.start() val file = File(backupPath + File.separator + backupFile) //判断文件是否存在 if (!FileUtils.isFileExists(file)) { @@ -171,6 +220,7 @@ class CloneFragment : BaseFragment(), View.OnClickL //推送配置 private fun pushData() { + pushCountDownHelper?.start() val requestUrl: String = HttpServerUtils.serverAddress + "/clone/push" Log.i(TAG, "requestUrl:$requestUrl") @@ -223,6 +273,7 @@ class CloneFragment : BaseFragment(), View.OnClickL //拉取配置 private fun pullData() { + exportCountDownHelper?.start() val requestUrl: String = HttpServerUtils.serverAddress + "/clone/pull" Log.i(TAG, "requestUrl:$requestUrl") @@ -292,4 +343,12 @@ class CloneFragment : BaseFragment(), View.OnClickL }) } + + override fun onDestroyView() { + if (pushCountDownHelper != null) pushCountDownHelper!!.recycle() + if (pullCountDownHelper != null) pullCountDownHelper!!.recycle() + if (exportCountDownHelper != null) exportCountDownHelper!!.recycle() + if (importCountDownHelper != null) importCountDownHelper!!.recycle() + super.onDestroyView() + } } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsSendFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsSendFragment.kt index be2a0b60..38eaf679 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsSendFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsSendFragment.kt @@ -19,6 +19,7 @@ import com.xuexiang.xhttp2.callback.SimpleCallBack import com.xuexiang.xhttp2.exception.ApiException import com.xuexiang.xpage.annotation.Page import com.xuexiang.xrouter.utils.TextUtils +import com.xuexiang.xui.utils.CountDownButtonHelper import com.xuexiang.xui.utils.ResUtils import com.xuexiang.xui.widget.actionbar.TitleBar @@ -27,6 +28,7 @@ import com.xuexiang.xui.widget.actionbar.TitleBar class SmsSendFragment : BaseFragment(), View.OnClickListener { val TAG: String = SmsSendFragment::class.java.simpleName + private var mCountDownHelper: CountDownButtonHelper? = null override fun viewBindingInflate( inflater: LayoutInflater, @@ -43,6 +45,17 @@ class SmsSendFragment : BaseFragment(), View.OnCl * 初始化控件 */ override fun initViews() { + //发送按钮增加倒计时,避免重复点击 + mCountDownHelper = CountDownButtonHelper(binding!!.btnSubmit, SettingUtils.requestTimeout) + mCountDownHelper!!.setOnCountDownListener(object : CountDownButtonHelper.OnCountDownListener { + override fun onCountDown(time: Int) { + binding!!.btnSubmit.text = String.format(getString(R.string.seconds_n), time) + } + + override fun onFinished() { + binding!!.btnSubmit.text = getString(R.string.send) + } + }) } override fun initListeners() { @@ -93,6 +106,7 @@ class SmsSendFragment : BaseFragment(), View.OnCl val requestMsg: String = Gson().toJson(msgMap) Log.i(TAG, "requestMsg:$requestMsg") + mCountDownHelper?.start() XHttp.post(requestUrl) .upJson(requestMsg) .keepJson(true) @@ -129,4 +143,9 @@ class SmsSendFragment : BaseFragment(), View.OnCl } } + override fun onDestroyView() { + if (mCountDownHelper != null) mCountDownHelper!!.recycle() + super.onDestroyView() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/BarkFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/BarkFragment.kt index 13ca65ed..a0b7fe5c 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/BarkFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/BarkFragment.kt @@ -23,6 +23,8 @@ 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.utils.CountDownButtonHelper.OnCountDownListener import com.xuexiang.xui.widget.actionbar.TitleBar import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog @@ -40,6 +42,7 @@ class BarkFragment : BaseFragment(), View.OnClickLi private val TAG: String = BarkFragment::class.java.simpleName var titleBar: TitleBar? = null private val viewModel by viewModels { BaseViewModelFactory(context) } + private var mCountDownHelper: CountDownButtonHelper? = null private var barkLevel: String = "active" //通知级别 @JvmField @@ -74,6 +77,18 @@ class BarkFragment : BaseFragment(), View.OnClickLi * 初始化控件 */ override fun initViews() { + //测试按钮增加倒计时,避免重复点击 + mCountDownHelper = CountDownButtonHelper(binding!!.btnTest, SettingUtils.requestTimeout) + mCountDownHelper!!.setOnCountDownListener(object : 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) + } + }) + binding!!.spLevel.setItems(BARK_LEVEL_MAP.values.toList()) binding!!.spLevel.setOnItemSelectedListener { _: MaterialSpinner?, _: Int, _: Long, item: Any -> BARK_LEVEL_MAP.forEach { @@ -167,6 +182,7 @@ class BarkFragment : BaseFragment(), View.OnClickLi return } R.id.btn_test -> { + mCountDownHelper?.start() val settingVo = checkSetting() Log.d(TAG, settingVo.toString()) val msgInfo = MsgInfo("sms", getString(R.string.test_phone_num), getString(R.string.test_sender_sms), Date(), getString(R.string.test_sim_info)) @@ -237,4 +253,9 @@ class BarkFragment : BaseFragment(), View.OnClickLi return BarkSetting(server, group, icon, sound, badge, url, barkLevel, title) } + override fun onDestroyView() { + if (mCountDownHelper != null) mCountDownHelper!!.recycle() + super.onDestroyView() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/DingtalkFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/DingtalkFragment.kt index cf3790ce..31f7f699 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/DingtalkFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/DingtalkFragment.kt @@ -23,6 +23,7 @@ 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 import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog @@ -39,6 +40,7 @@ class DingtalkFragment : BaseFragment(), View.O private val TAG: String = DingtalkFragment::class.java.simpleName var titleBar: TitleBar? = null private val viewModel by viewModels { BaseViewModelFactory(context) } + private var mCountDownHelper: CountDownButtonHelper? = null @JvmField @AutoWired(name = KEY_SENDER_ID) @@ -72,6 +74,18 @@ class DingtalkFragment : BaseFragment(), View.O * 初始化控件 */ override fun initViews() { + //测试按钮增加倒计时,避免重复点击 + mCountDownHelper = CountDownButtonHelper(binding!!.btnTest, SettingUtils.requestTimeout) + 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) + } + }) + //新增 if (senderId <= 0) { titleBar?.setSubTitle(getString(R.string.add_sender)) @@ -143,6 +157,7 @@ class DingtalkFragment : BaseFragment(), View.O try { when (v.id) { R.id.btn_test -> { + mCountDownHelper?.start() val settingVo = checkSetting() Log.d(TAG, settingVo.toString()) val msgInfo = MsgInfo("sms", getString(R.string.test_phone_num), getString(R.string.test_sender_sms), Date(), getString(R.string.test_sim_info)) @@ -208,4 +223,9 @@ class DingtalkFragment : BaseFragment(), View.O return DingtalkSetting(token, secret, atAll, atMobiles) } + override fun onDestroyView() { + if (mCountDownHelper != null) mCountDownHelper!!.recycle() + super.onDestroyView() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/EmailFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/EmailFragment.kt index 0c94056c..44334a2e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/EmailFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/EmailFragment.kt @@ -23,6 +23,7 @@ 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.utils.ResUtils import com.xuexiang.xui.widget.actionbar.TitleBar import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction @@ -41,6 +42,7 @@ class EmailFragment : BaseFragment(), View.OnClick private val TAG: String = EmailFragment::class.java.simpleName var titleBar: TitleBar? = null private val viewModel by viewModels { BaseViewModelFactory(context) } + private var mCountDownHelper: CountDownButtonHelper? = null private var mailType: String = getString(R.string.other_mail_type) //邮箱类型 @JvmField @@ -75,6 +77,18 @@ class EmailFragment : BaseFragment(), View.OnClick * 初始化控件 */ override fun initViews() { + //测试按钮增加倒计时,避免重复点击 + mCountDownHelper = CountDownButtonHelper(binding!!.btnTest, SettingUtils.requestTimeout) + 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) + } + }) + val mailTypeArray = ResUtils.getStringArray(R.array.MailType) Log.d(TAG, mailTypeArray.toString()) binding!!.spMailType.setOnItemSelectedListener { _: MaterialSpinner?, position: Int, _: Long, item: Any -> @@ -176,6 +190,7 @@ class EmailFragment : BaseFragment(), View.OnClick return } R.id.btn_test -> { + mCountDownHelper?.start() val settingVo = checkSetting() Log.d(TAG, settingVo.toString()) val msgInfo = MsgInfo("sms", getString(R.string.test_phone_num), getString(R.string.test_sender_sms), Date(), getString(R.string.test_sim_info)) @@ -239,4 +254,9 @@ class EmailFragment : BaseFragment(), View.OnClick return EmailSetting(mailType, fromEmail, pwd, nickname, host, port, ssl, startTls, toEmail, title) } + override fun onDestroyView() { + if (mCountDownHelper != null) mCountDownHelper!!.recycle() + super.onDestroyView() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/FeishuFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/FeishuFragment.kt index a7286948..b066f3ad 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/FeishuFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/FeishuFragment.kt @@ -23,6 +23,7 @@ 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 import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog @@ -39,6 +40,7 @@ class FeishuFragment : BaseFragment(), View.OnCli private val TAG: String = FeishuFragment::class.java.simpleName var titleBar: TitleBar? = null private val viewModel by viewModels { BaseViewModelFactory(context) } + private var mCountDownHelper: CountDownButtonHelper? = null @JvmField @AutoWired(name = KEY_SENDER_ID) @@ -72,6 +74,18 @@ class FeishuFragment : BaseFragment(), View.OnCli * 初始化控件 */ override fun initViews() { + //测试按钮增加倒计时,避免重复点击 + mCountDownHelper = CountDownButtonHelper(binding!!.btnTest, SettingUtils.requestTimeout) + 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) + } + }) + //新增 if (senderId <= 0) { titleBar?.setSubTitle(getString(R.string.add_sender)) @@ -142,6 +156,7 @@ class FeishuFragment : BaseFragment(), View.OnCli return } R.id.btn_test -> { + mCountDownHelper?.start() val settingVo = checkSetting() Log.d(TAG, settingVo.toString()) val msgInfo = MsgInfo("sms", getString(R.string.test_phone_num), getString(R.string.test_sender_sms), Date(), getString(R.string.test_sim_info)) @@ -204,4 +219,9 @@ class FeishuFragment : BaseFragment(), View.OnCli return FeishuSetting(webhook, secret, msgType, title) } + override fun onDestroyView() { + if (mCountDownHelper != null) mCountDownHelper!!.recycle() + super.onDestroyView() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/GotifyFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/GotifyFragment.kt index 989db581..0f2af4a0 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/GotifyFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/GotifyFragment.kt @@ -23,6 +23,7 @@ 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 import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog @@ -39,6 +40,7 @@ class GotifyFragment : BaseFragment(), View.OnCli private val TAG: String = GotifyFragment::class.java.simpleName var titleBar: TitleBar? = null private val viewModel by viewModels { BaseViewModelFactory(context) } + private var mCountDownHelper: CountDownButtonHelper? = null @JvmField @AutoWired(name = KEY_SENDER_ID) @@ -72,6 +74,18 @@ class GotifyFragment : BaseFragment(), View.OnCli * 初始化控件 */ override fun initViews() { + //测试按钮增加倒计时,避免重复点击 + mCountDownHelper = CountDownButtonHelper(binding!!.btnTest, SettingUtils.requestTimeout) + 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) + } + }) + //新增 if (senderId <= 0) { titleBar?.setSubTitle(getString(R.string.add_sender)) @@ -141,6 +155,7 @@ class GotifyFragment : BaseFragment(), View.OnCli return } R.id.btn_test -> { + mCountDownHelper?.start() val settingVo = checkSetting() Log.d(TAG, settingVo.toString()) val msgInfo = MsgInfo("sms", getString(R.string.test_phone_num), getString(R.string.test_sender_sms), Date(), getString(R.string.test_sim_info)) @@ -202,4 +217,9 @@ class GotifyFragment : BaseFragment(), View.OnCli return GotifySetting(webServer, title, priority) } + override fun onDestroyView() { + if (mCountDownHelper != null) mCountDownHelper!!.recycle() + super.onDestroyView() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/PushplusFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/PushplusFragment.kt index 5fcebc9a..b6fc62b9 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/PushplusFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/PushplusFragment.kt @@ -24,6 +24,7 @@ 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 import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog @@ -40,6 +41,7 @@ class PushplusFragment : BaseFragment(), View.O private val TAG: String = PushplusFragment::class.java.simpleName var titleBar: TitleBar? = null private val viewModel by viewModels { BaseViewModelFactory(context) } + private var mCountDownHelper: CountDownButtonHelper? = null @JvmField @AutoWired(name = KEY_SENDER_ID) @@ -73,6 +75,18 @@ class PushplusFragment : BaseFragment(), View.O * 初始化控件 */ override fun initViews() { + //测试按钮增加倒计时,避免重复点击 + mCountDownHelper = CountDownButtonHelper(binding!!.btnTest, SettingUtils.requestTimeout) + 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) + } + }) + //新增 if (senderId <= 0) { titleBar?.setSubTitle(getString(R.string.add_sender)) @@ -161,6 +175,7 @@ class PushplusFragment : BaseFragment(), View.O return } R.id.btn_test -> { + mCountDownHelper?.start() val settingVo = checkSetting() Log.d(TAG, settingVo.toString()) val msgInfo = MsgInfo("sms", getString(R.string.test_phone_num), getString(R.string.test_sender_sms), Date(), getString(R.string.test_sim_info)) @@ -232,4 +247,9 @@ class PushplusFragment : BaseFragment(), View.O return PushplusSetting(website, token, topic, template, channel, webhook, callbackUrl, validTime, title) } + override fun onDestroyView() { + if (mCountDownHelper != null) mCountDownHelper!!.recycle() + super.onDestroyView() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/ServerchanFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/ServerchanFragment.kt index 96035937..3a96daa5 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/ServerchanFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/ServerchanFragment.kt @@ -16,15 +16,13 @@ import com.idormy.sms.forwarder.database.viewmodel.SenderViewModel import com.idormy.sms.forwarder.databinding.FragmentSendersServerchanBinding import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.setting.ServerchanSetting -import com.idormy.sms.forwarder.utils.KEY_SENDER_CLONE -import com.idormy.sms.forwarder.utils.KEY_SENDER_ID -import com.idormy.sms.forwarder.utils.KEY_SENDER_TYPE -import com.idormy.sms.forwarder.utils.XToastUtils +import com.idormy.sms.forwarder.utils.* import com.idormy.sms.forwarder.utils.sender.ServerchanUtils 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 import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog @@ -41,6 +39,7 @@ class ServerchanFragment : BaseFragment(), Vi private val TAG: String = ServerchanFragment::class.java.simpleName var titleBar: TitleBar? = null private val viewModel by viewModels { BaseViewModelFactory(context) } + private var mCountDownHelper: CountDownButtonHelper? = null @JvmField @AutoWired(name = KEY_SENDER_ID) @@ -74,6 +73,18 @@ class ServerchanFragment : BaseFragment(), Vi * 初始化控件 */ override fun initViews() { + //测试按钮增加倒计时,避免重复点击 + mCountDownHelper = CountDownButtonHelper(binding!!.btnTest, SettingUtils.requestTimeout) + 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) + } + }) + //新增 if (senderId <= 0) { titleBar?.setSubTitle(getString(R.string.add_sender)) @@ -126,6 +137,7 @@ class ServerchanFragment : BaseFragment(), Vi try { when (v.id) { R.id.btn_test -> { + mCountDownHelper?.start() val settingVo = checkSetting() Log.d(TAG, settingVo.toString()) val msgInfo = MsgInfo("sms", getString(R.string.test_phone_num), getString(R.string.test_sender_sms), Date(), getString(R.string.test_sim_info)) @@ -198,4 +210,9 @@ class ServerchanFragment : BaseFragment(), Vi return ServerchanSetting(sendKey, channel, openid) } + override fun onDestroyView() { + if (mCountDownHelper != null) mCountDownHelper!!.recycle() + super.onDestroyView() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/SmsFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/SmsFragment.kt index 989e7366..741b08dd 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/SmsFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/SmsFragment.kt @@ -25,6 +25,7 @@ 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 import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog @@ -41,6 +42,7 @@ class SmsFragment : BaseFragment(), View.OnClickList private val TAG: String = SmsFragment::class.java.simpleName var titleBar: TitleBar? = null private val viewModel by viewModels { BaseViewModelFactory(context) } + private var mCountDownHelper: CountDownButtonHelper? = null @JvmField @AutoWired(name = KEY_SENDER_ID) @@ -97,6 +99,18 @@ class SmsFragment : BaseFragment(), View.OnClickList } }) + //测试按钮增加倒计时,避免重复点击 + mCountDownHelper = CountDownButtonHelper(binding!!.btnTest, SettingUtils.requestTimeout) + 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) + } + }) + //新增 if (senderId <= 0) { titleBar?.setSubTitle(getString(R.string.add_sender)) @@ -149,6 +163,7 @@ class SmsFragment : BaseFragment(), View.OnClickList try { when (v.id) { R.id.btn_test -> { + mCountDownHelper?.start() val settingVo = checkSetting() Log.d(TAG, settingVo.toString()) val msgInfo = MsgInfo("sms", getString(R.string.test_phone_num), getString(R.string.test_sender_sms), Date(), getString(R.string.test_sim_info)) @@ -214,4 +229,9 @@ class SmsFragment : BaseFragment(), View.OnClickList return SmsSetting(simSlot, mobiles, onlyNoNetwork) } + override fun onDestroyView() { + if (mCountDownHelper != null) mCountDownHelper!!.recycle() + super.onDestroyView() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/TelegramFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/TelegramFragment.kt index 75b08860..0492c9ea 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/TelegramFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/TelegramFragment.kt @@ -18,15 +18,13 @@ import com.idormy.sms.forwarder.database.viewmodel.SenderViewModel import com.idormy.sms.forwarder.databinding.FragmentSendersTelegramBinding import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.setting.TelegramSetting -import com.idormy.sms.forwarder.utils.KEY_SENDER_CLONE -import com.idormy.sms.forwarder.utils.KEY_SENDER_ID -import com.idormy.sms.forwarder.utils.KEY_SENDER_TYPE -import com.idormy.sms.forwarder.utils.XToastUtils +import com.idormy.sms.forwarder.utils.* import com.idormy.sms.forwarder.utils.sender.TelegramUtils 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 import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog @@ -44,6 +42,7 @@ class TelegramFragment : BaseFragment(), View.O private val TAG: String = TelegramFragment::class.java.simpleName var titleBar: TitleBar? = null private val viewModel by viewModels { BaseViewModelFactory(context) } + private var mCountDownHelper: CountDownButtonHelper? = null @JvmField @AutoWired(name = KEY_SENDER_ID) @@ -77,6 +76,18 @@ class TelegramFragment : BaseFragment(), View.O * 初始化控件 */ override fun initViews() { + //测试按钮增加倒计时,避免重复点击 + mCountDownHelper = CountDownButtonHelper(binding!!.btnTest, SettingUtils.requestTimeout) + 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) + } + }) + //新增 if (senderId <= 0) { titleBar?.setSubTitle(getString(R.string.add_sender)) @@ -152,6 +163,7 @@ class TelegramFragment : BaseFragment(), View.O try { when (v.id) { R.id.btn_test -> { + mCountDownHelper?.start() val settingVo = checkSetting() Log.d(TAG, settingVo.toString()) val msgInfo = MsgInfo("sms", getString(R.string.test_phone_num), getString(R.string.test_sender_sms), Date(), getString(R.string.test_sim_info)) @@ -232,4 +244,9 @@ class TelegramFragment : BaseFragment(), View.O return TelegramSetting(method, apiToken, chatId, proxyType, proxyHost, proxyPort, proxyAuthenticator, proxyUsername, proxyPassword) } + override fun onDestroyView() { + if (mCountDownHelper != null) mCountDownHelper!!.recycle() + super.onDestroyView() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WebhookFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WebhookFragment.kt index bacd7898..66cb3551 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WebhookFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WebhookFragment.kt @@ -25,6 +25,7 @@ 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 import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog @@ -41,6 +42,7 @@ class WebhookFragment : BaseFragment(), View.OnC private val TAG: String = WebhookFragment::class.java.simpleName var titleBar: TitleBar? = null private val viewModel by viewModels { BaseViewModelFactory(context) } + private var mCountDownHelper: CountDownButtonHelper? = null private var headerItemMap = HashMap(2) @JvmField @@ -75,6 +77,18 @@ class WebhookFragment : BaseFragment(), View.OnC * 初始化控件 */ override fun initViews() { + //测试按钮增加倒计时,避免重复点击 + mCountDownHelper = CountDownButtonHelper(binding!!.btnTest, SettingUtils.requestTimeout) + 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) + } + }) + //新增 if (senderId <= 0) { titleBar?.setSubTitle(getString(R.string.add_sender)) @@ -135,6 +149,7 @@ class WebhookFragment : BaseFragment(), View.OnC try { when (v.id) { R.id.btn_test -> { + mCountDownHelper?.start() val settingVo = checkSetting() Log.d(TAG, settingVo.toString()) val msgInfo = MsgInfo("sms", getString(R.string.test_phone_num), getString(R.string.test_sender_sms), Date(), getString(R.string.test_sim_info)) @@ -248,4 +263,9 @@ class WebhookFragment : BaseFragment(), View.OnC return headers } + override fun onDestroyView() { + if (mCountDownHelper != null) mCountDownHelper!!.recycle() + super.onDestroyView() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkAgentFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkAgentFragment.kt index 4bbb590f..73974ac8 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkAgentFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkAgentFragment.kt @@ -1,5 +1,6 @@ package com.idormy.sms.forwarder.fragment.senders +import android.annotation.SuppressLint import android.text.TextUtils import android.util.Log import android.view.LayoutInflater @@ -17,15 +18,13 @@ import com.idormy.sms.forwarder.database.viewmodel.SenderViewModel import com.idormy.sms.forwarder.databinding.FragmentSendersWeworkAgentBinding import com.idormy.sms.forwarder.entity.MsgInfo import com.idormy.sms.forwarder.entity.setting.WeworkAgentSetting -import com.idormy.sms.forwarder.utils.KEY_SENDER_CLONE -import com.idormy.sms.forwarder.utils.KEY_SENDER_ID -import com.idormy.sms.forwarder.utils.KEY_SENDER_TYPE -import com.idormy.sms.forwarder.utils.XToastUtils +import com.idormy.sms.forwarder.utils.* import com.idormy.sms.forwarder.utils.sender.WeworkAgentUtils 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 import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog @@ -42,6 +41,7 @@ class WeworkAgentFragment : BaseFragment(), private val TAG: String = WeworkAgentFragment::class.java.simpleName var titleBar: TitleBar? = null private val viewModel by viewModels { BaseViewModelFactory(context) } + private var mCountDownHelper: CountDownButtonHelper? = null @JvmField @AutoWired(name = KEY_SENDER_ID) @@ -75,6 +75,18 @@ class WeworkAgentFragment : BaseFragment(), * 初始化控件 */ override fun initViews() { + //测试按钮增加倒计时,避免重复点击 + mCountDownHelper = CountDownButtonHelper(binding!!.btnTest, SettingUtils.requestTimeout) + 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) + } + }) + //新增 if (senderId <= 0) { titleBar?.setSubTitle(getString(R.string.add_sender)) @@ -125,6 +137,7 @@ class WeworkAgentFragment : BaseFragment(), binding!!.sbAtAll.setOnCheckedChangeListener(this) } + @SuppressLint("SetTextI18n") override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) { //TODO: 这里只有一个监听不需要判断id if (isChecked) { @@ -141,6 +154,7 @@ class WeworkAgentFragment : BaseFragment(), try { when (v.id) { R.id.btn_test -> { + mCountDownHelper?.start() val settingVo = checkSetting() Log.d(TAG, settingVo.toString()) val msgInfo = MsgInfo("sms", getString(R.string.test_phone_num), getString(R.string.test_sender_sms), Date(), getString(R.string.test_sim_info)) @@ -204,4 +218,9 @@ class WeworkAgentFragment : BaseFragment(), return WeworkAgentSetting(corpID, agentID, secret, atAll, toUser) } + override fun onDestroyView() { + if (mCountDownHelper != null) mCountDownHelper!!.recycle() + super.onDestroyView() + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkRobotFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkRobotFragment.kt index 5e44c18b..8b778cfa 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkRobotFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/senders/WeworkRobotFragment.kt @@ -22,6 +22,7 @@ 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 import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog @@ -38,6 +39,7 @@ class WeworkRobotFragment : BaseFragment(), private val TAG: String = WeworkRobotFragment::class.java.simpleName var titleBar: TitleBar? = null private val viewModel by viewModels { BaseViewModelFactory(context) } + private var mCountDownHelper: CountDownButtonHelper? = null @JvmField @AutoWired(name = KEY_SENDER_ID) @@ -71,6 +73,18 @@ class WeworkRobotFragment : BaseFragment(), * 初始化控件 */ override fun initViews() { + //测试按钮增加倒计时,避免重复点击 + mCountDownHelper = CountDownButtonHelper(binding!!.btnTest, SettingUtils.requestTimeout) + 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) + } + }) + //新增 if (senderId <= 0) { titleBar?.setSubTitle(getString(R.string.add_sender)) @@ -121,6 +135,7 @@ class WeworkRobotFragment : BaseFragment(), try { when (v.id) { R.id.btn_test -> { + mCountDownHelper?.start() val settingVo = checkSetting() Log.d(TAG, settingVo.toString()) val msgInfo = MsgInfo("sms", getString(R.string.test_phone_num), getString(R.string.test_sender_sms), Date(), getString(R.string.test_sim_info)) @@ -179,4 +194,9 @@ class WeworkRobotFragment : BaseFragment(), return WeworkRobotSetting(webHook) } + override fun onDestroyView() { + if (mCountDownHelper != null) mCountDownHelper!!.recycle() + super.onDestroyView() + } + } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_send_white.xml b/app/src/main/res/drawable/ic_send_white.xml new file mode 100644 index 00000000..5b106484 --- /dev/null +++ b/app/src/main/res/drawable/ic_send_white.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/fragment_client.xml b/app/src/main/res/layout/fragment_client.xml index 8ee81f4b..f42f8d69 100644 --- a/app/src/main/res/layout/fragment_client.xml +++ b/app/src/main/res/layout/fragment_client.xml @@ -1,6 +1,5 @@ - + android:text="@string/server_test" /> diff --git a/app/src/main/res/layout/fragment_client_sms_send.xml b/app/src/main/res/layout/fragment_client_sms_send.xml index 359fb7ce..3f65df2b 100644 --- a/app/src/main/res/layout/fragment_client_sms_send.xml +++ b/app/src/main/res/layout/fragment_client_sms_send.xml @@ -123,10 +123,9 @@ diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 6ce785d2..3798ad8f 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -158,6 +158,7 @@ Delete Save Submit + Send Test Confirm All @@ -506,6 +507,7 @@ Interval timeout sec + %s sec Retry [Test Channel] Congratulations, the sending channel test is successful, please continue to add forwarding rules! SIM1_TestOperator_18888888888 @@ -800,4 +802,5 @@ Status: %s Health: %s Plugged: %s + Server Test diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f414a4ce..ce46cd8d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -159,6 +159,7 @@ 删除 保存 提交 + 发送 测试 确认 全部 @@ -507,6 +508,7 @@ 间隔 超时 + %s 秒 重试 【测试通道】恭喜您,该发送通道测试成功,请继续添加转发规则! SIM1_测试运营商_18888888888 @@ -801,4 +803,5 @@ 电池状态:%s 健康度:%s 充电器:%s + 测试接口