From 6473b3eb7c7746f88bef53ffefbe32e6fd69bdef Mon Sep 17 00:00:00 2001 From: pppscn <35696959@qq.com> Date: Tue, 19 Dec 2023 23:52:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9AMainActivity=20?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E5=A1=AB=E5=85=85=E6=96=B9=E5=BC=8F=EF=BC=88?= =?UTF-8?q?=E9=81=BF=E5=85=8D=E4=B8=80=E6=AC=A1=E6=80=A7=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E5=A4=9A=E4=B8=AAFragment=EF=BC=89&&=20=E6=8F=90=E5=8D=87APP?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E9=80=9F=E5=BA=A6=E4=B8=8E=E7=A8=B3=E5=AE=9A?= =?UTF-8?q?=E6=80=A7=20=E4=BC=98=E5=8C=96=EF=BC=9A=E5=B7=A6=E6=BB=91?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=20=E4=B8=8E=20TabBar=20=E7=BE=8E=E5=8C=96=20?= =?UTF-8?q?=E7=B2=BE=E7=AE=80=EF=BC=9A=E7=95=8C=E9=9D=A2=E8=B0=83=E6=95=B4?= =?UTF-8?q?=20&=20=E5=8E=BB=E9=99=A4=E4=B8=8D=E5=B8=B8=E7=94=A8=E8=B5=84?= =?UTF-8?q?=E6=BA=90=20=E6=95=B4=E7=90=86=EF=BC=9Acode=20review?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 5 + app/proguard-rules.pro | 4 + app/src/main/AndroidManifest.xml | 7 +- .../main/java/com/idormy/sms/forwarder/App.kt | 3 +- .../sms/forwarder/activity/MainActivity.kt | 542 ++++++++---------- .../forwarder/adapter/FrpcPagingAdapter.kt | 1 + .../forwarder/adapter/LogsPagingAdapter.kt | 1 - .../sms/forwarder/adapter/MsgPagingAdapter.kt | 1 + .../forwarder/adapter/RulePagingAdapter.kt | 1 + .../forwarder/adapter/SenderPagingAdapter.kt | 1 + .../forwarder/adapter/TaskPagingAdapter.kt | 1 + .../forwarder/adapter/TaskSettingAdapter.kt | 8 +- .../base/broccoli/BroccoliRecyclerAdapter.kt | 1 + .../broccoli/BroccoliSimpleDelegateAdapter.kt | 1 + .../base/delegate/BaseDelegateAdapter.kt | 1 + .../forwarder/adapter/menu/DrawerAdapter.kt | 83 +++ .../sms/forwarder/adapter/menu/DrawerItem.kt | 19 + .../sms/forwarder/adapter/menu/SimpleItem.kt | 54 ++ .../sms/forwarder/adapter/menu/SpaceItem.kt | 24 + .../adapter/spinner/SenderSpinnerAdapter.kt | 4 +- .../idormy/sms/forwarder/core/BaseActivity.kt | 2 +- .../forwarder/core/BaseContainerFragment.kt | 2 +- .../idormy/sms/forwarder/core/BaseFragment.kt | 10 +- .../com/idormy/sms/forwarder/core/Core.kt | 8 +- .../sms/forwarder/core/SimpleListAdapter.kt | 1 + .../core/webview/BaseWebViewFragment.kt | 1 - .../core/webview/MiddlewareWebViewClient.kt | 4 +- .../sms/forwarder/database/entity/Rule.kt | 4 +- .../sms/forwarder/database/entity/Sender.kt | 4 +- .../sms/forwarder/database/entity/Task.kt | 4 +- .../forwarder/database/ext/ConvertersDate.kt | 1 - .../database/ext/ConvertersSenderList.kt | 1 - .../sms/forwarder/database/ext/LifecyleExt.kt | 1 - .../sms/forwarder/entity/ContactInfo.kt | 1 + .../sms/forwarder/entity/LocationInfo.kt | 1 + .../entity/condition/ChargeSetting.kt | 2 +- .../sms/forwarder/fragment/AppListFragment.kt | 2 +- .../sms/forwarder/fragment/ClientFragment.kt | 2 +- .../sms/forwarder/fragment/LogsFragment.kt | 54 +- .../forwarder/fragment/RulesEditFragment.kt | 2 +- .../sms/forwarder/fragment/RulesFragment.kt | 27 +- .../sms/forwarder/fragment/SendersFragment.kt | 137 +++-- .../forwarder/fragment/SettingsFragment.kt | 92 ++- .../forwarder/fragment/TasksEditFragment.kt | 24 +- .../fragment/action/NotificationFragment.kt | 2 +- .../fragment/client/CallQueryFragment.kt | 3 - .../fragment/client/ContactQueryFragment.kt | 3 - .../fragment/client/SmsQueryFragment.kt | 4 - .../fragment/condition/BatteryFragment.kt | 2 +- .../fragment/condition/ChargeFragment.kt | 2 +- .../condition/LeaveAddressFragment.kt | 25 +- .../fragment/condition/LockScreenFragment.kt | 2 +- .../fragment/condition/NetworkFragment.kt | 2 +- .../fragment/condition/SimFragment.kt | 2 +- .../fragment/condition/ToAddressFragment.kt | 21 +- .../fragment/senders/EmailFragment.kt | 2 +- .../fragment/senders/WebhookFragment.kt | 10 +- .../receiver/NetworkChangeReceiver.kt | 2 +- .../forwarder/receiver/PhoneStateReceiver.kt | 6 +- .../sms/forwarder/receiver/SmsReceiver.kt | 2 +- .../server/component/LoggerInterceptor.kt | 2 +- .../server/component/LoginInterceptor.kt | 1 - .../server/controller/ContactController.kt | 2 +- .../sms/forwarder/utils/HistoryUtils.kt | 2 +- .../idormy/sms/forwarder/utils/RSACrypt.kt | 1 - .../idormy/sms/forwarder/utils/XToastUtils.kt | 1 - .../sms/forwarder/utils/sdkinit/UMengInit.kt | 11 +- .../sms/forwarder/utils/sender/BarkUtils.kt | 2 +- .../sms/forwarder/widget/GuideTipsDialog.kt | 3 + ...selector_round_button_main_theme_color.xml | 8 - .../res/color/selector_tab_text_color.xml | 22 + .../main/res/drawable-hdpi/ic_forwarder.webp | Bin 242 -> 0 bytes .../main/res/drawable-mdpi/ic_forwarder.webp | Bin 194 -> 0 bytes .../main/res/drawable-xhdpi/ic_forwarder.webp | Bin 300 -> 0 bytes .../main/res/drawable-xxxhdpi/ic_web_back.png | Bin 543 -> 0 bytes .../res/drawable-xxxhdpi/ic_web_close.png | Bin 397 -> 0 bytes .../main/res/drawable-xxxhdpi/ic_web_more.png | Bin 434 -> 0 bytes app/src/main/res/drawable/ic_action_back.xml | 5 + ...on_close_white.xml => ic_action_close.xml} | 0 app/src/main/res/drawable/ic_action_menu.xml | 24 + .../ic_forwarder.webp | Bin app/src/main/res/drawable/ic_menu_about.xml | 2 +- .../ic_menu_app.xml | 2 +- app/src/main/res/drawable/ic_menu_client.xml | 2 +- app/src/main/res/drawable/ic_menu_frpc.xml | 2 +- app/src/main/res/drawable/ic_menu_help.xml | 2 +- app/src/main/res/drawable/ic_menu_logcat.xml | 12 - app/src/main/res/drawable/ic_menu_logs.xml | 2 +- .../res/drawable/ic_menu_logs_selected.xml | 9 + app/src/main/res/drawable/ic_menu_rule.xml | 2 +- .../res/drawable/ic_menu_rule_selected.xml | 9 + app/src/main/res/drawable/ic_menu_send.xml | 2 +- .../res/drawable/ic_menu_send_selected.xml | 9 + app/src/main/res/drawable/ic_menu_server.xml | 2 +- .../main/res/drawable/ic_menu_settings.xml | 2 +- .../drawable/ic_menu_settings_selected.xml | 9 + app/src/main/res/drawable/ic_menu_task.xml | 2 +- .../ic_query.xml | 0 .../ic_splash_app_logo.png | Bin .../ic_splash_company_logo.png | Bin app/src/main/res/drawable/ic_start.xml | 8 +- app/src/main/res/drawable/ic_stop.xml | 8 +- app/src/main/res/drawable/ic_test.xml | 9 + app/src/main/res/drawable/icon_add.png | Bin 508 -> 0 bytes app/src/main/res/drawable/icon_delete.png | Bin 360 -> 0 bytes app/src/main/res/drawable/icon_off.png | Bin 298 -> 0 bytes app/src/main/res/drawable/icon_on.png | Bin 448 -> 0 bytes app/src/main/res/drawable/icon_save.png | Bin 152 -> 0 bytes app/src/main/res/drawable/icon_test.png | Bin 504 -> 0 bytes .../receive_btn.xml | 0 .../selector_custom_spinner_bg.xml | 0 .../drawable/selector_icon_tabbar_logs.xml | 6 + .../drawable/selector_icon_tabbar_rules.xml | 6 + .../drawable/selector_icon_tabbar_senders.xml | 6 + .../selector_icon_tabbar_settings.xml | 6 + .../{drawable-mdpi => drawable}/send_btn.xml | 0 app/src/main/res/layout/activity_main.xml | 44 +- .../adapter_call_card_view_list_item.xml | 4 +- .../adapter_contact_card_view_list_item.xml | 4 +- .../adapter_frpcs_card_view_list_item.xml | 5 +- .../adapter_logs_card_view_list_item.xml | 2 +- .../adapter_rules_card_view_list_item.xml | 6 +- .../adapter_senders_card_view_list_item.xml | 4 +- .../adapter_sms_card_view_list_item.xml | 4 +- .../res/layout/adapter_task_setting_item.xml | 4 +- .../adapter_tasks_card_view_list_item.xml | 7 +- app/src/main/res/layout/dialog_guide_tips.xml | 42 +- .../res/layout/dialog_sender_bottom_sheet.xml | 2 +- .../dialog_task_action_bottom_sheet.xml | 2 +- .../dialog_task_condition_bottom_sheet.xml | 2 +- app/src/main/res/layout/fragment_about.xml | 20 +- app/src/main/res/layout/fragment_app_list.xml | 4 +- app/src/main/res/layout/fragment_client.xml | 8 +- .../layout/fragment_client_battery_query.xml | 8 +- .../res/layout/fragment_client_call_query.xml | 2 +- .../main/res/layout/fragment_client_clone.xml | 19 +- .../layout/fragment_client_contact_add.xml | 16 +- .../res/layout/fragment_client_location.xml | 10 +- .../res/layout/fragment_client_sms_query.xml | 2 +- .../res/layout/fragment_client_sms_send.xml | 5 +- .../res/layout/fragment_client_wol_send.xml | 21 +- app/src/main/res/layout/fragment_logs.xml | 2 +- app/src/main/res/layout/fragment_rules.xml | 2 +- .../main/res/layout/fragment_rules_edit.xml | 43 +- app/src/main/res/layout/fragment_senders.xml | 2 +- .../main/res/layout/fragment_senders_bark.xml | 37 +- .../fragment_senders_dingtalk_group_robot.xml | 41 +- .../fragment_senders_dingtalk_inner_robot.xml | 37 +- .../res/layout/fragment_senders_email.xml | 45 +- .../res/layout/fragment_senders_feishu.xml | 35 +- .../layout/fragment_senders_feishu_app.xml | 35 +- .../res/layout/fragment_senders_gotify.xml | 37 +- .../res/layout/fragment_senders_pushplus.xml | 37 +- .../layout/fragment_senders_serverchan.xml | 37 +- .../main/res/layout/fragment_senders_sms.xml | 35 +- .../res/layout/fragment_senders_socket.xml | 35 +- .../res/layout/fragment_senders_telegram.xml | 33 +- .../layout/fragment_senders_url_scheme.xml | 35 +- .../res/layout/fragment_senders_webhook.xml | 79 +-- .../layout/fragment_senders_wework_agent.xml | 41 +- .../layout/fragment_senders_wework_robot.xml | 33 +- app/src/main/res/layout/fragment_server.xml | 52 +- app/src/main/res/layout/fragment_settings.xml | 284 +++++---- app/src/main/res/layout/fragment_tasks.xml | 2 +- .../res/layout/fragment_tasks_action_frpc.xml | 31 +- .../fragment_tasks_action_notification.xml | 35 +- .../layout/fragment_tasks_action_send_sms.xml | 27 +- .../fragment_tasks_condition_battery.xml | 40 +- .../fragment_tasks_condition_charge.xml | 34 +- .../layout/fragment_tasks_condition_cron.xml | 35 +- ...fragment_tasks_condition_leave_address.xml | 36 +- .../fragment_tasks_condition_lock_screen.xml | 38 +- .../fragment_tasks_condition_network.xml | 34 +- .../layout/fragment_tasks_condition_sim.xml | 34 +- .../fragment_tasks_condition_to_address.xml | 36 +- .../main/res/layout/fragment_tasks_edit.xml | 40 +- .../res/layout/include_navigation_header.xml | 16 +- .../main/res/layout/include_toolbar_web.xml | 16 +- app/src/main/res/layout/item_add_header.xml | 4 +- app/src/main/res/layout/item_add_sender.xml | 4 +- app/src/main/res/layout/item_logs.xml | 2 +- app/src/main/res/layout/item_sender.xml | 2 +- .../main/res/layout/layout_main_content.xml | 44 -- app/src/main/res/layout/menu_item_option.xml | 23 + app/src/main/res/layout/menu_left_drawer.xml | 27 + app/src/main/res/menu/menu_drawer.xml | 90 --- app/src/main/res/menu/menu_logs.xml | 19 - .../main/res/menu/menu_navigation_bottom.xml | 26 - app/src/main/res/menu/menu_rules.xml | 19 - app/src/main/res/menu/menu_senders.xml | 19 - app/src/main/res/menu/menu_settings.xml | 19 - app/src/main/res/values-en/arrays.xml | 164 ------ app/src/main/res/values-en/strings.xml | 49 +- app/src/main/res/values/arrays.xml | 70 ++- app/src/main/res/values/dimens.xml | 6 + app/src/main/res/values/integers.xml | 42 +- app/src/main/res/values/strings.xml | 59 +- app/src/main/res/values/styles.xml | 4 - app/src/main/res/values/styles_widget.xml | 41 +- build.gradle | 1 + 200 files changed, 2130 insertions(+), 1764 deletions(-) create mode 100644 app/src/main/java/com/idormy/sms/forwarder/adapter/menu/DrawerAdapter.kt create mode 100644 app/src/main/java/com/idormy/sms/forwarder/adapter/menu/DrawerItem.kt create mode 100644 app/src/main/java/com/idormy/sms/forwarder/adapter/menu/SimpleItem.kt create mode 100644 app/src/main/java/com/idormy/sms/forwarder/adapter/menu/SpaceItem.kt delete mode 100644 app/src/main/res/color/selector_round_button_main_theme_color.xml create mode 100644 app/src/main/res/color/selector_tab_text_color.xml delete mode 100644 app/src/main/res/drawable-hdpi/ic_forwarder.webp delete mode 100644 app/src/main/res/drawable-mdpi/ic_forwarder.webp delete mode 100644 app/src/main/res/drawable-xhdpi/ic_forwarder.webp delete mode 100644 app/src/main/res/drawable-xxxhdpi/ic_web_back.png delete mode 100644 app/src/main/res/drawable-xxxhdpi/ic_web_close.png delete mode 100644 app/src/main/res/drawable-xxxhdpi/ic_web_more.png create mode 100644 app/src/main/res/drawable/ic_action_back.xml rename app/src/main/res/drawable/{ic_action_close_white.xml => ic_action_close.xml} (100%) create mode 100644 app/src/main/res/drawable/ic_action_menu.xml rename app/src/main/res/{drawable-xxhdpi => drawable}/ic_forwarder.webp (100%) rename app/src/main/res/{drawable-hdpi => drawable}/ic_menu_app.xml (88%) delete mode 100644 app/src/main/res/drawable/ic_menu_logcat.xml create mode 100644 app/src/main/res/drawable/ic_menu_logs_selected.xml create mode 100644 app/src/main/res/drawable/ic_menu_rule_selected.xml create mode 100644 app/src/main/res/drawable/ic_menu_send_selected.xml create mode 100644 app/src/main/res/drawable/ic_menu_settings_selected.xml rename app/src/main/res/{drawable-xxxhdpi => drawable}/ic_query.xml (100%) rename app/src/main/res/{drawable-hdpi => drawable}/ic_splash_app_logo.png (100%) rename app/src/main/res/{drawable-hdpi => drawable}/ic_splash_company_logo.png (100%) create mode 100644 app/src/main/res/drawable/ic_test.xml delete mode 100644 app/src/main/res/drawable/icon_add.png delete mode 100644 app/src/main/res/drawable/icon_delete.png delete mode 100644 app/src/main/res/drawable/icon_off.png delete mode 100644 app/src/main/res/drawable/icon_on.png delete mode 100644 app/src/main/res/drawable/icon_save.png delete mode 100644 app/src/main/res/drawable/icon_test.png rename app/src/main/res/{drawable-mdpi => drawable}/receive_btn.xml (100%) rename app/src/main/res/{drawable-hdpi => drawable}/selector_custom_spinner_bg.xml (100%) create mode 100644 app/src/main/res/drawable/selector_icon_tabbar_logs.xml create mode 100644 app/src/main/res/drawable/selector_icon_tabbar_rules.xml create mode 100644 app/src/main/res/drawable/selector_icon_tabbar_senders.xml create mode 100644 app/src/main/res/drawable/selector_icon_tabbar_settings.xml rename app/src/main/res/{drawable-mdpi => drawable}/send_btn.xml (100%) delete mode 100644 app/src/main/res/layout/layout_main_content.xml create mode 100644 app/src/main/res/layout/menu_item_option.xml create mode 100644 app/src/main/res/layout/menu_left_drawer.xml delete mode 100644 app/src/main/res/menu/menu_drawer.xml delete mode 100644 app/src/main/res/menu/menu_logs.xml delete mode 100644 app/src/main/res/menu/menu_navigation_bottom.xml delete mode 100644 app/src/main/res/menu/menu_rules.xml delete mode 100644 app/src/main/res/menu/menu_senders.xml delete mode 100644 app/src/main/res/menu/menu_settings.xml delete mode 100644 app/src/main/res/values-en/arrays.xml diff --git a/app/build.gradle b/app/build.gradle index 54ac9411..cc7e5750 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -306,6 +306,11 @@ dependencies { implementation 'gatewayapps.crondroid:crondroid:1.0.0' //Java Parser For Cron Expressions: https://github.com/grahamar/cron-parser implementation 'net.redhogs.cronparser:cron-parser-core:3.5' + + // 侧边栏菜单:https://github.com/yarolegovich/SlidingRootNav + implementation 'com.yarolegovich:sliding-root-nav:1.1.1' + // TabBar:https://github.com/xuexiangjys/JPTabBar + // implementation 'com.github.xuexiangjys:JPTabBar:1.0.1' } //自动添加X-Library依赖 apply from: 'x-library.gradle' diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 30973e29..b2391d59 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -298,3 +298,7 @@ -dontwarn javax.lang.model.** -dontwarn javax.naming.** -dontwarn javax.naming.directory.** + +# This is generated automatically by the Android Gradle plugin. +-dontwarn org.joda.convert.** +-dontwarn org.slf4j.impl.** \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dd4cc8d2..a8aead44 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,6 +16,7 @@ + - - - - () //结束时间 diff --git a/app/src/main/java/com/idormy/sms/forwarder/activity/MainActivity.kt b/app/src/main/java/com/idormy/sms/forwarder/activity/MainActivity.kt index df647990..fedd988a 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/activity/MainActivity.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/activity/MainActivity.kt @@ -1,77 +1,94 @@ package com.idormy.sms.forwarder.activity -import android.annotation.SuppressLint import android.app.ActivityManager import android.content.Context import android.content.Intent +import android.graphics.drawable.Drawable import android.os.Build import android.os.Bundle import android.util.Log import android.view.LayoutInflater -import android.view.MenuItem -import android.view.View -import androidx.appcompat.app.ActionBarDrawerToggle -import androidx.appcompat.widget.Toolbar +import android.widget.LinearLayout +import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import androidx.viewpager.widget.ViewPager import androidx.work.OneTimeWorkRequestBuilder import androidx.work.WorkManager -import com.google.android.material.bottomnavigation.BottomNavigationView -import com.google.android.material.bottomsheet.BottomSheetDialog +import com.google.android.material.tabs.TabLayout import com.hjq.permissions.OnPermissionCallback import com.hjq.permissions.Permission import com.hjq.permissions.XXPermissions import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.R -import com.idormy.sms.forwarder.adapter.WidgetItemAdapter +import com.idormy.sms.forwarder.adapter.menu.DrawerAdapter +import com.idormy.sms.forwarder.adapter.menu.DrawerItem +import com.idormy.sms.forwarder.adapter.menu.SimpleItem +import com.idormy.sms.forwarder.adapter.menu.SpaceItem import com.idormy.sms.forwarder.core.BaseActivity import com.idormy.sms.forwarder.core.webview.AgentWebActivity -import com.idormy.sms.forwarder.database.AppDatabase import com.idormy.sms.forwarder.databinding.ActivityMainBinding -import com.idormy.sms.forwarder.fragment.* +import com.idormy.sms.forwarder.fragment.AboutFragment +import com.idormy.sms.forwarder.fragment.AppListFragment +import com.idormy.sms.forwarder.fragment.ClientFragment +import com.idormy.sms.forwarder.fragment.FrpcFragment +import com.idormy.sms.forwarder.fragment.LogsFragment +import com.idormy.sms.forwarder.fragment.RulesFragment +import com.idormy.sms.forwarder.fragment.SendersFragment +import com.idormy.sms.forwarder.fragment.ServerFragment +import com.idormy.sms.forwarder.fragment.SettingsFragment +import com.idormy.sms.forwarder.fragment.TasksFragment import com.idormy.sms.forwarder.service.ForegroundService -import com.idormy.sms.forwarder.utils.* +import com.idormy.sms.forwarder.utils.FRPC_LIB_DOWNLOAD_URL +import com.idormy.sms.forwarder.utils.FRPC_LIB_VERSION +import com.idormy.sms.forwarder.utils.SettingUtils +import com.idormy.sms.forwarder.utils.XToastUtils import com.idormy.sms.forwarder.utils.sdkinit.XUpdateInit import com.idormy.sms.forwarder.widget.GuideTipsDialog.Companion.showTips -import com.idormy.sms.forwarder.widget.GuideTipsDialog.Companion.showTipsForce import com.idormy.sms.forwarder.workers.LoadAppListWorker -import com.jeremyliao.liveeventbus.LiveEventBus -import com.xuexiang.xaop.annotation.SingleClick import com.xuexiang.xhttp2.XHttp import com.xuexiang.xhttp2.callback.DownloadProgressCallBack import com.xuexiang.xhttp2.exception.ApiException -import com.xuexiang.xpage.base.XPageFragment -import com.xuexiang.xpage.core.PageOption -import com.xuexiang.xpage.model.PageInfo -import com.xuexiang.xui.adapter.FragmentAdapter -import com.xuexiang.xui.adapter.recyclerview.RecyclerViewHolder -import com.xuexiang.xui.utils.DensityUtils import com.xuexiang.xui.utils.ResUtils +import com.xuexiang.xui.utils.ThemeUtils +import com.xuexiang.xui.utils.ViewUtils import com.xuexiang.xui.utils.WidgetUtils -import com.xuexiang.xui.widget.alpha.XUIAlphaTextView import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.GravityEnum import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog import com.xuexiang.xutil.file.FileUtils import com.xuexiang.xutil.net.NetworkUtils +import com.yarolegovich.slidingrootnav.SlideGravity +import com.yarolegovich.slidingrootnav.SlidingRootNav +import com.yarolegovich.slidingrootnav.SlidingRootNavBuilder +import com.yarolegovich.slidingrootnav.callback.DragStateListener import frpclib.Frpclib -import io.reactivex.CompletableObserver -import io.reactivex.android.schedulers.AndroidSchedulers -import io.reactivex.disposables.Disposable -import io.reactivex.schedulers.Schedulers import java.io.File -@Suppress("DEPRECATION", "PrivatePropertyName") -class MainActivity : BaseActivity(), - View.OnClickListener, - BottomNavigationView.OnNavigationItemSelectedListener, - Toolbar.OnMenuItemClickListener, - RecyclerViewHolder.OnItemClickListener { +@Suppress("PrivatePropertyName", "unused", "DEPRECATION") +class MainActivity : BaseActivity(), DrawerAdapter.OnItemSelectedListener { private val TAG: String = MainActivity::class.java.simpleName - private lateinit var mTitles: Array - private var logsType: String = "sms" - private var ruleType: String = "sms" + //private lateinit var mTitles: Array + //private var logsType: String = "sms" + //private var ruleType: String = "sms" + + private val POS_LOG = 0 + private val POS_RULE = 1 + private val POS_SENDER = 2 + private val POS_SETTING = 3 + private val POS_TASK = 5 //4为空行 + private val POS_SERVER = 6 + private val POS_CLIENT = 7 + private val POS_FRPC = 8 + private val POS_APPS = 9 + private val POS_HELP = 11 //10为空行 + private val POS_ABOUT = 12 + + private lateinit var mTabLayout: TabLayout + private lateinit var mSlidingRootNav: SlidingRootNav + private lateinit var mLLMenu: LinearLayout + private lateinit var mMenuTitles: Array + private lateinit var mMenuIcons: Array + private lateinit var mAdapter: DrawerAdapter override fun viewBindingInflate(inflater: LayoutInflater?): ActivityMainBinding { return ActivityMainBinding.inflate(inflater!!) @@ -79,9 +96,10 @@ class MainActivity : BaseActivity(), override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - initViews() + initData() - initListeners() + initViews() + initSlidingMenu(savedInstanceState) //不在最近任务列表中显示 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && SettingUtils.enableExcludeFromRecents) { @@ -95,26 +113,23 @@ class MainActivity : BaseActivity(), } //检查通知权限是否获取 - XXPermissions.with(this) - .permission(Permission.NOTIFICATION_SERVICE) - .permission(Permission.POST_NOTIFICATIONS) - .request(OnPermissionCallback { _, allGranted -> - if (!allGranted) { - XToastUtils.error(R.string.tips_notification) - return@OnPermissionCallback - } + XXPermissions.with(this).permission(Permission.NOTIFICATION_SERVICE).permission(Permission.POST_NOTIFICATIONS).request(OnPermissionCallback { _, allGranted -> + if (!allGranted) { + XToastUtils.error(R.string.tips_notification) + return@OnPermissionCallback + } - //启动前台服务 - if (!ForegroundService.isRunning) { - val serviceIntent = Intent(this, ForegroundService::class.java) - serviceIntent.action = "START" - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - startForegroundService(serviceIntent) - } else { - startService(serviceIntent) - } + //启动前台服务 + if (!ForegroundService.isRunning) { + val serviceIntent = Intent(this, ForegroundService::class.java) + serviceIntent.action = "START" + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + startForegroundService(serviceIntent) + } else { + startService(serviceIntent) } - }) + } + }) } override val isSupportSlideBack: Boolean @@ -122,24 +137,37 @@ class MainActivity : BaseActivity(), private fun initViews() { WidgetUtils.clearActivityBackground(this) - mTitles = ResUtils.getStringArray(R.array.home_titles) - binding!!.includeMain.toolbar.title = mTitles[0] - binding!!.includeMain.toolbar.inflateMenu(R.menu.menu_logs) - binding!!.includeMain.toolbar.setOnMenuItemClickListener(this) + initTab() + } - //主页内容填充 - val fragments = arrayOf( - LogsFragment(), - RulesFragment(), - SendersFragment(), - SettingsFragment() - ) - val adapter = FragmentAdapter(supportFragmentManager, fragments) - binding!!.includeMain.viewPager.offscreenPageLimit = mTitles.size - 1 - binding!!.includeMain.viewPager.adapter = adapter + private fun initTab() { + mTabLayout = binding!!.tabs + WidgetUtils.addTabWithoutRipple(mTabLayout, getString(R.string.menu_logs), R.drawable.selector_icon_tabbar_logs) + WidgetUtils.addTabWithoutRipple(mTabLayout, getString(R.string.menu_rules), R.drawable.selector_icon_tabbar_rules) + WidgetUtils.addTabWithoutRipple(mTabLayout, getString(R.string.menu_senders), R.drawable.selector_icon_tabbar_senders) + WidgetUtils.addTabWithoutRipple(mTabLayout, getString(R.string.menu_settings), R.drawable.selector_icon_tabbar_settings) + WidgetUtils.setTabLayoutTextFont(mTabLayout) + switchPage(LogsFragment::class.java) + mTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { + override fun onTabSelected(tab: TabLayout.Tab) { + mAdapter.setSelected(tab.position) + when (tab.position) { + POS_LOG -> switchPage(LogsFragment::class.java) + POS_RULE -> switchPage(RulesFragment::class.java) + POS_SENDER -> switchPage(SendersFragment::class.java) + POS_SETTING -> switchPage(SettingsFragment::class.java) + } + } + + override fun onTabUnselected(tab: TabLayout.Tab) {} + override fun onTabReselected(tab: TabLayout.Tab) {} + }) } private fun initData() { + mMenuTitles = ResUtils.getStringArray(this, R.array.menu_titles) + mMenuIcons = ResUtils.getDrawableArray(this, R.array.menu_icons) + //仅当开启自动检查且有网络时自动检查更新/获取提示 if (SettingUtils.autoCheckUpdate && NetworkUtils.isHaveInternet()) { showTips(this) @@ -147,243 +175,6 @@ class MainActivity : BaseActivity(), } } - fun initListeners() { - val toggle = ActionBarDrawerToggle( - this, - binding!!.drawerLayout, - binding!!.includeMain.toolbar, - R.string.navigation_drawer_open, - R.string.navigation_drawer_close - ) - binding!!.drawerLayout.addDrawerListener(toggle) - toggle.syncState() - - //侧边栏点击事件 - binding!!.navView.setNavigationItemSelectedListener { menuItem: MenuItem -> - if (menuItem.isCheckable) { - binding!!.drawerLayout.closeDrawers() - return@setNavigationItemSelectedListener handleNavigationItemSelected(menuItem) - } else { - when (menuItem.itemId) { - R.id.nav_task -> openNewPage(TasksFragment::class.java) - R.id.nav_server -> openNewPage(ServerFragment::class.java) - R.id.nav_client -> openNewPage(ClientFragment::class.java) - R.id.nav_frpc -> { - if (!FileUtils.isFileExists(filesDir.absolutePath + "/libs/libgojni.so")) { - MaterialDialog.Builder(this) - .title( - String.format( - getString(R.string.frpclib_download_title), - FRPC_LIB_VERSION - ) - ) - .content(R.string.download_frpc_tips) - .positiveText(R.string.lab_yes) - .negativeText(R.string.lab_no) - .onPositive { _: MaterialDialog?, _: DialogAction? -> - downloadFrpcLib() - } - .show() - return@setNavigationItemSelectedListener false - } - - if (FRPC_LIB_VERSION == Frpclib.getVersion()) { - openNewPage(FrpcFragment::class.java) - } else { - MaterialDialog.Builder(this) - .title(R.string.frpclib_version_mismatch) - .content(R.string.download_frpc_tips) - .positiveText(R.string.lab_yes) - .negativeText(R.string.lab_no) - .onPositive { _: MaterialDialog?, _: DialogAction? -> - downloadFrpcLib() - } - .show() - } - } - - R.id.nav_app_list -> { - if (App.UserAppList.isEmpty() && App.SystemAppList.isEmpty()) { - XToastUtils.info(getString(R.string.loading_app_list)) - val request = OneTimeWorkRequestBuilder().build() - WorkManager.getInstance(this).enqueue(request) - Thread.sleep(2000) - } - openNewPage(AppListFragment::class.java) - } - //R.id.nav_logcat -> openNewPage(LogcatFragment::class.java) - R.id.nav_help -> AgentWebActivity.goWeb(this, getString(R.string.url_help)) - R.id.nav_about -> openNewPage(AboutFragment::class.java) - else -> XToastUtils.toast("Click:" + menuItem.title) - } - } - true - } - - //主页事件监听 - binding!!.includeMain.viewPager.addOnPageChangeListener(object : - ViewPager.OnPageChangeListener { - override fun onPageScrolled( - position: Int, - positionOffset: Float, - positionOffsetPixels: Int, - ) { - } - - override fun onPageSelected(position: Int) { - val item = binding!!.includeMain.bottomNavigation.menu.getItem(position) - binding!!.includeMain.toolbar.title = item.title - binding!!.includeMain.toolbar.menu.clear() - when (item.title) { - getString(R.string.menu_rules) -> binding!!.includeMain.toolbar.inflateMenu( - R.menu.menu_rules - ) - - getString(R.string.menu_senders) -> binding!!.includeMain.toolbar.inflateMenu( - R.menu.menu_senders - ) - - getString(R.string.menu_settings) -> binding!!.includeMain.toolbar.inflateMenu( - R.menu.menu_settings - ) - - else -> binding!!.includeMain.toolbar.inflateMenu(R.menu.menu_logs) - } - item.isChecked = true - updateSideNavStatus(item) - } - - override fun onPageScrollStateChanged(state: Int) {} - }) - binding!!.includeMain.bottomNavigation.setOnNavigationItemSelectedListener(this) - - //tabBar分类切换 - LiveEventBus.get(EVENT_UPDATE_LOGS_TYPE, String::class.java).observe(this) { type: String -> - logsType = type - } - LiveEventBus.get(EVENT_UPDATE_RULE_TYPE, String::class.java).observe(this) { type: String -> - ruleType = type - } - } - - /** - * 处理侧边栏点击事件 - * - * @param menuItem - * @return - */ - private fun handleNavigationItemSelected(menuItem: MenuItem): Boolean { - for (index in mTitles.indices) { - if (mTitles[index] == menuItem.title) { - binding!!.includeMain.toolbar.title = menuItem.title - binding!!.includeMain.viewPager.setCurrentItem(index, false) - return true - } - } - return false - } - - @SuppressLint("InflateParams") - override fun onMenuItemClick(item: MenuItem): Boolean { - when (item.itemId) { - R.id.action_notifications -> { - showTipsForce(this) - } - - R.id.action_clear_logs -> { - MaterialDialog.Builder(this) - .content(R.string.delete_type_log_tips) - .positiveText(R.string.lab_yes) - .negativeText(R.string.lab_no) - .onPositive { _: MaterialDialog?, _: DialogAction? -> - AppDatabase.getInstance(this) - .msgDao() - .deleteAll(logsType) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : CompletableObserver { - override fun onSubscribe(d: Disposable) {} - override fun onComplete() { - XToastUtils.success(R.string.delete_type_log_toast) - } - - override fun onError(e: Throwable) { - e.message?.let { XToastUtils.error(it) } - } - }) - } - .show() - } - - R.id.action_add_sender -> { - val dialog = BottomSheetDialog(this) - val view: View = - LayoutInflater.from(this).inflate(R.layout.dialog_sender_bottom_sheet, null) - val recyclerView: RecyclerView = view.findViewById(R.id.recyclerView) - - WidgetUtils.initGridRecyclerView(recyclerView, 4, DensityUtils.dp2px(1f)) - val widgetItemAdapter = WidgetItemAdapter(SENDER_FRAGMENT_LIST) - widgetItemAdapter.setOnItemClickListener(this) - recyclerView.adapter = widgetItemAdapter - - val bottomSheetCloseButton: XUIAlphaTextView = view.findViewById(R.id.bottom_sheet_close_button) - bottomSheetCloseButton.setOnClickListener { dialog.dismiss() } - - dialog.setContentView(view) - dialog.setCancelable(true) - dialog.setCanceledOnTouchOutside(true) - dialog.show() - WidgetUtils.transparentBottomSheetDialogBackground(dialog) - } - - R.id.action_add_rule -> { - PageOption.to(RulesEditFragment::class.java) - .putString(KEY_RULE_TYPE, ruleType) - .setNewActivity(true) - .open(this) - } - /*R.id.action_restore_settings -> { - XToastUtils.success(logsType) - }*/ - } - return false - } - - @SingleClick - override fun onClick(v: View) { - } - - //================Navigation================// - /** - * 底部导航栏点击事件 - * - * @param menuItem - * @return - */ - override fun onNavigationItemSelected(menuItem: MenuItem): Boolean { - for (index in mTitles.indices) { - if (mTitles[index] == menuItem.title) { - binding!!.includeMain.toolbar.title = menuItem.title - binding!!.includeMain.viewPager.setCurrentItem(index, false) - updateSideNavStatus(menuItem) - return true - } - } - return false - } - - /** - * 更新侧边栏菜单选中状态 - * - * @param menuItem - */ - private fun updateSideNavStatus(menuItem: MenuItem) { - val side = binding!!.navView.menu.findItem(menuItem.itemId) - if (side != null) { - side.isChecked = true - } - } - //按返回键不退出回到桌面 @Deprecated("Deprecated in Java") override fun onBackPressed() { @@ -393,20 +184,137 @@ class MainActivity : BaseActivity(), startActivity(intent) } - @SingleClick - override fun onItemClick(itemView: View, widgetInfo: PageInfo, pos: Int) { - try { - @Suppress("UNCHECKED_CAST") - PageOption.to(Class.forName(widgetInfo.classPath) as Class) //跳转的fragment - .setNewActivity(true) - .putInt(KEY_SENDER_TYPE, pos) //注意:目前刚好是这个顺序而已 - .open(this) - } catch (e: Exception) { - e.printStackTrace() - XToastUtils.error(e.message.toString()) + fun openMenu() { + mSlidingRootNav.openMenu() + } + + fun closeMenu() { + mSlidingRootNav.closeMenu() + } + + fun isMenuOpen(): Boolean { + return mSlidingRootNav.isMenuOpened + } + + private fun initSlidingMenu(savedInstanceState: Bundle?) { + mSlidingRootNav = SlidingRootNavBuilder(this).withGravity(if (ResUtils.isRtl(this)) SlideGravity.RIGHT else SlideGravity.LEFT).withMenuOpened(false).withContentClickableWhenMenuOpened(false).withSavedState(savedInstanceState).withMenuLayout(R.layout.menu_left_drawer).inject() + mLLMenu = mSlidingRootNav.layout.findViewById(R.id.ll_menu) + //val ivQrcode = mSlidingRootNav.layout.findViewById(R.id.iv_qrcode) + //ivQrcode.setOnClickListener { openNewPage(SettingsFragment::class.java) } + //val ivSetting = mSlidingRootNav.layout.findViewById(R.id.iv_setting) + //ivSetting.setOnClickListener { openNewPage(SettingsFragment::class.java) } + ViewUtils.setVisibility(mLLMenu, false) + mAdapter = DrawerAdapter( + mutableListOf( + createItemFor(POS_LOG).setChecked(true), + createItemFor(POS_RULE), + createItemFor(POS_SENDER), + createItemFor(POS_SETTING), + SpaceItem(15), + createItemFor(POS_TASK), + createItemFor(POS_SERVER), + createItemFor(POS_CLIENT), + createItemFor(POS_FRPC), + createItemFor(POS_APPS), + SpaceItem(15), + createItemFor(POS_HELP), + createItemFor(POS_ABOUT), + ) + ) + mAdapter.setListener(this) + val list: RecyclerView = findViewById(R.id.list) + list.isNestedScrollingEnabled = false + list.layoutManager = LinearLayoutManager(this) + list.adapter = mAdapter + mAdapter.setSelected(POS_LOG) + mSlidingRootNav.isMenuLocked = false + mSlidingRootNav.layout.addDragStateListener(object : DragStateListener { + override fun onDragStart() { + ViewUtils.setVisibility(mLLMenu, true) + } + + override fun onDragEnd(isMenuOpened: Boolean) { + ViewUtils.setVisibility(mLLMenu, isMenuOpened) + /*if (isMenuOpened) { + if (!GuideCaseView.isShowOnce(this@MainActivity, getString(R.string.guide_key_sliding_root_navigation))) { + val guideStep1 = GuideCaseView.Builder(this@MainActivity) + .title("点击进入,可切换主题样式哦~~") + .titleSize(18, TypedValue.COMPLEX_UNIT_SP) + .focusOn(ivSetting) + .build() + val guideStep2 = GuideCaseView.Builder(this@MainActivity) + .title("点击进入,扫码关注哦~~") + .titleSize(18, TypedValue.COMPLEX_UNIT_SP) + .focusOn(ivQrcode) + .build() + GuideCaseQueue() + .add(guideStep1) + .add(guideStep2) + .show() + GuideCaseView.setShowOnce(this@MainActivity, getString(R.string.guide_key_sliding_root_navigation)) + } + }*/ + } + }) + } + + override fun onItemSelected(position: Int) { + when (position) { + POS_LOG, POS_RULE, POS_SENDER, POS_SETTING -> { + val tab = mTabLayout.getTabAt(position) + tab?.select() + mSlidingRootNav.closeMenu() + } + + POS_TASK -> openNewPage(TasksFragment::class.java) + POS_SERVER -> openNewPage(ServerFragment::class.java) + POS_CLIENT -> openNewPage(ClientFragment::class.java) + POS_FRPC -> { + if (FileUtils.isFileExists(filesDir.absolutePath + "/libs/libgojni.so") && FRPC_LIB_VERSION == Frpclib.getVersion()) { + openNewPage(FrpcFragment::class.java) + return + } + + val title = if (!FileUtils.isFileExists(filesDir.absolutePath + "/libs/libgojni.so")) { + String.format(getString(R.string.frpclib_download_title), FRPC_LIB_VERSION) + } else { + getString(R.string.frpclib_version_mismatch) + } + + MaterialDialog.Builder(this) + .title(title) + .content(R.string.download_frpc_tips) + .positiveText(R.string.lab_yes) + .negativeText(R.string.lab_no) + .onPositive { _: MaterialDialog?, _: DialogAction? -> + downloadFrpcLib() + } + .show() + } + + POS_APPS -> { + if (App.UserAppList.isEmpty() && App.SystemAppList.isEmpty()) { + XToastUtils.info(getString(R.string.loading_app_list)) + val request = OneTimeWorkRequestBuilder().build() + WorkManager.getInstance(this).enqueue(request) + return + } + openNewPage(AppListFragment::class.java) + } + + POS_HELP -> AgentWebActivity.goWeb(this, getString(R.string.url_help)) + POS_ABOUT -> openNewPage(AboutFragment::class.java) } } + private fun createItemFor(position: Int): DrawerItem<*> { + return SimpleItem(mMenuIcons[position], mMenuTitles[position]) + .withIconTint(ThemeUtils.resolveColor(this, R.attr.xui_config_color_content_text)) + .withTextTint(ThemeUtils.resolveColor(this, R.attr.xui_config_color_content_text)) + .withSelectedIconTint(ThemeUtils.getMainThemeColor(this)) + .withSelectedTextTint(ThemeUtils.getMainThemeColor(this)) + } + //动态加载FrpcLib private fun downloadFrpcLib() { val cpuAbi = when (Build.CPU_ABI) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/FrpcPagingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/FrpcPagingAdapter.kt index fa2e999f..34b8455d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/FrpcPagingAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/FrpcPagingAdapter.kt @@ -15,6 +15,7 @@ import com.idormy.sms.forwarder.databinding.AdapterFrpcsCardViewListItemBinding import com.xuexiang.xutil.resource.ResUtils.getColors import frpclib.Frpclib +@Suppress("EmptyMethod", "unused") class FrpcPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter(diffCallback) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/LogsPagingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/LogsPagingAdapter.kt index 4e448663..e8c1c78a 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/LogsPagingAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/LogsPagingAdapter.kt @@ -12,7 +12,6 @@ import com.idormy.sms.forwarder.database.entity.LogsAndRuleAndSender import com.idormy.sms.forwarder.databinding.AdapterLogsCardViewListItemBinding import com.xuexiang.xutil.data.DateUtils -@Suppress("unused") class LogsPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter(diffCallback) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/MsgPagingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/MsgPagingAdapter.kt index c41413bb..bba93742 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/MsgPagingAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/MsgPagingAdapter.kt @@ -18,6 +18,7 @@ import com.idormy.sms.forwarder.database.entity.MsgAndLogs import com.idormy.sms.forwarder.databinding.AdapterLogsCardViewListItemBinding import com.xuexiang.xutil.data.DateUtils +@Suppress("EmptyMethod", "unused") class MsgPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter(diffCallback) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/RulePagingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/RulePagingAdapter.kt index e1386a2c..c8f17bca 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/RulePagingAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/RulePagingAdapter.kt @@ -16,6 +16,7 @@ import com.idormy.sms.forwarder.adapter.RulePagingAdapter.MyViewHolder import com.idormy.sms.forwarder.database.entity.Rule import com.idormy.sms.forwarder.databinding.AdapterRulesCardViewListItemBinding +@Suppress("EmptyMethod", "unused") class RulePagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter(diffCallback) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/SenderPagingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/SenderPagingAdapter.kt index b383cdd9..220935a0 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/SenderPagingAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/SenderPagingAdapter.kt @@ -11,6 +11,7 @@ import com.idormy.sms.forwarder.adapter.SenderPagingAdapter.MyViewHolder import com.idormy.sms.forwarder.database.entity.Sender import com.idormy.sms.forwarder.databinding.AdapterSendersCardViewListItemBinding +@Suppress("EmptyMethod", "unused") class SenderPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter(diffCallback) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskPagingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskPagingAdapter.kt index f828b661..c838b16d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskPagingAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskPagingAdapter.kt @@ -18,6 +18,7 @@ import com.idormy.sms.forwarder.databinding.AdapterTasksCardViewListItemBinding import com.idormy.sms.forwarder.entity.TaskSetting import com.xuexiang.xutil.data.DateUtils +@Suppress("EmptyMethod", "unused") class TaskPagingAdapter(private val itemClickListener: OnItemClickListener) : PagingDataAdapter(diffCallback) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskSettingAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskSettingAdapter.kt index 92d221f2..4af529fb 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskSettingAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/TaskSettingAdapter.kt @@ -1,5 +1,3 @@ -@file:Suppress("DEPRECATION") - package com.idormy.sms.forwarder.adapter import android.annotation.SuppressLint @@ -14,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.entity.TaskSetting +@Suppress("DEPRECATION", "unused") class TaskSettingAdapter( val itemList: MutableList, private val editClickListener: (Int) -> Unit, @@ -90,11 +89,10 @@ class TaskSettingAdapter( notifyItemMoved(fromPosition, toPosition) } - override fun onDragFinished() { - TODO("Not yet implemented") - } + override fun onDragFinished() {} } +@Suppress("DEPRECATION") class ItemMoveCallback(private val listener: Listener) : ItemTouchHelper.Callback() { interface Listener { diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/base/broccoli/BroccoliRecyclerAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/base/broccoli/BroccoliRecyclerAdapter.kt index bd943c0b..86ef7527 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/base/broccoli/BroccoliRecyclerAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/base/broccoli/BroccoliRecyclerAdapter.kt @@ -12,6 +12,7 @@ import me.samlss.broccoli.Broccoli * @author XUE * @since 2019/4/8 16:33 */ +@Suppress("unused") abstract class BroccoliRecyclerAdapter(collection: Collection?) : BaseRecyclerAdapter(collection) { /** diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/base/broccoli/BroccoliSimpleDelegateAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/base/broccoli/BroccoliSimpleDelegateAdapter.kt index 94a6d4c5..df757175 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/base/broccoli/BroccoliSimpleDelegateAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/base/broccoli/BroccoliSimpleDelegateAdapter.kt @@ -15,6 +15,7 @@ import me.samlss.broccoli.Broccoli * @author xuexiang * @since 2021/1/9 4:52 PM */ +@Suppress("unused") abstract class BroccoliSimpleDelegateAdapter : SimpleDelegateAdapter { /** * 是否已经加载成功 diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/base/delegate/BaseDelegateAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/base/delegate/BaseDelegateAdapter.kt index 27561ea1..af639d2d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/base/delegate/BaseDelegateAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/base/delegate/BaseDelegateAdapter.kt @@ -9,6 +9,7 @@ import com.xuexiang.xui.adapter.recyclerview.RecyclerViewHolder * @author xuexiang * @since 2020/3/20 12:44 AM */ +@Suppress("unused") abstract class BaseDelegateAdapter : XDelegateAdapter { constructor() : super() constructor(list: Collection?) : super(list) diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/menu/DrawerAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/menu/DrawerAdapter.kt new file mode 100644 index 00000000..d63f77c4 --- /dev/null +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/menu/DrawerAdapter.kt @@ -0,0 +1,83 @@ +package com.idormy.sms.forwarder.adapter.menu + +import android.util.SparseArray +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView + +@Suppress("LeakingThis", "UNCHECKED_CAST") +class DrawerAdapter(private val items: List>) : RecyclerView.Adapter() { + + private val viewTypes: MutableMap>, Int> = HashMap() + private val holderFactories = SparseArray>() + + private var listener: OnItemSelectedListener? = null + + init { + processViewTypes() + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val holder = holderFactories.get(viewType).createViewHolder(parent) + holder.adapter = this + return holder + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + (items[position] as DrawerItem).bindViewHolder(holder) + } + + override fun getItemCount(): Int = items.size + + override fun getItemViewType(position: Int): Int = viewTypes[items[position]::class.java] ?: -1 + + private fun processViewTypes() { + var type = 0 + items.forEach { item -> + if (!viewTypes.containsKey(item::class.java)) { + viewTypes[item::class.java] = type + holderFactories.put(type, item) + type++ + } + } + } + + fun setSelected(position: Int) { + val newChecked = items[position] + if (!newChecked.isSelectable()) return + + items.forEachIndexed { index, item -> + if (item.isChecked()) { + item.setChecked(false) + notifyItemChanged(index) + return@forEachIndexed + } + } + + newChecked.setChecked(true) + notifyItemChanged(position) + + listener?.onItemSelected(position) + } + + fun setListener(listener: OnItemSelectedListener?) { + this.listener = listener + } + + @Suppress("DEPRECATION") + abstract class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener { + var adapter: DrawerAdapter? = null + + init { + itemView.setOnClickListener(this) + } + + override fun onClick(v: View) { + adapter?.setSelected(adapterPosition) + } + } + + interface OnItemSelectedListener { + fun onItemSelected(position: Int) + } +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/menu/DrawerItem.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/menu/DrawerItem.kt new file mode 100644 index 00000000..3c91cd6e --- /dev/null +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/menu/DrawerItem.kt @@ -0,0 +1,19 @@ +package com.idormy.sms.forwarder.adapter.menu + +import android.view.ViewGroup + +abstract class DrawerItem { + private var isChecked = false + + abstract fun createViewHolder(parent: ViewGroup): T + abstract fun bindViewHolder(holder: T) + + fun setChecked(checked: Boolean): DrawerItem { + isChecked = checked + return this + } + + fun isChecked(): Boolean = isChecked + + open fun isSelectable(): Boolean = true +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/menu/SimpleItem.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/menu/SimpleItem.kt new file mode 100644 index 00000000..d41d022b --- /dev/null +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/menu/SimpleItem.kt @@ -0,0 +1,54 @@ +package com.idormy.sms.forwarder.adapter.menu + +import android.graphics.drawable.Drawable +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import com.idormy.sms.forwarder.R + +class SimpleItem( + private val icon: Drawable, + private val title: String, + private var selectedItemIconTint: Int = 0, + private var selectedItemTextTint: Int = 0, + private var normalItemIconTint: Int = 0, + private var normalItemTextTint: Int = 0 +) : DrawerItem() { + + override fun createViewHolder(parent: ViewGroup): ViewHolder { + val inflater = LayoutInflater.from(parent.context) + val v = inflater.inflate(R.layout.menu_item_option, parent, false) + return ViewHolder(v) + } + + override fun bindViewHolder(holder: ViewHolder) { + holder.title.text = title + holder.icon.setImageDrawable(icon) + + holder.title.setTextColor(if (isChecked()) selectedItemTextTint else normalItemTextTint) + holder.icon.setColorFilter(if (isChecked()) selectedItemIconTint else normalItemIconTint) + } + + fun withSelectedIconTint(selectedItemIconTint: Int): SimpleItem = apply { + this.selectedItemIconTint = selectedItemIconTint + } + + fun withSelectedTextTint(selectedItemTextTint: Int): SimpleItem = apply { + this.selectedItemTextTint = selectedItemTextTint + } + + fun withIconTint(normalItemIconTint: Int): SimpleItem = apply { + this.normalItemIconTint = normalItemIconTint + } + + fun withTextTint(normalItemTextTint: Int): SimpleItem = apply { + this.normalItemTextTint = normalItemTextTint + } + + class ViewHolder(itemView: View) : DrawerAdapter.ViewHolder(itemView) { + val icon: ImageView = itemView.findViewById(R.id.icon) + val title: TextView = itemView.findViewById(R.id.title) + } +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/menu/SpaceItem.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/menu/SpaceItem.kt new file mode 100644 index 00000000..a271ee05 --- /dev/null +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/menu/SpaceItem.kt @@ -0,0 +1,24 @@ +package com.idormy.sms.forwarder.adapter.menu + +import android.content.Context +import android.view.View +import android.view.ViewGroup + +class SpaceItem(private val spaceDp: Int) : DrawerItem() { + + override fun createViewHolder(parent: ViewGroup): ViewHolder { + val context: Context = parent.context + val view = View(context).apply { + layoutParams = ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, (context.resources.displayMetrics.density * spaceDp).toInt() + ) + } + return ViewHolder(view) + } + + override fun bindViewHolder(holder: ViewHolder) {} + + override fun isSelectable(): Boolean = false + + class ViewHolder(itemView: View) : DrawerAdapter.ViewHolder(itemView) +} diff --git a/app/src/main/java/com/idormy/sms/forwarder/adapter/spinner/SenderSpinnerAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/adapter/spinner/SenderSpinnerAdapter.kt index 8769118d..8315b4c4 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/adapter/spinner/SenderSpinnerAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/adapter/spinner/SenderSpinnerAdapter.kt @@ -76,8 +76,8 @@ class SenderSpinnerAdapter : BaseEditSpinnerAdapter, EditSpinnerFilter { holder.statusView.setImageDrawable( ResUtils.getDrawable( when (item.status) { - STATUS_OFF -> R.drawable.icon_off - else -> R.drawable.icon_on + STATUS_OFF -> R.drawable.ic_stop + else -> R.drawable.ic_start } ) ) diff --git a/app/src/main/java/com/idormy/sms/forwarder/core/BaseActivity.kt b/app/src/main/java/com/idormy/sms/forwarder/core/BaseActivity.kt index 49590d2f..580d63f9 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/core/BaseActivity.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/core/BaseActivity.kt @@ -26,7 +26,7 @@ import io.github.inflationx.viewpump.ViewPumpContextWrapper * @author XUE * @since 2019/3/22 11:21 */ -@Suppress("MemberVisibilityCanBePrivate", "UNCHECKED_CAST", "DEPRECATION") +@Suppress("MemberVisibilityCanBePrivate", "UNCHECKED_CAST", "DEPRECATION", "EmptyMethod") open class BaseActivity : XPageActivity() { /** * 获取Binding diff --git a/app/src/main/java/com/idormy/sms/forwarder/core/BaseContainerFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/core/BaseContainerFragment.kt index b10d014e..d5b27ba3 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/core/BaseContainerFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/core/BaseContainerFragment.kt @@ -16,7 +16,7 @@ import com.xuexiang.xui.widget.actionbar.TitleUtils * @author xuexiang * @since 2018/11/22 上午11:26 */ -@Suppress("unused", "UNUSED_PARAMETER") +@Suppress("UNUSED_PARAMETER", "unused") abstract class BaseContainerFragment : XPageContainerListFragment() { override fun initPage() { initTitle() diff --git a/app/src/main/java/com/idormy/sms/forwarder/core/BaseFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/core/BaseFragment.kt index 465ef3b7..9c0fc6dd 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/core/BaseFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/core/BaseFragment.kt @@ -35,7 +35,7 @@ import java.lang.reflect.Type * @author xuexiang * @since 2018/5/25 下午3:44 */ -@Suppress("MemberVisibilityCanBePrivate") +@Suppress("MemberVisibilityCanBePrivate", "EmptyMethod") abstract class BaseFragment : XPageFragment() { private var mIProgressLoader: IProgressLoader? = null @@ -204,27 +204,35 @@ abstract class BaseFragment : XPageFragment() { is Int -> { option.putInt(key, value) } + is Float -> { option.putFloat(key, value) } + is String -> { option.putString(key, value) } + is Boolean -> { option.putBoolean(key, value) } + is Long -> { option.putLong(key, value) } + is Double -> { option.putDouble(key, value) } + is Parcelable -> { option.putParcelable(key, value) } + is Serializable -> { option.putSerializable(key, value) } + else -> { option.putString(key, serializeObject(value)) } diff --git a/app/src/main/java/com/idormy/sms/forwarder/core/Core.kt b/app/src/main/java/com/idormy/sms/forwarder/core/Core.kt index 4bdc512c..e50be018 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/core/Core.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/core/Core.kt @@ -5,10 +5,14 @@ import android.util.Log import androidx.work.Configuration import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.BuildConfig -import com.idormy.sms.forwarder.database.repository.* +import com.idormy.sms.forwarder.database.repository.FrpcRepository +import com.idormy.sms.forwarder.database.repository.LogsRepository +import com.idormy.sms.forwarder.database.repository.MsgRepository +import com.idormy.sms.forwarder.database.repository.RuleRepository +import com.idormy.sms.forwarder.database.repository.SenderRepository +import com.idormy.sms.forwarder.database.repository.TaskRepository import kotlinx.coroutines.launch -@Suppress("unused") object Core : Configuration.Provider { lateinit var app: Application val frpc: FrpcRepository by lazy { (app as App).frpcRepository } diff --git a/app/src/main/java/com/idormy/sms/forwarder/core/SimpleListAdapter.kt b/app/src/main/java/com/idormy/sms/forwarder/core/SimpleListAdapter.kt index 7289f83a..5e282ae5 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/core/SimpleListAdapter.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/core/SimpleListAdapter.kt @@ -13,6 +13,7 @@ import com.xuexiang.xutil.common.StringUtils * @author xuexiang * @since 2018/12/19 上午12:19 */ +@Suppress("unused") class SimpleListAdapter(context: Context?, data: List?>?) : BaseListAdapter, SimpleListAdapter.ViewHolder>(context, data) { override fun newViewHolder(convertView: View): ViewHolder { diff --git a/app/src/main/java/com/idormy/sms/forwarder/core/webview/BaseWebViewFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/core/webview/BaseWebViewFragment.kt index 612ad7e7..4b6b249b 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/core/webview/BaseWebViewFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/core/webview/BaseWebViewFragment.kt @@ -11,7 +11,6 @@ import com.just.agentweb.core.AgentWeb * @author xuexiang * @since 2019/5/28 10:22 */ -@Suppress("unused") abstract class BaseWebViewFragment : BaseFragment() { private var mAgentWeb: AgentWeb? = null diff --git a/app/src/main/java/com/idormy/sms/forwarder/core/webview/MiddlewareWebViewClient.kt b/app/src/main/java/com/idormy/sms/forwarder/core/webview/MiddlewareWebViewClient.kt index 48aedb3a..50a2f5ad 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/core/webview/MiddlewareWebViewClient.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/core/webview/MiddlewareWebViewClient.kt @@ -11,7 +11,7 @@ import com.idormy.sms.forwarder.R import com.idormy.sms.forwarder.core.webview.WebViewInterceptDialog.Companion.show import com.just.agentweb.core.client.MiddlewareWebClientBase import com.xuexiang.xui.utils.ResUtils -import java.util.* +import java.util.Locale /** * 【网络请求、加载】 @@ -47,7 +47,7 @@ import java.util.* * * 这里主要是做去广告的工作 */ -@Suppress("UNUSED_PARAMETER", "DEPRECATION", "OVERRIDE_DEPRECATION") +@Suppress("UNUSED_PARAMETER", "DEPRECATION", "OVERRIDE_DEPRECATION", "unused") open class MiddlewareWebViewClient : MiddlewareWebClientBase() { @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean { diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/entity/Rule.kt b/app/src/main/java/com/idormy/sms/forwarder/database/entity/Rule.kt index 8c6a0521..fd8e2c32 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/entity/Rule.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/entity/Rule.kt @@ -108,8 +108,8 @@ data class Rule( val statusImageId: Int get() = when (status) { - STATUS_OFF -> R.drawable.icon_off - else -> R.drawable.icon_on + STATUS_OFF -> R.drawable.ic_stop + else -> R.drawable.ic_start } fun getSenderLogicCheckId(): Int { diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/entity/Sender.kt b/app/src/main/java/com/idormy/sms/forwarder/database/entity/Sender.kt index 72d762a8..2ea15966 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/entity/Sender.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/entity/Sender.kt @@ -60,8 +60,8 @@ data class Sender( val statusImageId: Int get() = when (status) { - STATUS_OFF -> R.drawable.icon_off - else -> R.drawable.icon_on + STATUS_OFF -> R.drawable.ic_stop + else -> R.drawable.ic_start } } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/entity/Task.kt b/app/src/main/java/com/idormy/sms/forwarder/database/entity/Task.kt index 57146b02..6a83d085 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/entity/Task.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/entity/Task.kt @@ -32,8 +32,8 @@ data class Task( val statusImageId: Int get() = when (status) { - STATUS_OFF -> R.drawable.icon_off - else -> R.drawable.icon_on + STATUS_OFF -> R.drawable.ic_stop + else -> R.drawable.ic_start } } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/ext/ConvertersDate.kt b/app/src/main/java/com/idormy/sms/forwarder/database/ext/ConvertersDate.kt index 76ad5046..f016c50d 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/ext/ConvertersDate.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/ext/ConvertersDate.kt @@ -3,7 +3,6 @@ package com.idormy.sms.forwarder.database.ext import androidx.room.TypeConverter import java.util.Date -@Suppress("unused") class ConvertersDate { @TypeConverter fun fromTimestamp(value: Long?): Date? { diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/ext/ConvertersSenderList.kt b/app/src/main/java/com/idormy/sms/forwarder/database/ext/ConvertersSenderList.kt index 155b3a8f..7abfc81f 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/ext/ConvertersSenderList.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/ext/ConvertersSenderList.kt @@ -4,7 +4,6 @@ import androidx.room.TypeConverter import com.idormy.sms.forwarder.core.Core import com.idormy.sms.forwarder.database.entity.Sender -@Suppress("unused") class ConvertersSenderList { @TypeConverter diff --git a/app/src/main/java/com/idormy/sms/forwarder/database/ext/LifecyleExt.kt b/app/src/main/java/com/idormy/sms/forwarder/database/ext/LifecyleExt.kt index bb2c702c..64bc11a6 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/database/ext/LifecyleExt.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/database/ext/LifecyleExt.kt @@ -4,6 +4,5 @@ import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LiveData import androidx.lifecycle.Observer -@Suppress("unused") fun LifecycleOwner.observe(liveData: LiveData?, observer: (T) -> Unit) = liveData?.observe(this, Observer(observer)) \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/ContactInfo.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/ContactInfo.kt index 64e4d38c..d30956c1 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/ContactInfo.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/ContactInfo.kt @@ -7,6 +7,7 @@ import com.xuexiang.xui.utils.ResUtils.getString import java.io.Serializable import java.util.* +@Suppress("DEPRECATION") data class ContactInfo( val name: String = "", @SerializedName("phone_number") diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/LocationInfo.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/LocationInfo.kt index 2f998ef6..925fef8e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/LocationInfo.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/LocationInfo.kt @@ -4,6 +4,7 @@ import com.idormy.sms.forwarder.R import com.xuexiang.xui.utils.ResUtils import java.io.Serializable +@Suppress("DEPRECATION") data class LocationInfo( var longitude: Double = 0.0, var latitude: Double = 0.0, diff --git a/app/src/main/java/com/idormy/sms/forwarder/entity/condition/ChargeSetting.kt b/app/src/main/java/com/idormy/sms/forwarder/entity/condition/ChargeSetting.kt index c32ae04c..48c402b6 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/entity/condition/ChargeSetting.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/entity/condition/ChargeSetting.kt @@ -6,7 +6,7 @@ import com.xuexiang.xui.utils.ResUtils import com.xuexiang.xutil.resource.ResUtils.getString import java.io.Serializable -@Suppress("DEPRECATION", "unused") +@Suppress("DEPRECATION") data class ChargeSetting( var description: String = "", //描述 var status: Int = BatteryManager.BATTERY_STATUS_UNKNOWN, //状态 diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/AppListFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/AppListFragment.kt index c8949bf5..c6ce00a4 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/AppListFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/AppListFragment.kt @@ -31,7 +31,7 @@ import com.xuexiang.xui.utils.WidgetUtils import com.xuexiang.xui.widget.actionbar.TitleBar import com.xuexiang.xutil.XUtil -@Suppress("PrivatePropertyName") +@Suppress("PrivatePropertyName", "DEPRECATION") @Page(name = "应用列表") class AppListFragment : BaseFragment() { 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 90b2fb89..7a4e27e3 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 @@ -45,7 +45,7 @@ import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog import com.xuexiang.xutil.XUtil import com.xuexiang.xutil.data.ConvertTools -@Suppress("PrivatePropertyName") +@Suppress("PrivatePropertyName", "DEPRECATION") @Page(name = "主动控制·客户端") class ClientFragment : BaseFragment(), View.OnClickListener, RecyclerViewHolder.OnItemClickListener { diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/LogsFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/LogsFragment.kt index e68962be..d987b617 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/LogsFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/LogsFragment.kt @@ -11,8 +11,10 @@ import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.RecyclerView.RecycledViewPool import com.alibaba.android.vlayout.VirtualLayoutManager import com.idormy.sms.forwarder.R +import com.idormy.sms.forwarder.activity.MainActivity import com.idormy.sms.forwarder.adapter.MsgPagingAdapter import com.idormy.sms.forwarder.core.BaseFragment +import com.idormy.sms.forwarder.database.AppDatabase import com.idormy.sms.forwarder.database.entity.LogsDetail import com.idormy.sms.forwarder.database.entity.MsgAndLogs import com.idormy.sms.forwarder.database.entity.Rule @@ -25,12 +27,17 @@ import com.idormy.sms.forwarder.utils.SendUtils import com.idormy.sms.forwarder.utils.XToastUtils import com.jeremyliao.liveeventbus.LiveEventBus import com.scwang.smartrefresh.layout.api.RefreshLayout +import com.xuexiang.xaop.annotation.SingleClick import com.xuexiang.xpage.annotation.Page import com.xuexiang.xui.utils.ResUtils import com.xuexiang.xui.widget.actionbar.TitleBar import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog import com.xuexiang.xutil.data.DateUtils +import io.reactivex.CompletableObserver +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.disposables.Disposable +import io.reactivex.schedulers.Schedulers import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch import java.text.SimpleDateFormat @@ -41,6 +48,7 @@ import java.util.* class LogsFragment : BaseFragment(), MsgPagingAdapter.OnItemClickListener { private val TAG: String = LogsFragment::class.java.simpleName + private var titleBar: TitleBar? = null private var adapter = MsgPagingAdapter(this) private val viewModel by viewModels { BaseViewModelFactory(context) } private var currentType: String = "sms" @@ -52,11 +60,49 @@ class LogsFragment : BaseFragment(), MsgPagingAdapter.OnIt return FragmentLogsBinding.inflate(inflater, container, false) } - /** - * @return 返回为 null意为不需要导航栏 - */ override fun initTitle(): TitleBar? { - return null + titleBar = super.initTitle()!!.setImmersive(false) + titleBar!!.setLeftImageResource(R.drawable.ic_action_menu) + titleBar!!.setTitle(R.string.menu_logs) + titleBar!!.setLeftClickListener { getContainer()?.openMenu() } + /*titleBar!!.addAction(object : TitleBar.ImageAction(R.drawable.ic_menu_notifications_white) { + @SingleClick + override fun performAction(view: View) { + showTipsForce(requireContext()) + } + })*/ + titleBar!!.addAction(object : TitleBar.ImageAction(R.drawable.ic_delete) { + @SingleClick + override fun performAction(view: View) { + MaterialDialog.Builder(requireContext()) + .content(R.string.delete_type_log_tips) + .positiveText(R.string.lab_yes) + .negativeText(R.string.lab_no) + .onPositive { _: MaterialDialog?, _: DialogAction? -> + AppDatabase.getInstance(requireContext()) + .msgDao() + .deleteAll(currentType) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : CompletableObserver { + override fun onSubscribe(d: Disposable) {} + override fun onComplete() { + XToastUtils.success(R.string.delete_type_log_toast) + } + + override fun onError(e: Throwable) { + e.message?.let { XToastUtils.error(it) } + } + }) + } + .show() + } + }) + return titleBar + } + + private fun getContainer(): MainActivity? { + return activity as MainActivity? } /** diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/RulesEditFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/RulesEditFragment.kt index df88e7a1..3e46e457 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/RulesEditFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/RulesEditFragment.kt @@ -474,7 +474,7 @@ class RulesEditFragment : BaseFragment(), View.OnClic val tvSenderName = layoutSenderItem.findViewById(R.id.tv_sender_name) ivSenderImage.setImageDrawable(sender.icon) - ivSenderStatus.setImageDrawable(ResUtils.getDrawable(if (STATUS_OFF == sender.status) R.drawable.icon_off else R.drawable.icon_on)) + ivSenderStatus.setImageDrawable(ResUtils.getDrawable(if (STATUS_OFF == sender.status) R.drawable.ic_stop else R.drawable.ic_start)) val senderItemId = sender.id as Long tvSenderName.text = "ID-$senderItemId:${sender.title}" diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/RulesFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/RulesFragment.kt index 60c4f5fa..1e11bd29 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/RulesFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/RulesFragment.kt @@ -8,6 +8,7 @@ import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.RecyclerView.RecycledViewPool import com.alibaba.android.vlayout.VirtualLayoutManager import com.idormy.sms.forwarder.R +import com.idormy.sms.forwarder.activity.MainActivity import com.idormy.sms.forwarder.adapter.RulePagingAdapter import com.idormy.sms.forwarder.core.BaseFragment import com.idormy.sms.forwarder.database.entity.Rule @@ -21,6 +22,7 @@ import com.idormy.sms.forwarder.utils.KEY_RULE_TYPE import com.idormy.sms.forwarder.utils.XToastUtils import com.jeremyliao.liveeventbus.LiveEventBus import com.scwang.smartrefresh.layout.api.RefreshLayout +import com.xuexiang.xaop.annotation.SingleClick import com.xuexiang.xpage.annotation.Page import com.xuexiang.xpage.core.PageOption import com.xuexiang.xui.utils.ResUtils @@ -35,7 +37,9 @@ import kotlinx.coroutines.launch class RulesFragment : BaseFragment(), RulePagingAdapter.OnItemClickListener { //private val TAG: String = RulesFragment::class.java.simpleName + private val that = this private var adapter = RulePagingAdapter(this) + private var titleBar: TitleBar? = null private val viewModel by viewModels { BaseViewModelFactory(context) } private var currentType: String = "sms" @@ -46,11 +50,25 @@ class RulesFragment : BaseFragment(), RulePagingAdapter.O return FragmentRulesBinding.inflate(inflater, container, false) } - /** - * @return 返回为 null意为不需要导航栏 - */ override fun initTitle(): TitleBar? { - return null + titleBar = super.initTitle()!!.setImmersive(false) + titleBar!!.setLeftImageResource(R.drawable.ic_action_menu) + titleBar!!.setTitle(R.string.menu_rules) + titleBar!!.setLeftClickListener { getContainer()?.openMenu() } + titleBar!!.addAction(object : TitleBar.ImageAction(R.drawable.ic_add) { + @SingleClick + override fun performAction(view: View) { + PageOption.to(RulesEditFragment::class.java) + .putString(KEY_RULE_TYPE, currentType) + .setNewActivity(true) + .open(that) + } + }) + return titleBar + } + + private fun getContainer(): MainActivity? { + return activity as MainActivity? } /** @@ -132,5 +150,4 @@ class RulesFragment : BaseFragment(), RulePagingAdapter.O } override fun onItemRemove(view: View?, id: Int) {} - } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/SendersFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/SendersFragment.kt index b82a06db..87c2fb52 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/SendersFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/SendersFragment.kt @@ -1,15 +1,20 @@ package com.idormy.sms.forwarder.fragment +import android.annotation.SuppressLint import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.viewModels import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.RecycledViewPool import com.alibaba.android.vlayout.VirtualLayoutManager +import com.google.android.material.bottomsheet.BottomSheetDialog import com.idormy.sms.forwarder.R +import com.idormy.sms.forwarder.activity.MainActivity import com.idormy.sms.forwarder.adapter.SenderPagingAdapter +import com.idormy.sms.forwarder.adapter.WidgetItemAdapter import com.idormy.sms.forwarder.core.BaseFragment import com.idormy.sms.forwarder.database.entity.Sender import com.idormy.sms.forwarder.database.viewmodel.BaseViewModelFactory @@ -34,6 +39,7 @@ import com.idormy.sms.forwarder.fragment.senders.WeworkRobotFragment 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.SENDER_FRAGMENT_LIST import com.idormy.sms.forwarder.utils.TYPE_BARK import com.idormy.sms.forwarder.utils.TYPE_DINGTALK_GROUP_ROBOT import com.idormy.sms.forwarder.utils.TYPE_DINGTALK_INNER_ROBOT @@ -52,10 +58,17 @@ import com.idormy.sms.forwarder.utils.TYPE_WEWORK_AGENT import com.idormy.sms.forwarder.utils.TYPE_WEWORK_ROBOT import com.idormy.sms.forwarder.utils.XToastUtils import com.scwang.smartrefresh.layout.api.RefreshLayout +import com.xuexiang.xaop.annotation.SingleClick import com.xuexiang.xpage.annotation.Page +import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.core.PageOption +import com.xuexiang.xpage.model.PageInfo +import com.xuexiang.xui.adapter.recyclerview.RecyclerViewHolder +import com.xuexiang.xui.utils.DensityUtils import com.xuexiang.xui.utils.ResUtils +import com.xuexiang.xui.utils.WidgetUtils import com.xuexiang.xui.widget.actionbar.TitleBar +import com.xuexiang.xui.widget.alpha.XUIAlphaTextView import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog import kotlinx.coroutines.flow.collectLatest @@ -63,11 +76,16 @@ import kotlinx.coroutines.launch @Suppress("PrivatePropertyName", "DEPRECATION") @Page(name = "发送通道") -class SendersFragment : BaseFragment(), SenderPagingAdapter.OnItemClickListener { +class SendersFragment : BaseFragment(), + SenderPagingAdapter.OnItemClickListener, + RecyclerViewHolder.OnItemClickListener { private val TAG: String = SendersFragment::class.java.simpleName + private val that = this + private var titleBar: TitleBar? = null private var adapter = SenderPagingAdapter(this) private val viewModel by viewModels { BaseViewModelFactory(context) } + private val dialog: BottomSheetDialog by lazy { BottomSheetDialog(requireContext()) } private var currentStatus: Int = 1 //private val statusValueArray = ResUtils.getIntArray(R.array.status_param_value) @@ -78,11 +96,38 @@ class SendersFragment : BaseFragment(), SenderPagingAda return FragmentSendersBinding.inflate(inflater, container, false) } - /** - * @return 返回为 null意为不需要导航栏 - */ override fun initTitle(): TitleBar? { - return null + titleBar = super.initTitle()!!.setImmersive(false) + titleBar!!.setLeftImageResource(R.drawable.ic_action_menu) + titleBar!!.setTitle(R.string.menu_senders) + titleBar!!.setLeftClickListener { getContainer()?.openMenu() } + titleBar!!.addAction(object : TitleBar.ImageAction(R.drawable.ic_add) { + @SuppressLint("InflateParams") + @SingleClick + override fun performAction(view: View) { + val bottomSheet: View = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_sender_bottom_sheet, null) + val recyclerView: RecyclerView = bottomSheet.findViewById(R.id.recyclerView) + + WidgetUtils.initGridRecyclerView(recyclerView, 4, DensityUtils.dp2px(1f)) + val widgetItemAdapter = WidgetItemAdapter(SENDER_FRAGMENT_LIST) + widgetItemAdapter.setOnItemClickListener(that) + recyclerView.adapter = widgetItemAdapter + + val bottomSheetCloseButton: XUIAlphaTextView = bottomSheet.findViewById(R.id.bottom_sheet_close_button) + bottomSheetCloseButton.setOnClickListener { dialog.dismiss() } + + dialog.setContentView(bottomSheet) + dialog.setCancelable(true) + dialog.setCanceledOnTouchOutside(true) + dialog.show() + WidgetUtils.transparentBottomSheetDialogBackground(dialog) + } + }) + return titleBar + } + + private fun getContainer(): MainActivity? { + return activity as MainActivity? } /** @@ -127,27 +172,8 @@ class SendersFragment : BaseFragment(), SenderPagingAda Log.e(TAG, item.toString()) when (view?.id) { R.id.iv_copy -> { - PageOption.to( - when (item.type) { - TYPE_DINGTALK_GROUP_ROBOT -> DingtalkGroupRobotFragment::class.java - TYPE_EMAIL -> EmailFragment::class.java - TYPE_BARK -> BarkFragment::class.java - TYPE_WEBHOOK -> WebhookFragment::class.java - TYPE_WEWORK_ROBOT -> WeworkRobotFragment::class.java - TYPE_WEWORK_AGENT -> WeworkAgentFragment::class.java - TYPE_SERVERCHAN -> ServerchanFragment::class.java - TYPE_TELEGRAM -> TelegramFragment::class.java - TYPE_SMS -> SmsFragment::class.java - TYPE_FEISHU -> FeishuFragment::class.java - TYPE_PUSHPLUS -> PushplusFragment::class.java - TYPE_GOTIFY -> GotifyFragment::class.java - TYPE_DINGTALK_INNER_ROBOT -> DingtalkInnerRobotFragment::class.java - TYPE_FEISHU_APP -> FeishuAppFragment::class.java - TYPE_URL_SCHEME -> UrlSchemeFragment::class.java - TYPE_SOCKET -> SocketFragment::class.java - else -> DingtalkGroupRobotFragment::class.java - } - ).setNewActivity(true) + PageOption.to(getFragment(item.type)) + .setNewActivity(true) .putLong(KEY_SENDER_ID, item.id) .putInt(KEY_SENDER_TYPE, item.type) .putBoolean(KEY_SENDER_CLONE, true) @@ -155,27 +181,8 @@ class SendersFragment : BaseFragment(), SenderPagingAda } R.id.iv_edit -> { - PageOption.to( - when (item.type) { - TYPE_DINGTALK_GROUP_ROBOT -> DingtalkGroupRobotFragment::class.java - TYPE_EMAIL -> EmailFragment::class.java - TYPE_BARK -> BarkFragment::class.java - TYPE_WEBHOOK -> WebhookFragment::class.java - TYPE_WEWORK_ROBOT -> WeworkRobotFragment::class.java - TYPE_WEWORK_AGENT -> WeworkAgentFragment::class.java - TYPE_SERVERCHAN -> ServerchanFragment::class.java - TYPE_TELEGRAM -> TelegramFragment::class.java - TYPE_SMS -> SmsFragment::class.java - TYPE_FEISHU -> FeishuFragment::class.java - TYPE_PUSHPLUS -> PushplusFragment::class.java - TYPE_GOTIFY -> GotifyFragment::class.java - TYPE_DINGTALK_INNER_ROBOT -> DingtalkInnerRobotFragment::class.java - TYPE_FEISHU_APP -> FeishuAppFragment::class.java - TYPE_URL_SCHEME -> UrlSchemeFragment::class.java - TYPE_SOCKET -> SocketFragment::class.java - else -> DingtalkGroupRobotFragment::class.java - } - ).setNewActivity(true) + PageOption.to(getFragment(item.type)) + .setNewActivity(true) .putLong(KEY_SENDER_ID, item.id) .putInt(KEY_SENDER_TYPE, item.type) .open(this) @@ -200,4 +207,40 @@ class SendersFragment : BaseFragment(), SenderPagingAda override fun onItemRemove(view: View?, id: Int) {} + @SingleClick + override fun onItemClick(itemView: View, widgetInfo: PageInfo, pos: Int) { + try { + @Suppress("UNCHECKED_CAST") + PageOption.to(Class.forName(widgetInfo.classPath) as Class) //跳转的fragment + .setNewActivity(true) + .putInt(KEY_SENDER_TYPE, pos) //注意:目前刚好是这个顺序而已 + .open(this) + } catch (e: Exception) { + e.printStackTrace() + XToastUtils.error(e.message.toString()) + } + } + + private fun getFragment(type: Int): Class { + return when (type) { + TYPE_DINGTALK_GROUP_ROBOT -> DingtalkGroupRobotFragment::class.java + TYPE_EMAIL -> EmailFragment::class.java + TYPE_BARK -> BarkFragment::class.java + TYPE_WEBHOOK -> WebhookFragment::class.java + TYPE_WEWORK_ROBOT -> WeworkRobotFragment::class.java + TYPE_WEWORK_AGENT -> WeworkAgentFragment::class.java + TYPE_SERVERCHAN -> ServerchanFragment::class.java + TYPE_TELEGRAM -> TelegramFragment::class.java + TYPE_SMS -> SmsFragment::class.java + TYPE_FEISHU -> FeishuFragment::class.java + TYPE_PUSHPLUS -> PushplusFragment::class.java + TYPE_GOTIFY -> GotifyFragment::class.java + TYPE_DINGTALK_INNER_ROBOT -> DingtalkInnerRobotFragment::class.java + TYPE_FEISHU_APP -> FeishuAppFragment::class.java + TYPE_URL_SCHEME -> UrlSchemeFragment::class.java + TYPE_SOCKET -> SocketFragment::class.java + else -> DingtalkGroupRobotFragment::class.java + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/SettingsFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/SettingsFragment.kt index ad46597b..2f13aff9 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/SettingsFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/SettingsFragment.kt @@ -28,6 +28,7 @@ import com.hjq.permissions.Permission import com.hjq.permissions.XXPermissions import com.idormy.sms.forwarder.App import com.idormy.sms.forwarder.R +import com.idormy.sms.forwarder.activity.MainActivity import com.idormy.sms.forwarder.adapter.spinner.AppListAdapterItem import com.idormy.sms.forwarder.adapter.spinner.AppListSpinnerAdapter import com.idormy.sms.forwarder.core.BaseFragment @@ -37,6 +38,7 @@ import com.idormy.sms.forwarder.receiver.BootCompletedReceiver import com.idormy.sms.forwarder.service.ForegroundService import com.idormy.sms.forwarder.service.LocationService import com.idormy.sms.forwarder.utils.* +import com.idormy.sms.forwarder.widget.GuideTipsDialog import com.idormy.sms.forwarder.workers.LoadAppListWorker import com.jeremyliao.liveeventbus.LiveEventBus import com.xuexiang.xaop.annotation.SingleClick @@ -60,6 +62,7 @@ import java.util.* class SettingsFragment : BaseFragment(), View.OnClickListener { private val TAG: String = SettingsFragment::class.java.simpleName + private var titleBar: TitleBar? = null private val mTimeOption = DataProvider.timePeriodOption //已安装App信息列表 @@ -77,15 +80,38 @@ class SettingsFragment : BaseFragment(), View.OnClickL return FragmentSettingsBinding.inflate(inflater, container, false) } - /** - * @return 返回为 null意为不需要导航栏 - */ override fun initTitle(): TitleBar? { - return null + titleBar = super.initTitle()!!.setImmersive(false) + titleBar!!.setLeftImageResource(R.drawable.ic_action_menu) + titleBar!!.setTitle(R.string.menu_settings) + titleBar!!.setLeftClickListener { getContainer()?.openMenu() } + titleBar!!.addAction(object : TitleBar.ImageAction(R.drawable.ic_menu_notifications_white) { + @SingleClick + override fun performAction(view: View) { + GuideTipsDialog.showTipsForce(requireContext()) + } + })/*titleBar!!.addAction(object : TitleBar.ImageAction(R.drawable.ic_restore) { + @SingleClick + override fun performAction(view: View) { + MaterialDialog.Builder(requireContext()) + .content(R.string.delete_type_log_tips) + .positiveText(R.string.lab_yes) + .negativeText(R.string.lab_no) + .onPositive { _: MaterialDialog?, _: DialogAction? -> + } + .show() + } + })*/ + return titleBar + } + + private fun getContainer(): MainActivity? { + return activity as MainActivity? } @SuppressLint("NewApi", "SetTextI18n") override fun initViews() { + //转发短信广播 switchEnableSms(binding!!.sbEnableSms) //转发通话记录 @@ -94,7 +120,7 @@ class SettingsFragment : BaseFragment(), View.OnClickL switchEnableAppNotify(binding!!.sbEnableAppNotify, binding!!.scbCancelAppNotify, binding!!.scbNotUserPresent) //启用GPS定位功能 - switchEnableLocation(binding!!.sbEnableLocation, binding!!.layoutLocationSetting, binding!!.rgAccuracy, binding!!.rgPowerRequirement, binding!!.xsbMinInterval, binding!!.xsbMinDistance) + switchEnableLocation(binding!!.sbEnableLocation, binding!!.layoutLocationSetting, binding!!.rgAccuracy, binding!!.rgPowerRequirement, binding!!.etMinInterval, binding!!.etMinDistance) //短信指令 switchEnableSmsCommand(binding!!.sbEnableSmsCommand, binding!!.etSafePhone) //启动时异步获取已安装App信息 @@ -140,6 +166,7 @@ class SettingsFragment : BaseFragment(), View.OnClickL switchDirectlyToClient(binding!!.sbDirectlyToClient) //纯自动任务模式 switchDirectlyToTask(binding!!.sbDirectlyToTask) + } override fun onResume() { @@ -456,7 +483,7 @@ class SettingsFragment : BaseFragment(), View.OnClickL } //启用定位功能 - private fun switchEnableLocation(@SuppressLint("UseSwitchCompatOrMaterialCode") switchEnableLocation: SwitchButton, layoutLocationSetting: LinearLayout, rgAccuracy: RadioGroup, rgPowerRequirement: RadioGroup, xsbMinInterval: XSeekBar, xsbMinDistance: XSeekBar) { + private fun switchEnableLocation(@SuppressLint("UseSwitchCompatOrMaterialCode") switchEnableLocation: SwitchButton, layoutLocationSetting: LinearLayout, rgAccuracy: RadioGroup, rgPowerRequirement: RadioGroup, etMinInterval: EditText, etMinDistance: EditText) { //是否启用定位功能 switchEnableLocation.isChecked = SettingUtils.enableLocation layoutLocationSetting.visibility = if (SettingUtils.enableLocation) View.VISIBLE else View.GONE @@ -486,6 +513,7 @@ class SettingsFragment : BaseFragment(), View.OnClickL } layoutLocationSetting.visibility = if (isChecked) View.VISIBLE else View.GONE } + //设置位置精度:高精度(默认) rgAccuracy.check( when (SettingUtils.locationAccuracy) { @@ -502,9 +530,9 @@ class SettingsFragment : BaseFragment(), View.OnClickL R.id.rb_accuracy_no_requirement -> Criteria.NO_REQUIREMENT else -> Criteria.ACCURACY_FINE } - //TODO: MainActivity.kt 中压入 FragmentManager 时会导致定位服务重启,暂时注释掉 - //restartLocationService() + restartLocationService("rgAccuracy") } + //设置电量消耗:低电耗(默认) rgPowerRequirement.check( when (SettingUtils.locationPowerRequirement) { @@ -523,23 +551,42 @@ class SettingsFragment : BaseFragment(), View.OnClickL R.id.rb_power_requirement_no_requirement -> Criteria.NO_REQUIREMENT else -> Criteria.POWER_LOW } - //TODO: MainActivity.kt 中压入 FragmentManager 时会导致定位服务重启,暂时注释掉 - //restartLocationService() + restartLocationService("rgPowerRequirement") } + //设置位置更新最小时间间隔(单位:毫秒); 默认间隔:10000毫秒,最小间隔:1000毫秒 - xsbMinInterval.setDefaultValue((SettingUtils.locationMinInterval / 1000).toInt()) - xsbMinInterval.setOnSeekBarListener { _: XSeekBar?, newValue: Int -> - SettingUtils.locationMinInterval = newValue * 1000L - //TODO: MainActivity.kt 中压入 FragmentManager 时会导致定位服务重启,暂时注释掉 - //restartLocationService() - } + etMinInterval.setText((SettingUtils.locationMinInterval / 1000).toString()) + etMinInterval.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + val changedText = s.toString() + if (changedText.isEmpty() || changedText == "0") { + etMinInterval.setText("1") + etMinInterval.setSelection(etMinInterval.text.length) // 将光标移至文本末尾 + return + } + SettingUtils.locationMinInterval = changedText.toLong() * 1000 + restartLocationService() + } + }) + //设置位置更新最小距离(单位:米);默认距离:0米 - xsbMinDistance.setDefaultValue(SettingUtils.locationMinDistance) - xsbMinDistance.setOnSeekBarListener { _: XSeekBar?, newValue: Int -> - SettingUtils.locationMinDistance = newValue - //TODO: MainActivity.kt 中压入 FragmentManager 时会导致定位服务重启,暂时注释掉 - //restartLocationService() - } + etMinDistance.setText(SettingUtils.locationMinDistance.toString()) + etMinDistance.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + val changedText = s.toString() + if (changedText.isEmpty()) { + etMinDistance.setText("0") + etMinDistance.setSelection(etMinInterval.text.length) // 将光标移至文本末尾 + return + } + SettingUtils.locationMinDistance = changedText.toInt() + restartLocationService() + } + }) } //重启定位服务 @@ -772,6 +819,7 @@ class SettingsFragment : BaseFragment(), View.OnClickL xsbRetryTimes.setDefaultValue(SettingUtils.requestRetryTimes) xsbRetryTimes.setOnSeekBarListener { _: XSeekBar?, newValue: Int -> SettingUtils.requestRetryTimes = newValue + binding!!.layoutDelayTime.visibility = if (newValue > 0) View.VISIBLE else View.GONE } xsbDelayTime.setDefaultValue(SettingUtils.requestDelayTime) xsbDelayTime.setOnSeekBarListener { _: XSeekBar?, newValue: Int -> diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/TasksEditFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/TasksEditFragment.kt index 43b5a377..08bd49d5 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/TasksEditFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/TasksEditFragment.kt @@ -53,16 +53,14 @@ import java.util.* @Page(name = "自动任务·编辑器") -@Suppress("PrivatePropertyName", "unused", "DEPRECATION", "UNUSED_PARAMETER") +@Suppress("PrivatePropertyName", "DEPRECATION", "UNUSED_PARAMETER", "EmptyMethod", "unused") class TasksEditFragment : BaseFragment(), View.OnClickListener, RecyclerViewHolder.OnItemClickListener { private val TAG: String = TasksEditFragment::class.java.simpleName private val that = this private var titleBar: TitleBar? = null private val viewModel by viewModels { BaseViewModelFactory(context) } - private val dialog: BottomSheetDialog by lazy { - BottomSheetDialog(requireContext()) - } + private val dialog: BottomSheetDialog by lazy { BottomSheetDialog(requireContext()) } @JvmField @AutoWired(name = KEY_TASK_ID) @@ -170,20 +168,20 @@ class TasksEditFragment : BaseFragment(), View.OnClic try { when (v.id) { R.id.layout_add_condition -> { - val view: View = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_task_condition_bottom_sheet, null) - val tvTitle: TextView = view.findViewById(R.id.tv_title) + val bottomSheet: View = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_task_condition_bottom_sheet, null) + val tvTitle: TextView = bottomSheet.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) + val recyclerView: RecyclerView = bottomSheet.findViewById(R.id.recyclerView) WidgetUtils.initGridRecyclerView(recyclerView, 4, DensityUtils.dp2px(1f)) val widgetItemAdapter = WidgetItemAdapter(TASK_CONDITION_FRAGMENT_LIST) widgetItemAdapter.setOnItemClickListener(that) recyclerView.adapter = widgetItemAdapter - val bottomSheetCloseButton: XUIAlphaTextView = view.findViewById(R.id.bottom_sheet_close_button) + val bottomSheetCloseButton: XUIAlphaTextView = bottomSheet.findViewById(R.id.bottom_sheet_close_button) bottomSheetCloseButton.setOnClickListener { dialog.dismiss() } - dialog.setContentView(view) + dialog.setContentView(bottomSheet) dialog.setCancelable(true) dialog.setCanceledOnTouchOutside(true) dialog.show() @@ -191,18 +189,18 @@ class TasksEditFragment : BaseFragment(), View.OnClic } R.id.layout_add_action -> { - val view: View = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_task_action_bottom_sheet, null) - val recyclerView: RecyclerView = view.findViewById(R.id.recyclerView) + val bottomSheet: View = LayoutInflater.from(requireContext()).inflate(R.layout.dialog_task_action_bottom_sheet, null) + val recyclerView: RecyclerView = bottomSheet.findViewById(R.id.recyclerView) WidgetUtils.initGridRecyclerView(recyclerView, 4, DensityUtils.dp2px(1f)) val widgetItemAdapter = WidgetItemAdapter(TASK_ACTION_FRAGMENT_LIST) widgetItemAdapter.setOnItemClickListener(that) recyclerView.adapter = widgetItemAdapter - val bottomSheetCloseButton: XUIAlphaTextView = view.findViewById(R.id.bottom_sheet_close_button) + val bottomSheetCloseButton: XUIAlphaTextView = bottomSheet.findViewById(R.id.bottom_sheet_close_button) bottomSheetCloseButton.setOnClickListener { dialog.dismiss() } - dialog.setContentView(view) + dialog.setContentView(bottomSheet) dialog.setCancelable(true) dialog.setCanceledOnTouchOutside(true) dialog.show() diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/NotificationFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/NotificationFragment.kt index eae5f361..a56995cb 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/action/NotificationFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/action/NotificationFragment.kt @@ -378,7 +378,7 @@ class NotificationFragment : BaseFragment(R.id.tv_sender_name) ivSenderImage.setImageDrawable(sender.icon) - ivSenderStatus.setImageDrawable(ResUtils.getDrawable(if (STATUS_OFF == sender.status) R.drawable.icon_off else R.drawable.icon_on)) + ivSenderStatus.setImageDrawable(ResUtils.getDrawable(if (STATUS_OFF == sender.status) R.drawable.ic_stop else R.drawable.ic_start)) val senderItemId = sender.id as Long tvSenderName.text = "ID-$senderItemId:${sender.title}" diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CallQueryFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CallQueryFragment.kt index 8fb4b8f2..2a9c0ac3 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CallQueryFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/CallQueryFragment.kt @@ -134,9 +134,6 @@ class CallQueryFragment : BaseFragment() { .addPlaceholder(PlaceholderHelper.getParameter(holder.findView(R.id.iv_reply))) } - override fun onBindViewHolder(holder: RecyclerViewHolder, position: Int) { - TODO("Not yet implemented") - } } val delegateAdapter = DelegateAdapter(virtualLayoutManager) diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/ContactQueryFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/ContactQueryFragment.kt index cabeaff8..efbba406 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/ContactQueryFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/ContactQueryFragment.kt @@ -125,9 +125,6 @@ class ContactQueryFragment : BaseFragment() .addPlaceholder(PlaceholderHelper.getParameter(holder.findView(R.id.iv_reply))) } - override fun onBindViewHolder(holder: RecyclerViewHolder, position: Int) { - TODO("Not yet implemented") - } } val delegateAdapter = DelegateAdapter(virtualLayoutManager) diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsQueryFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsQueryFragment.kt index 925cb28c..16eea201 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsQueryFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/client/SmsQueryFragment.kt @@ -122,10 +122,6 @@ class SmsQueryFragment : BaseFragment() { .addPlaceholder(PlaceholderHelper.getParameter(holder.findView(R.id.iv_reply))) } - override fun onBindViewHolder(holder: RecyclerViewHolder, position: Int) { - TODO("Not yet implemented") - } - } val delegateAdapter = DelegateAdapter(virtualLayoutManager) diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/BatteryFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/BatteryFragment.kt index 7b5f90bb..cbfd74bb 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/BatteryFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/BatteryFragment.kt @@ -24,7 +24,7 @@ import com.xuexiang.xrouter.launcher.XRouter import com.xuexiang.xui.widget.actionbar.TitleBar @Page(name = "Battery") -@Suppress("PrivatePropertyName") +@Suppress("PrivatePropertyName", "SameParameterValue") class BatteryFragment : BaseFragment(), View.OnClickListener { private val TAG: String = BatteryFragment::class.java.simpleName diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/ChargeFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/ChargeFragment.kt index 0240e61c..b8574f49 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/ChargeFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/ChargeFragment.kt @@ -23,7 +23,7 @@ import com.xuexiang.xrouter.launcher.XRouter import com.xuexiang.xui.widget.actionbar.TitleBar @Page(name = "Charge") -@Suppress("PrivatePropertyName") +@Suppress("PrivatePropertyName", "SameParameterValue") class ChargeFragment : BaseFragment(), View.OnClickListener { private val TAG: String = ChargeFragment::class.java.simpleName diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/LeaveAddressFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/LeaveAddressFragment.kt index ddc25e75..0f5286bc 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/LeaveAddressFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/LeaveAddressFragment.kt @@ -31,7 +31,7 @@ import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog @Page(name = "LeaveAddress") -@Suppress("PrivatePropertyName") +@Suppress("PrivatePropertyName", "SameParameterValue") class LeaveAddressFragment : BaseFragment(), View.OnClickListener { private val TAG: String = LeaveAddressFragment::class.java.simpleName @@ -78,17 +78,18 @@ class LeaveAddressFragment : BaseFragment(), View.OnClickListener { private val TAG: String = LockScreenFragment::class.java.simpleName diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/NetworkFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/NetworkFragment.kt index 3eac051f..709dc5b3 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/NetworkFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/NetworkFragment.kt @@ -25,7 +25,7 @@ import com.xuexiang.xrouter.launcher.XRouter import com.xuexiang.xui.widget.actionbar.TitleBar @Page(name = "Network") -@Suppress("PrivatePropertyName") +@Suppress("PrivatePropertyName", "SameParameterValue") class NetworkFragment : BaseFragment(), View.OnClickListener { private val TAG: String = NetworkFragment::class.java.simpleName diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/SimFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/SimFragment.kt index e6b6e085..ddb9e12c 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/SimFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/SimFragment.kt @@ -23,7 +23,7 @@ import com.xuexiang.xrouter.launcher.XRouter import com.xuexiang.xui.widget.actionbar.TitleBar @Page(name = "Sim") -@Suppress("PrivatePropertyName") +@Suppress("PrivatePropertyName", "SameParameterValue") class SimFragment : BaseFragment(), View.OnClickListener { private val TAG: String = SimFragment::class.java.simpleName diff --git a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/ToAddressFragment.kt b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/ToAddressFragment.kt index af598400..850b123a 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/ToAddressFragment.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/fragment/condition/ToAddressFragment.kt @@ -31,7 +31,7 @@ import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog @Page(name = "ToAddress") -@Suppress("PrivatePropertyName") +@Suppress("PrivatePropertyName", "SameParameterValue") class ToAddressFragment : BaseFragment(), View.OnClickListener { private val TAG: String = ToAddressFragment::class.java.simpleName @@ -78,17 +78,18 @@ class ToAddressFragment : BaseFragment( } } - Log.d(TAG, "initViews eventData:$eventData") + var settingVo = LocationSetting(getString(R.string.task_leave_address_tips), "to") if (eventData != null) { - val settingVo = Gson().fromJson(eventData, LocationSetting::class.java) - Log.d(TAG, "initViews settingVo:$settingVo") - binding!!.tvDescription.text = settingVo.description - binding!!.etLongitude.setText(settingVo.longitude.toString()) - binding!!.etLatitude.setText(settingVo.latitude.toString()) - binding!!.etDistance.setText(settingVo.distance.toString()) - binding!!.etAddress.setText(settingVo.address) - binding!!.rgCalcType.check(settingVo.getCalcTypeCheckId()) + Log.d(TAG, "initViews eventData:$eventData") + settingVo = Gson().fromJson(eventData, LocationSetting::class.java) } + Log.d(TAG, "initViews settingVo:$settingVo") + binding!!.tvDescription.text = settingVo.description + binding!!.etLongitude.setText(settingVo.longitude.toString()) + binding!!.etLatitude.setText(settingVo.latitude.toString()) + binding!!.etDistance.setText(settingVo.distance.toString()) + binding!!.etAddress.setText(settingVo.address) + binding!!.rgCalcType.check(settingVo.getCalcTypeCheckId()) } @SuppressLint("SetTextI18n") 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 7b03a406..ca2b85a0 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 @@ -44,7 +44,7 @@ import io.reactivex.schedulers.Schedulers import java.util.Date @Page(name = "Email") -@Suppress("PrivatePropertyName") +@Suppress("PrivatePropertyName", "DEPRECATION") class EmailFragment : BaseFragment(), View.OnClickListener { private val TAG: String = EmailFragment::class.java.simpleName 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 459ad343..4bb966f8 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 @@ -157,15 +157,9 @@ class WebhookFragment : BaseFragment(), View.OnC binding!!.btnDel.setOnClickListener(this) binding!!.btnSave.setOnClickListener(this) binding!!.btnAddHeader.setOnClickListener { - addHeaderItemLinearLayout( - headerItemMap, - binding!!.layoutHeaders, - null, - null - ) + addHeaderItemLinearLayout(headerItemMap, binding!!.layoutHeaders, null, null) } - LiveEventBus.get(KEY_SENDER_TEST, String::class.java) - .observe(this) { mCountDownHelper?.finish() } + LiveEventBus.get(KEY_SENDER_TEST, String::class.java).observe(this) { mCountDownHelper?.finish() } } @SingleClick diff --git a/app/src/main/java/com/idormy/sms/forwarder/receiver/NetworkChangeReceiver.kt b/app/src/main/java/com/idormy/sms/forwarder/receiver/NetworkChangeReceiver.kt index 4f160978..9134d4ac 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/receiver/NetworkChangeReceiver.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/receiver/NetworkChangeReceiver.kt @@ -22,7 +22,7 @@ import com.idormy.sms.forwarder.utils.TaskWorker import com.idormy.sms.forwarder.utils.task.TaskUtils import com.idormy.sms.forwarder.workers.NetworkWorker -@Suppress("PrivatePropertyName", "DEPRECATION", "UNUSED_PARAMETER") +@Suppress("PrivatePropertyName", "DEPRECATION", "UNUSED_PARAMETER", "unused") class NetworkChangeReceiver : BroadcastReceiver() { private val TAG: String = NetworkChangeReceiver::class.java.simpleName diff --git a/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.kt b/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.kt index 7164b4db..aa6f2faf 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/receiver/PhoneStateReceiver.kt @@ -6,9 +6,9 @@ import android.content.Intent import android.telephony.TelephonyManager import android.util.Log import com.idormy.sms.forwarder.utils.SettingUtils -import java.util.* +import java.util.Date -@Suppress("DEPRECATION") +@Suppress("DEPRECATION", "unused") abstract class PhoneStateReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { @@ -70,6 +70,7 @@ abstract class PhoneStateReceiver : BroadcastReceiver() { onIncomingCallReceived(context, number, callStartTime) } + TelephonyManager.CALL_STATE_OFFHOOK -> //Transition of ringing->offhook are pickups of incoming calls. Nothing done on them if (lastState != TelephonyManager.CALL_STATE_RINGING) { @@ -83,6 +84,7 @@ abstract class PhoneStateReceiver : BroadcastReceiver() { onIncomingCallAnswered(context, savedNumber, callStartTime) } + TelephonyManager.CALL_STATE_IDLE -> //Went to idle- this is the end of a call. What type depends on previous state(s) if (lastState == TelephonyManager.CALL_STATE_RINGING) { diff --git a/app/src/main/java/com/idormy/sms/forwarder/receiver/SmsReceiver.kt b/app/src/main/java/com/idormy/sms/forwarder/receiver/SmsReceiver.kt index 94c7b511..d2bcdde0 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/receiver/SmsReceiver.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/receiver/SmsReceiver.kt @@ -20,7 +20,7 @@ import com.xuexiang.xrouter.utils.TextUtils import java.util.Date //短信广播 -@Suppress("PrivatePropertyName") +@Suppress("PrivatePropertyName", "unused", "UNUSED_PARAMETER") class SmsReceiver : BroadcastReceiver() { private var TAG = SmsReceiver::class.java.simpleName diff --git a/app/src/main/java/com/idormy/sms/forwarder/server/component/LoggerInterceptor.kt b/app/src/main/java/com/idormy/sms/forwarder/server/component/LoggerInterceptor.kt index 77e640c7..71ce6ed5 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/server/component/LoggerInterceptor.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/server/component/LoggerInterceptor.kt @@ -13,7 +13,7 @@ import com.yanzhenjie.andserver.http.HttpMethod import com.yanzhenjie.andserver.http.HttpRequest import com.yanzhenjie.andserver.http.HttpResponse -@Suppress("PrivatePropertyName") +@Suppress("PrivatePropertyName", "DEPRECATION") @Interceptor class LoggerInterceptor : HandlerInterceptor { diff --git a/app/src/main/java/com/idormy/sms/forwarder/server/component/LoginInterceptor.kt b/app/src/main/java/com/idormy/sms/forwarder/server/component/LoginInterceptor.kt index 321b5cc0..1a74bfa8 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/server/component/LoginInterceptor.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/server/component/LoginInterceptor.kt @@ -9,7 +9,6 @@ import com.yanzhenjie.andserver.http.HttpRequest import com.yanzhenjie.andserver.http.HttpResponse //@Interceptor -@Suppress("unused") class LoginInterceptor : HandlerInterceptor { override fun onIntercept( request: HttpRequest, diff --git a/app/src/main/java/com/idormy/sms/forwarder/server/controller/ContactController.kt b/app/src/main/java/com/idormy/sms/forwarder/server/controller/ContactController.kt index 868bae89..2b3b2367 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/server/controller/ContactController.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/server/controller/ContactController.kt @@ -12,7 +12,7 @@ import com.xuexiang.xutil.XUtil.getContentResolver import com.yanzhenjie.andserver.annotation.* -@Suppress("PrivatePropertyName") +@Suppress("PrivatePropertyName", "SameReturnValue") @RestController @RequestMapping(path = ["/contact"]) class ContactController { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/HistoryUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/HistoryUtils.kt index 33de9ce1..b25c9e28 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/HistoryUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/HistoryUtils.kt @@ -13,7 +13,7 @@ import kotlin.reflect.KProperty * @author pppscn * @since 2022年5月9日 */ -@Suppress("UNCHECKED_CAST", "MemberVisibilityCanBePrivate", "unused") +@Suppress("UNCHECKED_CAST", "unused") class HistoryUtils(private val name: String, private val default: T) : ReadWriteProperty { companion object { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/RSACrypt.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/RSACrypt.kt index 14141e39..2a68bc4f 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/RSACrypt.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/RSACrypt.kt @@ -11,7 +11,6 @@ import javax.crypto.Cipher /** * 非对称加密RSA加密和解密 */ -@Suppress("unused") object RSACrypt { private const val transformation = "RSA" diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/XToastUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/XToastUtils.kt index e9bb080e..dd86675e 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/XToastUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/XToastUtils.kt @@ -12,7 +12,6 @@ import com.xuexiang.xui.widget.toast.XToast * @author xuexiang * @since 2019-06-30 19:04 */ -@Suppress("unused") class XToastUtils private constructor() { @SuppressLint("CheckResult") companion object { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sdkinit/UMengInit.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sdkinit/UMengInit.kt index 5a98280d..30caf364 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sdkinit/UMengInit.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sdkinit/UMengInit.kt @@ -41,7 +41,7 @@ class UMengInit private constructor() { return } UMConfigure.setLogEnabled(false) - UMConfigure.preInit(application, BuildConfig.APP_ID_UMENG, getChannel()) //getChannel(application) + UMConfigure.preInit(application, BuildConfig.APP_ID_UMENG, DEFAULT_CHANNEL_ID) //getChannel(application) // 用户同意了隐私协议 if (isAgreePrivacy) { realInit(application) @@ -62,7 +62,7 @@ class UMengInit private constructor() { UMConfigure.init( application, BuildConfig.APP_ID_UMENG, - getChannel(), //getChannel(application) + DEFAULT_CHANNEL_ID, //getChannel(application) UMConfigure.DEVICE_TYPE_PHONE, "" ) @@ -75,10 +75,9 @@ class UMengInit private constructor() { /** * 获取渠道信息 */ - private fun getChannel(): String { //context: Context? - //return WalleChannelReader.getChannel(context!!, DEFAULT_CHANNEL_ID) - return DEFAULT_CHANNEL_ID - } + //private fun getChannel(context: Context?): String { + // return WalleChannelReader.getChannel(context!!, DEFAULT_CHANNEL_ID) + //} } init { diff --git a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/BarkUtils.kt b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/BarkUtils.kt index 38efbc26..508d08f5 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/utils/sender/BarkUtils.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/utils/sender/BarkUtils.kt @@ -18,7 +18,7 @@ import javax.crypto.Cipher import javax.crypto.spec.IvParameterSpec import javax.crypto.spec.SecretKeySpec -@Suppress("unused", "RegExpRedundantEscape") +@Suppress("RegExpRedundantEscape") class BarkUtils { companion object { diff --git a/app/src/main/java/com/idormy/sms/forwarder/widget/GuideTipsDialog.kt b/app/src/main/java/com/idormy/sms/forwarder/widget/GuideTipsDialog.kt index 5c234800..ab32857f 100644 --- a/app/src/main/java/com/idormy/sms/forwarder/widget/GuideTipsDialog.kt +++ b/app/src/main/java/com/idormy/sms/forwarder/widget/GuideTipsDialog.kt @@ -25,6 +25,7 @@ import com.zzhoujay.richtext.RichText * @author xuexiang * @since 2019-08-22 17:02 */ +@Suppress("SameReturnValue") class GuideTipsDialog(context: Context?, tips: List) : BaseDialog(context, R.layout.dialog_guide_tips), View.OnClickListener, CompoundButton.OnCheckedChangeListener { @@ -85,10 +86,12 @@ class GuideTipsDialog(context: Context?, tips: List) : mTvPrevious!!.isEnabled = false mTvNext!!.isEnabled = true } + mTips!!.size - 1 -> { mTvPrevious!!.isEnabled = true mTvNext!!.isEnabled = false } + else -> { mTvPrevious!!.isEnabled = true mTvNext!!.isEnabled = true diff --git a/app/src/main/res/color/selector_round_button_main_theme_color.xml b/app/src/main/res/color/selector_round_button_main_theme_color.xml deleted file mode 100644 index 3d91219e..00000000 --- a/app/src/main/res/color/selector_round_button_main_theme_color.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/color/selector_tab_text_color.xml b/app/src/main/res/color/selector_tab_text_color.xml new file mode 100644 index 00000000..698460aa --- /dev/null +++ b/app/src/main/res/color/selector_tab_text_color.xml @@ -0,0 +1,22 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/ic_forwarder.webp b/app/src/main/res/drawable-hdpi/ic_forwarder.webp deleted file mode 100644 index a950b5de3778381da0e16d56039597d82e727e28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmVqio<^^H48+XM}X z*PsJBi~P3(PxMYP%aeDU<+ozy_F+1Jx%kimOm8~Z0km&y2NrLyB)mTv;`JCu^2^oeWh}|*tuwPYasQpqVyUvA s%7Q8js)w(OB;Hn%ie#9i>Pj@|);@YkcDn(CQZFzlgFzV#%COQe1~{W~-v9sr diff --git a/app/src/main/res/drawable-mdpi/ic_forwarder.webp b/app/src/main/res/drawable-mdpi/ic_forwarder.webp deleted file mode 100644 index 350a0a87509bf780eb3ff86e7ef762be6f4ecc87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 194 zcmV;z06qUwNk&Gx00012MM6+kP&iDj0000l7r+G&*Px(n8^-)e?+?TL&p$!7E#3)U zg>Bm)ZO3p3iUHtQSGD(iIvx%qNmiA42H%nIn}4QH3lfOv{{-;+;ZXhIfLkpOKw1pt z<}D?3J&T4*nMwNEjQi@IGT2obBQr{?B?sNDBM=VV4=BRCq)nO)H4skifn)`AWT&a3 wwt+RR!e&}&GYOx!81H>AZ3a#iP6VYlaGy2b;nsECC3Un6Qb(hXMjd|%06eHuJOBUy diff --git a/app/src/main/res/drawable-xhdpi/ic_forwarder.webp b/app/src/main/res/drawable-xhdpi/ic_forwarder.webp deleted file mode 100644 index de5d1ea60c05b254009d720b8c519b2a5673850b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300 zcmV+{0n`3cNk&E_0RRA3MM6+kP&iB%0RR9mFTe{B&!C`f8z%foxBG)I|MM>pATb3H zOwv@_F@PQ}A@K2lW!q}o>SAzubwhXlLq)M=^2%>S|0e+dLAlRNI9}z0IFpW2dob;- z=6S{%NxpmAxgSY#4QIoyy>k=!ly=>l^$ql6tFyDg#Q4@0HZl%d%ofJ8Y>_MDWVQ)% z37l0%q#tW%C&|(yHiEnu-wN2scoXab*ur?eGERn% z?I4#>Ef=iZ0nni~bVvf63R!xr-wE=%2~zF+CsWO4uG#3Cjjq|~nvJe&?&pT#aIW72 yT`LP4hk+Yi!zB@yfLETP71(8H8E!*;suV?93q_HuC~_4=uA<0Q6uDLLe*^$3KUbC|4CzAm8y zSlylida>4fnnJ6w29ckD4y=jfZ(2Ns=IfraPHUT=o%nx_lJ%Aa2zj}LMzFe&pMXBB zb;wV^8ms~2C!iB+Ecu%jPoV|6udI{WuEzZP>^V->>vZPLP8y0AvlziRIkTA+u@IcXKH=Z~d_UIJrW1<)oOGqx1W`QU za+3*p{^=lT!kp#002ovPDHLkV1nrc{zm`+ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_web_close.png b/app/src/main/res/drawable-xxxhdpi/ic_web_close.png deleted file mode 100644 index 3914918449e87618e87693b75be72619a58cdc14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 397 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeE3?v1%WpM*3l>na*S0MeL5ZJ=m`x2;*yCldj zn1PX*&Biuo)#|m6@AovzFfcIkdb&7K^?1GU;wS&M=T30{?%%vd z?48FRYvG-{_e(xG)0x3=eCzEZC8-C;HCD^Jm>f7{u-nDNA@A(|`8b4S6$E${1bGUsy)yl=siG(_ zLbs*#!uCn~-(7;ShTmFIr6&z+o9*q>>TMa{00*lCU`J7a465W+V*Pkb{qQ_ z#uIFgzudgS#{aah!+WWs*%NmIrZ&cYq!hA-3I!oZK6<$kn7V+!QQKY;l<$T L>gTe~DWM4feMzd4 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_web_more.png b/app/src/main/res/drawable-xxxhdpi/ic_web_more.png deleted file mode 100644 index 284e15d404bd47c2f7f6a3acac68789b4a6affdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy%50(?ST-3xsFQx9}3{T>B0S+XR^ zFPP!Oh5!MF3kC`e4-TwPI6qEaktaqI03)@e@+cv>DB zoyy~L|GxjlyA7XrEM)r{tB~=#zRB>IMDf;w9Wi{`5h)kb)frtclryp{y<8rv7?W_} zn8S{S%Wm!!&btCXWO$kj$@!UosECxFS_>x&Gg+Qg9?P{;S}FveP_Gi_QAp82@Cc3f-{V<3*}_UU2*I+u4VO^%SP~ zUs!c#L-zUrN2TiJul6*o5Rpi(vyl8D2&b?6*d&sB46pxUf5xbLZ%bgD9WWFaJYD@< J);T3K0RRv{ + + diff --git a/app/src/main/res/drawable/ic_action_close_white.xml b/app/src/main/res/drawable/ic_action_close.xml similarity index 100% rename from app/src/main/res/drawable/ic_action_close_white.xml rename to app/src/main/res/drawable/ic_action_close.xml diff --git a/app/src/main/res/drawable/ic_action_menu.xml b/app/src/main/res/drawable/ic_action_menu.xml new file mode 100644 index 00000000..07de34e4 --- /dev/null +++ b/app/src/main/res/drawable/ic_action_menu.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/app/src/main/res/drawable-xxhdpi/ic_forwarder.webp b/app/src/main/res/drawable/ic_forwarder.webp similarity index 100% rename from app/src/main/res/drawable-xxhdpi/ic_forwarder.webp rename to app/src/main/res/drawable/ic_forwarder.webp diff --git a/app/src/main/res/drawable/ic_menu_about.xml b/app/src/main/res/drawable/ic_menu_about.xml index 128e602e..a9a820f7 100644 --- a/app/src/main/res/drawable/ic_menu_about.xml +++ b/app/src/main/res/drawable/ic_menu_about.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable-hdpi/ic_menu_app.xml b/app/src/main/res/drawable/ic_menu_app.xml similarity index 88% rename from app/src/main/res/drawable-hdpi/ic_menu_app.xml rename to app/src/main/res/drawable/ic_menu_app.xml index dd304610..2c6574e8 100644 --- a/app/src/main/res/drawable-hdpi/ic_menu_app.xml +++ b/app/src/main/res/drawable/ic_menu_app.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_menu_client.xml b/app/src/main/res/drawable/ic_menu_client.xml index 8762299a..c440ed1c 100644 --- a/app/src/main/res/drawable/ic_menu_client.xml +++ b/app/src/main/res/drawable/ic_menu_client.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_menu_frpc.xml b/app/src/main/res/drawable/ic_menu_frpc.xml index 24eed1e8..b36740fb 100644 --- a/app/src/main/res/drawable/ic_menu_frpc.xml +++ b/app/src/main/res/drawable/ic_menu_frpc.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_menu_help.xml b/app/src/main/res/drawable/ic_menu_help.xml index 0494f87e..d5a9186a 100644 --- a/app/src/main/res/drawable/ic_menu_help.xml +++ b/app/src/main/res/drawable/ic_menu_help.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_menu_logcat.xml b/app/src/main/res/drawable/ic_menu_logcat.xml deleted file mode 100644 index 827290d0..00000000 --- a/app/src/main/res/drawable/ic_menu_logcat.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/ic_menu_logs.xml b/app/src/main/res/drawable/ic_menu_logs.xml index 0f2cf989..7cdf16ea 100644 --- a/app/src/main/res/drawable/ic_menu_logs.xml +++ b/app/src/main/res/drawable/ic_menu_logs.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_menu_logs_selected.xml b/app/src/main/res/drawable/ic_menu_logs_selected.xml new file mode 100644 index 00000000..0f2cf989 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_logs_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_rule.xml b/app/src/main/res/drawable/ic_menu_rule.xml index 8c55c6d7..3a2d232e 100644 --- a/app/src/main/res/drawable/ic_menu_rule.xml +++ b/app/src/main/res/drawable/ic_menu_rule.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_menu_rule_selected.xml b/app/src/main/res/drawable/ic_menu_rule_selected.xml new file mode 100644 index 00000000..8c55c6d7 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_rule_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_send.xml b/app/src/main/res/drawable/ic_menu_send.xml index 760b7ba3..cfe7e693 100644 --- a/app/src/main/res/drawable/ic_menu_send.xml +++ b/app/src/main/res/drawable/ic_menu_send.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_menu_send_selected.xml b/app/src/main/res/drawable/ic_menu_send_selected.xml new file mode 100644 index 00000000..760b7ba3 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_send_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_server.xml b/app/src/main/res/drawable/ic_menu_server.xml index 31f64961..abdf390c 100644 --- a/app/src/main/res/drawable/ic_menu_server.xml +++ b/app/src/main/res/drawable/ic_menu_server.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_menu_settings.xml b/app/src/main/res/drawable/ic_menu_settings.xml index c29dab58..ce137d8c 100644 --- a/app/src/main/res/drawable/ic_menu_settings.xml +++ b/app/src/main/res/drawable/ic_menu_settings.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_menu_settings_selected.xml b/app/src/main/res/drawable/ic_menu_settings_selected.xml new file mode 100644 index 00000000..c29dab58 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_settings_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_task.xml b/app/src/main/res/drawable/ic_menu_task.xml index 4617246b..97b80314 100644 --- a/app/src/main/res/drawable/ic_menu_task.xml +++ b/app/src/main/res/drawable/ic_menu_task.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable-xxxhdpi/ic_query.xml b/app/src/main/res/drawable/ic_query.xml similarity index 100% rename from app/src/main/res/drawable-xxxhdpi/ic_query.xml rename to app/src/main/res/drawable/ic_query.xml diff --git a/app/src/main/res/drawable-hdpi/ic_splash_app_logo.png b/app/src/main/res/drawable/ic_splash_app_logo.png similarity index 100% rename from app/src/main/res/drawable-hdpi/ic_splash_app_logo.png rename to app/src/main/res/drawable/ic_splash_app_logo.png diff --git a/app/src/main/res/drawable-hdpi/ic_splash_company_logo.png b/app/src/main/res/drawable/ic_splash_company_logo.png similarity index 100% rename from app/src/main/res/drawable-hdpi/ic_splash_company_logo.png rename to app/src/main/res/drawable/ic_splash_company_logo.png diff --git a/app/src/main/res/drawable/ic_start.xml b/app/src/main/res/drawable/ic_start.xml index 10870c15..7a0ff439 100644 --- a/app/src/main/res/drawable/ic_start.xml +++ b/app/src/main/res/drawable/ic_start.xml @@ -1,9 +1,9 @@ + android:viewportWidth="1024" + android:viewportHeight="1024"> - + android:pathData="M512,1024A512,512 0,1 1,512 0a512,512 0,0 1,0 1024zM383.2,287.6v448l384,-223.1 -384,-224.9z" /> + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_stop.xml b/app/src/main/res/drawable/ic_stop.xml index 1c953d67..607d8780 100644 --- a/app/src/main/res/drawable/ic_stop.xml +++ b/app/src/main/res/drawable/ic_stop.xml @@ -1,9 +1,9 @@ + android:viewportWidth="1024" + android:viewportHeight="1024"> + android:pathData="M512,1024A512,512 0,1 1,512 0a512,512 0,0 1,0 1024zM320,320v384h384V320H320z" + android:fillColor="#F15C58"/> diff --git a/app/src/main/res/drawable/ic_test.xml b/app/src/main/res/drawable/ic_test.xml new file mode 100644 index 00000000..85e6dbec --- /dev/null +++ b/app/src/main/res/drawable/ic_test.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_add.png b/app/src/main/res/drawable/icon_add.png deleted file mode 100644 index 2f8f31ef8dc80d952ae6bd5a5ae137c13255799c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 508 zcmVElcU;qKPl+^ty>aA6=#_Pw2XGxM%g`ai_8E`u4bq4qo(UV1_|AznNYenNC1 z0w(mM=c_9w!rkTC$Ml~8^Yf<(E}~Na&;Z&aM#Q8(^KRZ2?7$m(3trdC0h}VjWq4Ew z98+ll91F}wE^w&x3E|>BQFqa4SvX--r{w3r}(i^bgMw#PIlR(-XRB+zw9pd!^~l0e|H z1WX1?i7tSB?ofnl*X_yp1z;vz5n#Ss9JxWH>;Jf*R6NK zAajC>rDmZZfhf}_qK6xrA(7!eZE(;^k;{^CUmuK*DIE!0J`x`$G0O%v3Y`qregNkdg0003mNklw4Yzj z5G3AQ6X%?>{J7uAkK`uYL?U5n3Q7Fn5AHf(jI=*NkK;2;Ts`CJr$500JMH=oD}REu zeh@4Cnl9@*H~Y_?X!>-$e=e9h+qGxw>U4do+xrY#ky1i8q=Zn66cb93lu**^L9(!H z3F#JPM1|6*ATFesW-q_Og3t%)L8wl85h{>+X2FOfC82lHlTeM+6)KTNX2F0XMWHt7 zQK(9K6DpDh*9l%j!L^%Mbp-9;g03U5Kcr4@!84DLywDxyxDPDQralBij^sSk9Mhp$ z@Wm0!Gqsq0n*|M?zDwA2gtMdo0000kdg0002-Nkl zy%B^U5QQzoz}VCVNR4Efp&mP6NNs^y%(NfQIqsB2Py}RW48ZrX{OqHu-fFA{PDfCn zwl8P(11ar5zzo`n83gTa#Y4-clhg_}4eg~I)+_lp)*vEE9!5mV{fI|$AL4rJ{M(5S z4i9rm&H)_%WgRL=G|&fcNRJTm04xYVf&hX5%fGvEQi}y>+L-xyDge0Y9+NW|O$I7C z162l)zl7XP+`K0du=^DDpJ>2*+(h9?%+s93ieNF(-d9XcC1~W3ndMx-P_iwpfTm_H(`V_d_^Bw;o(P#-M81WdeKUvY}LS%5`M0(DFUHyyEx zUI}0p&e;TFZvhUQOQ$V}RfJ-$k5CIdITs-*nGgcw6t)rt*Dh_?Qcp~^vuvkZpKx2R zshTXKxRzXO0{gk%5vsiP8^t;eKa3>2MLmqxejE=%kgQ#j4MLO-LY5EWVq$60jHQ}> q)?`txW>zw&Wd6FGuBe<%dAk4U@t!V@As)QR2@Hq)$ diff --git a/app/src/main/res/drawable/icon_test.png b/app/src/main/res/drawable/icon_test.png deleted file mode 100644 index cfdaa719c6dc7cedc2592d0642477f47bce2203b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 504 zcmVkdg0005MNklSi<~CKl~#Hxf{rvGM5hICWsL5HxN$sj6%yO!D))nCd;z?<-czmhe@ihvD%_Y z&D25rq9e-YgG%e7?)eT9{ACf5oS-Uw_zA3JIjihl&N{~Ng@`~SXfBkbkt!t$FiiIX zjlkdoi+D^ygrPu-_z#H2!2bAfH1HExM>}8-y~v9QA{U|LB@)=f7`pL`lUN+vR{jB@ zyylgKLi~%^LYSu|wHD?^W%Eo`bs^9q{;;%V+-8t{8w1z5n&n58f;Ua|J(HAclXN77k$19kLAhVJRM?&kBR uUdzxVcLQjE9_puD{L>pvS4^%3C?o|U{vhHXERqcX0000 + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_icon_tabbar_rules.xml b/app/src/main/res/drawable/selector_icon_tabbar_rules.xml new file mode 100644 index 00000000..91f50eac --- /dev/null +++ b/app/src/main/res/drawable/selector_icon_tabbar_rules.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_icon_tabbar_senders.xml b/app/src/main/res/drawable/selector_icon_tabbar_senders.xml new file mode 100644 index 00000000..930666dc --- /dev/null +++ b/app/src/main/res/drawable/selector_icon_tabbar_senders.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_icon_tabbar_settings.xml b/app/src/main/res/drawable/selector_icon_tabbar_settings.xml new file mode 100644 index 00000000..243900ad --- /dev/null +++ b/app/src/main/res/drawable/selector_icon_tabbar_settings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-mdpi/send_btn.xml b/app/src/main/res/drawable/send_btn.xml similarity index 100% rename from app/src/main/res/drawable-mdpi/send_btn.xml rename to app/src/main/res/drawable/send_btn.xml diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 706c4c0e..753ba45e 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,27 +1,35 @@ - - + android:background="@color/xui_config_color_white" + android:orientation="vertical" + tools:ignore="Overdraw"> - - + android:layout_height="0dp" + android:layout_weight="1"> - - + - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/adapter_call_card_view_list_item.xml b/app/src/main/res/layout/adapter_call_card_view_list_item.xml index 5b2f4846..32628090 100644 --- a/app/src/main/res/layout/adapter_call_card_view_list_item.xml +++ b/app/src/main/res/layout/adapter_call_card_view_list_item.xml @@ -45,7 +45,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:textSize="14sp" + android:textSize="@dimen/text_size_medium" android:textStyle="bold" /> + android:textSize="@dimen/text_size_small" /> @@ -42,7 +42,7 @@ android:id="@+id/tv_name" android:layout_width="match_parent" android:layout_height="wrap_content" - android:textSize="14sp" + android:textSize="@dimen/text_size_medium" android:textStyle="bold" /> diff --git a/app/src/main/res/layout/adapter_logs_card_view_list_item.xml b/app/src/main/res/layout/adapter_logs_card_view_list_item.xml index f98bfa5f..54d6057a 100644 --- a/app/src/main/res/layout/adapter_logs_card_view_list_item.xml +++ b/app/src/main/res/layout/adapter_logs_card_view_list_item.xml @@ -56,7 +56,7 @@ android:gravity="start" android:maxEms="8" android:maxLines="3" - android:textSize="11sp" /> + android:textSize="@dimen/text_size_small" /> @@ -59,7 +59,7 @@ android:gravity="start" android:maxEms="8" android:maxLines="3" - android:textSize="11sp" /> + android:textSize="@dimen/text_size_small" /> diff --git a/app/src/main/res/layout/adapter_sms_card_view_list_item.xml b/app/src/main/res/layout/adapter_sms_card_view_list_item.xml index 7cec6510..57eef045 100644 --- a/app/src/main/res/layout/adapter_sms_card_view_list_item.xml +++ b/app/src/main/res/layout/adapter_sms_card_view_list_item.xml @@ -45,7 +45,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:textSize="14sp" + android:textSize="@dimen/text_size_medium" android:textStyle="bold" /> + android:textSize="@dimen/text_size_small" /> + android:textSize="@dimen/text_size_small" /> diff --git a/app/src/main/res/layout/adapter_tasks_card_view_list_item.xml b/app/src/main/res/layout/adapter_tasks_card_view_list_item.xml index e234d03b..c611f89b 100644 --- a/app/src/main/res/layout/adapter_tasks_card_view_list_item.xml +++ b/app/src/main/res/layout/adapter_tasks_card_view_list_item.xml @@ -103,7 +103,7 @@ android:gravity="start" android:maxEms="10" android:maxLines="1" - android:textSize="16sp" + android:textSize="@dimen/text_size_medium" android:textStyle="bold" /> + android:textSize="@dimen/text_size_mini" /> @@ -127,7 +127,8 @@ android:id="@+id/tv_time" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="end" /> + android:layout_gravity="end" + android:textSize="@dimen/text_size_small" /> - - - + android:layout_height="wrap_content" + android:layout_marginTop="10dp" + android:gravity="center_vertical" + android:orientation="horizontal"> + + + + + + - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_sender_bottom_sheet.xml b/app/src/main/res/layout/dialog_sender_bottom_sheet.xml index c652d8ec..9e11fb77 100644 --- a/app/src/main/res/layout/dialog_sender_bottom_sheet.xml +++ b/app/src/main/res/layout/dialog_sender_bottom_sheet.xml @@ -38,6 +38,6 @@ android:gravity="center" android:text="@string/bottom_sheet_close" android:textColor="#49505A" - android:textSize="14sp" /> + android:textSize="@dimen/text_size_medium" /> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_task_action_bottom_sheet.xml b/app/src/main/res/layout/dialog_task_action_bottom_sheet.xml index c49908db..73decf49 100644 --- a/app/src/main/res/layout/dialog_task_action_bottom_sheet.xml +++ b/app/src/main/res/layout/dialog_task_action_bottom_sheet.xml @@ -38,6 +38,6 @@ android:gravity="center" android:text="@string/bottom_sheet_close" android:textColor="#49505A" - android:textSize="14sp" /> + android:textSize="@dimen/text_size_medium" /> \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_task_condition_bottom_sheet.xml b/app/src/main/res/layout/dialog_task_condition_bottom_sheet.xml index e5ac2a05..ea95b0a0 100644 --- a/app/src/main/res/layout/dialog_task_condition_bottom_sheet.xml +++ b/app/src/main/res/layout/dialog_task_condition_bottom_sheet.xml @@ -39,6 +39,6 @@ android:gravity="center" android:text="@string/bottom_sheet_close" android:textColor="#49505A" - android:textSize="14sp" /> + android:textSize="@dimen/text_size_medium" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml index 55435132..9384e583 100644 --- a/app/src/main/res/layout/fragment_about.xml +++ b/app/src/main/res/layout/fragment_about.xml @@ -19,10 +19,12 @@ android:paddingBottom="5dp"> + android:scaleType="fitCenter" + app:srcCompat="@drawable/ic_splash_app_logo" + tools:ignore="ImageContrastCheck" /> @@ -98,7 +100,7 @@ android:minHeight="0dp" android:padding="5dp" android:text="@string/clear_cache" - android:textSize="11sp" + android:textSize="@dimen/text_size_small" app:cdbt_countDown="1000" app:cdbt_enableCountDown="true" /> @@ -122,7 +124,7 @@ android:minHeight="0dp" android:padding="5dp" android:text="@string/delete_frpc" - android:textSize="11sp" + android:textSize="@dimen/text_size_small" app:cdbt_countDown="1000" app:cdbt_enableCountDown="true" /> @@ -166,7 +168,7 @@ android:minHeight="0dp" android:padding="5dp" android:text="@string/about_item_github" - android:textSize="11sp" + android:textSize="@dimen/text_size_small" app:cdbt_countDown="500" app:cdbt_enableCountDown="true" /> @@ -182,7 +184,7 @@ android:minHeight="0dp" android:padding="5dp" android:text="@string/about_item_gitee" - android:textSize="11sp" + android:textSize="@dimen/text_size_small" app:cdbt_countDown="500" app:cdbt_enableCountDown="true" /> diff --git a/app/src/main/res/layout/fragment_app_list.xml b/app/src/main/res/layout/fragment_app_list.xml index 84ac7579..8b66f45c 100644 --- a/app/src/main/res/layout/fragment_app_list.xml +++ b/app/src/main/res/layout/fragment_app_list.xml @@ -14,7 +14,7 @@ app:indicator_height="42dp" app:indicator_line_height="2dp" app:indicator_line_show="true" - app:indicator_textSize="14sp" + app:indicator_textSize="@dimen/text_size_medium" app:indicator_width="0dp" /> @@ -88,7 +88,7 @@ android:layout_height="wrap_content" android:layout_marginStart="10dp" android:text="@string/safety_measures_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -150,7 +150,7 @@ android:maxLines="5" android:minLines="1" android:scrollbars="vertical" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="LabelFor,SmallSp" /> @@ -217,7 +217,7 @@ android:layout_height="wrap_content" android:layout_marginStart="10dp" android:text="@string/click_test_button_first" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> diff --git a/app/src/main/res/layout/fragment_client_battery_query.xml b/app/src/main/res/layout/fragment_client_battery_query.xml index 609dad7e..5f16653f 100644 --- a/app/src/main/res/layout/fragment_client_battery_query.xml +++ b/app/src/main/res/layout/fragment_client_battery_query.xml @@ -18,11 +18,13 @@ android:orientation="vertical"> + android:scaleType="fitCenter" + app:srcCompat="@drawable/icon_api_battery_query" + tools:ignore="ImageContrastCheck" /> + android:textSize="30sp" + tools:ignore="TextContrastCheck" /> @@ -97,7 +98,7 @@ android:id="@+id/tv_receive" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="10sp" + android:layout_marginTop="10dp" android:text="@string/new_mobile_phone" /> @@ -116,7 +117,7 @@ android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="@string/operating_instruction" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -158,7 +159,7 @@ android:id="@+id/tv_export" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="10sp" + android:layout_marginTop="10dp" android:text="@string/old_mobile_phone" /> @@ -192,7 +193,7 @@ android:id="@+id/tv_import" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="10sp" + android:layout_marginTop="10dp" android:text="@string/new_mobile_phone" /> @@ -218,7 +219,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="" - android:textSize="11sp" + android:textSize="@dimen/text_size_small" android:textStyle="bold" /> diff --git a/app/src/main/res/layout/fragment_client_contact_add.xml b/app/src/main/res/layout/fragment_client_contact_add.xml index 962343d4..ec46d786 100644 --- a/app/src/main/res/layout/fragment_client_contact_add.xml +++ b/app/src/main/res/layout/fragment_client_contact_add.xml @@ -21,11 +21,13 @@ android:orientation="vertical"> + android:scaleType="fitCenter" + app:srcCompat="@drawable/icon_api_contact_add" + tools:ignore="ImageContrastCheck" /> + app:met_validateOnFocusLost="true" + tools:ignore="TextContrastCheck,TouchTargetSizeCheck" /> @@ -68,7 +71,8 @@ android:layout_height="wrap_content" android:hint="@string/display_name_hint" android:singleLine="true" - app:met_clearButton="true" /> + app:met_clearButton="true" + tools:ignore="TextContrastCheck,TouchTargetSizeCheck" /> @@ -89,7 +93,7 @@ android:drawableStart="@drawable/ic_send_white" android:paddingStart="20dp" android:text="@string/send" - tools:ignore="RtlSymmetry" /> + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_client_location.xml b/app/src/main/res/layout/fragment_client_location.xml index 816e0f8e..cc0ee355 100644 --- a/app/src/main/res/layout/fragment_client_location.xml +++ b/app/src/main/res/layout/fragment_client_location.xml @@ -21,11 +21,13 @@ android:orientation="vertical"> + android:scaleType="fitCenter" + app:srcCompat="@drawable/icon_api_location" + tools:ignore="ImageContrastCheck" /> + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_client_sms_query.xml b/app/src/main/res/layout/fragment_client_sms_query.xml index eb7c8ff3..7279df09 100644 --- a/app/src/main/res/layout/fragment_client_sms_query.xml +++ b/app/src/main/res/layout/fragment_client_sms_query.xml @@ -22,7 +22,7 @@ app:indicator_height="42dp" app:indicator_line_height="2dp" app:indicator_line_show="true" - app:indicator_textSize="14sp" + app:indicator_textSize="@dimen/text_size_medium" app:indicator_width="0dp" /> diff --git a/app/src/main/res/layout/fragment_client_wol_send.xml b/app/src/main/res/layout/fragment_client_wol_send.xml index e839a457..619cc197 100644 --- a/app/src/main/res/layout/fragment_client_wol_send.xml +++ b/app/src/main/res/layout/fragment_client_wol_send.xml @@ -21,11 +21,13 @@ android:orientation="vertical"> + android:scaleType="fitCenter" + app:srcCompat="@drawable/icon_api_wol" + tools:ignore="ImageContrastCheck" /> + app:met_validateOnFocusLost="true" + tools:ignore="TextContrastCheck,TouchTargetSizeCheck" /> @@ -71,7 +74,8 @@ app:met_clearButton="true" app:met_errorMessage="@string/ip_error" app:met_regexp="@string/ip_regex" - app:met_validateOnFocusLost="true" /> + app:met_validateOnFocusLost="true" + tools:ignore="TextContrastCheck,TouchTargetSizeCheck" /> @@ -96,7 +100,8 @@ app:met_clearButton="true" app:met_errorMessage="@string/wol_port_error" app:met_regexp="@string/wol_port_regex" - app:met_validateOnFocusLost="true" /> + app:met_validateOnFocusLost="true" + tools:ignore="TextContrastCheck,TouchTargetSizeCheck" /> @@ -117,7 +122,7 @@ android:drawableStart="@drawable/ic_restore" android:paddingStart="7dp" android:text="@string/server_history" - tools:ignore="RtlSymmetry" /> + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_logs.xml b/app/src/main/res/layout/fragment_logs.xml index 4ae43ef5..5f7aba33 100644 --- a/app/src/main/res/layout/fragment_logs.xml +++ b/app/src/main/res/layout/fragment_logs.xml @@ -16,7 +16,7 @@ app:indicator_height="42dp" app:indicator_line_height="2dp" app:indicator_line_show="true" - app:indicator_textSize="14sp" + app:indicator_textSize="@dimen/text_size_medium" app:indicator_width="0dp" /> + android:textSize="@dimen/text_size_small" /> + android:textSize="@dimen/text_size_small" /> @@ -555,7 +555,7 @@ android:padding="5dp" android:text="@string/select" android:textColor="@color/white" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" app:sb_color_unpressed="@color/colorPrimary" app:sb_ripple_color="@color/white" app:sb_ripple_duration="500" @@ -578,31 +578,34 @@ + android:drawableStart="@drawable/ic_delete" + android:paddingStart="10dp" + android:text="@string/del_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/save_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_senders.xml b/app/src/main/res/layout/fragment_senders.xml index c7f7f5ff..8c85633e 100644 --- a/app/src/main/res/layout/fragment_senders.xml +++ b/app/src/main/res/layout/fragment_senders.xml @@ -16,7 +16,7 @@ app:indicator_height="42dp" app:indicator_line_height="2dp" app:indicator_line_show="true" - app:indicator_textSize="14sp" + app:indicator_textSize="@dimen/text_size_medium" app:indicator_width="0dp" /> @@ -259,7 +259,7 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/custom_template_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -385,31 +385,34 @@ + android:drawableStart="@drawable/ic_delete" + android:paddingStart="10dp" + android:text="@string/del_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/save_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_senders_dingtalk_group_robot.xml b/app/src/main/res/layout/fragment_senders_dingtalk_group_robot.xml index dfaca619..72a9eb37 100644 --- a/app/src/main/res/layout/fragment_senders_dingtalk_group_robot.xml +++ b/app/src/main/res/layout/fragment_senders_dingtalk_group_robot.xml @@ -65,7 +65,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/dingtalk_token_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -299,31 +299,34 @@ + android:drawableStart="@drawable/ic_delete" + android:paddingStart="10dp" + android:text="@string/del_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/save_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_senders_dingtalk_inner_robot.xml b/app/src/main/res/layout/fragment_senders_dingtalk_inner_robot.xml index 44380227..523b4716 100644 --- a/app/src/main/res/layout/fragment_senders_dingtalk_inner_robot.xml +++ b/app/src/main/res/layout/fragment_senders_dingtalk_inner_robot.xml @@ -147,7 +147,7 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/specified_member_tips2" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -218,7 +218,7 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/custom_template_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -423,31 +423,34 @@ + android:drawableStart="@drawable/ic_delete" + android:paddingStart="10dp" + android:text="@string/del_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/save_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_senders_email.xml b/app/src/main/res/layout/fragment_senders_email.xml index 112a41d0..36e8b675 100644 --- a/app/src/main/res/layout/fragment_senders_email.xml +++ b/app/src/main/res/layout/fragment_senders_email.xml @@ -56,7 +56,7 @@ android:layout_marginTop="10dp" android:text="@string/account" android:textColor="@color/colorBlueGreyDark" - android:textSize="14sp" + android:textSize="@dimen/text_size_medium" android:textStyle="bold" tools:ignore="HardcodedText" /> @@ -138,7 +138,7 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/custom_template_tips" - android:textSize="11sp" /> + android:textSize="@dimen/text_size_small" /> @@ -195,7 +195,7 @@ android:layout_marginTop="10dp" android:text="@string/servers" android:textColor="@color/colorBlueGreyDark" - android:textSize="14sp" + android:textSize="@dimen/text_size_medium" android:textStyle="bold" tools:ignore="HardcodedText" /> @@ -289,7 +289,7 @@ android:layout_marginTop="10dp" android:text="@string/email_settings" android:textColor="@color/colorBlueGreyDark" - android:textSize="14sp" + android:textSize="@dimen/text_size_medium" android:textStyle="bold" tools:ignore="HardcodedText" /> @@ -315,7 +315,7 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/email_to_tips" - android:textSize="11sp" /> + android:textSize="@dimen/text_size_small" /> @@ -352,7 +352,7 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/custom_template_tips" - android:textSize="11sp" /> + android:textSize="@dimen/text_size_small" /> @@ -409,31 +409,34 @@ + android:drawableStart="@drawable/ic_delete" + android:paddingStart="10dp" + android:text="@string/del_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/save_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_senders_feishu.xml b/app/src/main/res/layout/fragment_senders_feishu.xml index f8fc7fb2..d01850fd 100644 --- a/app/src/main/res/layout/fragment_senders_feishu.xml +++ b/app/src/main/res/layout/fragment_senders_feishu.xml @@ -146,7 +146,7 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/custom_template_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -204,31 +204,34 @@ + android:drawableStart="@drawable/ic_delete" + android:paddingStart="10dp" + android:text="@string/del_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/save_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_senders_feishu_app.xml b/app/src/main/res/layout/fragment_senders_feishu_app.xml index 5b43cc6b..7e766170 100644 --- a/app/src/main/res/layout/fragment_senders_feishu_app.xml +++ b/app/src/main/res/layout/fragment_senders_feishu_app.xml @@ -176,7 +176,7 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/custom_template_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -234,31 +234,34 @@ + android:drawableStart="@drawable/ic_delete" + android:paddingStart="10dp" + android:text="@string/del_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/save_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_senders_gotify.xml b/app/src/main/res/layout/fragment_senders_gotify.xml index 94ae1769..fac804f4 100644 --- a/app/src/main/res/layout/fragment_senders_gotify.xml +++ b/app/src/main/res/layout/fragment_senders_gotify.xml @@ -65,7 +65,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/GotifyWebServerTips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -185,31 +185,34 @@ + android:drawableStart="@drawable/ic_delete" + android:paddingStart="10dp" + android:text="@string/del_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/save_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_senders_pushplus.xml b/app/src/main/res/layout/fragment_senders_pushplus.xml index fda1539b..48852fc8 100644 --- a/app/src/main/res/layout/fragment_senders_pushplus.xml +++ b/app/src/main/res/layout/fragment_senders_pushplus.xml @@ -71,7 +71,7 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/pushplus_token_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -273,7 +273,7 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/custom_template_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -331,31 +331,34 @@ + android:drawableStart="@drawable/ic_delete" + android:paddingStart="10dp" + android:text="@string/del_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/save_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_senders_serverchan.xml b/app/src/main/res/layout/fragment_senders_serverchan.xml index 74d8a68a..adc28291 100644 --- a/app/src/main/res/layout/fragment_senders_serverchan.xml +++ b/app/src/main/res/layout/fragment_senders_serverchan.xml @@ -94,7 +94,7 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/server_chan_channel_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -132,7 +132,7 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/server_chan_openid_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -161,31 +161,34 @@ + android:drawableStart="@drawable/ic_delete" + android:paddingStart="10dp" + android:text="@string/del_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/save_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_senders_sms.xml b/app/src/main/res/layout/fragment_senders_sms.xml index 6f144aab..5cf8bfb8 100644 --- a/app/src/main/res/layout/fragment_senders_sms.xml +++ b/app/src/main/res/layout/fragment_senders_sms.xml @@ -124,7 +124,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/SmsMobilesTips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -165,31 +165,34 @@ + android:drawableStart="@drawable/ic_delete" + android:paddingStart="10dp" + android:text="@string/del_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/save_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_senders_socket.xml b/app/src/main/res/layout/fragment_senders_socket.xml index 1cc4f5d0..27e1c60d 100644 --- a/app/src/main/res/layout/fragment_senders_socket.xml +++ b/app/src/main/res/layout/fragment_senders_socket.xml @@ -225,7 +225,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/webhook_params_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> + android:drawableStart="@drawable/ic_delete" + android:paddingStart="10dp" + android:text="@string/del_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/save_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_senders_telegram.xml b/app/src/main/res/layout/fragment_senders_telegram.xml index 363b2c98..4e54f8ce 100644 --- a/app/src/main/res/layout/fragment_senders_telegram.xml +++ b/app/src/main/res/layout/fragment_senders_telegram.xml @@ -286,31 +286,34 @@ + android:drawableStart="@drawable/ic_delete" + android:paddingStart="10dp" + android:text="@string/del_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/save_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_senders_url_scheme.xml b/app/src/main/res/layout/fragment_senders_url_scheme.xml index b25fc6bc..46625ed7 100644 --- a/app/src/main/res/layout/fragment_senders_url_scheme.xml +++ b/app/src/main/res/layout/fragment_senders_url_scheme.xml @@ -65,7 +65,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/url_scheme_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> + android:drawableStart="@drawable/ic_delete" + android:paddingStart="10dp" + android:text="@string/del_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/save_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_senders_webhook.xml b/app/src/main/res/layout/fragment_senders_webhook.xml index b26624d6..f90c1cf0 100644 --- a/app/src/main/res/layout/fragment_senders_webhook.xml +++ b/app/src/main/res/layout/fragment_senders_webhook.xml @@ -38,14 +38,16 @@ android:layout_marginStart="5dp" android:layout_weight="1" android:singleLine="true" - app:met_clearButton="true" /> + app:met_clearButton="true" + tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" /> + android:checked="true" + tools:ignore="TouchTargetSizeCheck" /> @@ -71,22 +73,26 @@ android:id="@+id/rb_method_post" style="@style/rg_rb_style" android:checked="true" - android:text="@string/post" /> + android:text="@string/post" + tools:ignore="TouchTargetSizeCheck" /> + android:text="@string/get" + tools:ignore="TouchTargetSizeCheck" /> + android:text="@string/put" + tools:ignore="TouchTargetSizeCheck" /> + android:text="@string/patch" + tools:ignore="TouchTargetSizeCheck" /> @@ -114,7 +120,7 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/webhook_server_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -125,7 +131,8 @@ android:layout_height="wrap_content" android:inputType="textUri" android:singleLine="true" - app:met_clearButton="true" /> + app:met_clearButton="true" + tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" /> @@ -145,7 +152,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/webhook_params_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> + app:met_clearButton="true" + tools:ignore="DuplicateSpeakableTextCheck,TextContrastCheck,TouchTargetSizeCheck" /> @@ -177,7 +185,8 @@ android:layout_height="wrap_content" android:hint="@string/optional" android:singleLine="true" - app:met_passWordButton="true" /> + app:met_passWordButton="true" + tools:ignore="TextContrastCheck,TouchTargetSizeCheck" /> @@ -199,7 +208,8 @@ android:layout_height="wrap_content" android:hint="@string/optional" android:singleLine="true" - app:met_clearButton="true" /> + app:met_clearButton="true" + tools:ignore="TextContrastCheck,TouchTargetSizeCheck" /> @@ -214,7 +224,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" - android:orientation="horizontal"> + android:orientation="horizontal" + tools:ignore="UseCompoundDrawables"> - + android:layout_marginStart="@dimen/config_margin_5dp" + android:src="@drawable/ic_add" + app:tint="#299EE3" + tools:ignore="ContentDescription,ImageContrastCheck" /> @@ -248,31 +260,34 @@ + android:drawableStart="@drawable/ic_delete" + android:paddingStart="10dp" + android:text="@string/del_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/save_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_senders_wework_agent.xml b/app/src/main/res/layout/fragment_senders_wework_agent.xml index def792c8..0fdc9c14 100644 --- a/app/src/main/res/layout/fragment_senders_wework_agent.xml +++ b/app/src/main/res/layout/fragment_senders_wework_agent.xml @@ -179,7 +179,7 @@ android:layout_height="wrap_content" android:gravity="center" android:text="@string/touser_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -219,7 +219,7 @@ android:layout_height="wrap_content" android:gravity="center" android:text="@string/toparty_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -259,7 +259,7 @@ android:layout_height="wrap_content" android:gravity="center" android:text="@string/totag_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -445,7 +445,7 @@ android:layout_height="wrap_content" android:gravity="center" android:text="@string/customize_api_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -464,31 +464,34 @@ + android:drawableStart="@drawable/ic_delete" + android:paddingStart="10dp" + android:text="@string/del_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/save_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_senders_wework_robot.xml b/app/src/main/res/layout/fragment_senders_wework_robot.xml index 36c6ba01..bc625264 100644 --- a/app/src/main/res/layout/fragment_senders_wework_robot.xml +++ b/app/src/main/res/layout/fragment_senders_wework_robot.xml @@ -67,7 +67,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/wework_webHook_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> diff --git a/app/src/main/res/layout/fragment_server.xml b/app/src/main/res/layout/fragment_server.xml index b9ed264d..8fe88f8d 100644 --- a/app/src/main/res/layout/fragment_server.xml +++ b/app/src/main/res/layout/fragment_server.xml @@ -35,7 +35,7 @@ android:layout_height="wrap_content" android:layout_marginStart="10dp" android:text="@string/server_settings_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -77,7 +77,7 @@ android:layout_height="wrap_content" android:layout_marginStart="2dp" android:text="@string/auto_startup" - android:textSize="11sp" /> + android:textSize="@dimen/text_size_small" /> @@ -96,7 +96,7 @@ android:padding="3dp" android:text="@string/copy" android:textColor="@color/white" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" app:sb_color_unpressed="@color/colorStart" app:sb_ripple_color="@color/white" app:sb_ripple_duration="500" @@ -108,7 +108,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/http_server_stopped" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -124,7 +124,7 @@ android:padding="5dp" android:text="@string/start_server" android:textColor="@color/white" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" app:sb_color_unpressed="@color/colorPrimary" app:sb_ripple_color="@color/white" app:sb_ripple_duration="500" @@ -158,7 +158,7 @@ android:layout_height="wrap_content" android:layout_marginStart="10dp" android:text="@string/safety_measures_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -224,7 +224,7 @@ android:padding="5dp" android:text="@string/random" android:textColor="@color/white" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" app:sb_color_unpressed="@color/colorPrimary" app:sb_ripple_color="@color/white" app:sb_ripple_duration="500" @@ -258,7 +258,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/time_tolerance_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -277,7 +277,7 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/seconds" - android:textSize="12sp" + android:textSize="@dimen/text_size_small" android:textStyle="bold" /> @@ -310,7 +310,7 @@ android:maxLines="5" android:minLines="2" android:scrollbars="vertical" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -465,7 +465,7 @@ android:layout_marginStart="5dp" android:layout_weight="1" android:hint="@string/web_path_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -543,7 +543,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/api_sms_query_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -578,7 +578,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/api_sms_send_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -613,7 +613,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/api_call_query_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -648,7 +648,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/api_contact_query_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -684,7 +684,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/api_contact_add_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -719,7 +719,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/api_wol_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -754,7 +754,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/api_location_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -790,7 +790,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/api_battery_query_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index 264705d0..099d9e0a 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -37,8 +37,9 @@ android:layout_height="wrap_content" android:layout_marginStart="10dp" android:text="@string/forwarding_function_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> + @@ -71,7 +72,8 @@ android:id="@+id/sb_enable_sms" style="@style/SwitchButtonStyle" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + tools:ignore="DuplicateSpeakableTextCheck,TouchTargetSizeCheck" /> @@ -96,7 +98,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/forward_missed_calls_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -130,14 +132,15 @@ android:id="@+id/scb_call_type3" android:layout_width="15dp" android:layout_height="15dp" - app:scb_color_checked="@color/colorPrimary" /> + app:scb_color_checked="@color/colorPrimary" + tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" /> + app:scb_color_checked="@color/colorPrimary" + tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" /> + app:scb_color_checked="@color/colorPrimary" + tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" /> @@ -183,14 +188,15 @@ android:id="@+id/scb_call_type4" android:layout_width="15dp" android:layout_height="15dp" - app:scb_color_checked="@color/colorPrimary" /> + app:scb_color_checked="@color/colorPrimary" + tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" /> + app:scb_color_checked="@color/colorPrimary" + tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" /> + app:scb_color_checked="@color/colorPrimary" + tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" /> @@ -235,7 +243,8 @@ android:id="@+id/sb_enable_phone" style="@style/SwitchButtonStyle" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + tools:ignore="TouchTargetSizeCheck" /> @@ -262,7 +271,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/forward_app_notify_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -291,7 +300,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/cancel_app_notify" - android:textSize="10sp" + android:textSize="@dimen/text_size_small" tools:ignore="SmallSp" /> @@ -316,7 +325,8 @@ android:id="@+id/sb_enable_app_notify" style="@style/SwitchButtonStyle" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + tools:ignore="TouchTargetSizeCheck,DuplicateSpeakableTextCheck" /> @@ -340,8 +350,9 @@ android:layout_height="wrap_content" android:layout_marginStart="10dp" android:text="@string/extra_function_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> + @@ -383,7 +394,8 @@ android:id="@+id/sb_enable_location" style="@style/SwitchButtonStyle" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + tools:ignore="TouchTargetSizeCheck" /> @@ -410,7 +422,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/accuracy" - android:textSize="10sp" + android:textSize="@dimen/text_size_small" android:textStyle="bold" tools:ignore="SmallSp" /> @@ -424,17 +436,20 @@ android:id="@+id/rb_accuracy_fine" style="@style/rg_rb_style_wrap" android:checked="true" - android:text="@string/accuracy_fine" /> + android:text="@string/accuracy_fine" + tools:ignore="TouchTargetSizeCheck" /> + android:text="@string/accuracy_coarse" + tools:ignore="TouchTargetSizeCheck" /> + android:text="@string/no_requirement" + tools:ignore="DuplicateSpeakableTextCheck,TouchTargetSizeCheck" /> @@ -450,7 +465,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/power_requirement" - android:textSize="10sp" + android:textSize="@dimen/text_size_small" android:textStyle="bold" tools:ignore="SmallSp" /> @@ -464,22 +479,26 @@ android:id="@+id/rb_power_requirement_low" style="@style/rg_rb_style_wrap" android:checked="true" - android:text="@string/power_requirement_low" /> + android:text="@string/power_requirement_low" + tools:ignore="TouchTargetSizeCheck" /> + android:text="@string/power_requirement_medium" + tools:ignore="TouchTargetSizeCheck" /> + android:text="@string/power_requirement_high" + tools:ignore="TouchTargetSizeCheck" /> + android:text="@string/no_requirement" + tools:ignore="TouchTargetSizeCheck" /> @@ -495,25 +514,31 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/min_interval" - android:textSize="10sp" + android:textSize="@dimen/text_size_small" android:textStyle="bold" tools:ignore="SmallSp" /> - + android:digits="0123456789" + android:importantForAutofill="no" + android:inputType="number" + android:paddingTop="0dp" + android:paddingBottom="3dp" + android:singleLine="true" + android:textAlignment="center" + tools:ignore="LabelFor,SpeakableTextPresentCheck,TouchTargetSizeCheck" /> - + android:digits="0123456789" + android:importantForAutofill="no" + android:inputType="number" + android:paddingTop="0dp" + android:paddingBottom="3dp" + android:singleLine="true" + android:textAlignment="center" + tools:ignore="LabelFor,SpeakableTextPresentCheck,TouchTargetSizeCheck" /> @@ -571,7 +602,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/sms_command_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> + android:layout_height="wrap_content" + tools:ignore="TouchTargetSizeCheck" /> @@ -613,20 +645,21 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/load_app_list_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> + android:orientation="horizontal" + tools:ignore="TextSizeCheck"> @@ -634,14 +667,15 @@ android:id="@+id/scb_load_user_app" android:layout_width="15dp" android:layout_height="15dp" - app:scb_color_checked="@color/colorPrimary" /> + app:scb_color_checked="@color/colorPrimary" + tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" /> + app:scb_color_checked="@color/colorPrimary" + tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" /> @@ -666,7 +701,8 @@ android:id="@+id/sb_enable_load_app_list" style="@style/SwitchButtonStyle" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + tools:ignore="TouchTargetSizeCheck,DuplicateSpeakableTextCheck" /> @@ -691,7 +727,8 @@ android:layout_height="wrap_content" android:hint="@string/extra_app_hint" android:inputType="textMultiLine" - app:met_clearButton="true" /> + app:met_clearButton="true" + tools:ignore="TextContrastCheck" /> @@ -745,27 +783,39 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/filtering_duplicate_messages_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> - + android:gravity="center_vertical" + android:orientation="horizontal"> - + + + + + @@ -779,7 +829,8 @@ + android:orientation="vertical" + tools:ignore="TextSizeCheck"> @@ -814,12 +865,12 @@ android:padding="5dp" android:text="@string/select" android:textColor="@color/white" - android:textSize="10sp" + android:textSize="@dimen/text_size_small" app:sb_color_unpressed="@color/colorPrimary" app:sb_ripple_color="@color/white" app:sb_ripple_duration="500" app:sb_shape_type="rectangle" - tools:ignore="SmallSp" /> + tools:ignore="SmallSp,TextContrastCheck,TouchTargetSizeCheck" /> @@ -843,7 +894,7 @@ android:layout_height="wrap_content" android:layout_marginStart="10dp" android:text="@string/keep_alive_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -870,7 +921,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/auto_startup" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -878,7 +929,8 @@ android:id="@+id/sb_with_reboot" style="@style/SwitchButtonStyle" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + tools:ignore="TouchTargetSizeCheck" /> @@ -905,7 +957,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/battery_setting_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -913,7 +965,8 @@ android:id="@+id/sb_battery_setting" style="@style/SwitchButtonStyle" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + tools:ignore="TouchTargetSizeCheck" /> @@ -940,7 +993,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/enable_exclude_from_recents_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -948,7 +1001,8 @@ android:id="@+id/sb_exclude_from_recents" style="@style/SwitchButtonStyle" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + tools:ignore="TouchTargetSizeCheck" /> @@ -974,7 +1028,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/enabe_cactus_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -1003,7 +1057,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/play_silence_music" - android:textSize="10sp" + android:textSize="@dimen/text_size_small" tools:ignore="SmallSp" /> @@ -1036,7 +1090,8 @@ android:id="@+id/sb_enable_cactus" style="@style/SwitchButtonStyle" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + tools:ignore="TouchTargetSizeCheck" /> @@ -1067,7 +1122,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/retry_interval_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -1080,14 +1135,15 @@ @@ -1104,21 +1161,25 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/times" - android:textSize="12sp" + android:textSize="@dimen/text_size_small" android:textStyle="bold" /> + + android:gravity="center_vertical" + android:orientation="horizontal" + android:visibility="gone"> @@ -1135,21 +1197,23 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/seconds" - android:textSize="12sp" + android:textSize="@dimen/text_size_small" android:textStyle="bold" /> + @@ -1166,8 +1231,9 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/seconds" - android:textSize="12sp" + android:textSize="@dimen/text_size_small" android:textStyle="bold" /> + @@ -1194,7 +1260,7 @@ android:layout_height="wrap_content" android:layout_marginStart="10dp" android:text="@string/custom_settings_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -1227,7 +1293,7 @@ android:padding="5dp" android:text="@string/refresh" android:textColor="@color/white" - android:textSize="10sp" + android:textSize="@dimen/text_size_small" app:sb_color_unpressed="@color/colorPrimary" app:sb_ripple_color="@color/white" app:sb_ripple_duration="500" @@ -1258,7 +1324,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/carrier_mobile" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -1298,7 +1364,7 @@ android:padding="5dp" android:text="@string/refresh" android:textColor="@color/white" - android:textSize="10sp" + android:textSize="@dimen/text_size_small" app:sb_color_unpressed="@color/colorPrimary" app:sb_ripple_color="@color/white" app:sb_ripple_duration="500" @@ -1329,7 +1395,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/carrier_mobile" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -1369,7 +1435,7 @@ android:padding="5dp" android:text="@string/refresh" android:textColor="@color/white" - android:textSize="10sp" + android:textSize="@dimen/text_size_small" app:sb_color_unpressed="@color/colorPrimary" app:sb_ripple_color="@color/white" app:sb_ripple_duration="500" @@ -1388,7 +1454,7 @@ @@ -1461,7 +1527,7 @@ android:layout_height="wrap_content" android:layout_marginStart="5dp" android:text="@string/custom_template_tips" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -1537,7 +1603,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/pure_client_mode_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> @@ -1572,7 +1638,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/pure_task_mode_tips" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> diff --git a/app/src/main/res/layout/fragment_tasks.xml b/app/src/main/res/layout/fragment_tasks.xml index 73a33ea6..edaacbb8 100644 --- a/app/src/main/res/layout/fragment_tasks.xml +++ b/app/src/main/res/layout/fragment_tasks.xml @@ -16,7 +16,7 @@ app:indicator_height="42dp" app:indicator_line_height="2dp" app:indicator_line_show="true" - app:indicator_textSize="14sp" + app:indicator_textSize="@dimen/text_size_medium" app:indicator_width="0dp" /> diff --git a/app/src/main/res/layout/fragment_tasks_action_notification.xml b/app/src/main/res/layout/fragment_tasks_action_notification.xml index 809a38ff..ca24d007 100644 --- a/app/src/main/res/layout/fragment_tasks_action_notification.xml +++ b/app/src/main/res/layout/fragment_tasks_action_notification.xml @@ -153,7 +153,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/enable_custom_templates_tips" - android:textSize="11sp" /> + android:textSize="@dimen/text_size_small" /> + android:textSize="@dimen/text_size_small" /> @@ -316,7 +316,7 @@ android:padding="5dp" android:text="@string/select" android:textColor="@color/white" - android:textSize="10sp" + android:textSize="@dimen/text_size_mini" app:sb_color_unpressed="@color/colorPrimary" app:sb_ripple_color="@color/white" app:sb_ripple_duration="500" @@ -339,30 +339,33 @@ diff --git a/app/src/main/res/layout/fragment_tasks_action_send_sms.xml b/app/src/main/res/layout/fragment_tasks_action_send_sms.xml index ebdc37eb..90eb8862 100644 --- a/app/src/main/res/layout/fragment_tasks_action_send_sms.xml +++ b/app/src/main/res/layout/fragment_tasks_action_send_sms.xml @@ -153,30 +153,33 @@ diff --git a/app/src/main/res/layout/fragment_tasks_condition_battery.xml b/app/src/main/res/layout/fragment_tasks_condition_battery.xml index 93521ea2..3e25bed3 100644 --- a/app/src/main/res/layout/fragment_tasks_condition_battery.xml +++ b/app/src/main/res/layout/fragment_tasks_condition_battery.xml @@ -38,7 +38,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/task_battery" - android:textSize="18sp" + android:textSize="@dimen/text_size_big" android:textStyle="bold" /> @@ -164,20 +164,34 @@ + + diff --git a/app/src/main/res/layout/fragment_tasks_condition_charge.xml b/app/src/main/res/layout/fragment_tasks_condition_charge.xml index 3722da6b..c5fcfc05 100644 --- a/app/src/main/res/layout/fragment_tasks_condition_charge.xml +++ b/app/src/main/res/layout/fragment_tasks_condition_charge.xml @@ -38,7 +38,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/task_charge" - android:textSize="18sp" + android:textSize="@dimen/text_size_big" android:textStyle="bold" /> + + diff --git a/app/src/main/res/layout/fragment_tasks_condition_cron.xml b/app/src/main/res/layout/fragment_tasks_condition_cron.xml index aed23359..86ada66f 100644 --- a/app/src/main/res/layout/fragment_tasks_condition_cron.xml +++ b/app/src/main/res/layout/fragment_tasks_condition_cron.xml @@ -38,7 +38,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/task_cron" - android:textSize="18sp" + android:textSize="@dimen/text_size_big" android:textStyle="bold" /> + android:drawableStart="@drawable/ic_save" + android:paddingStart="13dp" + android:text="@string/submit_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> + android:drawableStart="@drawable/ic_test" + android:paddingStart="10dp" + android:text="@string/test_btn" + android:textColor="#FFFFFF" + android:textSize="@dimen/text_size_medium" + tools:ignore="RtlSymmetry,TextContrastCheck,TouchTargetSizeCheck" /> diff --git a/app/src/main/res/layout/fragment_tasks_condition_leave_address.xml b/app/src/main/res/layout/fragment_tasks_condition_leave_address.xml index 4c78dafc..3a61adaf 100644 --- a/app/src/main/res/layout/fragment_tasks_condition_leave_address.xml +++ b/app/src/main/res/layout/fragment_tasks_condition_leave_address.xml @@ -38,7 +38,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/task_leave_address" - android:textSize="18sp" + android:textSize="@dimen/text_size_big" android:textStyle="bold" /> + + diff --git a/app/src/main/res/layout/fragment_tasks_condition_lock_screen.xml b/app/src/main/res/layout/fragment_tasks_condition_lock_screen.xml index 696b3373..f13aa548 100644 --- a/app/src/main/res/layout/fragment_tasks_condition_lock_screen.xml +++ b/app/src/main/res/layout/fragment_tasks_condition_lock_screen.xml @@ -38,7 +38,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/task_lock_screen" - android:textSize="18sp" + android:textSize="@dimen/text_size_big" android:textStyle="bold" /> + + diff --git a/app/src/main/res/layout/fragment_tasks_condition_network.xml b/app/src/main/res/layout/fragment_tasks_condition_network.xml index 85acc303..46fd62fb 100644 --- a/app/src/main/res/layout/fragment_tasks_condition_network.xml +++ b/app/src/main/res/layout/fragment_tasks_condition_network.xml @@ -38,7 +38,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/task_network" - android:textSize="18sp" + android:textSize="@dimen/text_size_big" android:textStyle="bold" /> + + diff --git a/app/src/main/res/layout/fragment_tasks_condition_sim.xml b/app/src/main/res/layout/fragment_tasks_condition_sim.xml index a296577a..dba7f932 100644 --- a/app/src/main/res/layout/fragment_tasks_condition_sim.xml +++ b/app/src/main/res/layout/fragment_tasks_condition_sim.xml @@ -38,7 +38,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/task_sim" - android:textSize="18sp" + android:textSize="@dimen/text_size_big" android:textStyle="bold" /> + + diff --git a/app/src/main/res/layout/fragment_tasks_condition_to_address.xml b/app/src/main/res/layout/fragment_tasks_condition_to_address.xml index 3c5a9de2..3b2d64b6 100644 --- a/app/src/main/res/layout/fragment_tasks_condition_to_address.xml +++ b/app/src/main/res/layout/fragment_tasks_condition_to_address.xml @@ -38,7 +38,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/task_to_address" - android:textSize="18sp" + android:textSize="@dimen/text_size_big" android:textStyle="bold" /> + + diff --git a/app/src/main/res/layout/fragment_tasks_edit.xml b/app/src/main/res/layout/fragment_tasks_edit.xml index ed0cc722..8299fcfc 100644 --- a/app/src/main/res/layout/fragment_tasks_edit.xml +++ b/app/src/main/res/layout/fragment_tasks_edit.xml @@ -64,14 +64,14 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/task_conditions" - android:textSize="20sp" /> + android:textSize="@dimen/text_size_large" /> @@ -120,7 +120,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/add_condition" - android:textSize="14sp" + android:textSize="@dimen/text_size_medium" android:textStyle="bold" /> + android:textSize="@dimen/text_size_small" /> @@ -149,14 +149,14 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/task_actions" - android:textSize="20sp" /> + android:textSize="@dimen/text_size_large" /> @@ -205,7 +205,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/add_action" - android:textSize="14sp" + android:textSize="@dimen/text_size_medium" android:textStyle="bold" /> + android:textSize="@dimen/text_size_small" /> @@ -235,33 +235,33 @@ diff --git a/app/src/main/res/layout/include_navigation_header.xml b/app/src/main/res/layout/include_navigation_header.xml index dcfdf1fc..dd0e8242 100644 --- a/app/src/main/res/layout/include_navigation_header.xml +++ b/app/src/main/res/layout/include_navigation_header.xml @@ -1,20 +1,22 @@ + android:paddingStart="30dp" + android:paddingEnd="30dp" + android:scaleType="fitCenter" + app:srcCompat="@drawable/ic_splash_app_logo" + tools:ignore="ImageContrastCheck" /> \ No newline at end of file diff --git a/app/src/main/res/layout/include_toolbar_web.xml b/app/src/main/res/layout/include_toolbar_web.xml index 10e2bf32..bef609c6 100644 --- a/app/src/main/res/layout/include_toolbar_web.xml +++ b/app/src/main/res/layout/include_toolbar_web.xml @@ -20,14 +20,15 @@ android:layout_height="match_parent" android:layout_centerVertical="true" android:scaleType="center" - android:src="@drawable/ic_web_back" /> + android:src="@drawable/ic_action_back" + tools:ignore="ImageContrastCheck" /> @@ -37,7 +38,8 @@ android:layout_height="match_parent" android:layout_toEndOf="@id/view_line" android:scaleType="center" - android:src="@drawable/ic_web_close" /> + android:src="@drawable/ic_action_close" + tools:ignore="ImageContrastCheck" /> + android:src="@drawable/ic_action_menu" + tools:ignore="ImageContrastCheck" /> + diff --git a/app/src/main/res/layout/item_add_header.xml b/app/src/main/res/layout/item_add_header.xml index 67327ace..b6ffe9bd 100644 --- a/app/src/main/res/layout/item_add_header.xml +++ b/app/src/main/res/layout/item_add_header.xml @@ -40,7 +40,7 @@ android:layout_width="18dp" android:layout_height="18dp" android:contentDescription="@string/header_del" - android:src="@drawable/icon_delete" - app:tint="@color/design_default_color_error" /> + android:src="@drawable/ic_delete" + app:tint="#F15C58" /> diff --git a/app/src/main/res/layout/item_add_sender.xml b/app/src/main/res/layout/item_add_sender.xml index bd6f7b02..16af3b0f 100644 --- a/app/src/main/res/layout/item_add_sender.xml +++ b/app/src/main/res/layout/item_add_sender.xml @@ -60,8 +60,8 @@ android:layout_width="18dp" android:layout_height="18dp" android:contentDescription="@string/sender_del" - android:src="@drawable/icon_delete" - app:tint="@color/design_default_color_error" /> + android:src="@drawable/ic_delete" + app:tint="#F15C58" /> diff --git a/app/src/main/res/layout/item_logs.xml b/app/src/main/res/layout/item_logs.xml index 55f88ccc..a408c920 100644 --- a/app/src/main/res/layout/item_logs.xml +++ b/app/src/main/res/layout/item_logs.xml @@ -38,7 +38,7 @@ android:gravity="center" android:maxEms="10" android:maxLines="1" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_sender.xml b/app/src/main/res/layout/item_sender.xml index 55f88ccc..a408c920 100644 --- a/app/src/main/res/layout/item_sender.xml +++ b/app/src/main/res/layout/item_sender.xml @@ -38,7 +38,7 @@ android:gravity="center" android:maxEms="10" android:maxLines="1" - android:textSize="9sp" + android:textSize="@dimen/text_size_mini" tools:ignore="SmallSp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/layout_main_content.xml b/app/src/main/res/layout/layout_main_content.xml deleted file mode 100644 index 6faaa64b..00000000 --- a/app/src/main/res/layout/layout_main_content.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/menu_item_option.xml b/app/src/main/res/layout/menu_item_option.xml new file mode 100644 index 00000000..60dafbf1 --- /dev/null +++ b/app/src/main/res/layout/menu_item_option.xml @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/menu_left_drawer.xml b/app/src/main/res/layout/menu_left_drawer.xml new file mode 100644 index 00000000..aad81575 --- /dev/null +++ b/app/src/main/res/layout/menu_left_drawer.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_drawer.xml b/app/src/main/res/menu/menu_drawer.xml deleted file mode 100644 index 9437d1ec..00000000 --- a/app/src/main/res/menu/menu_drawer.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/menu/menu_logs.xml b/app/src/main/res/menu/menu_logs.xml deleted file mode 100644 index 3bc9c093..00000000 --- a/app/src/main/res/menu/menu_logs.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/menu/menu_navigation_bottom.xml b/app/src/main/res/menu/menu_navigation_bottom.xml deleted file mode 100644 index 11ae748e..00000000 --- a/app/src/main/res/menu/menu_navigation_bottom.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - diff --git a/app/src/main/res/menu/menu_rules.xml b/app/src/main/res/menu/menu_rules.xml deleted file mode 100644 index 0d032192..00000000 --- a/app/src/main/res/menu/menu_rules.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/menu/menu_senders.xml b/app/src/main/res/menu/menu_senders.xml deleted file mode 100644 index b551cea1..00000000 --- a/app/src/main/res/menu/menu_senders.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/menu/menu_settings.xml b/app/src/main/res/menu/menu_settings.xml deleted file mode 100644 index 70078033..00000000 --- a/app/src/main/res/menu/menu_settings.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values-en/arrays.xml b/app/src/main/res/values-en/arrays.xml deleted file mode 100644 index ec80d6d0..00000000 --- a/app/src/main/res/values-en/arrays.xml +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - @string/menu_logs - @string/menu_rules - @string/menu_senders - @string/menu_settings - - - - ubmcmm.baidustatic.com - gss1.bdstatic.com/ - cpro2.baidustatic.com - cpro.baidustatic.com - lianmeng.360.cn - nsclick.baidu.com - caclick.baidu.com/ - jieaogd.com - publish-pic-cpu.baidu.com/ - cpro.baidustatic.com/ - hao61.net/ - cpu.baidu.com/ - pos.baidu.com - cbjs.baidu.com - cpro.baidu.com - images.sohu.com/cs/jsfile/js/c.js - union.sogou.com/ - sogou.com/ - 5txs.cn/ - liuzhi520.com/ - yhzm.cc/ - jieaogd.com - a.baidu.com - c.baidu.com - mlnbike.com - alipays://platformapi - alipay.com/ - jieaogd.com - vipshop.com - bayimob.com - - - - - Sms - Call - App - - - - - Enabled - Disabled - - - - - Receive - Send - - - - - Missed - Call out - Received - - - - - Network Model - Offline Mode - - - - - User App - System App - - - - - My Task - Task Center - - - - \@qq.com - \@foxmail.com - \@exmail.qq.com - \@outlook.com - \@office365.com - \@live.com - \@hotmail.com - \@msn.com - \@gmail.com - \@yeah.net - \@163.com - \@126.com - \@sina.com - \@sina.cn - \@139.com - \@189.cn - Other - - - - A very long suggestion that would span multiple lines. - Android - iOS - SCALA - Ruby - JavaScript - C# - Python - C - C++ - PHP - Go - Perl - Bash - Lua - R - TCL - Haskell - Objective C - Swift - Kotlin - jQuery - Development - Web - Ajax - Test - Testing - CookBook - Beagle - VMware - Less.js - IDE - Arduino - Xamarin - UI - Microsoft - Application - JUnit - SQL - Beagle - - - - UTF-8 - US-ASCII - ISO-8859-1 - UTF-16 - UTF-16BE - UTF-16LE - UTF-32 - UTF-32LE - UTF-32BE - - - \ 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 a3799a88..267fb7fb 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -1,7 +1,25 @@ - Universal Browser + 短信 + 通话 + 应用 + 已启用 + 已禁用 + 接收 + 发送 + 未接来电 + 本机去电 + 已接来电 + 网络模式 + 离线模式 + 用户应用 + 系统应用 + 我的任务 + 任务中心 + Universal Browser + navigation + guide_key_sliding_root_navigation Open navigation drawer Close navigation drawer @@ -10,6 +28,11 @@ Rules Settings + Settings·Step-1 + Senders·Step-2 + Rules·Step-3 + Logs·Step-4 + Task Server Client @@ -19,11 +42,6 @@ Help About - Notifications - Issues - Starred - Search - App Version: %s Cache Size: %s Frpc Version:%s @@ -149,12 +167,17 @@ OK Cancel Discard + Discard Quit Delete + Delete Save + Save Submit + Submit Send Test + Test Confirm All Select @@ -346,6 +369,7 @@ Enable only when no network Notify Content + Notification Device Name SIM SubId SIM1 SubId/Label @@ -563,10 +587,13 @@ Please fill in the remarks manually or click the refresh button to get it automatically times Interval + Increasing Interval Timeout + Single Timeout secs %s sec Retry + Max Retries [%s] Congratulations, the sending channel test is successful, please continue to add forwarding rules! Test Channel SIM1_TestOperator_18888888888 @@ -1061,7 +1088,7 @@ Network Type Operator Name Host Address - Loading app list async… + Loading the list of apps, please wait… Carrier Name ICC ID @@ -1203,9 +1230,9 @@ of this month. Cron Expression Test Result Cron expression is invalid:\n%s - The next %s execution times:\n%s + The next %s execution times:\n%s - Use SIM-%s to send sms\n%s + Use SIM-%s to send sms\n%s Discharged to the specified battery level Charged to the specified battery level The battery discharged to %s%% @@ -1243,9 +1270,9 @@ = leaved Latitude and longitude or distance cannot be empty. Address keyword cannot be empty. - Entering area centered at (%s, %s) with a radius of %s-meter. + Entering area centered at (%s, %s) with a radius of %s-meter. GPS address contains %s means arrival. - Leave area centered at (%s, %s) with a radius of %s-meter. + Leave area centered at (%s, %s) with a radius of %s-meter. GPS address NOT contains %s means leaved. This type of condition already exists. This type of action already exists. diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 0ddd370c..1db8c160 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -1,14 +1,38 @@ - - - @string/menu_logs - @string/menu_rules - @string/menu_senders - @string/menu_settings + + @string/menu_logs_step + @string/menu_rules_step + @string/menu_senders_step + @string/menu_settings_step + + @string/menu_tasks + @string/menu_server + @string/menu_client + @string/menu_frpc + @string/menu_apps + + @string/menu_help + @string/menu_about + + @drawable/ic_menu_logs + @drawable/ic_menu_rule + @drawable/ic_menu_send + @drawable/ic_menu_settings + 0 + @drawable/ic_menu_task + @drawable/ic_menu_server + @drawable/ic_menu_client + @drawable/ic_menu_frpc + @drawable/ic_menu_app + + @drawable/ic_menu_help + @drawable/ic_menu_about + + ubmcmm.baidustatic.com gss1.bdstatic.com/ @@ -44,46 +68,46 @@ - 短信 - 通话 - 应用 + @string/type_param_sms + @string/type_param_call + @string/type_param_app - 已启用 - 已禁用 + @string/status_param_option_enabled + @string/status_param_option_disabled - 接收 - 发送 + @string/sms_type_option_receive + @string/sms_type_option_send - 未接来电 - 本机去电 - 已接来电 + @string/call_type_option_missed + @string/call_type_option_call_out + @string/call_type_option_received - 网络模式 - 离线模式 + @string/clone_type_option_network + @string/clone_type_option_offline - 用户应用 - 系统应用 + @string/app_type_option_user + @string/app_type_option_system - 我的任务 - 任务中心 + @string/task_type_option_mine + @string/task_type_option_fixed @@ -103,7 +127,7 @@ \@sina.cn \@139.com \@189.cn - 其他邮箱 + @string/other_mail_type diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 6474ffd2..9c62f957 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -70,4 +70,10 @@ 23.269989dip 24.72998dip 36.359985dip + + 21sp + 18sp + 15sp + 12sp + 9sp \ No newline at end of file diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml index 88a7b51a..6d28ac38 100644 --- a/app/src/main/res/values/integers.xml +++ b/app/src/main/res/values/integers.xml @@ -1,5 +1,5 @@ - + 220 150 5 @@ -46,11 +46,11 @@ 150 150 1 - 100 - 100 - 75 - 120 - 100 + 100 + 100 + 75 + 120 + 100 100 1000 150 @@ -67,14 +67,14 @@ 700 800 900 - 0 + 0 300 350 200 250 75 150 - 0 + 0 4 100 100 @@ -85,22 +85,22 @@ 120 100 250 - 2 - 1 - 0 + 2 + 1 + 0 0 - 1 - 0 + 1 + 0 200 999 - 0.06 - 0.06 - 0.1 - 0.3 - 0.3 - 0.6 - 0.6 - 1.0 + 0.06 + 0.06 + 0.1 + 0.3 + 0.3 + 0.6 + 0.6 + 1.0 3 100 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 635d8fe6..c3332480 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,7 +1,25 @@ - 通用浏览器 + 短信 + 通话 + 应用 + 已启用 + 已禁用 + 接收 + 发送 + 未接来电 + 本机去电 + 已接来电 + 网络模式 + 离线模式 + 用户应用 + 系统应用 + 我的任务 + 任务中心 + 通用浏览器 + 导航条 + guide_key_sliding_root_navigation 打开导航抽屉 关闭导航抽屉 @@ -10,6 +28,11 @@ 转发规则 通用设置 + 通用设置·第一步 + 发送通道·第二步 + 转发规则·第三步 + 转发日志·第四步 + 自动任务·快捷指令 主动控制·服务端 主动控制·客户端 @@ -19,11 +42,6 @@ 使用帮助 关于软件 - 通知 - 问题 - 收藏 - 搜索 - 软件版本:%s 缓存大小:%s Frpc版本:%s @@ -150,12 +168,17 @@ 确定 取消 丢弃 + 丢  弃 退出 删除 + 删  除 保存 + 保  存 提交 + 提  交 发送 测试 + 测  试 确认 全部 选择 @@ -347,6 +370,7 @@ 仅当无网络时启用 通知文案 + 通知栏文案 设备名称 卡槽主键 SIM1主键/备注 @@ -559,15 +583,18 @@ 网络状态监控 网络状态改变提醒 保活措施 - 建议开启前三项授权或设置,不要禁用通知栏,避免APP被杀 + 开启前三项授权或设置,不禁用通知栏,避免APP被杀 个性设置 请手动填写备注 或 点击刷新按钮自动获取 间隔 + 递增间隔 超时 + 单次超时 %s 秒 重试 + 最多重试 【%s】恭喜您,该发送通道测试成功,请继续添加转发规则! 测试通道 SIM1_测试运营商_18888888888 @@ -1062,7 +1089,7 @@ 网络类型 运营商 本地IP - 正在异步加载应用列表… + 努力加载应用列表中,请稍候… 运营商名 ICC ID @@ -1089,7 +1116,7 @@ 启用GPS定位功能 必须开启定位服务,才能使用获取!\n是否立即启用? - 用于支持 查找手机、{{定位信息}}标签 功能;设置项改变后需开关以生效 + 以便支持 查找手机、{{定位信息}}标签 等需要GPS的功能 位置精度 精确位置 模糊位置 @@ -1098,8 +1125,8 @@ - 位置更新:最小间隔 - 最小距离 + 位置更新:最小时间间隔 + 最小距离间隔 UID @@ -1134,7 +1161,7 @@ 到达地点 采用经纬度坐标(WGS-84坐标系) 离开地点 - 采用经纬度坐标(WGS-84坐标系) + 经纬度采用WGS-84坐标系 网络状态 当网络状态改变时触发 SIM卡状态 @@ -1204,9 +1231,9 @@ Cron表达式测试结果 Cron表达式无效:\n%s - 最近 %s 次运行时间:\n%s + 最近 %s 次运行时间:\n%s - 通过卡槽 SIM-%s 发送短信到:\n%s + 通过卡槽 SIM-%s 发送短信到:\n%s 放电到指定电量 充电到指定电量 电池放电低到%s%% @@ -1244,9 +1271,9 @@ 则表示离开 经纬度或距离都不能为空 地址关键字不能为空 - 进入以经纬度(%s,%s)为中心, %s米为半径的区域 + 进入以经纬度(%s,%s)为中心, %s米为半径的区域 进入GPS地址包含[%s]关键字区域 - 离开以经纬度(%s,%s)为中心, %s米为半径的区域 + 离开以经纬度(%s,%s)为中心, %s米为半径的区域 离开GPS地址包含[%s]关键字区域 已添加过该类型条件 已添加过该类型动作 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index f82cdcd0..b5a71a3a 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -34,10 +34,6 @@ @drawable/ic_splash_company_logo - - - @@ -219,7 +208,7 @@ 5dp 30dp 30dp - 12sp + @dimen/text_size_small 5dp @drawable/custom_radio_button @@ -229,8 +218,28 @@ match_parent wrap_content true - + @drawable/custom_radio_button + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 8811ec0f..0b5dccaa 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,5 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. +//file:noinspection DependencyNotationArgument buildscript { apply from: './versions.gradle'