From 826bead0c3744fab7df21048501ca6980e096bb4 Mon Sep 17 00:00:00 2001 From: archurtan Date: Tue, 22 Sep 2020 14:41:31 +0800 Subject: [PATCH 001/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=AB=E7=A0=81?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AE=BE=E5=A4=87=E6=97=B6=E9=80=80=E5=87=BA?= =?UTF-8?q?=E5=88=B0=E7=99=BB=E5=BD=95=E7=95=8C=E9=9D=A2=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I78be2fe85a72caa8c5f8422c24faee35c647b77e (cherry picked from commit af752ebc19313f5fa978ed13652407c2968daeb4) --- .../iot/explorer/link/kitlink/fragment/DeviceFragment.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt index 9ed0c721f..d7969f37f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt @@ -84,8 +84,10 @@ class DeviceFragment : BaseFragment(), MyCallback, AdapterView.OnItemClickListen if (gv_recommend_devices != null) gv_recommend_devices.visibility = View.GONE } categoryList = CategoryList - devicesGridView!!.adapter = GridAdapter(activity!!, CategoryList, false) - setGridViewHeightByChildren(devicesGridView!!) + if (devicesGridView != null && activity != null) { + devicesGridView!!.adapter = GridAdapter(activity!!, CategoryList, false) + setGridViewHeightByChildren(devicesGridView!!) + } } } } From 1f594919fbb90428a0be1e50b3db0df8c58b065e Mon Sep 17 00:00:00 2001 From: archurtan Date: Tue, 22 Sep 2020 17:20:04 +0800 Subject: [PATCH 002/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dcrash(ViewHolder=20vi?= =?UTF-8?q?ews=20must=20not=20be=20attached=20when=20created)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://console.firebase.google.com/project/tencent-iot/crashlytics/app/android:com.tencent.iot.explorer.link/issues/4c36a79e87cd2914f78ec64cf2684e1e?time=last-thirty-days&sessionId=5F6358A103BC00011EAFD561A0159D19_DNE_0_v2 Change-Id: Ic3302c370162e19b81e0b8e8b6a0b3fc417d93be (cherry picked from commit 9ee5aeed74742e8787a78a72b2f35bc15114f2b8) --- .../link/kitlink/activity/DeviceCategoryActivity.kt | 8 ++++---- .../explorer/link/kitlink/holder/DeviceListViewHolder.kt | 5 ++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt index 7ee22a436..e3a69b2bc 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt @@ -9,6 +9,7 @@ import android.os.Bundle import android.os.Handler import android.text.TextUtils import android.util.DisplayMetrics +import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.WindowManager @@ -154,12 +155,11 @@ class DeviceCategoryActivity : PActivity(), MyCallback, CRecyclerView.RecyclerI viewHolder: CRecyclerView.CViewHolder<*>, clickView: View, position: Int - ) { - Toast.makeText(this, "position $position is clicked", Toast.LENGTH_LONG).show() - } + ) {} override fun getViewHolder(parent: ViewGroup, viewType: Int): CRecyclerView.CViewHolder<*> { - return DeviceListViewHolder(this, parent, R.layout.item_scanned_device) + return DeviceListViewHolder(LayoutInflater.from(this) + .inflate(R.layout.item_scanned_device, parent, false)) } override fun getViewType(position: Int): Int { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/DeviceListViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/DeviceListViewHolder.kt index bcb28beaa..d57eb2912 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/DeviceListViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/DeviceListViewHolder.kt @@ -1,13 +1,12 @@ package com.tencent.iot.explorer.link.kitlink.holder -import android.content.Context -import android.view.ViewGroup +import android.view.View import com.tencent.iot.explorer.link.kitlink.entity.DeviceScannedEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.item_scanned_device.view.* class DeviceListViewHolder : CRecyclerView.CViewHolder { - constructor(context: Context, parent: ViewGroup, resId: Int) : super(context, parent, resId) + constructor(itemView: View) : super(itemView) override fun show(position: Int) { entity?.run { From 015ae3bc7a883111b9ed2dc5476d0b43e7e3988c Mon Sep 17 00:00:00 2001 From: archurtan Date: Tue, 22 Sep 2020 17:27:27 +0800 Subject: [PATCH 003/804] =?UTF-8?q?=E5=B0=86=E7=BD=91=E7=BB=9C=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E7=A7=BB=E8=87=B3initView=EF=BC=8C=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E7=BD=91=E7=BB=9C=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I2ccb7bb2517b49d2e4f9788b1171bcfc58b81a33 (cherry picked from commit 3150341a184427093558005ef2d8cbdcffad0035) --- .../link/kitlink/activity/DeviceCategoryActivity.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt index e3a69b2bc..0b4213dc2 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt @@ -67,6 +67,9 @@ class DeviceCategoryActivity : PActivity(), MyCallback, CRecyclerView.RecyclerI override fun initView() { tv_title.text = getString(R.string.add_device) iv_back.setColorFilter(resources.getColor(R.color.black_333333)) + App.data.tabPosition = 0 // Reset the position of vertical tab + App.data.screenWith = getScreenWidth() + HttpRequest.instance.getParentCategoryList(this) beginScanning() } @@ -79,9 +82,6 @@ class DeviceCategoryActivity : PActivity(), MyCallback, CRecyclerView.RecyclerI override fun onResume() { super.onResume() - App.data.screenWith = getScreenWidth() - HttpRequest.instance.getParentCategoryList(this) - Thread.sleep(150) vtab_device_category.setTabSelected(App.data.tabPosition) } From 8ec1a254362f8c275d17a31727ebb2cb04704834 Mon Sep 17 00:00:00 2001 From: archurtan Date: Tue, 22 Sep 2020 17:46:36 +0800 Subject: [PATCH 004/804] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E8=A7=84=E5=88=99=EF=BC=888-16=E5=8C=85=E5=90=AB=E5=AD=97?= =?UTF-8?q?=E6=AF=8D=E6=95=B0=E5=AD=97=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I2ff1cbe0f038564f7e5a860f4d64693f2c08fc12 (cherry picked from commit 65d2c2cfca29fee54435a50798983651f890bbcf) --- app/src/main/res/values/dimen.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/values/dimen.xml b/app/src/main/res/values/dimen.xml index 54e7ddb14..37e22f605 100644 --- a/app/src/main/res/values/dimen.xml +++ b/app/src/main/res/values/dimen.xml @@ -1,7 +1,7 @@ - 20 + 16 10sp 12sp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 454b997cb..908564eb9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -319,7 +319,7 @@ 手机号格式不正确 请输入邮箱地址 邮箱地址格式不正确 - 密码支持8–20位,必须包含字母和数字 + 密码支持8–16位,必须包含字母和数字 两次输入的密码不一致 密码修改成功,请重新登录 From 47a953c3005f111907562ae0f77145511e0497fe Mon Sep 17 00:00:00 2001 From: archurtan Date: Wed, 23 Sep 2020 15:04:56 +0800 Subject: [PATCH 005/804] =?UTF-8?q?=E5=8D=87=E7=BA=A7versionCode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ib67ea533b3ee3f1fa93421464526df174d06ca98 --- config.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.gradle b/config.gradle index 30acf610a..95d907120 100644 --- a/config.gradle +++ b/config.gradle @@ -6,6 +6,6 @@ ext { android = [ versionNameStr: versionNamePrefix, versionName: versionAppName, - versionCode: 1 + versionCode: 2 ] } From 1896684a7fbb95fe3f1827857dede6ad3cb0b34c Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Mon, 21 Sep 2020 09:46:04 +0800 Subject: [PATCH 006/804] =?UTF-8?q?=E3=80=90=E8=85=BE=E8=AE=AF=E8=BF=9E?= =?UTF-8?q?=E8=BF=9EAPP=E3=80=91=E8=8B=B1=E6=96=87=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit http://tapd.oa.com/NEW_IOT/prong/tasks/view/1020393192007567579 Change-Id: I1ce4886b4e857e15a64c1ba6755c0ee9a079ada7 --- app/build.gradle | 4 +- .../iot/explorer/link/MessageReceiver.java | 26 +- .../link/auth/socket/DispatchMsgHandler.kt | 9 +- .../activity/AccountAndSafetyActivity.kt | 4 +- .../kitlink/activity/AddDeviceActivity.kt | 2 +- .../link/kitlink/activity/AddRoomActivity.kt | 2 +- .../link/kitlink/activity/AddTimerActivity.kt | 4 +- .../activity/BindMobilePhoneActivity.kt | 2 +- .../activity/DeviceCategoryActivity.kt | 2 +- .../link/kitlink/activity/FeedbackActivity.kt | 6 +- .../kitlink/activity/InviteMemberActivity.kt | 2 +- .../link/kitlink/activity/MainActivity.kt | 2 +- .../kitlink/activity/SelectRoomActivity.kt | 2 +- .../link/kitlink/activity/ShareActivity.kt | 2 +- .../kitlink/activity/SmartConnectActivity.kt | 2 +- .../link/kitlink/activity/UserInfoActivity.kt | 2 +- .../kitlink/activity/WeekRepeatActivity.kt | 2 +- .../kitlink/entity/DevicePropertyEntity.kt | 3 +- .../link/kitlink/entity/TimerListEntity.kt | 25 +- .../link/kitlink/entity/WeatherEntity.kt | 7 +- .../fragment/ConnectProgressFragment.kt | 4 +- .../link/kitlink/holder/HomeRoomViewHolder.kt | 2 +- .../link/kitlink/holder/RoomListViewHolder.kt | 5 +- .../kitlink/holder/TimerListViewHolder.kt | 3 +- .../explorer/link/kitlink/util/DateUtils.java | 8 +- .../explorer/link/kitlink/util/HttpRequest.kt | 20 +- .../explorer/link/kitlink/util/HttpUtil.kt | 8 +- .../iot/explorer/link/kitlink/util/Utils.kt | 40 +- .../link/kitlink/wxapi/WXEntryActivity.kt | 5 +- .../explorer/link/mvp/model/BindPhoneModel.kt | 3 +- .../explorer/link/mvp/model/ConnectModel.kt | 6 +- .../link/mvp/model/ForgotPasswordModel.kt | 4 +- .../link/mvp/model/HomeFragmentModel.kt | 4 +- .../iot/explorer/link/mvp/model/LoginModel.kt | 4 +- .../link/mvp/model/ModifyPasswordModel.kt | 4 +- .../link/mvp/model/ModifyPhoneModel.kt | 3 +- .../explorer/link/mvp/model/RegisterModel.kt | 4 +- .../explorer/link/mvp/model/TimerListModel.kt | 3 +- .../link/util/date/DateFormatUtil.java | 10 +- .../clipimage/ClipPictureActivity.java | 2 +- .../clipimage/ImageSimpleBrowseActivity.java | 2 +- .../ImageSelectorActivity.java | 4 +- .../util/picture/utils/ImageShowUtils.java | 9 +- .../link/util/picture/utils/ImageUtils.java | 8 +- .../res/drawable-en-rUS/icon_tencentll.png | Bin 0 -> 8161 bytes .../res/drawable-zh-rCN/icon_tencentll.png | Bin 0 -> 8161 bytes app/src/main/res/layout/activity_about_us.xml | 2 +- .../main/res/layout/activity_add_family.xml | 2 +- app/src/main/res/layout/activity_add_room.xml | 2 +- .../res/layout/activity_control_panel.xml | 4 +- app/src/main/res/layout/activity_feedback.xml | 2 +- app/src/main/res/layout/activity_member.xml | 2 +- app/src/main/res/layout/activity_room.xml | 4 +- .../main/res/layout/control_dark_big_enum.xml | 4 +- .../res/layout/control_dark_big_enum_item.xml | 2 +- .../main/res/layout/control_dark_big_int.xml | 2 +- .../res/layout/control_dark_big_switch.xml | 2 +- app/src/main/res/layout/control_dark_long.xml | 2 +- .../res/layout/control_dark_long_switch.xml | 2 +- .../main/res/layout/control_dark_medium.xml | 4 +- .../res/layout/control_simple_big_enum.xml | 4 +- .../layout/control_simple_big_enum_item.xml | 2 +- .../res/layout/control_simple_big_int.xml | 2 +- .../res/layout/control_simple_big_switch.xml | 2 +- .../main/res/layout/control_simple_long.xml | 2 +- .../res/layout/control_simple_long_switch.xml | 2 +- .../main/res/layout/control_simple_medium.xml | 4 +- .../res/layout/control_standard_big_enum.xml | 4 +- .../layout/control_standard_big_enum_item.xml | 2 +- .../res/layout/control_standard_big_int.xml | 2 +- .../layout/control_standard_big_switch.xml | 2 +- .../main/res/layout/control_standard_long.xml | 2 +- .../layout/control_standard_long_switch.xml | 2 +- .../res/layout/control_standard_medium.xml | 4 +- app/src/main/res/layout/fragment_scene.xml | 2 +- app/src/main/res/layout/head_family.xml | 4 +- app/src/main/res/layout/head_home1.xml | 2 +- app/src/main/res/layout/image_clip_main.xml | 4 +- .../res/layout/imageselector_base_title.xml | 2 +- .../imageselector_browse_image_layout.xml | 8 +- .../imageselector_multi_image_layout.xml | 2 +- .../imageselector_pop_floder_list_item.xml | 2 +- app/src/main/res/layout/item_family_list.xml | 2 +- app/src/main/res/layout/item_member.xml | 2 +- .../main/res/layout/item_message_device.xml | 4 +- .../main/res/layout/item_message_family.xml | 4 +- app/src/main/res/layout/item_room_list.xml | 4 +- app/src/main/res/layout/menu_back_layout.xml | 2 +- .../main/res/layout/menu_cancel_layout.xml | 2 +- app/src/main/res/layout/popup_common.xml | 2 +- app/src/main/res/layout/popup_edit.xml | 2 +- app/src/main/res/layout/popup_enum.xml | 2 +- app/src/main/res/layout/popup_number.xml | 2 +- .../default_select_photo.png | Bin 0 -> 12024 bytes .../mipmap-en-rUS-hdpi/image_wifi_list.png | Bin 0 -> 26307 bytes .../mipmap-en-rUS-mdpi/image_wifi_list.png | Bin 0 -> 16804 bytes .../default_select_photo.png | Bin 0 -> 12024 bytes .../mipmap-en-rUS-xhdpi/image_about_us.png | Bin 0 -> 4553 bytes .../mipmap-en-rUS-xhdpi/image_wifi_list.png | Bin 0 -> 43446 bytes .../mipmap-en-rUS-xxhdpi/image_about_us.png | Bin 0 -> 9112 bytes .../mipmap-en-rUS-xxhdpi/image_wifi_list.png | Bin 0 -> 84041 bytes .../mipmap-en-rUS-xxxhdpi/image_about_us.png | Bin 0 -> 8569 bytes .../mipmap-en-rUS-xxxhdpi/image_soft_ap.png | Bin 0 -> 31544 bytes .../mipmap-en-rUS-xxxhdpi/image_wifi_list.png | Bin 0 -> 113423 bytes .../default_select_photo.png | Bin 0 -> 12024 bytes .../mipmap-zh-rCN-hdpi/image_wifi_list.png | Bin 0 -> 26307 bytes .../mipmap-zh-rCN-mdpi/image_wifi_list.png | Bin 0 -> 16804 bytes .../default_select_photo.png | Bin 0 -> 12024 bytes .../mipmap-zh-rCN-xhdpi/image_about_us.png | Bin 0 -> 4553 bytes .../mipmap-zh-rCN-xhdpi/image_wifi_list.png | Bin 0 -> 43446 bytes .../mipmap-zh-rCN-xxhdpi/image_about_us.png | Bin 0 -> 9112 bytes .../mipmap-zh-rCN-xxhdpi/image_wifi_list.png | Bin 0 -> 84041 bytes .../mipmap-zh-rCN-xxxhdpi/image_about_us.png | Bin 0 -> 8569 bytes .../mipmap-zh-rCN-xxxhdpi/image_soft_ap.png | Bin 0 -> 31544 bytes .../mipmap-zh-rCN-xxxhdpi/image_wifi_list.png | Bin 0 -> 113423 bytes app/src/main/res/values-en-rUS/strings.xml | 491 ++++++++++++++++++ app/src/main/res/values-zh-rCN/strings.xml | 491 ++++++++++++++++++ app/src/main/res/values/strings.xml | 93 +++- 118 files changed, 1305 insertions(+), 171 deletions(-) create mode 100644 app/src/main/res/drawable-en-rUS/icon_tencentll.png create mode 100644 app/src/main/res/drawable-zh-rCN/icon_tencentll.png create mode 100644 app/src/main/res/mipmap-en-rUS-hdpi/default_select_photo.png create mode 100644 app/src/main/res/mipmap-en-rUS-hdpi/image_wifi_list.png create mode 100644 app/src/main/res/mipmap-en-rUS-mdpi/image_wifi_list.png create mode 100644 app/src/main/res/mipmap-en-rUS-xhdpi/default_select_photo.png create mode 100644 app/src/main/res/mipmap-en-rUS-xhdpi/image_about_us.png create mode 100644 app/src/main/res/mipmap-en-rUS-xhdpi/image_wifi_list.png create mode 100644 app/src/main/res/mipmap-en-rUS-xxhdpi/image_about_us.png create mode 100644 app/src/main/res/mipmap-en-rUS-xxhdpi/image_wifi_list.png create mode 100644 app/src/main/res/mipmap-en-rUS-xxxhdpi/image_about_us.png create mode 100644 app/src/main/res/mipmap-en-rUS-xxxhdpi/image_soft_ap.png create mode 100644 app/src/main/res/mipmap-en-rUS-xxxhdpi/image_wifi_list.png create mode 100644 app/src/main/res/mipmap-zh-rCN-hdpi/default_select_photo.png create mode 100644 app/src/main/res/mipmap-zh-rCN-hdpi/image_wifi_list.png create mode 100644 app/src/main/res/mipmap-zh-rCN-mdpi/image_wifi_list.png create mode 100644 app/src/main/res/mipmap-zh-rCN-xhdpi/default_select_photo.png create mode 100644 app/src/main/res/mipmap-zh-rCN-xhdpi/image_about_us.png create mode 100644 app/src/main/res/mipmap-zh-rCN-xhdpi/image_wifi_list.png create mode 100644 app/src/main/res/mipmap-zh-rCN-xxhdpi/image_about_us.png create mode 100644 app/src/main/res/mipmap-zh-rCN-xxhdpi/image_wifi_list.png create mode 100644 app/src/main/res/mipmap-zh-rCN-xxxhdpi/image_about_us.png create mode 100644 app/src/main/res/mipmap-zh-rCN-xxxhdpi/image_soft_ap.png create mode 100644 app/src/main/res/mipmap-zh-rCN-xxxhdpi/image_wifi_list.png create mode 100644 app/src/main/res/values-en-rUS/strings.xml create mode 100644 app/src/main/res/values-zh-rCN/strings.xml diff --git a/app/build.gradle b/app/build.gradle index eb6f5c36b..8eb8e8b50 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -55,7 +55,9 @@ android { productFlavors { opensource { applicationId "com.tencent.iot.explorer.link.opensource" - resValue("string" , "app_name","连连开源体验") + resValue("string" , "app_name_zh", "连连开源体验") + resValue("string" , "app_name_en", "(英)连连开源体验") + } //-tencentOfficial { //- applicationId "com.tencent.iot.explorer.link" diff --git a/app/src/main/java/com/tencent/iot/explorer/link/MessageReceiver.java b/app/src/main/java/com/tencent/iot/explorer/link/MessageReceiver.java index d3902be33..f566b3d4c 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/MessageReceiver.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/MessageReceiver.java @@ -35,8 +35,8 @@ public void onNotificationShowedResult(Context context, } Intent viewIntent = new Intent(UPDATE_LISTVIEW_ACTION); context.sendBroadcast(viewIntent); - show(context, "您有1条新消息, " + "通知被展示 , " + notifiShowedRlt.toString()); - Log.d(TAG, "您有1条新消息, " + "通知被展示 , " + notifiShowedRlt.toString() + ", PushChannel:" + notifiShowedRlt.getPushChannel()); + show(context, context.getString(R.string.new_msg_be_showed) + notifiShowedRlt.toString()); + Log.d(TAG, context.getString(R.string.new_msg_be_showed) + notifiShowedRlt.toString() + context.getString(R.string.push_channel) + notifiShowedRlt.getPushChannel()); } @Override @@ -46,9 +46,9 @@ public void onUnregisterResult(Context context, int errorCode) { } String text = ""; if (errorCode == XGPushBaseReceiver.SUCCESS) { - text = "反注册成功"; + text = context.getString(R.string.unregister_success);//"反注册成功"; } else { - text = "反注册失败" + errorCode; + text = context.getString(R.string.unregister_failed) + errorCode; //"反注册失败" } Log.d(TAG, text); show(context, text); @@ -62,9 +62,9 @@ public void onSetTagResult(Context context, int errorCode, String tagName) { } String text = ""; if (errorCode == XGPushBaseReceiver.SUCCESS) { - text = "\"" + tagName + "\"设置成功"; + text = "\"" + tagName + "\"" + context.getResources().getString(R.string.success_set); } else { - text = "\"" + tagName + "\"设置失败,错误码:" + errorCode; + text = "\"" + tagName + "\"" + context.getResources().getString(R.string.failed_set_with_error_code) + errorCode; } Log.d(TAG, text); show(context, text); @@ -78,9 +78,9 @@ public void onDeleteTagResult(Context context, int errorCode, String tagName) { } String text = ""; if (errorCode == XGPushBaseReceiver.SUCCESS) { - text = "\"" + tagName + "\"删除成功"; + text = "\"" + tagName + "\"" + context.getResources().getString(R.string.success_delete); } else { - text = "\"" + tagName + "\"删除失败,错误码:" + errorCode; + text = "\"" + tagName + "\"" + context.getResources().getString(R.string.failed_delete_with_error_code) + errorCode; } Log.d(TAG, text); show(context, text); @@ -108,11 +108,11 @@ public void onNotificationClickedResult(Context context, XGPushClickedResult mes // 通知在通知栏被点击啦。。。。。 // APP自己处理点击的相关动作 // 这个动作可以在activity的onResume也能监听,请看第3点相关内容 - text = "通知被打开 :" + message; + text = context.getString(R.string.notification_opened) + message; // "通知被打开 :" } else if (message.getActionType() == NotificationAction.delete.getType()) { // 通知被清除啦。。。。 // APP自己处理通知被清除后的相关动作 - text = "通知被清除 :" + message; + text = context.getString(R.string.notification_removed) + message; // "通知被清除 :" } // APP自主处理的过程。。。 @@ -132,9 +132,9 @@ public void onRegisterResult(Context context, int errorCode, XGPushRegisterResul if (errorCode == XGPushBaseReceiver.SUCCESS) { // 在这里拿token String token = message.getToken(); - text = "注册成功1. token:" + token; + text = context.getString(R.string.register_success) + token; // "注册成功1. token:" } else { - text = message + "注册失败,错误码:" + errorCode; + text = message + context.getString(R.string.register_failed) + errorCode; // "注册失败,错误码:" } Log.d(TAG, text); show(context, text); @@ -143,7 +143,7 @@ public void onRegisterResult(Context context, int errorCode, XGPushRegisterResul // 消息透传 @Override public void onTextMessage(Context context, XGPushTextMessage message) { - String text = "收到消息:" + message.toString(); + String text = context.getString(R.string.recv_msg) + message.toString();//"收到消息:" // APP自主处理消息的过程... Log.d(TAG, text); show(context, text); diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/DispatchMsgHandler.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/DispatchMsgHandler.kt index a98f27657..c81af0b2b 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/DispatchMsgHandler.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/DispatchMsgHandler.kt @@ -2,6 +2,8 @@ package com.tencent.iot.explorer.link.auth.socket import com.alibaba.fastjson.JSON import com.alibaba.fastjson.util.Base64 +import com.tencent.iot.explorer.link.App +import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.auth.message.resp.HeartMessage import com.tencent.iot.explorer.link.auth.message.MessageConst import com.tencent.iot.explorer.link.auth.message.payload.Payload @@ -12,6 +14,7 @@ import com.tencent.iot.explorer.link.auth.message.resp.ResponseMessage import com.tencent.iot.explorer.link.auth.socket.callback.DispatchCallback import com.tencent.iot.explorer.link.auth.socket.callback.HeartCallback import com.tencent.iot.explorer.link.core.log.L +import com.tencent.iot.explorer.link.util.T import java.lang.Exception open class DispatchMsgHandler { @@ -71,7 +74,7 @@ open class DispatchMsgHandler { JSON.parseObject(message, ResponseMessage::class.java)?.run { data?.let { if (it.Response == null) { - failMessage.setErrorMessage("解析响应数据时,Response为空") + failMessage.setErrorMessage(T.getContext().getString(R.string.paser_data_error_resp_null)) //"解析响应数据时,Response为空" dispatchCallback?.yunMessageFail(reqId, message, failMessage) return } @@ -90,7 +93,7 @@ open class DispatchMsgHandler { ) } catch (e: Exception) { e.printStackTrace() - failMessage.setErrorMessage("使用RespFailMessage类解析数据失败") + failMessage.setErrorMessage(T.getContext().getString(R.string.paser_data_error_with_respfailmessage)) } dispatchCallback?.yunMessageFail(reqId, message, failMessage) } @@ -98,7 +101,7 @@ open class DispatchMsgHandler { } } catch (e: Exception) { e.printStackTrace() - failMessage.setErrorMessage("解析响应数据时发生错误") + failMessage.setErrorMessage(T.getContext().getString(R.string.paser_data_error)) //解析响应数据时发生错误 dispatchCallback?.yunMessageFail(reqId, message, failMessage) } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AccountAndSafetyActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AccountAndSafetyActivity.kt index 750f9afab..090a2d02e 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AccountAndSafetyActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AccountAndSafetyActivity.kt @@ -67,7 +67,7 @@ class AccountAndSafetyActivity : PActivity(), AccountAndSafetyView, View.OnClick } tv_wechat -> {// 微信 if (App.data.userInfo.HasWxOpenID == "1") { - T.show("微信已经绑定过了, 请勿重复绑定") + T.show(getString(R.string.wechat_bind_already)) //微信已经绑定过了, 请勿重复绑定 } else { WeChatLogin.getInstance().login(this, this) } @@ -114,7 +114,7 @@ class AccountAndSafetyActivity : PActivity(), AccountAndSafetyView, View.OnClick } override fun cancel() { - T.show("取消") + T.show(getString(R.string.cancel)) } override fun onFail(msg: String) { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddDeviceActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddDeviceActivity.kt index 3192b7c67..ec97e4507 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddDeviceActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddDeviceActivity.kt @@ -107,7 +107,7 @@ class AddDeviceActivity : PActivity(), MyCallback { override fun success(response: BaseResponse, reqCode: Int) { runOnUiThread { if (response.isSuccess()) { - T.show("添加成功") + T.show(getString(R.string.add_sucess)) //添加成功 App.data.setRefreshLevel(2) finish() } else { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt index 6b7115fdc..9782f610f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt @@ -56,7 +56,7 @@ class AddRoomActivity : BaseActivity(), MyCallback { if (response.isSuccess()) { response.parse(CreateRoomResponse::class.java)?.Data?.run { App.data.setRefreshLevel(1) - T.show("添加成功") + T.show(getString(R.string.add_sucess)) //添加成功 finish() } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddTimerActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddTimerActivity.kt index 713bc779f..e2c3f39b2 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddTimerActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddTimerActivity.kt @@ -126,7 +126,7 @@ class AddTimerActivity : BaseActivity(), CRecyclerView.RecyclerItemView, MyCallb private fun createNewTimerListEntity(): TimerListEntity { TimerListEntity().run { this.Data = "{}" - this.TimerName = "我的定时" + this.TimerName = getString(R.string.my_timer) this.TimePoint = "12:00" return this } @@ -176,7 +176,7 @@ class AddTimerActivity : BaseActivity(), CRecyclerView.RecyclerItemView, MyCallb else "1111111" if (TextUtils.isEmpty(timerName)) { - T.show("请填写定时名称") + T.show(getString(R.string.add_timer_name)) //"请填写定时名称" return } HttpRequest.instance.createTimer( diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindMobilePhoneActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindMobilePhoneActivity.kt index ef2066d14..99c238557 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindMobilePhoneActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindMobilePhoneActivity.kt @@ -18,7 +18,7 @@ import kotlinx.android.synthetic.main.menu_back_layout.* */ class BindMobilePhoneActivity : PActivity(), MyCallback { - private var countryName = "中国大陆" + private var countryName = getString(R.string.china_main_land)//"中国大陆" private var countryCode = "86" private var phone = "" private var isSend = false diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt index 0b4213dc2..393adbb68 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt @@ -141,7 +141,7 @@ class DeviceCategoryActivity : PActivity(), MyCallback, CRecyclerView.RecyclerI } RequestCode.scan_bind_device-> { if (response.isSuccess()) { - T.show("添加成功") + T.show(getString(R.string.add_sucess)) //添加成功 App.data.setRefreshLevel(2) finish() } else { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FeedbackActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FeedbackActivity.kt index 4854d1354..ac1f98d57 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FeedbackActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FeedbackActivity.kt @@ -132,11 +132,11 @@ class FeedbackActivity : BaseActivity(), UploadView, CRecyclerView.RecyclerItemV if (TextUtils.isEmpty(phone)) phone = "13800138000" if (TextUtils.isEmpty(problem)) { - T.show("请填写问题描述") + T.show(getString(R.string.add_question)) //请填写问题描述 return } if (problem.trim().length < 10) { - T.show("请填写不少于10个字的问题描述") + T.show(getString(R.string.question_desc_less_20_char)) //请填写不少于10个字的问题描述 return } @@ -151,7 +151,7 @@ class FeedbackActivity : BaseActivity(), UploadView, CRecyclerView.RecyclerItemV override fun success(response: BaseResponse, reqCode: Int) { isCommit = false if (response.isSuccess()) { - T.show("提交成功") + T.show(getString(R.string.commit_success)) //提交成功 et_feedback_problem.setText("") et_feedback_phone.setText("") successList.clear() diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt index 764a7b401..ca61885af 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt @@ -26,7 +26,7 @@ class InviteMemberActivity : BaseActivity(), View.OnClickListener, MyCallback { private var inviteType = true private var countryCode = "86" - private var countryName = "中国大陆" + private var countryName = getString(R.string.china_main_land)//"中国大陆" private var account = "" private lateinit var phoneView: View diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt index 811ed987c..f68fac98c 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt @@ -259,7 +259,7 @@ class MainActivity : PActivity(), MyCallback { exitProcess(0) } else { timestamp = t - T.show("再按一下退出应用") + T.show(getString(R.string.tap_more_exit)) //再按一下退出应用 } // super.onBackPressed() } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt index 41830f64c..615dd33c1 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt @@ -33,7 +33,7 @@ class SelectRoomActivity : BaseActivity(), CRecyclerView.RecyclerItemView { } override fun initView() { - tv_title.text = "选择房间" + tv_title.text = T.getContext().getString(R.string.select_room)//"选择房间" deviceEntity = get("device") selectedRoom = get("select_room")!! diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt index d7a7bdd7e..3a91446a8 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt @@ -26,7 +26,7 @@ class ShareActivity : BaseActivity(), MyCallback, View.OnClickListener { private var shareType = true private var countryCode = "86" - private var countryName = "中国大陆" + private var countryName = getString(R.string.china_main_land)//"中国大陆" private var account = "" private lateinit var phoneView: View diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SmartConnectActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SmartConnectActivity.kt index 367f335b0..99806e5d7 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SmartConnectActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SmartConnectActivity.kt @@ -35,7 +35,7 @@ class SmartConnectActivity : BaseActivity(), GetBindDeviceTokenView { override fun onNext() { showFragment(wifiFragment, scStepFragment) if (!LocationUtil.isLocationServiceEnable(this@SmartConnectActivity)) { - T.showLonger("请您打开手机位置以便获取WIFI名称") + T.showLonger(getString(R.string.open_location_service_for_wifi)) //请您打开手机位置以便获取WIFI名称 } } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/UserInfoActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/UserInfoActivity.kt index a8a9f2ab0..336580140 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/UserInfoActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/UserInfoActivity.kt @@ -197,7 +197,7 @@ class UserInfoActivity : PActivity(), UserInfoView, View.OnClickListener, View.O editPopupWindow?.onVerifyListener = object : EditPopupWindow.OnVerifyListener { override fun onVerify(text: String) { if (TextUtils.isEmpty(text)) { - T.show("请输入昵称") + T.show(getString(R.string.input_nick_name)) //请输入昵称 return } presenter.modifyNick(text) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/WeekRepeatActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/WeekRepeatActivity.kt index baa546547..f38a623d9 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/WeekRepeatActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/WeekRepeatActivity.kt @@ -27,7 +27,7 @@ class WeekRepeatActivity : BaseActivity(), CRecyclerView.RecyclerItemView { override fun initView() { iv_back.setColorFilter(resources.getColor(R.color.black_333333)) - tv_title.text = "重复" + tv_title.text = getString(R.string.repeat)//"重复" for (i in days.indices) { val entity = WeekRepeatEntity() when (i) { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DevicePropertyEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DevicePropertyEntity.kt index d2df6e6a4..fecb0307d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DevicePropertyEntity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DevicePropertyEntity.kt @@ -1,6 +1,7 @@ package com.tencent.iot.explorer.link.kitlink.entity import com.tencent.iot.explorer.link.App +import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.util.TemperatureUtils import com.tencent.iot.explorer.link.util.T import com.tencent.iot.explorer.link.util.date.DateFormatUtil @@ -91,7 +92,7 @@ class DevicePropertyEntity { } catch (e: Exception) { e.toString() } - return "未设置" + return T.getContext().getString(R.string.unset)//"未设置" } /** diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/TimerListEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/TimerListEntity.kt index 920469dd6..4ed7920e1 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/TimerListEntity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/TimerListEntity.kt @@ -1,6 +1,9 @@ package com.tencent.iot.explorer.link.kitlink.entity import com.alibaba.fastjson.JSON +import com.tencent.iot.explorer.link.App +import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.util.T import java.lang.StringBuilder /** @@ -56,21 +59,21 @@ class TimerListEntity { * 解析星期 */ fun parseDays(): String { - if (Repeat == 0) return "仅一次" - if (Days == "0111110") return "工作日" - if (Days == "1000001") return "周末" - if (Days == "1111111") return "每天" + if (Repeat == 0) return T.getContext().getString(R.string.only_one_time)//"仅一次" + if (Days == "0111110") return T.getContext().getString(R.string.work_day)//"工作日" + if (Days == "1000001") return T.getContext().getString(R.string.weekend);//"周末" + if (Days == "1111111") return T.getContext().getString(R.string.everyday)//"每天" val sb = StringBuilder() for (i in Days.indices) { if (Days.substring(i, i + 1) == "1") { when (i) { - 0 -> sb.append("周日") - 1 -> sb.append("周一") - 2 -> sb.append("周二") - 3 -> sb.append("周三") - 4 -> sb.append("周四") - 5 -> sb.append("周五") - 6 -> sb.append("周六") + 0 -> sb.append(T.getContext().getString(R.string.sunday)) //周日 + 1 -> sb.append(T.getContext().getString(R.string.monday)) //周一 + 2 -> sb.append(T.getContext().getString(R.string.tuesday)) //周二 + 3 -> sb.append(T.getContext().getString(R.string.wednesday)) //周三 + 4 -> sb.append(T.getContext().getString(R.string.thursday)) //周四 + 5 -> sb.append(T.getContext().getString(R.string.friday)) //周五 + 6 -> sb.append(T.getContext().getString(R.string.saturday)) //周六 } } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/WeatherEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/WeatherEntity.kt index f2c657bfa..661534e74 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/WeatherEntity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/WeatherEntity.kt @@ -1,10 +1,13 @@ package com.tencent.iot.explorer.link.kitlink.entity +import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.util.T + class WeatherEntity { var number = "20" var unit = "℃" - var city ="深圳" - var weather = "多云转晴" + var city = T.getContext().getString(R.string.city_shenzhen) //"深圳" + var weather = T.getContext().getString(R.string.default_weather) //"多云转晴" } \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/ConnectProgressFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/ConnectProgressFragment.kt index 55b7fa197..6663c5ba1 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/ConnectProgressFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/ConnectProgressFragment.kt @@ -134,7 +134,7 @@ class ConnectProgressFragment(type: Int) : BaseFragment(), ConnectView, View.OnC activity?.run { runOnUiThread { wp_connected?.setProgress(0) - T.show("网络连接失败,请检查密码是否正确") + T.show(getString(R.string.connect_failed_check_password)) showConnectFail() } } @@ -142,7 +142,7 @@ class ConnectProgressFragment(type: Int) : BaseFragment(), ConnectView, View.OnC override fun softApConnectToWifiFail(ssid: String) { activity?.runOnUiThread { - T.show("连接到网络:$ssid 失败,请手动连接") + T.show(getString(R.string.connect_ssid_failed_handle, ssid)) //"连接到网络:$ssid 失败,请手动连接" } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeRoomViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeRoomViewHolder.kt index 2451db4d6..b8d383c89 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeRoomViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeRoomViewHolder.kt @@ -15,7 +15,7 @@ class HomeRoomViewHolder : CRecyclerView.CViewHolder { override fun show(position: Int) { itemView.tv_home_room_name.text = - if (TextUtils.isEmpty(entity?.RoomName)) "全部设备" else entity!!.RoomName + if (TextUtils.isEmpty(entity?.RoomName)) getString(R.string.all_devices) else entity!!.RoomName //"全部设备" itemView.tv_home_room_name.setTextColor( if (isSelected(position)) { itemView.tv_home_room_name.typeface = Typeface.DEFAULT_BOLD diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/RoomListViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/RoomListViewHolder.kt index b4775db91..867a8fa7b 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/RoomListViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/RoomListViewHolder.kt @@ -3,8 +3,11 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.View import android.view.ViewGroup +import com.tencent.iot.explorer.link.App +import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.entity.RoomEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView +import com.tencent.iot.explorer.link.util.T import kotlinx.android.synthetic.main.item_room_list.view.* /** @@ -17,7 +20,7 @@ class RoomListViewHolder : CRecyclerView.CViewHolder { override fun show(position: Int) { entity?.run { itemView.tv_room_name.text = RoomName - itemView.tv_room_device_count.text = "${DeviceNum}个设备" + itemView.tv_room_device_count.text = T.getContext().getString(R.string.num_devices, "" + DeviceNum)//"${DeviceNum}个设备" itemView.room_list_top_space.visibility = if (position == 0) View.VISIBLE else View.GONE } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/TimerListViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/TimerListViewHolder.kt index 43453c3ca..5334b1b71 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/TimerListViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/TimerListViewHolder.kt @@ -4,6 +4,7 @@ import android.content.Context import android.view.View import android.view.ViewGroup import com.alibaba.fastjson.JSON +import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity import com.tencent.iot.explorer.link.kitlink.entity.TimerListEntity import com.tencent.iot.explorer.link.kitlink.util.DataHolder @@ -112,7 +113,7 @@ class TimerListViewHolder : CRecyclerView.CViewHolder { if (i < list.size - 1 && sb.isNotEmpty()) sb.append("/") } } - if (sb.isEmpty()) sb.append("未设置") + if (sb.isEmpty()) sb.append(getString(R.string.unset)) //"未设置" return sb.toString() } } \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/DateUtils.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/DateUtils.java index b93d54f7b..4af494049 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/DateUtils.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/DateUtils.java @@ -1,17 +1,21 @@ package com.tencent.iot.explorer.link.kitlink.util; +import com.tencent.iot.explorer.link.App; +import com.tencent.iot.explorer.link.R; +import com.tencent.iot.explorer.link.util.T; + import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateUtils { public static String getFormatDate(Date date) { - SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); + SimpleDateFormat format = new SimpleDateFormat(T.getContext().getString(R.string.date_format)); return format.format(date); } public static String getFormatDateWithoutTime(Date date) { - SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日"); + SimpleDateFormat format = new SimpleDateFormat(T.getContext().getString(R.string.date_without_time_format)); return format.format(date); } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpRequest.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpRequest.kt index 2168f7b16..e284cd003 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpRequest.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpRequest.kt @@ -56,11 +56,19 @@ class HttpRequest private constructor() { StringRequest.instance.reconnect() } + private fun baseParams(): HashMap { + val param = HashMap() + param["lang"] = Utils.getLang() + param["Platform"] = "android" + param["AppID"] = T.getContext().applicationInfo.packageName + return param + } + /** * 未登录接口公共参数 */ private fun commonParams(action: String): HashMap { - val param = HashMap() + val param = baseParams() param["RequestId"] = UUID.randomUUID().toString() param["Action"] = action param["Platform"] = "android" @@ -75,7 +83,7 @@ class HttpRequest private constructor() { * 登录后接口公共参数 */ private fun tokenParams(action: String): HashMap { - val param = HashMap() + val param = baseParams() param["RequestId"] = UUID.randomUUID().toString() param["Action"] = action param["Platform"] = "android" @@ -129,7 +137,7 @@ class HttpRequest private constructor() { JsonManager.parseJson(json, BaseResponse::class.java)?.run { if (reqCode == RequestCode.wechat_login && isOEM && this.code == ErrorCode.REQ_ERROR_CODE) {// OEM用户使用微信授权登录 - this.msg = "请确保已按官网文档接入微信登录" + this.msg = T.getContext().getString(R.string.ensure_import_wechat_login_with_offical_doc)//"请确保已按官网文档接入微信登录" } callback.success(this, reqCode) } @@ -921,7 +929,7 @@ class HttpRequest private constructor() { * WIFI配网绑定设备 */ fun wifiBindDevice(familyId: String, deviceInfo: DeviceInfo, callback: MyCallback) { - val param = HashMap() + val param = baseParams() param["RequestId"] = UUID.randomUUID().toString() param["ClientIp"] = IPUtil.getHostIP() @@ -1019,7 +1027,7 @@ class HttpRequest private constructor() { * 获取绑定设备的 token */ fun getBindDevToken(callback: MyCallback) { - val param = HashMap() + val param = baseParams() param["RequestId"] = UUID.randomUUID().toString() param["ClientIp"] = IPUtil.getHostIP() param["Action"] = "AppCreateDeviceBindToken" @@ -1035,7 +1043,7 @@ class HttpRequest private constructor() { * 检查设备绑定 token 的状态 */ fun checkDeviceBindTokenState(callback: MyCallback) { - val param = HashMap() + val param = baseParams() param["RequestId"] = UUID.randomUUID().toString() param["ClientIp"] = IPUtil.getHostIP() param["Action"] = "AppGetDeviceBindTokenState" diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpUtil.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpUtil.kt index 7f202a86f..f37a6c05d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpUtil.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpUtil.kt @@ -1,6 +1,8 @@ package com.tencent.iot.explorer.link.kitlink.util import android.text.TextUtils +import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.util.T import java.io.* import java.net.HttpURLConnection import java.net.MalformedURLException @@ -36,7 +38,7 @@ object HttpUtil { } listener.onSuccess(response.toString()) } else { - listener.onError("服务器出错") + listener.onError(T.getContext().getString(R.string.server_error)) //"服务器出错" } } catch (e: MalformedURLException) { listener.onError(e.message ?: "") @@ -77,7 +79,7 @@ object HttpUtil { } listener.onSuccess(response.toString()) } else { - listener.onError("服务器出错") + listener.onError(T.getContext().getString(R.string.server_error)) //"服务器出错" } } } catch (e: MalformedURLException) { @@ -122,7 +124,7 @@ object HttpUtil { } listener.onSuccess(response.toString()) } else { - listener.onError("服务器出错") + listener.onError(T.getContext().getString(R.string.server_error)) //"服务器出错" } } } catch (e: MalformedURLException) { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Utils.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Utils.kt index 11d273adb..abc3f5ba6 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Utils.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Utils.kt @@ -1,5 +1,9 @@ package com.tencent.iot.explorer.link.kitlink.util +import android.text.TextUtils +import com.tencent.iot.explorer.link.core.log.L +import java.util.* + object Utils { @@ -53,27 +57,25 @@ object Utils { return 0 } + fun getLang(): String { + var local = Locale.getDefault().toString() + if (TextUtils.isEmpty(local)) { + L.d("getLang return default lang(zh-CN)") + return "zh-CN" // 默认时返回中文类型 + } + var tmp = local + var eleArray = tmp.split("_") + if (eleArray.size >= 3) { + tmp = eleArray.get(0) + "_" + eleArray.get(1) + } + var ret = tmp.replace("_", "-") + + L.d("getLang return $ret") + return ret + } + // @JvmStatic // fun main(args: Array) { -// System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXX") // System.out.println(getFirstSeriesNumFromStr("XX0000XX")) -// System.out.println(getFirstSeriesNumFromStr("XX0000XX012xxx89xx")) -// System.out.println(getFirstSeriesNumFromStr("XX0000XX3")) -// System.out.println(getFirstSeriesNumFromStr("XX0000XX1")) -// System.out.println(getFirstSeriesNumFromStr("0000XX2")) -// System.out.println(getFirstSeriesNumFromStr("00123X")) -// System.out.println(getFirstSeriesNumFromStr("00123")) -// System.out.println(getFirstSeriesNumFromStr("001230X")) -// System.out.println(getFirstSeriesNumFromStr("001230")) -// System.out.println(getFirstSeriesNumFromStr("123")) -// System.out.println(getFirstSeriesNumFromStr("1230")) -// System.out.println(getFirstSeriesNumFromStr("XX001230")) -// System.out.println(getFirstSeriesNumFromStr("XX00123")) -// System.out.println(getFirstSeriesNumFromStr("XXXXXX")) -// System.out.println(getFirstSeriesNumFromStr("null")) -// System.out.println(getFirstSeriesNumFromStr("99")) -// System.out.println(getFirstSeriesNumFromStr("99XX")) -// System.out.println(getFirstSeriesNumFromStr("99XX123")) -// System.out.println(getFirstSeriesNumFromStr("99XX123lal")) // } } \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/wxapi/WXEntryActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/wxapi/WXEntryActivity.kt index 6d874f8b0..7083890b7 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/wxapi/WXEntryActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/wxapi/WXEntryActivity.kt @@ -2,6 +2,7 @@ package com.tencent.iot.explorer.link.kitlink.wxapi import android.app.Activity import android.os.Bundle +import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.util.WeChatLogin import com.tencent.mm.opensdk.modelbase.BaseReq @@ -78,13 +79,13 @@ class WXEntryActivity : Activity(), IWXAPIEventHandler { BaseResp.ErrCode.ERR_AUTH_DENIED -> { L.e("授权失败") - onLoginListener?.onFail("授权失败") + onLoginListener?.onFail(getString(R.string.auth_failed)) //授权失败 //发送被拒绝 finish() } else -> { L.e("onResp default errCode " + resp.errCode) - onLoginListener?.onFail("授权失败") + onLoginListener?.onFail(getString(R.string.auth_failed)) //授权失败 //发送返回 finish() } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindPhoneModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindPhoneModel.kt index 63631e5e7..7a13f8638 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindPhoneModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindPhoneModel.kt @@ -1,6 +1,7 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.ErrorMessage +import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest @@ -14,7 +15,7 @@ class BindPhoneModel(view: BindPhoneView) : ParentModel(view), My var phone: String = "" private var countryCode = "86" - private var countryName = "中国大陆" + private var countryName = T.getContext().getString(R.string.china_main_land)//"中国大陆" var passwd: String = "" var verifyCode: String = "" diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ConnectModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ConnectModel.kt index 002a2305c..690aad4ef 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ConnectModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ConnectModel.kt @@ -4,6 +4,7 @@ import android.content.Context import android.location.Location import com.espressif.iot.esptouch.IEsptouchResult import com.tencent.iot.explorer.link.App +import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.auth.http.ConnectionListener import com.tencent.iot.explorer.link.core.auth.http.Reconnect import com.tencent.iot.explorer.link.core.auth.response.DeviceBindTokenStateResponse @@ -19,6 +20,7 @@ import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.* import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.ConnectView +import com.tencent.iot.explorer.link.util.T /** * 配网进度、绑定设备 @@ -167,7 +169,7 @@ class ConnectModel(view: ConnectView) : ParentModel(view), MyCallba if (currentNo >= maxTimes || currentNo < 0) { Reconnect.instance.stop(connectionListener) checkDeviceBindTokenStateStarted = false - softAPListener.onFail(unKnowError.toString(), "获取设备与 token 的绑定状态失败") + softAPListener.onFail(unKnowError.toString(), T.getContext().getString(R.string.get_bind_state_failed)) //"获取设备与 token 的绑定状态失败" return } @@ -211,7 +213,7 @@ class ConnectModel(view: ConnectView) : ParentModel(view), MyCallba override fun fail(msg: String?, reqCode: Int) { L.e(msg ?: "") - softAPListener.onFail(unKnowError.toString(), "获取家庭与设备绑定关系失败") + softAPListener.onFail(unKnowError.toString(), T.getContext().getString(R.string.get_family_bind_state_failed)) //"获取家庭与设备绑定关系失败" } override fun success(response: BaseResponse, reqCode: Int) { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ForgotPasswordModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ForgotPasswordModel.kt index 8ecc2b120..129bca6a8 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ForgotPasswordModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ForgotPasswordModel.kt @@ -1,5 +1,6 @@ package com.tencent.iot.explorer.link.mvp.model +import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants import com.tencent.iot.explorer.link.kitlink.response.BaseResponse @@ -8,12 +9,13 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.ForgotPasswordView +import com.tencent.iot.explorer.link.util.T class ForgotPasswordModel(view: ForgotPasswordView) : ParentModel(view), MyCallback { private var countryCode = "86" - private var countryName = "中国大陆" + private var countryName = T.getContext().getString(R.string.china_main_land)//"中国大陆" var phone = "" var email = "" private var agree = true diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt index 4b9bbacd8..d488dfa61 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt @@ -3,6 +3,7 @@ package com.tencent.iot.explorer.link.mvp.model import android.text.TextUtils import com.alibaba.fastjson.JSON import com.tencent.iot.explorer.link.App +import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.RoomEntity @@ -14,6 +15,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.HomeFragmentView +import com.tencent.iot.explorer.link.util.T class HomeFragmentModel(view: HomeFragmentView) : ParentModel(view), MyCallback { @@ -208,7 +210,7 @@ class HomeFragmentModel(view: HomeFragmentView) : ParentModel( } } else {//没有家庭,创建家庭 HttpRequest.instance.createFamily( - "${App.data.userInfo.NickName}的家", + T.getContext().getString(R.string.somebody_family, App.data.userInfo.NickName),//"${App.data.userInfo.NickName}的家", "", this@HomeFragmentModel ) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LoginModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LoginModel.kt index f2378c997..0297a82fe 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LoginModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LoginModel.kt @@ -2,6 +2,7 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.ErrorMessage +import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants import com.tencent.iot.explorer.link.kitlink.entity.ParentRespEntity import com.tencent.iot.explorer.link.kitlink.response.BaseResponse @@ -11,6 +12,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.LoginView +import com.tencent.iot.explorer.link.util.T class LoginModel(view: LoginView) : ParentModel(view), MyCallback { @@ -19,7 +21,7 @@ class LoginModel(view: LoginView) : ParentModel(view), MyCallback { var pwd: String = "" var verifyCode: String = "" - private var countryName = "中国大陆" + private var countryName = T.getContext().getString(R.string.china_main_land)//"中国大陆" private var countryCode = "86" private var isCommit = false diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPasswordModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPasswordModel.kt index ba3e6e9c1..88fca9217 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPasswordModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPasswordModel.kt @@ -1,6 +1,7 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.ErrorMessage +import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest @@ -8,6 +9,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.ModifyPasswordView +import com.tencent.iot.explorer.link.util.T class ModifyPasswordModel(view: ModifyPasswordView) : ParentModel(view), MyCallback { @@ -17,7 +19,7 @@ class ModifyPasswordModel(view: ModifyPasswordView) : ParentModel(vie var phone = "" private var countryCode = "86" - private var countryName = "中国大陆" + private var countryName = T.getContext().getString(R.string.china_main_land) //"中国大陆" var verifyCode = "" diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/RegisterModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/RegisterModel.kt index 7496f7a00..83fb0afed 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/RegisterModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/RegisterModel.kt @@ -1,6 +1,7 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.App +import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants import com.tencent.iot.explorer.link.kitlink.response.BaseResponse @@ -9,6 +10,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.RegisterView +import com.tencent.iot.explorer.link.util.T class RegisterModel(view: RegisterView) : ParentModel(view), MyCallback { @@ -16,7 +18,7 @@ class RegisterModel(view: RegisterView) : ParentModel(view), MyCal var email = "" private var isAgree = false private var countryCode = "86" - private var countryName = "中国大陆" + private var countryName = T.getContext().getString(R.string.china_main_land) //"中国大陆" private var regionId = "1" private val type = SocketConstants.register diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt index a934c83f7..49efc00ab 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt @@ -1,6 +1,7 @@ package com.tencent.iot.explorer.link.mvp.model import com.alibaba.fastjson.JSON +import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.TimerListEntity @@ -108,7 +109,7 @@ class TimerListModel(view: TimerListView) : ParentModel(view), My if (deletePosition >= 0) timerList.removeAt(deletePosition) deletePosition = -1 - T.show("删除成功") + T.show(T.getContext().getString(R.string.delete_success)) //"删除成功" view?.showTimerList(timerList.size) } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/date/DateFormatUtil.java b/app/src/main/java/com/tencent/iot/explorer/link/util/date/DateFormatUtil.java index 4da34753b..bd794d912 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/date/DateFormatUtil.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/util/date/DateFormatUtil.java @@ -1,5 +1,9 @@ package com.tencent.iot.explorer.link.util.date; +import com.tencent.iot.explorer.link.App; +import com.tencent.iot.explorer.link.R; +import com.tencent.iot.explorer.link.util.T; + import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -65,16 +69,16 @@ public static long getTime() { */ public static String toHMS(long currentTimeMillis) { long ls = currentTimeMillis / 1000; - String s = (ls % 60) + "秒"; + String s = (ls % 60) + T.getContext().getString(R.string.unit_s); int im = (int) (ls / 60); String m = ""; if (im > 0) { - m = (im % 60) + "分钟"; + m = (im % 60) + T.getContext().getString(R.string.unit_m);//"分钟"; } String h = ""; int ih = im / 60; if (ih > 0) { - h = ih + "小时"; + h = ih + T.getContext().getString(R.string.unit_h);//"小时"; } return h + m + s; } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ClipPictureActivity.java b/app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ClipPictureActivity.java index acd23c33b..d147c7f64 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ClipPictureActivity.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ClipPictureActivity.java @@ -157,7 +157,7 @@ private void initClipView(int top, final String path, int width, int height) { // clipview.setClipHeight(300); // clipview.setClipWidth(300); if (bitmap == null) { - Toast.makeText(this, "图片加载错误,请重新选择图片", Toast.LENGTH_SHORT).show(); + Toast.makeText(this, this.getString(R.string.load_image_failed_please_reload), Toast.LENGTH_SHORT).show();//"图片加载错误,请重新选择图片" finish(); return; } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ImageSimpleBrowseActivity.java b/app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ImageSimpleBrowseActivity.java index b1bd3e1a2..c3d97b5d2 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ImageSimpleBrowseActivity.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ImageSimpleBrowseActivity.java @@ -40,7 +40,7 @@ public void onClick(View v) { finish(); } }); - ((TextView) findViewById(R.id.image_clip_main_exit_iv)).setText("返回"); + ((TextView) findViewById(R.id.image_clip_main_exit_iv)).setText(R.string.back); findViewById(R.id.image_clip_main_exit_iv).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorActivity.java b/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorActivity.java index a10914bbd..052aff5f8 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorActivity.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorActivity.java @@ -140,7 +140,7 @@ public void onImageUnselected(String path) { } // 当为选择图片时候的状态 if (resultList.size() == 0) { - mSubmitButton.setText("完成"); + mSubmitButton.setText(R.string.finish); mSubmitButton.setEnabled(false); } } @@ -269,7 +269,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { setResult(RESULT_OK, intent); finish(); } catch (Exception e) { - Toast.makeText(ImageSelectorActivity.this, "图片裁剪异常,请重新选择图片", Toast.LENGTH_SHORT).show(); + Toast.makeText(ImageSelectorActivity.this, this.getString(R.string.clip_image_failed_please_reclip), Toast.LENGTH_SHORT).show();//"图片裁剪异常,请重新选择图片" } } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/ImageShowUtils.java b/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/ImageShowUtils.java index 04b471b7e..bd75842f5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/ImageShowUtils.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/ImageShowUtils.java @@ -14,6 +14,10 @@ import android.view.inputmethod.InputMethodManager; import android.widget.TextView; +import com.tencent.iot.explorer.link.App; +import com.tencent.iot.explorer.link.R; +import com.tencent.iot.explorer.link.util.T; + import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.IOException; @@ -282,7 +286,10 @@ public static void setFontDiffrentOneSize(TextView v,String content,int dividerI //直辖市 public static boolean isMunicipalities(String address) { if(address == null) return false; - if(address.equals("北京")||address.equals("天津")||address.equals("上海")||address.equals("重庆")){ + if(address.equals(T.getContext().getString(R.string.city_beijing))|| + address.equals(T.getContext().getString(R.string.city_tianjin))|| + address.equals(T.getContext().getString(R.string.city_shanghai))|| + address.equals(T.getContext().getString(R.string.city_chongqing))){ return true; } return false; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/ImageUtils.java b/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/ImageUtils.java index 943096bde..6fa22627d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/ImageUtils.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/ImageUtils.java @@ -40,6 +40,8 @@ import android.provider.MediaStore; import android.widget.Toast; +import com.tencent.iot.explorer.link.R; + public class ImageUtils { /**SAVE_SDCARD_PATH : 保存图片的目录 */ @@ -270,7 +272,7 @@ private static void closeInputStream(InputStream s) { public static File saveFile(Context context, Bitmap bm, String uri) throws IOException { String storageState = Environment.getExternalStorageState(); if(!storageState.equals(Environment.MEDIA_MOUNTED)) { - Toast.makeText(context, "未检测到SD卡", Toast.LENGTH_SHORT).show(); + Toast.makeText(context, context.getString(R.string.sdcard_not_detected), Toast.LENGTH_SHORT).show(); //未检测到SD卡 return null; } @@ -285,9 +287,9 @@ public static File saveFile(Context context, Bitmap bm, String uri) throws IOExc BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile)); bm.compress(Bitmap.CompressFormat.JPEG, 100, bos); - Toast.makeText(context, "图片已保存至目录下", Toast.LENGTH_SHORT).show(); + Toast.makeText(context, context.getString(R.string.image_saved), Toast.LENGTH_SHORT).show(); //图片已保存至目录下 }else{ - Toast.makeText(context, "该图片已存在目录下", Toast.LENGTH_SHORT).show(); + Toast.makeText(context, context.getString(R.string.image_exist), Toast.LENGTH_SHORT).show(); //该图片已存在目录下 } return myCaptureFile; } diff --git a/app/src/main/res/drawable-en-rUS/icon_tencentll.png b/app/src/main/res/drawable-en-rUS/icon_tencentll.png new file mode 100644 index 0000000000000000000000000000000000000000..e2d10cc6665ede2f428e82eb2e317fc195f9509a GIT binary patch literal 8161 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 diff --git a/app/src/main/res/layout/activity_add_family.xml b/app/src/main/res/layout/activity_add_family.xml index 9daaeac42..9f9279d7b 100644 --- a/app/src/main/res/layout/activity_add_family.xml +++ b/app/src/main/res/layout/activity_add_family.xml @@ -17,7 +17,7 @@ android:layout_height="48dp" android:background="@color/white" android:textCursorDrawable="@drawable/edit_blue_cursor" - android:hint="填写家庭名称" + android:hint="@string/fill_family_name" android:maxLength="20" android:maxLines="1" android:paddingStart="20dp" diff --git a/app/src/main/res/layout/activity_add_room.xml b/app/src/main/res/layout/activity_add_room.xml index aa439897a..87c6fc207 100644 --- a/app/src/main/res/layout/activity_add_room.xml +++ b/app/src/main/res/layout/activity_add_room.xml @@ -17,7 +17,7 @@ android:layout_height="48dp" android:background="@color/white" android:textCursorDrawable="@drawable/edit_blue_cursor" - android:hint="填写房间名称" + android:hint="@string/fill_room_name" android:maxLength="20" android:maxLines="1" android:paddingStart="20dp" diff --git a/app/src/main/res/layout/activity_control_panel.xml b/app/src/main/res/layout/activity_control_panel.xml index 505323f8d..a2f72fdc6 100644 --- a/app/src/main/res/layout/activity_control_panel.xml +++ b/app/src/main/res/layout/activity_control_panel.xml @@ -50,7 +50,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="4dp" - android:text="标题" + android:text="@string/title_name" android:textColor="@color/black_333333" android:textSize="@dimen/ts_10" /> @@ -77,7 +77,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="4dp" - android:text="云端定时" + android:text="@string/cloud_timer" android:textColor="@color/black_333333" android:textSize="@dimen/ts_10" /> diff --git a/app/src/main/res/layout/activity_feedback.xml b/app/src/main/res/layout/activity_feedback.xml index 8e418ad8b..827093e5e 100644 --- a/app/src/main/res/layout/activity_feedback.xml +++ b/app/src/main/res/layout/activity_feedback.xml @@ -118,7 +118,7 @@ android:textCursorDrawable="@drawable/edit_blue_cursor" android:layout_marginEnd="20dp" android:background="@color/gray_F5F5F5" - android:hint="手机号码/邮箱" + android:hint="@string/phone_or_email" android:inputType="phone|textEmailAddress" android:maxLength="200" android:maxLines="1" diff --git a/app/src/main/res/layout/activity_member.xml b/app/src/main/res/layout/activity_member.xml index 8ec4f5c3e..61a81717c 100644 --- a/app/src/main/res/layout/activity_member.xml +++ b/app/src/main/res/layout/activity_member.xml @@ -45,7 +45,7 @@ android:ellipsize="end" android:gravity="center_vertical|right" android:maxLines="1" - android:text="天天" + android:text="@string/default_member_name" android:textColor="@color/gray_cccccc" android:textSize="@dimen/ts_16" app:layout_constraintBottom_toBottomOf="@+id/tv_member_name_title" diff --git a/app/src/main/res/layout/activity_room.xml b/app/src/main/res/layout/activity_room.xml index 1601c291e..a7f9e3c8a 100644 --- a/app/src/main/res/layout/activity_room.xml +++ b/app/src/main/res/layout/activity_room.xml @@ -20,7 +20,7 @@ android:gravity="center_vertical" android:paddingStart="20dp" android:paddingEnd="20dp" - android:text="房间名称" + android:text="@string/room_name_tip" android:textColor="@color/black_333333" android:textColorHint="@color/gray_cccccc" android:textSize="@dimen/ts_18" @@ -35,7 +35,7 @@ android:gravity="center_vertical" android:maxLength="20" android:maxLines="1" - android:text="大厅" + android:text="@string/hall_tip" android:textColor="@color/gray_cccccc" android:textSize="@dimen/ts_16" app:layout_constraintBottom_toBottomOf="@+id/line_room_setting" diff --git a/app/src/main/res/layout/control_dark_big_enum.xml b/app/src/main/res/layout/control_dark_big_enum.xml index 3a602796c..3b6d21b5c 100644 --- a/app/src/main/res/layout/control_dark_big_enum.xml +++ b/app/src/main/res/layout/control_dark_big_enum.xml @@ -11,7 +11,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="80dp" - android:text="颜色" + android:text="@string/color_tip" android:textColor="@color/white" android:textSize="@dimen/ts_20" /> @@ -21,7 +21,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="15dp" - android:text="红色" + android:text="@string/color_red" android:textColor="@color/white" android:textSize="@dimen/ts_36" /> diff --git a/app/src/main/res/layout/control_dark_big_enum_item.xml b/app/src/main/res/layout/control_dark_big_enum_item.xml index 76e29c0b5..d967e1d04 100644 --- a/app/src/main/res/layout/control_dark_big_enum_item.xml +++ b/app/src/main/res/layout/control_dark_big_enum_item.xml @@ -12,7 +12,7 @@ android:layout_marginEnd="10dp" android:layout_gravity="center_horizontal" android:layout_marginTop="16dp" - android:text="红色" + android:text="@string/color_red" android:textColor="@color/white" android:textSize="@dimen/ts_20" /> diff --git a/app/src/main/res/layout/control_dark_big_int.xml b/app/src/main/res/layout/control_dark_big_int.xml index 96571b415..4e47ca9b9 100644 --- a/app/src/main/res/layout/control_dark_big_int.xml +++ b/app/src/main/res/layout/control_dark_big_int.xml @@ -15,7 +15,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="80dp" - android:text="亮度" + android:text="@string/light_degree" android:textColor="@color/white" android:textSize="@dimen/ts_20" app:layout_constraintLeft_toLeftOf="parent" diff --git a/app/src/main/res/layout/control_dark_big_switch.xml b/app/src/main/res/layout/control_dark_big_switch.xml index f0bed42cc..0d9e705a2 100644 --- a/app/src/main/res/layout/control_dark_big_switch.xml +++ b/app/src/main/res/layout/control_dark_big_switch.xml @@ -30,7 +30,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginBottom="20dp" - android:text="电源开关:关闭" + android:text="@string/power_switch_closed" android:textColor="@color/white" android:textSize="@dimen/ts_18" app:layout_constraintBottom_toBottomOf="parent" diff --git a/app/src/main/res/layout/control_dark_long.xml b/app/src/main/res/layout/control_dark_long.xml index b31ecc1b7..cf19e5641 100644 --- a/app/src/main/res/layout/control_dark_long.xml +++ b/app/src/main/res/layout/control_dark_long.xml @@ -20,7 +20,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="10dp" - android:text="颜色" + android:text="@string/color_tip" android:textColor="@color/white" android:textSize="@dimen/ts_16" app:layout_constraintLeft_toRightOf="@+id/iv_dark_long" diff --git a/app/src/main/res/layout/control_dark_long_switch.xml b/app/src/main/res/layout/control_dark_long_switch.xml index 1914ddc0a..780a95f1b 100644 --- a/app/src/main/res/layout/control_dark_long_switch.xml +++ b/app/src/main/res/layout/control_dark_long_switch.xml @@ -21,7 +21,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="10dp" - android:text="电源开关" + android:text="@string/power_switch" android:textColor="@color/white" android:textSize="@dimen/ts_16" app:layout_constraintLeft_toRightOf="@+id/iv_dark_long_switch" diff --git a/app/src/main/res/layout/control_dark_medium.xml b/app/src/main/res/layout/control_dark_medium.xml index 0fa2d7197..2782b3d31 100644 --- a/app/src/main/res/layout/control_dark_medium.xml +++ b/app/src/main/res/layout/control_dark_medium.xml @@ -18,7 +18,7 @@ android:id="@+id/tv_dark_medium_name" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="电源开关" + android:text="@string/power_switch" android:layout_marginStart="16dp" app:layout_constraintTop_toBottomOf="@+id/iv_dark_medium" app:layout_constraintLeft_toLeftOf="parent" @@ -30,7 +30,7 @@ android:id="@+id/tv_dark_medium_value" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="开启" + android:text="@string/on" android:layout_marginStart="16dp" app:layout_constraintTop_toBottomOf="@+id/tv_dark_medium_name" app:layout_constraintLeft_toLeftOf="parent" diff --git a/app/src/main/res/layout/control_simple_big_enum.xml b/app/src/main/res/layout/control_simple_big_enum.xml index b409eab8c..689738d70 100644 --- a/app/src/main/res/layout/control_simple_big_enum.xml +++ b/app/src/main/res/layout/control_simple_big_enum.xml @@ -10,7 +10,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="80dp" - android:text="颜色" + android:text="@string/color_tip" android:textColor="@color/black_333333" android:textSize="@dimen/ts_20" /> @@ -20,7 +20,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="15dp" - android:text="红色" + android:text="@string/color_red" android:textColor="@color/black_333333" android:textSize="@dimen/ts_36" /> diff --git a/app/src/main/res/layout/control_simple_big_enum_item.xml b/app/src/main/res/layout/control_simple_big_enum_item.xml index 5c4abcf93..2fe45a854 100644 --- a/app/src/main/res/layout/control_simple_big_enum_item.xml +++ b/app/src/main/res/layout/control_simple_big_enum_item.xml @@ -21,7 +21,7 @@ android:layout_marginEnd="10dp" android:layout_gravity="center_horizontal" android:layout_marginTop="16dp" - android:text="红色" + android:text="@string/color_red" android:textColor="@color/white" android:textSize="@dimen/ts_20" /> diff --git a/app/src/main/res/layout/control_simple_big_int.xml b/app/src/main/res/layout/control_simple_big_int.xml index e957ee2f3..fc9906623 100644 --- a/app/src/main/res/layout/control_simple_big_int.xml +++ b/app/src/main/res/layout/control_simple_big_int.xml @@ -10,7 +10,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="80dp" - android:text="亮度" + android:text="@string/light_degree" android:textColor="@color/black_333333" android:textSize="@dimen/ts_20" app:layout_constraintLeft_toLeftOf="parent" diff --git a/app/src/main/res/layout/control_simple_big_switch.xml b/app/src/main/res/layout/control_simple_big_switch.xml index 8b94744f7..1fce761ca 100644 --- a/app/src/main/res/layout/control_simple_big_switch.xml +++ b/app/src/main/res/layout/control_simple_big_switch.xml @@ -28,7 +28,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="20dp" - android:text="电源开关:关闭" + android:text="@string/power_switch_closed" android:textColor="@color/black_333333" android:textSize="@dimen/ts_18" app:layout_constraintBottom_toBottomOf="parent" diff --git a/app/src/main/res/layout/control_simple_long.xml b/app/src/main/res/layout/control_simple_long.xml index eb77c7b23..c1433b5c6 100644 --- a/app/src/main/res/layout/control_simple_long.xml +++ b/app/src/main/res/layout/control_simple_long.xml @@ -28,7 +28,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="10dp" - android:text="颜色" + android:text="@string/color_tip" android:textColor="@color/black_333333" android:textSize="@dimen/ts_16" app:layout_constraintLeft_toRightOf="@+id/iv_simple_long" diff --git a/app/src/main/res/layout/control_simple_long_switch.xml b/app/src/main/res/layout/control_simple_long_switch.xml index 98f63a9d2..82094c908 100644 --- a/app/src/main/res/layout/control_simple_long_switch.xml +++ b/app/src/main/res/layout/control_simple_long_switch.xml @@ -29,7 +29,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="10dp" - android:text="电源开关" + android:text="@string/power_switch" android:textColor="@color/black_333333" android:textSize="@dimen/ts_16" app:layout_constraintLeft_toRightOf="@+id/iv_simple_long_switch" diff --git a/app/src/main/res/layout/control_simple_medium.xml b/app/src/main/res/layout/control_simple_medium.xml index 9de5cd263..7cf2e8c97 100644 --- a/app/src/main/res/layout/control_simple_medium.xml +++ b/app/src/main/res/layout/control_simple_medium.xml @@ -28,7 +28,7 @@ android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="15dp" - android:text="电源开关" + android:text="@string/power_switch" android:textColor="@color/black_333333" android:textSize="@dimen/ts_16" app:layout_constraintLeft_toLeftOf="parent" @@ -40,7 +40,7 @@ android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="15dp" - android:text="开启" + android:text="@string/on" android:textColor="@color/black_999999" android:textSize="@dimen/ts_16" app:layout_constraintLeft_toLeftOf="parent" diff --git a/app/src/main/res/layout/control_standard_big_enum.xml b/app/src/main/res/layout/control_standard_big_enum.xml index 7c4df030c..842b7bdab 100644 --- a/app/src/main/res/layout/control_standard_big_enum.xml +++ b/app/src/main/res/layout/control_standard_big_enum.xml @@ -10,7 +10,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="80dp" - android:text="颜色" + android:text="@string/color_tip" android:textColor="@color/white" android:textSize="@dimen/ts_20" /> @@ -20,7 +20,7 @@ android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="15dp" - android:text="红色" + android:text="@string/color_red" android:textColor="@color/white" android:textSize="@dimen/ts_36" /> diff --git a/app/src/main/res/layout/control_standard_big_enum_item.xml b/app/src/main/res/layout/control_standard_big_enum_item.xml index 5fec4945a..b474739e1 100644 --- a/app/src/main/res/layout/control_standard_big_enum_item.xml +++ b/app/src/main/res/layout/control_standard_big_enum_item.xml @@ -12,7 +12,7 @@ android:layout_marginEnd="10dp" android:layout_gravity="center_horizontal" android:layout_marginTop="16dp" - android:text="红色" + android:text="@string/color_red" android:textColor="@color/white" android:textSize="@dimen/ts_20" /> diff --git a/app/src/main/res/layout/control_standard_big_int.xml b/app/src/main/res/layout/control_standard_big_int.xml index bd8b2201d..34101d930 100644 --- a/app/src/main/res/layout/control_standard_big_int.xml +++ b/app/src/main/res/layout/control_standard_big_int.xml @@ -10,7 +10,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="80dp" - android:text="亮度" + android:text="@string/light_degree" android:textColor="@color/white" android:textSize="@dimen/ts_20" app:layout_constraintLeft_toLeftOf="parent" diff --git a/app/src/main/res/layout/control_standard_big_switch.xml b/app/src/main/res/layout/control_standard_big_switch.xml index 0e042f99c..b91522f66 100644 --- a/app/src/main/res/layout/control_standard_big_switch.xml +++ b/app/src/main/res/layout/control_standard_big_switch.xml @@ -28,7 +28,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="20dp" - android:text="电源开关:关闭" + android:text="@string/power_switch_closed" android:textColor="@color/white" android:textSize="@dimen/ts_18" app:layout_constraintBottom_toBottomOf="parent" diff --git a/app/src/main/res/layout/control_standard_long.xml b/app/src/main/res/layout/control_standard_long.xml index 28f7bab14..f95d60f66 100644 --- a/app/src/main/res/layout/control_standard_long.xml +++ b/app/src/main/res/layout/control_standard_long.xml @@ -21,7 +21,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="10dp" - android:text="颜色" + android:text="@string/color_tip" android:textColor="@color/white" android:textSize="@dimen/ts_16" app:layout_constraintLeft_toRightOf="@+id/iv_standard_long" diff --git a/app/src/main/res/layout/control_standard_long_switch.xml b/app/src/main/res/layout/control_standard_long_switch.xml index 3edaca179..5f4d90342 100644 --- a/app/src/main/res/layout/control_standard_long_switch.xml +++ b/app/src/main/res/layout/control_standard_long_switch.xml @@ -21,7 +21,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="10dp" - android:text="电源开关" + android:text="@string/power_switch" android:textColor="@color/white" android:textSize="@dimen/ts_16" app:layout_constraintLeft_toRightOf="@+id/iv_standard_long_switch" diff --git a/app/src/main/res/layout/control_standard_medium.xml b/app/src/main/res/layout/control_standard_medium.xml index bced9bba4..5c4605d5f 100644 --- a/app/src/main/res/layout/control_standard_medium.xml +++ b/app/src/main/res/layout/control_standard_medium.xml @@ -19,7 +19,7 @@ android:id="@+id/tv_standard_medium_name" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="电源开关" + android:text="@string/power_switch" android:layout_marginStart="16dp" app:layout_constraintTop_toBottomOf="@+id/iv_standard_medium" app:layout_constraintLeft_toLeftOf="parent" @@ -31,7 +31,7 @@ android:id="@+id/tv_standard_medium_value" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="开启" + android:text="@string/on" android:layout_marginStart="16dp" app:layout_constraintTop_toBottomOf="@+id/tv_standard_medium_name" app:layout_constraintLeft_toLeftOf="parent" diff --git a/app/src/main/res/layout/fragment_scene.xml b/app/src/main/res/layout/fragment_scene.xml index f9755a91e..f64c49ef6 100644 --- a/app/src/main/res/layout/fragment_scene.xml +++ b/app/src/main/res/layout/fragment_scene.xml @@ -7,7 +7,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:textSize="20sp" - android:text="正在开发中" + android:text="@string/developing" android:gravity="center"/> \ No newline at end of file diff --git a/app/src/main/res/layout/head_family.xml b/app/src/main/res/layout/head_family.xml index cb43a3628..00b6220e9 100644 --- a/app/src/main/res/layout/head_family.xml +++ b/app/src/main/res/layout/head_family.xml @@ -29,7 +29,7 @@ android:maxLines="1" android:paddingStart="20dp" android:paddingEnd="20dp" - android:text="我的家" + android:text="@string/my_family" android:textColor="@color/gray_cccccc" android:textSize="@dimen/ts_16" app:layout_constraintBottom_toBottomOf="@+id/tv_head_family_name_title" @@ -80,7 +80,7 @@ android:paddingStart="20dp" android:paddingEnd="20dp" android:visibility="invisible" - android:text="3个房间" + android:text="@string/three_rooms" android:textColor="@color/gray_cccccc" android:textSize="@dimen/ts_16" app:layout_constraintBottom_toBottomOf="@+id/tv_head_room_manage_title" diff --git a/app/src/main/res/layout/head_home1.xml b/app/src/main/res/layout/head_home1.xml index 86f44da93..4efcbf292 100644 --- a/app/src/main/res/layout/head_home1.xml +++ b/app/src/main/res/layout/head_home1.xml @@ -13,7 +13,7 @@ android:gravity="center_vertical" android:maxLength="9" android:maxLines="1" - android:text="123的家" + android:text="@string/default_family" android:textColor="@color/black_333333" android:textSize="@dimen/ts_24" android:textStyle="bold" diff --git a/app/src/main/res/layout/image_clip_main.xml b/app/src/main/res/layout/image_clip_main.xml index d0d1820e0..08792fb2a 100644 --- a/app/src/main/res/layout/image_clip_main.xml +++ b/app/src/main/res/layout/image_clip_main.xml @@ -31,7 +31,7 @@ android:gravity="center" android:paddingLeft="10dp" android:paddingRight="10dp" - android:text="退出" + android:text="@string/exit" android:textColor="@color/imageselector_folder_text_selector" android:textSize="17sp"/> @@ -50,7 +50,7 @@ android:gravity="center" android:paddingLeft="10dp" android:paddingRight="10dp" - android:text="确定" + android:text="@string/label_ok" android:textColor="@color/imageselector_folder_text_selector" android:textSize="17sp"/> diff --git a/app/src/main/res/layout/imageselector_base_title.xml b/app/src/main/res/layout/imageselector_base_title.xml index 03d7592f4..2819ae6d8 100644 --- a/app/src/main/res/layout/imageselector_base_title.xml +++ b/app/src/main/res/layout/imageselector_base_title.xml @@ -19,7 +19,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toRightOf="@+id/iv_title_back" - android:text="图片" + android:text="@string/picture_tip" android:textColor="@android:color/white" android:textSize="@dimen/common_normal_font_size" /> diff --git a/app/src/main/res/layout/imageselector_browse_image_layout.xml b/app/src/main/res/layout/imageselector_browse_image_layout.xml index 5d0ec42ad..e1079f9d0 100644 --- a/app/src/main/res/layout/imageselector_browse_image_layout.xml +++ b/app/src/main/res/layout/imageselector_browse_image_layout.xml @@ -44,10 +44,10 @@ android:gravity="center" android:paddingLeft="10dp" android:paddingRight="10dp" - android:text="退出" + android:text="@string/exit" android:textColor="@color/imageselector_folder_text_selector" android:textSize="17sp" - tools:text="退出" /> + tools:text="@string/exit" /> + tools:text="@string/exit" /> \ No newline at end of file diff --git a/app/src/main/res/layout/imageselector_multi_image_layout.xml b/app/src/main/res/layout/imageselector_multi_image_layout.xml index 5b4579e26..ba744f322 100644 --- a/app/src/main/res/layout/imageselector_multi_image_layout.xml +++ b/app/src/main/res/layout/imageselector_multi_image_layout.xml @@ -67,7 +67,7 @@ android:paddingRight="16dp" android:textColor="@color/imageselector_folder_text_selector" android:textSize="@dimen/common_normal_font_size" - tools:text="预览(1)" /> + tools:text="@string/preview_tip" /> \ No newline at end of file diff --git a/app/src/main/res/layout/imageselector_pop_floder_list_item.xml b/app/src/main/res/layout/imageselector_pop_floder_list_item.xml index 83a8c1e54..eb88dc65b 100644 --- a/app/src/main/res/layout/imageselector_pop_floder_list_item.xml +++ b/app/src/main/res/layout/imageselector_pop_floder_list_item.xml @@ -44,7 +44,7 @@ android:singleLine="true" android:textColor="#AFAFAF" android:textSize="@dimen/imageselector_default_bottom_text_size" - tools:text="1张" /> + tools:text="@string/one_pcs" /> diff --git a/app/src/main/res/layout/menu_cancel_layout.xml b/app/src/main/res/layout/menu_cancel_layout.xml index d778ac0ea..a08f76f80 100644 --- a/app/src/main/res/layout/menu_cancel_layout.xml +++ b/app/src/main/res/layout/menu_cancel_layout.xml @@ -28,7 +28,7 @@ android:ellipsize="end" android:gravity="center" android:maxLines="1" - android:text="标题" + android:text="@string/title_name" android:textColor="@color/black" android:textSize="@dimen/ts_20" android:textStyle="bold" /> diff --git a/app/src/main/res/layout/popup_common.xml b/app/src/main/res/layout/popup_common.xml index 7fbaf46e8..aadf1c84e 100644 --- a/app/src/main/res/layout/popup_common.xml +++ b/app/src/main/res/layout/popup_common.xml @@ -14,7 +14,7 @@ android:layout_marginStart="20dp" android:layout_marginTop="30dp" android:layout_marginEnd="20dp" - android:text="弹框标题" + android:text="@string/dialog_title_name" android:textStyle="bold" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" diff --git a/app/src/main/res/layout/popup_edit.xml b/app/src/main/res/layout/popup_edit.xml index 9aba3a392..7311b7f90 100644 --- a/app/src/main/res/layout/popup_edit.xml +++ b/app/src/main/res/layout/popup_edit.xml @@ -12,7 +12,7 @@ android:layout_height="wrap_content" android:layout_marginStart="20dp" android:layout_marginTop="30dp" - android:text="弹框标题" + android:text="@string/dialog_title_name" android:textColor="@color/black_333333" android:textSize="@dimen/ts_20" android:textStyle="bold" diff --git a/app/src/main/res/layout/popup_enum.xml b/app/src/main/res/layout/popup_enum.xml index ddcd08d47..6cc328e55 100644 --- a/app/src/main/res/layout/popup_enum.xml +++ b/app/src/main/res/layout/popup_enum.xml @@ -10,7 +10,7 @@ android:layout_height="59dp" android:gravity="center_vertical" android:paddingStart="20dp" - android:text="标题" + android:text="@string/title_name" android:textColor="@color/black_333333" android:textSize="@dimen/ts_18" /> diff --git a/app/src/main/res/layout/popup_number.xml b/app/src/main/res/layout/popup_number.xml index 26f55ba16..262b151de 100644 --- a/app/src/main/res/layout/popup_number.xml +++ b/app/src/main/res/layout/popup_number.xml @@ -13,7 +13,7 @@ android:layout_height="wrap_content" android:layout_marginStart="20dp" android:layout_marginTop="20dp" - android:text="标题" + android:text="@string/title_name" android:textColor="@color/black_333333" android:textSize="@dimen/ts_18" /> diff --git a/app/src/main/res/mipmap-en-rUS-hdpi/default_select_photo.png b/app/src/main/res/mipmap-en-rUS-hdpi/default_select_photo.png new file mode 100644 index 0000000000000000000000000000000000000000..a0de3b7fb72eecd4943d977ec0b6112dd3cf10e0 GIT binary patch literal 12024 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
yaLj7KsGMN6r#Z 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 P0)Na*ER3HRx>EiN4u;iq literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-en-rUS-mdpi/image_wifi_list.png b/app/src/main/res/mipmap-en-rUS-mdpi/image_wifi_list.png new file mode 100644 index 0000000000000000000000000000000000000000..de7ce219b1b9a6e47e51f900bdc0b2ac749a302d GIT binary patch literal 16804 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 IHwpQF0P%t3Q~&?~ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-en-rUS-xhdpi/default_select_photo.png b/app/src/main/res/mipmap-en-rUS-xhdpi/default_select_photo.png new file mode 100644 index 0000000000000000000000000000000000000000..a0de3b7fb72eecd4943d977ec0b6112dd3cf10e0 GIT binary patch literal 12024 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
yaLj7KsGMN6r#Z zFBVzHF;K(aiQ5yb_?93gXF=6)&VJ(bFPrQFAr(LzC)*qm!*LMRx0Lsn#b&c^dbdDt zeE8&eN?3P`Prn*hPF2Sup0;TX8mHSG3DKp>r-P-`d%9H{@VXtVZ@rKBeOoX+AsiEC zrQPwQnlkdMj`uXk;Gudr*YrcpCF*i;?2q03NpGTQr>Jb!Vqa_pxJE$|NRGQ1NEpU` z%kCRv#v_I=lGT;UC*D6zJleU6`N z0smFs6h2*GzxQy{G-Yz)(Ynie;H+BYu7)hNFVvDbMd4`@h?jjXb|Un?5gR)0)nYBR z_Y~b74&rMadzovm*_twGW6mGHKF@HYOoi>8V^eVa7(i-x4Pq~$uF9LA_BB;{;rp>Y zYVDa329zuAu!6=sjxd#vJsQkEVQGD1@^wR&rd1=c`=Im z&U*AcP$JOcQ_V6AbD1BGA|l3KVH+d2E2|%PbT1{@Iqc%&RFRx{q{yAgHv-F}%mviD z>rUyDW4Z^0BByr`rVNvhytdLwYH`emgcXc1-zBBeq%=rWxOzHO-EOq}di+GNU$OEw5Eq$Sqi)=mDP(3Gb&f~v>pyBHEwNrWk?{7 zEV)ChBR{Ff1$$^#E{J?yI#qZIs1+03%h#4Km7UYSTpXO-h~o* zs(n{S?p8!$fs^KuYaCtexCrP2*T-a|jj%P2pI|$tW{uGI<=TNmuG-00Jt0*E;d=cG zea}oD!W1Q*2+wU&-`mC>P-!&7rVteTsdSRLYggq*@?^PpgxGnrqo5Bh>E`4qLm2}!0LxH%;Lfz zUoDck9!r3_`p645jyrBQU*Xc)Pw#6*ewp*o2d;^BhLtLX_?q^dD4%+p93b&H*=Vh= zsp6&%XJy{u947wC_My;rzSj18{*=Q`D|pZ-UuzVYr4PnRKptus-y`0hUVjR0^YBV@ z%zS2tIn>pmIs4E;ZTJ&%onM2JX3t@5wt|9lI0Y$&>^xPVf2FvtBDG6Go<*#>zH%fz zdUnD-K+PY)BOR9B;amh!`Hbp()`IU;aFk$b6T$=!m0l-}UwkI7z-iy>BC@}kX@_wL zkvVu-6-i(fPb$Ff^CbXcWvMXkA+jyuWXE;Q(oqv+P3l!CkSkoXx9U_NQE4e&ms(9( z-_Hn7I7}Jl?+R1BrJKD1v2z)+c6|`uB)6^6bLQf56=~kiHu1KFT*9&KWVCLwmS+NO8>Q>pr&yuhb$4NjVwH-ZFtBi!zZ53_Mt`fh)-H--7a z4nT!{uS|U8(HmC^vc4I-*0Wump?@V^Ebj*WwT!fQkOtxIfVRX_cEmS}uC2c2ytvk0 z{e^-3Crv1}U5Q9BSbhc9dpQ(FzSx#m-o3QBf`CDyfQks7!OJyev$6|T! zZ*qK)N_N1@z7Lb7z9f;*RrLoXZni>0RL%?QE*%w;V4t8;VI5M(y&=?|~wNA=b|y(v7m>bhSXkX1oWqHl}+ zqcZO^Ljfv{1glE*JM>$U@vYCt+&w;Fj8#C!@56UJ*O^Q~0N-BF#|oLpiyKdgqo!&j zjtSW*T^Q8g^msZ1$ffkm_p@b(dnzC#L?k^JR27OfV(x+URKIhLzbXB(Z8UR04LTD) zCx=~TZ;vmPOr@P>Asi+PMu|^`{59+EaNXcN`+00fZ+vOYWhK6upt^gmR*QFf<7(Nm zhlee%*7p4`TWN8)^N6gSH@m-FY&wN##NLH<7=*79_A>^la<67;tL9pxgcm$9XksIU zh#{5F)YzQLK6K?m+hz-qyESuiA&5=2TiXY38Z!K?wJIjmvfUY$jP2)UQ5twDm}ACi z9(AsOh`Ww!skDGu9L{jI#BYpyBQxptWg z93!8OO-C8DUX1E^Sj$&Toq7}5k-fK0m^8`rtB$p_NX8nAk>_-O2D&>ZtWcG1kQmvY zSxVac^(NGvp*9NZFWB(QN^D9F^CA0BuE`<9WO7=-lLbH>#G%)o{L6RB?|ijCLBE; z9-=^OBwF>p%R)H<8L{799Ur>@7x-kN)1lx>^8Cw>XF9u(HiPofrB&@|&|j!gUm_81 z5=T)jO&?JERAhBAJirD;4wcPwP7YNVd*iGlI2JcrPO=I(H zYadP-Da)@P9J#Qce9?mkcaAO?UaPrh;)o`7$_~r^^#3(k?H#QvnX-LGgt68GB;Ku6N<%r1-`%)k02< z7@uNnwBdOwGgyqbf@}wtt+H0cKtH1M{Q8D%^cB8VpDuRXqQIbJ*0@5Qh=(tBvc>L- zv~N;0jdC`{TA;Ztt!c}a%Osn>K10r$S-$2!wm*VV{2+bNwAsy?W%guY_|Pq7U==f$ zRahxzOTPBG+=FAKPuoN_9A~tA+met`UPJ&3X4E~kd+_$lDF0*Yx@+ttKP*0KCrWYmfUPf zx_@&Ynf}SsuYnm-u}#tS-k0bWfB$WgsH~`b#7TrGgBHmH6-@_7ttPJLN^If-8Pb_` z>HYmKR0=T{)TPMUNBF4#`=bqMR>2k9WvwL3b6L2G8vcewJ&~xEfK8mD5ocw-w@r1> zAeeLqKC-BoR1r?0e^Req4}F};n|aY4XteCvafGbwwnw{sz@Aye34ZtQ?muiThAUs!vM%&Jnhu}(7bYdCY+?~{weT6L6y$~w>NwdV!**viGha`R@b{`H z&n|h26vdaL)wW3SFe$WNu;7D}(~_eTUNewW1XC80pdb3w)_aF0=h$d)W@}`5O||=# zu-f&$c@v`&FYU2y`S>y2VY@t@H_}Jzc>lfVqnFfiVRHS@tO}snw)>Khj5(Uf(8(UY zo#QVvvo5H)AXJ*mx|7bKt;_+1X->UK96w1`s6|DxP_q@wu4^)>4@sosZXy>mJ?;kt zybWoG?z9a`K~8HLaC3PBX(jPY^DmwBH&|Aye9&MaeKkA_N2sC-+4YF?`GwyHKcL!} z=PY;P$`IA{h*BQ#ppEMiL%OKYI~lTk4ey4mq8E~_{0=f zz^JDAtK!MH$R7g?^2x{k%@M0jsZ+7yI$8Ek=OWe;D(I^#VTiu>QdN^3~Ti9|by{cka+?cQRUGKn$*@>Mh zHvpXl(Z_K_4;*%)LrxV!BJ8{$Sl&D3EHG0BvNp??P`xN0?FrmJ^jqD;eaY#h(;vOk zA7$7dIop5QyFVJdspd-&B}$dnT&^mqxz(x~N(C`S(1dDLsd+9}5%Wx1 zFxY&vW)Ud%gR8pS{-JXRouK6MM__8ao?58vp=cH!{>W zXFO?)mJMNM+{1G>U;qFY*+^g4@@e|o+t7HPPdr_%Kv8RV)i4*{qARjx`?*A-j_4T7 zv(zjSxBZk*teS_pFI%iLF`CI^euPgnu=7&+7QLQn&iwO)k+B?k@BLyV*lP!xc62Tl(R$c2GyV#ua}fZV}(o zwYqe0l9-|hd8?p8;nF)tyXtmp+bD+dIJyJaeXf|7HYLm3QTo%HI3H%{@3{U7I?omZ zPEs>0d``a{eLc)29^ zR%vOZN9dy7dA};1i17gV_?05btIqg^_)!RzVjAVqyndID1wwfZ>~aKV{A3Y1-fMG>_4(n zpp>0WmNPE-wK{XDFlLoaN9sKTmI0<(q!N;LAFxG=%$Q_+Nbk{qYxz%1K6n^{PeL9t zL17cNMg4J)v7M#QRRpbMSJx$LeC@w#BQMaqA*RbXKj^_jtWNCK-m55*;ItrSdS0ct z5oaxVD&tCUoZxMz*t5Zo-+0~ox~O#d(RQkWmuB$kCQ@55P_MOZFpa0|SaNrow6&+l zvR8e4>-CuYEy~_C?-XMGMq>Bb6DaIYcHCEVq2FIVt#8NbCC4A>qmn#FqewS|+!1`Q zN&(>L9uX_vMaz$rcqdaA*p0?Z;m6nP_GvIbjj|C(>maeZpw_q?tv@w0aUkbEFlfqD<+-8*>zS4C2?_>wCtp1x#nf zl#&URZG&9`UN`lBGwURGTyrgg-@!ZS+_-PHu$hL7TcNWBesL+&3!F?$>>9{>orH4{ z2SrM9gU-K#ZsuBp2MLu()WeQ06t8iP){&Ddn;{hf9PCS4Ei#M&$@% z@Yz)|TKDy>4F;k}<5?pb>;*i!c&E63h!jFhDHNB=4 zTv$#u>PIrS*iXg7oL$#psmo5RdCoeWy9SV2(*$r5FdQnL@y{#<=d_^WU=X+Acd$$m zGRah=8YG+RhR*|p0*&4?`~^w=YkA?n$mcZeF6VXjpAYF-wna&`HKK=YUS+8G_Wox&FbUrX;UDMf4l;+Hr7b*A*etylR~=pBe2ik<4YBY^D>d+dGE%3<;F9)6jt z01e1$iskh+RFQ#ebs!-xd~TzH7^j&Ts?W*D9gg_rc1Ct%j4=*!1UQEUD(?0kz2k^q zfFTJ&GUW7j;7|l3oBbcrh8Q`?Pf+6-^rUp+m2b~-Y0bg&R_8li!0xjx>nQvK%&=4^ z#hRL?1Ql<5kG_qHhswZ_ka-}Kk>BgufKGS?x&IaRj`hpA&8#GG$!hW9TgB@y4=NUe zWBsthQcAE+h5zqW_LLo6-Q91jnm+aTN|;c019t*V$6~h6#VdykoF|Ajsr(^w&;pBy zvcdRsB6mr@bk)079Mn%)F6nK&!zwP@$HRkXfNpZxam|3G*zX_yx)`kWnR2XxZDex0 znj7oin};*mCU;2!nj=p?2pxtP?!@)TaBc$HJac{-0K~5B*;KsU&=kuWu)bpWvx;*r z6bV{66+9$3OIMtg_h*^CUq8Ai<3Y!IJhS4mxNDIn$X}n%}g&bBT2cFdT9TEo;K7O3b^*Hp@}hzETnlH_5Y7Nfjv zYec=iR+y^H1_HRAJ^tM>DfsfL_K6ChmcEl8r~C7nJQeddX8_lU=sD?VDKZz_=BGhg z!tfq@5~&d)tdl&^H_~^_ui9>T_+lB5DeM|V_;hfGi7?w|+VR;^xaG)4r{eVUw_hbU z*?GQm8B5ZDfl#cWXxfo?VZ+uHx#~3gQ@W&jjLvBH%m@Xiw(OQ{&F3xDbjPHEcAiON zDOyYPU}89@`Og`mtDIL>j9r}au`jpw0`&H1k(`5?=iwi58(ibJ%#buyOygvpe}bkV z6V`s}{ZgJk>GSCcAl*m{wRv*)%5a7m`mN7}m->Ww z<6?T3FDv!VwY>_5p|SEnd=Q7Z*2NMZ+nf7e;68F*38-*3Dk?morvXu6M!~nRuX2os zEr5aQ@>f&_2i)%HH`euCB5~u2<7|@Z5&XI^D?DIFZ{2jz#zAcuMFvvI7X8;kXn%*J zCq&l6d`_X}$;R1S)LTdhN(lBYX}aWx7(0-O3W`qe%{5Pxfq(#iiTWH^5PhVS!y(dS zGxy`Hpi5kBFwSG=k>;%!j2&n$iiaOfcuP4nuPBP`pSq)wA9QYvH zv)N!qnS23HqshD7r#)otcky22KBz}jqZfEXRREt4In}r-W#FD4mnvW1gTxii_I)oY z3gFjAIYirxPEJ}}*|A9Ve7%by9d}6{HgeUXP4Q1_wy_Tp->&Q(LmbZJcd~9|^cwQ& z%+CgsYIrZh8eQ;BP>p>#buhN=fRixMfCxP5x)-WrlU@fFwK-pxI%$NlYCL)FZWFex z71pnLQSGFZkXFem7lPzkE9TBoRexg3CyqzuOGFQ}$iM?SxM}zGp9Mq=1Yxl z12;7+W#DT;;o@yT4-+If$70PB?lmG#?$)0S8FVoO=Xha(Qehz`p`6Q`bBY-H1we+4 zxJ0eR^r0;(!q$M&e0OLJHBn%MQiFRHXN$rk&|hQts=8~eJ(sK{rZJ%UCd_$D51Jh1 zurKKg|9uyKCOj6|~PAn}&Wavd2^XK?Gjnqwx-y9ZgI{ z5Tp|ebvehU;-yK;FVFlo{0dS8?!=hc@)!ya$yoqXVGRgPwn^6GgM%j4Nd5v>E0ht8 zM~{c5Jm}Kv#1?)?mnHH^O@S1_J4wow%@+>#zueO)c{B=4>&8dd767cf8d}Qyc5N881`>+mqXx{U?_*?lBcgzK*tJ7|y)){OI)Dbf`Z75Q&H2@wsR2P$_)-3Uv za~ebO_}nLd6IjnQM;%jH(X!6u)X})VR>MuJ#VuA6HyS$&bZJRqZ*Wd%6}o}DKYt9e0Qx~Hxo|$kaIHua0u`TX zQ5*%rY<jILn<(W!>EOdDwQ-Za4r(9*q7*Y6kBIUKLCE#Z7;J zq$OxS$sR*}{XW7AaD2XSqnZ*z_NzF;wxyP4|LE*xvA72~%5FKf$3C+IRRa6x6F=FO zrp4k4e2~Tt@vDIt%>xeZF3xg3Z;AWvhwgqX2mE1WCX)jq!Fd?eXwCp5hyenwz#KJ` zl3r#_$p!g{h6RYe?^>ZN6P(%qKAKub>4?@89&l_argw=kUeYm?VLp1DoL(HV70*qB ziN03&S%0X_j!nx>6}~`L1>BU{duxrq5%#1*4)X>3iBX0jzc|~>0NUXiDK>y~MBAym`jc#A?{=Rn zjN{fW^hPq;;A-$o-WptX%grY6=_MT^~dTpF-+MqNG8a5X-18>C@1r21~8=^-$X@9QhE>(^18Oh-arO^aOVd~^E2 z@Ht#ZElMu{w_5|;l05p1Yz^k9nkq^PY2khPB}>&i7pNiuWpyeEmR7$>4;<` zJPI!wlGdBzalIORaWvgHJENBm)^aNzpkOVQA_X`e0nH=2WfLb{oZh4yZuWj;^{tQ2 zQ~-;X7yDJ_%y<(%ohjZ=IkPVmrbS#c8lRNwn$^Z+vWPgS)Uh`vy}t=?)9Ry}uxdrN zx7LZt_ronwzq5ABk8bsz@(BeCGk>eqpW&wtC1X-xarSRSK*dK{I6z%sZX{yy>;RR?`e5Ta7()CRh5DIeaoQ!vV9Ubz6)5ci0;qQ#dP1x|f zn7dx*>09`Bx^4kG(~^4pU;a1>{-Ut2Q}N~x!3a+O%b-k$KbU6EuPS>hcLe?^1U+TR?3>C8F9cLG Qe$fDoFsAx{U3Coq56E0lr2qf` literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-en-rUS-xhdpi/image_wifi_list.png b/app/src/main/res/mipmap-en-rUS-xhdpi/image_wifi_list.png new file mode 100644 index 0000000000000000000000000000000000000000..4a6c6c12d06d227b68dbe3b336df211ed13922ba GIT binary patch literal 43446 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

8KAzp7^SMMX3~Y;?p|eZ~#{4vRbGFAr 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 B4Bh|$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-en-rUS-xxhdpi/image_about_us.png b/app/src/main/res/mipmap-en-rUS-xxhdpi/image_about_us.png new file mode 100644 index 0000000000000000000000000000000000000000..58042b640ae503bd157771eb022ecee980f1f898 GIT binary patch literal 9112 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 z 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

yA7Zw+ZQO(s1Qzu?pn zU2M9Trjb>rzF}$)^NUlA%X{p-Nj@1ibLLAg*7s$9e}C8^cC?B%=Q|o9!8DR#Q5Ia? zh(@2qy+;VCwo8}nlnahw;gH|Z7}^BO(j?D}oq4lVNEV3`WCFuhl|gj3@cYfKq^z9p z+4jN!qCX}n%qxh`%G%oU^-g8LhJEen>6K@RMTa^JQ~$s~MQJ0Fp;94E%=UCAYh>KW54}{182r!eH-d%QwQGV09i8KB-FJ;6<#oHrq z;>%w(vVS=H;;g{QXL92Ux|>MUPRWv?`)R6bYB=BO-MfF^=I_#P6AKq$2TCI&BY!s* zq^~m0t+fJ)VniE`#89EThezvW`hJ8R3pV*VIps)P(fvKQT59^=UH~7YFYv<%9%%N#}09SGG21>`am}`vTPM{!Ac1t zt=&H|^5ISxfwFz($A#M#{sVA*p9N(HB6<>pMS&uU4h{#d)!@YzWt>I8DS_R)X_1jc zm~y4z&*i1<$I1mAl30s7B=3so_s!J3kgprTfxDHO@UVgAqnm_Oosd2+#FWKP)>;Ar z`7O`e|CQQ_XABTGxQk0tR<;INnHL7r%{!Q%q@`Iwvv|dGetsTPlv~~=^46&DzFh%W zLPeEeD*{hwZnqiiB0=-4#7@oA8KLtHebp*f*gE*dIko9`>d*-JIK~TU( zBw@`5eXij$V)3u~Tw056&nh{)M@dDpW7eNeJu59*+C1DD?vuHP<29KCYKMY(gbcYM`b*#>`qh z14uwb%cV^oW9_^m)xi^y!?Gh z3kG3&+C}9tlEpOG%p!TZfWyQt6+QK8zayl=T!(6JYfKPohdBC`5oaKzAbR?>Ub-j8 zwfOk(Q@LknYPzvU2??38!8RQM$Yv3;~8!!YSzwR>(UykyXo^G*4iHXaXx4duq_X}>) zRH>z;yjHBaBlm%$Lf5mNs2yOdME0LSM@MH>W1mZ(8vK&}Sck~%L*tz}A*G!#P6Whi z_gTL-TuwvdTU#fm7-E<7jLjo$E^3l@1;T8-rK+otjM3<36Mc^GKaI#sXdQw;0A;9# zpsGyE=g+K=urtZe4FqhyU>_8A$a`pIgB2MU^nqtCvYz4wXjKWN!z!wt5>PVS3y}js&cOHaZ#%*U6vUu{$ zv=@>)O=3&NxX#O`eI7fKI<*Z}v2R6LdWk}Eg!5BhVUa^NJ6nM;v!NT(yT}g0X>5AE}Bl0F*ybdN~pFp>TjkdU~xXAwQ^?-2y$O%iztc3(d~ zBIkq}N;0emAs+i}*X@l&v>RpNts%f{33YJ{$GvAbfeV*{9izZ=G0Arj6cwdMmBOUB zK#I^-gO&bK)AM_@MQ1EZuEtf%+quYdA`;p+ZcL%PHT?)r?kai_E_)%L85x!IsD z+Yu5S`LtcQbD|Vhs#XlBftSBL5h&&)@ae;cGDx*7x^)mS2s*qp&MmE1eqJ29NKY&S z?((kEWw#XWj zt`hZF|8n|*L<99>x_j7(q$BL!U1>)S{<{f)!c!(h+&Zp=pdh)32c&B9ISz$3<0hFz(09hA4y8LXBN} zw?_CrSRTK@%lTXB@QX}6ftO^c$MY&(BJw*wk~%$LV@(Ur3wu7`t9wP1pUKF`;I1kI z-XJuHLd@;>_m)lvffV-c-7A68iT@`XB;Htfd85I>+d6eWDJc$ex0N41UhQ2?jZ>*W z#Ui<7>r~nhwn8T&%@o%-IApPzff@<=SYG*xW8aTYpZfGbeiI(Kg0gapG;;|y1CFg` z2o=M^!*b~MY!wqjpWY$IQ}G$Mjx7>P@M!C^%pm5bBjWDF#B^S{Yo$#4B%0{cM!O65 zz=tiGPuA21M-I7sPoNE{+ef6BC7R1UX#D=ZcDnEk0HG2X9-Rztrzg zGoDU>W?4l;Lu~15B9=b!%#KZPgCk$x>$kg1!O44f%A?rdO)DuN~oCG?ZLcSgr7Dl+JuH|Gt5>t&k@Q30@kH-4#oSmt6?%W9q zA`>S8ztTn&_4~YW=}7|uL`L}HSEOhTUq!IcxI2gNAJ$~iIWioEJNsDmS*Nc2Ex43q zaPwGs{`wvnsF6B-dGgaIYHcU1w(=v-i}{F5C>%#JqGAok2brbhht zyNFojZrr$03>RxOu+2mY3KO(K;sMT*07S(OV>C>iH{T1Cj^Yr#E5;kInsJ8KeqoG9 zzQ||ca-yU~;BOZtql88?wfe8l8CkWFZtD8rf|L+R>JI4BetX)lAUg$SdLhHWK*`aN~CYK!{BD zZbvqkmukfHw}fX#**rxP9076UKto>b!;JNmiSJ)O8vw#Xj2-Dw_nQ*&gsHRd=1rVD zQ5V+fDEukKSa$KWB&M2NN*zu4`9_jSTzN0UL*otgZq$o`roETeyL`t(e}o=-O;$g6 z_;`xOMe9&nrl9;MlVhl=<-@(AZ1F?~>1NChA#K~X5pAl7QwMgQ=(Ai{D2y!-JM+y1 zSi>*^3Uo#nc*mR$$wqAeGqR}Z+1YR)a|AD5*vhk=nu2I*2mVU`y42>27cV*i6LEEQ zC9o3YD96V;^Lp!oRZ(o)G3 zkz=vMYhyaGNSConq+Rjx7CLfr@+TO`4HoQFiR1+@woNGxFmSIzC>=b(aGHL*%kc;K zn%V^I(gn4{d5yLkgjz?wNJ9K_y;xd(Pm9O7cZa_D-pjWSWs{5QdDZ_~v{`s!m04(| z-ZayL6fQ1K`)lQHm=XQQUGp2TMDYOGky4#T6FEZM0ngruLlS{Bjsg($_RfAYLi|(- zHxA<#1NqVL`r6d`Y0z^-J1SrFBh9OxhI)eNd5BkRLLN^2~;$8IL_HzB&1UK9PqcJM_=8ANjIdV349^L;U5Y3!9wpuV{rTO|Z;u zu^(PdAnUnReCSAHlJ@^R_F|@QQj^_mOkjLWhrX2LeyxkWtG^c~1ZXbAhSzy>wVXj0;8NirPIrO{JUS2 z%)2T<^>(Pl>RPLe9NnQ(HV6r|*Np6b+@_|b>b`$eR_aE>*zKQ5*N*;L5HS3&H)`;j zy>{|uBbVLv%rBqXY<GN*fP>ZQ~A<@Dlp>bQzM?Sh9&*Vh_o z^Yiyiw;tPWl59Kj``mx&N$HtVK3_^|8g0?r>+5D}dzxkA?Y}5%H|~g!Np4z~r>MAL zGBPbKEuv`l(UULEH8NZ+Z*#2f_9&$3j_-vYC_8wL=Ck&Pm~y#3+G>3HGotlO$MYxe z53}8cx^wI!1YO^LvKQas|F7p)ZBmtdCMq1)oaC~1@y8)s+dF(LzpU;F@b6-8urD9XsPO*qP%C49rgjydbwn_~`cxW2WW zeLeD-b?9}k_J%B4a7N;K+}hta>^?YT!ZW{{=5fK^<|pg_wN}oXS~nDZV!L(HvofXN znc)$W#qTCc*}+Ek0|$4nR0x(VxlnYw8rx4U=tfMLss&obtXF3?{$6%QEIcETs$N%> zotW!-=wAtLwq=u-N*(K^v5kJZuhSZctG-T%5bg~>`Q&}5;QU^(Bk|q;^T)&P;iub_fzyJLV7ow}XG#fI#;))R&#Lav+>ip+hd0)hqH11US=cfZ^@hH9f zpU;`ULdNyaUpyh5{D0vO9QTc`(Q?PorbkF<@ac@~6loY$*{l%wH0_}p?IQ6e-EFjEROUsol4Y#n z%5IiY^Y{&tnqQSPqv^Iq6nk&aPL3l9Yj5tb&&B^ZuT{^paP=iJXHW2QExjSxed6bS zWhJcjL`xw1N-pWZ-nHI2f&cn!mOOm+6$kTeA`O*!_C7a-)Y3zmYy_FP`YvwIZsldT z@j>&e%&~|K?A)~11sYZ88J5~eSv^t=RR_0btuC%pXjO}=`FL#`{Yb&>OL>5lyywE= z#?6t8RR3(?{hzvd61P{n#^9a17kO3UV_KiGNN7ihT#0Z}TnZU!_q#fmrDgBVXUR4v&1QUk}vE zSn~t~&sgw2>!T8g7>!lll=oi;&D5+!BT{-N?^hY)rwgNJ(m0>KHMQ4xIw5*LhF3y^ zU$;c|P?)>1rjxYpto5-E5$2U9LvdXevnc; zgSSfiD5w?qkg;=NdQE_PhuQtq%#5h$jGI0mjKudnJ8;irPp-;8m+M5bgavPS)FX1b z^@D6(j#X4jT%8Nn6#~gGNvu50(G>Q*7rW;et3;T1_TLQ**falMhv8m4&Mc1OS25L6 zp{GwQxEDR{R620x8tvHktX0f8i>0uIs^jE+lKUYX~|1(<`{Sc@yJ3`gUfB*Wz$~ZZ6;; z5*jdrGuAXQVa)9;Fy8v-%9sv3Cl^?H)BbAuy<05RVAj^$s}i()G!EtrLJet}_O$8z zjVBDn)$DbZ*NQR&eZE>TxE_o6x=)j;X#TQp{dq-1jF}qT4akPTHc<-M)UjctKm&wP z;-@-!^)r-qK>+j=U=IT`^QI)7+;>XGkdT89FLNJY1%B6fiAx=c?w!-K1!ge{}KBj^CfTupdAqxF4#dl6b-psi1F^N2l9e?A0OD$)SG7?yyc1E ziXI1Lp3&9OVV+erc2I@sy-Ql;~cGf|HfFU3Ux%X zd5lI_Z?CzpzrQ`iiB3Hab`b;?v|l-ACs7_>Oh`6u0k|Ud%R+7p)+w9zrex^EHyDVliz2_uAbz(`q?gI6|n=v6|WOJq36Q#H|Ew%EQo z)`)`au1W0huq`MuX5#nIU&>AAV5n4wkT`d&il zXaz0C%thV4%@0jmvGcpVI1;RYlvif>`T36&1jxi_M4ED4KX3wPlBHTBzS1CX-7V2D z#qO0o0|({M+?Bsd-q7^ckMm{GdIw7D8I|qikBBn-{9`xn&jH*YDmuDnK!6X`2M3{g zd|D=JH?mi9r1JmKCwtUhI?O3_^TC4$ps6oF(geJ>3Q#BJaTx{G4Gs=M;TM5l1KtDL zw=fuR7GkjMoE!!c={#T+2-0g(_u+66K>gpybzTLaN*4LEu1P^fR*$!WMHqQBJ3Zar z>Y41wiM~ot)5O6%C_(IoJ9DI<9w+q0w|rbM@F`+0-9oZ*a>S$t;8%at5=A!3sLuQg z&6|?zzNv91af*vGAX7CjJ-LNrjXEsj0ayz*sEf}R6^SAvZ?$5`6aBdFg_u_;-;*;p zd7r|Z^E#OK*&PpK#0k}Gw2ezrt1Kj?`iU>!(GbuI&KB4;IU=H_BUcn>&IHI@t=V3j z(8+;1fH-(Nbs#iwgigcN&CSlmg$76p>K#()1)v88Mqm8!VIy9>1dx*bP>#YzJ6u#g z{j|S;YP~HmrNQxS0aCtqrRJOZkt027BM?=yLEW%FwV#Q+asQcb(;04>1G++oXNE!^}B>Cy?J$L>o(&fF?xzI`k^rbM)5X#wFFZe?TQgu=!MU9 z58F}D%6b^f(_vp1xs-|!FYuNC0`dCK%ol+#6$@JQNG~h^jtX&OsEF*rxzYo zKM4~b19}rtROFE*(T-w9YF+iAlMQD*`V(>D_PO?+M-QI`rKh{OEFw$vo;t}HMIXEp z5qo$^H}`6AMTbm+VT%16x53x%a^*jNZ6%gZ zOHmY zD+V=TUgaY|d;toUGS#E#R;GdySf#~)c<6ctCF|zt=<2Ges608^sy2jF6Sj_s1S7q@Jm?a;*+mg@0*v57B-+6;WijEk6M0VdiCr)r{$^M28+5; ziR9S2yXM^LzBd?41Dn%|t>Qm7Y~}std5x+>Lo)7Eb%|PUHFe1zmF(2ayB@fc+_;k` z+ioR*rgywFxjOwh&?M+9RHq?1!X&EUPoE;7)==vwtXVTfW0>b<^+?)|D#u7N zyABm}EV!G>fm=&@*4%8G9utW}FcgJDfDam-D#x}DfBR;cds#q2Vk@Bs=V&Kn0eJH5 zeP`iI@WESK)j|H!iHeFsIYIQZH>o$oj8)iv0y9fZJrXn0jzf+|n)+O~+k&_0gS34a zi-5-RW^RpVM+%3U?~n`l8}!5n`B>~}>GRd$9(?5UiElb!JTAaC05gZzXGE<88sV=CYI*OZ*Ps>AQ055^xf;Ck$GP?Xm zrr(274T=Y%CL!Ypp;__%qF?wcr%0vpR2LsmKd|TpCar>pINut$k!9)ds##gF+1uO4 z3iqHfRRm(y&mLZ05|DZ{7&>=Df67h&+Cjo#@h8-W{4efB`W!F%M+*R+H%WYA%DBWl zK02BT3?=i$>v{I4X#8O=`VDX_dPI9=HO8)c8a?p(T6&eg`mOIOb1!AJx>=#m{~>CrXAuwW#AW+Mx-j zWmjN4*$l@n;j*`waZR*Q9^eBMX?G3nBgBkE+QJ*8bS*xnwaOP zhAgCfpke{NYG!%fhG^`QGBY%3uQHTvrkI!M#Yt!~(gbmmG;+v&K}%ado}KvTjzb%N-1-z`%8NdB)^c_HoE9> zDLXHYboO`zRs5x|4l6lIc?dz!ZiYqnG$9rI?LQB3SL!!CzGPhn1WGvLIdGd!U@jo_ z3SV6G4NkvIW`}4AJnjX8%e_8Q#yOpqp5BDo8X6`cUzdKuyhGRuPnSbf97a9|>C*@W z4(b$99;%76{G}};5rIk$TtcARdb*?tAvO+LnhVXy7?R(3S!qC)P7$1 z(fY1+$CD=`6P1>zc(gADjy|L{E*{s)%1S$c z{H>|nXcVULAATNLKyB|d8)70HjG0oSI=L@pwwvQ+c8S@ZKd5-DZxQAfFGvJQfa1ku zWJKrA9X+i?v*wQSRh!WvVIl#4@e^&&7!YHA4hg`_Rjbhoqq~eeTJgh0FR;1yiqGoh z8R04&hrBXS>?jzD?joB+)GKZc5v1nJJb?TG?@xqg+qYl1b7zl+wl(W8{d-&m=TofSi$q1Iw7_A3h|34{QYAo6E1 z10xzlH=`d34Y)|CvqQ9$h5fu^de1DWtzvkc`Rn)Z`k~V{>pQ6+DJ04SbMUxm(DrHF zeFDqzb#~8UwHw$ng!{3I2mdywQz08iP}@0JwTgO+-!2akkzJ^$wWS?FTsVxli@5Al z(omBicpVuZk3k8F9UhtxcY^iXjCd2?Clj0$QBDi}Bt60#B5OeZM~{IqQ0^liKZZ-Y zbl0ScN2rz1mIgH!bMR<95>O-8`Zl&2!M%g~W1cz3?&i#Ee+#4I2Y8!{LwXLa_-5Vd z6joLZExwGg?ezGbwd^i1d#)cUOFj%v)rS`2NlyFtpw0DWa6V!uo|E)%DeNFpUmRoc zldo9HAZcnpA&sgxEwoxHk-1+**@z`;fa(w76j;h8gr*49LlMU`4GippKMq9^L`b+B z7)h8g-rc*m2Lyr!js!0?)QWkAG0+|ob))9Rwi_VmjDU-2c=v8QuFQ(31+=7dUpsa` z5Hz>q6k>5aMEXke23NsFx8_=pG-+vZ@d@Z)+q3G{b31LHmii3|Nw%8R~?`L_GrT^UWUQiMm?r^H>Q)v`(Ne zp`ZvQtbB7bh2+UsPeA^QgGyVQs;~`!-=XDDs_DIT^gmA2lny=LzQ~9uDY2v5ZnN19 zMw6Jwa9AB34A2*=AiP?P&0IGtVN`e}B`F!6oV*?EX&8hY@RXIkLmbGT!MouZYf~TZ zHqwyLw-Sjgj3Wh|j3!;n92$CRptd8Dxm32cZsQ12KjRt%p1RTQT^bJ7bJjzMEO;^O zk^?!^SbZ+EEFztyIfg^D5fm~7FqOpF0)J_C!k(eT{8g%8-TMh~XqoNxw9jmb04;js+SXMS_FL#>Yk}O#4-kW5qyG#Kc-Hi~3F1 z-r}t1br95uBW#iK7`#D$8?JG;h>7(zzGMposkkQ^+)3R`3&$6gHrnAM4>*L?nr#Z`877KX2dZ#t5Yq z(j%yrq0>1$8uV%zcv;g|&Fh@fz7y@J(Rs|kZ$&s zvb(ui(?imQX)I);U4ws=N4k|JcM`bFqV_GGaQbmu9#m1P;dKZV9&usaN)fA|+~{}b zt5N558u$CV*x1@3%|f+$MemNM)QoY>gsy0)^rW5L;ZfJD-4y8g91CMkyK`Us`Z>hx zm6er@{X28rIE9>!s+6RaZIdY<-;IrX|@S*)Dr4Ya4x(w@iC&b5#;SX>t7bAiOfC3ldB20l;`Ne3m z&RRxowW~``f8$^JTXjwg2%BV9mg$7rYxZ$B4-8~gRtIqExX$$`jj0d5;v#XXoIlhZ zwYPRRk>qy z7xA6DBt1PnifE2q+qZHxv>nVh#skW@A0?5yy1VPrv)#C%-|Qq()LO;8O2LqD1ZCK5k{63j$US$ME0ZnVc$Y&bx~_58X4|fUS58*#@03q2a-yb_~?<$ zNk_*bE8ZVa%kc1&R8*Xum>Pnz+1@_eCsa>Y_hJ8US^x{kk-wh27eY^e^`=&~IGP`oqVwvq2 zUBs7m7ePqLA%zm0>N2Km#7#*jD?4}_;scJ{jMmq$Yqz!+QZ!a$;(XQFW5Qe!H79X3 zm|Utj8hd(rel&Ogi2I1%tWxIWM`q6zprjKe^{71T7#K*val?5H`zU+2ZFp&EKc?7C zPxOca?}8fqopbU6Bx#O*!%ox@`Ru_V{&J^lRv)dKgr5FZufk%f8+yqqCqJLk-QE4P zmqg)hms6+w-VU96d`BOj4;_W;(tCK-ae=GI0+0c6uu)yPa>b20_shJ`m$+j-K4q_4 zT;0oFiqXbv@!(%t%8hgWiU$o1f!%UV8d_W5dUyBMBb-F3ft4d>X1d1Y$!MF6naN6t z*-l4^>18lEoi2o`zPp=ma@pXOiwI=9c^!{1>-FBUvkUP@AlAp9!cdEf_b*?@zGLWY z4HZL@h9qF$^3uE@&e(%M0c8iyS1(?ajORnOj}xS)oO=B_b-AV64693Mdvo*WgOEsr zs#c5Mju$YB+Y@j)_f*c<*x2IyM5^ZcIA%Q(ZQ{|JVqcKq4qC!GVT!|6sHHE*{(M|n z$tf?tlQrRsMG7wq3qxLbzCh0J0U_G&tyb#KH*;&58H9>GyxdK?>_W^Omzg?v@F3c% z2fqE?m%0&cO73ggK7KJbS5{Vp8UwfyztfyjHm>f=0{~8m?`NdS$mELr0}+_#OaVdruGl_TiGddX285$)a~K%CF*J2Wr{@m2{4cpsa8oMI($L>`LGL+S-91+wC@UeX^Mr-9+r` zImp;B_JSx!!pbhNHcPQ45Sb7#h~d%EFpr_SW54VCbt%m>-cdyrOHeAyTip0&bCUCf zEW^NTe$tytO6rJDtk`sbfaO%YJ>^QpQ4_3P{Xa_+8K?>kvPz$It2nt2??-_RKI=f% zOEdZ{5n-IR7`BY6Tq7zNiN?;(%Tkj+D^$>c1r6*T=x=;X?>&3W#Z+u+D^-BM|BpZs z$e&%QBScFkHO`zVe;q0&Cud>#)x(7|ms>o7WY4kg&&jBXBE+58wwj8Ei^te@?IN1# z;XJhY>(laQJ4C8$$c4`_QOfg+N|J8v)HF%BzC=2C&bWWGR{|;l$tfvynXf~2s~yBW zTePVWck;x^lTdJ9Q$o{Q1q%H|Rc4~M^ep`@ozl%M_eOAE6~!pXSWW|2~=1HA%>?`mdbWPj!+2L<{+ zMUZ})SgUhNi6%T=spX;~Bf69_Gj|LPC1O}1gvZ%MMf3!guB`lM=~$EJhf?M?J3oeS zL4|C=9lUQP&3j9y))Y)R6*{S(|FCB;dzpDMtbEz>c~rK_S5D$Sv$KmFbHXO0`}dMl z{ge$|1g<5@?>l`Cc>A`#dZlsvI1dshjKjD%K7NX5&jbI7? zi})w=?%mBot$k8zy@P`y3D5lk0&?o=*o}>i&+SuGbSw85ITrUa?e^fHN%rzXoLIpO zdTLbrd#hBX}D7s zC;|)ZNEQvlQ!iU-Bji~(biAW&Y-Q1R{Ym<6B|M+ChqRwcm2~OaHGvCT;OMYQg8_=9 z7Ef6vrDr1}Ty*sGp25NHp6V+_ge?a`$TOMociB@=%?SadAZ`r1Y>*86G@% z2vf2_PwWiX_VTkAMqD!G<>krzdKV-TBk%|*u0OCuWbg|k$`4%2y& z4Gnic1{E1|`f%dj7!^stu|!0Wv$3-e`pM&JU|uNDK2#7XqO9(Gem-AZTu(hK6(-IT zrZt2#{i~Dce}br_MtrxbRS8#Jg->p9e)0sxN%;`t9{E%DSojk zz6H#O_Mfm+PV0Ix`fAvB2vFIs=M4=T?2jMMOV>gOjtaC7e)1Udj4>6RuPcD2;~ZHx zQ=ti!Cb}@7?g)Lgw{G3)+V^8|u~IXHJAhJcHh4QDqfVFdz=sdW=|u{U)`*bY-Q2iD zL=O5Jz~CCZGj}^9N1~*lI41DdEXy7e8l6R4x;@AGr?O{xK@^N)(Hv8a4&Rj#h?2q8 z`KDNhKN|66kUXl;_;QDasf2lN`OwwY7CP7(`(whxM>mE~dr=A-vzc!?s=Ox_FA>|} z1UnthSb-7?WW?gi${yY{)Hxl|;H3gr77s6}CnhA+8hL)hT|wE=-{V}+=V+pEbvrhG zdUnh(PCDurT|~B%zY#MBhsXSZfit1)AG+GvZYU@yfKlMgXBVu%1^gQoD`cq9$Zvi-9MVO-~fEX$;0E^bLoha z-@G^MaLYej(HPwA9y(dFF)L|%hg=KS!!XsrUE%LBkF3wo>T zBJxT~TE~y)NSQ8(Z{%uyi1jVL!x!+!;UlV{+Pt~MJX}^n!fP@$>2cJdz(55cj3~MZ zd;8YpUQ5%g0<3s$TU=^t&y~4{)gq*y3iPU^AK!mgh;C}csLi`S`+^<`Vh>;v^85>l z(@XIKrQx}Gg3P~{ma-XEX(e|?<$qv+?ANR8}Qq{S5}Ji ze^w57pu7j_;wbT4Of3gPFOk%&^I@#xg4^gZKFQhyKCp|nfUp-+TA&ZmV;wy#ziS5e zxVq>!JE-Zhe42kKE3FWip16Z*$3cxTg{ZW>lr{xBXp21QjvRX%PnNY&Vj+Nrp8ip# z-B~Y*a&};|>SxdHL!6oft{n9J-K}|YdmdL+LAXEJcWD7<=P)BWY@?NxTgMTM-q{ZF z6e~>hDGzSD2<6(^jiE6aC_5zq6T!z5qUt19C zEUvA}!#U&%)8nVf*q1*?|4*>OW92pmFbB>=o>e;BKmh;dq z*w3Lqb>m17@cNv4_gd}Ct`erYMqgfD9>sRy)z#H+&yFa8IzTUl*{_nP*qeU;mP4Qh zN`@!_L#y?EpQ+D#;%`J(?4TR@Obg$-a_n=%VCm?cTMQ+648>(_JhwkOb6P14m-xL> z4`^$D0XIcYp8KenYTd)

bx31v%t}%@2hzVmB|Y$KZ3AD5WZt`A{Ke*VL>$EB9Xa zBDTrD7BP|ytsO!j3@~e%nGr{;o(x_Rbr{i%EpTn+J@>n(r6h4Ls>*!hnikE8T^1l4S-d)ctr>FP^yH$6A!yU{hJzW@Qx> zn}>%vfesUebpYQWU#5XALX&DE`fCFN14p%ekY*6?G(Nr=5F@tz^_Op#OG`@;+6trU z9tpX)l2Y*Q=jbEe1X>RT0|2(nXp-Tr8ga((Gm3@xQFP*B!>VG;2m#%BdU~4K@Kcc? z*y-r+7c`yq@$^jUehVZF%q9auTMRoRX)@q|0S7&g1nltPq<5UA#>PCmdJrNPQXV_X zLQ5$nBSSFA_zHG*c9^}&lIa*uDonBm?)U_oIQ;oDT22e>N<~KtXuFa8p}TxIP{s6n z7sP49-@P*>y2v0#gwMrR;a?&_7+}6WtAK$f!Q)ngsc1aq?BY^%<91v|$1>P1bq|lJ zWEB>SuddC1@ZilCm9&%;zMDNLX%h@Z$wPKkRi8bF^-C#sH6-Ox2XBWTyd97^LJ?kUMENH+8u#1PM&IrdraxEM<@ zunV9Nuvzw)uM87(_HOLz+{bBh8 zy+WJb_aLkFmvY<@B(>-DpG`zZ4VB~I!o^K#_n(xzq3pfqgsd@(zPl~S@)>7NLi6RD z1zAe_h(H>T5pjuGouqH7?Om-uvAMomVM>RqHIBvlbJAN|)*bq8C&jCq!o8pH%@HEr zzyCtb9xUiFVb0rKCNCuOV^xvt3~U>Dq4k+uHR2*eNBNTjT^d(dEfB(q4VIF9^M-~T zUxV-R^OPNAq>iIB*H}BkB~=vFJjayi{qf_PI}gA8yo$vpsIDGFs5utX$_FIu){1~*EXn)+^_IB_59?Ek#X%v^kQo+7&` zk5JvabTzvZ6ybAbOrJyKR*sF7WHDtbF`qt3%5>D{N@CWZ*g(<1xE6ooJR-*9h3DN8 z&c|$FKl738p}cwEU2%$rO4hDB!*BT#CBql(n=f?jjp*KE?;fQ+!x{IK z()c`$pk$%A{+;8O`d?@J$7{BcMa`UH_m)>kIZGk*ohq&GlX&r~EW69z_k(lF)Dw6T>4*YqGH90M_r{6^quZwqmwYCxtk6sTu=5+Uf z&I{8oAvA*0h4k@-Cojzm?fLkeb=`GRn4N|&mc(K{SB~4J@jZh&?fsXI>L)qQ5luzx zOhZRmp7uyC8Xb2&%5d~G=Yxx?M%%(~h%n`;3++GYtM5A9yPql3F=O4FedE8MbMFaF zKAHF!{@5PNz?vyt^V0`o>XcG)jtQ7^i%inKPz+TNbElcBcjIW z-yQyxoc+)Ka1{Y|{QF_4{PO;N6&9VyH zPWw79+00)%&r^7QTkT(khyQAgA+g!kb8P$P;NX;h)^v3t$I<rF$ZbhFiD-SiZ$cPU)&PzX(KW*Hjp zP-@Ncjc#5z3Bzi@6P@KiYkzOYiHg#%mcy`5PiWdgUeW)19e$3UN+3IV&i5+qwJ=-X z9pQKOQd&$3Icv!g7xx`i`&V+O9UHXXl;s~<6n(onTi}pH4b?85VG|F_BeIX0avZKV z6}fkvZCay=RIWCUzds|}u^O^dl;PjCj63Tik{OhuuDdO6TB6JU$p;ap0UEXnX|lOj zAtO`l{a+{;v<^NUd3-)en!S0WkbQxHvElK89VT?%y$WA!zB~O1)c)9>xTiDR``(hh zTzeROS0aI$Po~5vU7SKSAWF)bMquX>|mzZ>O>octDiMo**D+WvAizT`Sv7Jj*CLsv($G5VgFc~ zPnyV@^_Izk%Sx$49jD8$Yc`Qbg_qtIoa2tp*Ug80y}Z+)*=6g51#RK9SWPAqYN-El zJ(Qx+=0|9rf3sz+A7F97{8iZ2ev=wZjDPD{F2n?+E?_Jsq4Dh#gMhx zGdrmxiV$87%O13EbE66SE2o31)|x)WA!F72&*MCAZK2`bt1YKtl1Ba9=Z&Xq{n+zN z&RAKQv@ok7iKuxV_U{|X*hHh#21gMETvxi@-)yh_anazr0I7}>O*rno8~yZ&99m4o zTm*mwoeltT@`hjZY)F9F*|k(vH=xsNdtV=Qt+mIa)f;JPDiD7M1_oY2Wi;YTN9B+| z4z7rzZ59C|)HDPIi-yQ3gpGpy52={#xpT~Di;FH#jpO42h=P4@h5TBrn@J;Q;F(Zp zY}MDaD$tg@!TN)v^4CF%l^@au@>>MNr87J-KC?@`yE1}&_%u$3TT$?h@WFM=Sx zdfMOLIW=goua8h?0jGi1o6rTNq%cL*Kkv1NGGf=RUC16VqnRGB@`LfIXk8J4Kgirv zk>mFD_m@0+bgsyap#>o#P}!J@ihVRd0?%?J@MASzk*g9TXrY@yx$6vA4PIVePGJ9N ziib8XQE_oJ=(vP0q*GQ_Ca0hP{zIo6vPQt?fGs?IeZQVw;6+|CrlI0>Mc~P2pNGAQ zkJpu0Ef`>v8e0wQ+J$OvG^`9Z`BSsIP?*rA=U)uI=O|t}*}DMVZdV$R#;;%ZK(&@ry+onuB$!k}Cj~@dUBiiw z8>;S^-?NTrr$qzh0ggsn9dT0h{|>}0j~-0|6anO9Wo>mQ@IahD{DF#5Svrt)#9V0* z$w-N^O!i{lQeJ@eY|wiL<|%#_wLE!j5e2Ny!8GJcTGHkr(f@>2YU&|4dwZo1_p$fL})GgvzHu> z2l@|+UNrFo1jJ$ACNv=r=;KfmvE@{_Oh_{c`uElN}xTE6Tg6sp59W z<~=(;-KT7P<45;>qhQ3tn&?4I_L6smXQ37HCf&NT>lrMqj|#>|VPLrL?3aW&?aA-o z<8jf@AUG2Q93BK?tJK`wgkdCzdT7uE*m>&2VnlxX=4&2`wrhZ5+&lT%u{ z4eV80u=V7K7bjZhLB8JrcJ!vm<%?UX=KU4-?%kU^&I2Z&(VSfcSs=aw2NoT&I-6h# zBS@pNue$cqP*X$L6XbRteTTs~Yh#)xj_j?VdQl0GI2jq*c6M2e!*<5|H9Jf!e4H+52M(-<+dAF7`*`I?jBV<4#ksx1 z=N_H<_7$Nv>&=gf<|IuZZrVjXIgcOj0C>?!@e;M^XzhcUZ_NNxU^2~9C|Vziu_hqj z2B<}h4+LBzByz&0F0cWJTypWxG$4NK^_MJ)dcy6}9F>cHdC8HkH=T2L|8X-vMOK&d z?YIx-;9j}7TUIuWtW|MFA#rBL^HfzC4q;u$`bB6!|Ez!tI1-SD0B`ml%TNYV&Y>Kf zSzJs4HtxId+7d2~hBrFOL;tPKzn9B^_zC?NjZ6>e`1Bm%-n^kNd5kukSEW z*nJna0Bpva;h`{nSudo9m_Zlm;#1(r{CS0LEn!acb`i4|!7KbxAeku`Q3g8u}z)sBWLo1=_X)$mg zoU0?yMPh#8yU{ZhriX_p z&gXYlD!GeS*7&SnK1N)oZ7;=o*v5t)=pZ}?T$G)s=gdpRi{K7yY&f9y<-d>#QrNNI z13*8F4{TUm9u>3p6ztVu;48pzzfVpM+~fPJ37og=6DSOIb#+m_gSLNXJ};m(3Kujn zuuF+b+rGcz%(RbCcM=G{PseoIzvaeRzmIG5>mloHY^T=+Nc+)pV>_PUfH5OBIuSsY zyaz7gM;xWj;(EB!s;VlX#zuqCOAZzU-VMVG{XXHl@nVEb?(t(khq8|A0R9N=4(L4` z12a)3fTQR;{)dB|e^R634`LQ{Jp_oDF1Zs_H39sy=S;WFOB(ulErAb9UugWXVTN7fzW~A zMsP!Ssz<^5e)+-&)fOP91YBet=0)`1g^!AqyonHG#K>D~gNH!%k!SplHg(RR?PiA4?BS z$L)6z1%c34)z;nwKP-+<0~ZVpqO5DfMl~u=DgRn_th3SlYhdp#;az{jw0V|v^}(zD z6{||JvMMJ}@`3v(il>GwkP{o_?(ht=0B zL!W_?K?I>U1&aS|PvLl53o_wsr;ck_siO~~Y#D`S4>^P^q$B^XT|-~T!acMJv`G!7HRCUrHnc8vf1 zxaX$duY|{IELuzJY%K$e0~mUNGfohk0~@b}LmM_(`@__&nTDHb!8fq*B+0bF z*0))S{?0imBJJDr-7%@BW%OK8UX&S2t?LmU&WdMm!|Z(q>Wr-?LlLFfS}>taQRkK+ zw3reH`8Jibqt-fcWW)}16>%M5?U)Ro+^0|j-}LjR7sLt{b23t?c6BWKLBAH))df#d zyDdavUJE*Ivt4ugJZ{z zb;{Lya7rbnF)=b)`R#R?oKh1>{fJ;5Y0|@S2w);=%q$E4NMz1=7#nvb6p4Z&uZ&b4 ztIN1~GpnM42{{S@-=lb-{N1P5dM6NB5dv_uEh7ehVgz`7$oezf48qJ~95v>35<+q; zPLBw~s2@9mcbx+V2tg0gDDLp#nXmKw=GIT2NF;vMrHq-UWm=frMrG(j_RP$0PIOww zrLHfo-RX9=^vM>>4RQndhu?e?|E0RRjRUCSCS2w?g12S9iB7Tia-4~P2}zZX_ct`o z0oOc@^a9!mPA;wuQ-ihDo$g!$0^@y2In|Uz>*7;;BXI0t!3d6@m}dd04{jWj%p|M| zp;$b-bO%AUzkij~65?ed|3ioc+29Cz3gZ2DViJY$#R+uEl=-D!!$$R*reJw#Y5LdX z(eV$c5>U_SunJh4Vx_`tU9?dXDu{vJY8bjW9RmYRu!pGN$|Ic^OoR=Fti;0A1(X#0 z9#OA~{FzW+HU{JWpfrdVrzx>QDf7{z1zp=CAi9u8*xPfDe*8!@EktTT*zl?<%vvYI zMd%?!9T=e*hnsA{)?y%{H1Ff()rf)tgxOvbYaHzChykqp+rjj@%zXA8Qt?F|hXTmB zATNknpi{t;C8eZ9qJ{|i?PvB&_=7vqCHht#uPlxSxu_i2cmc-lw{JORWET2#Gth@_ zdYS~U7oCtmv=v8=l(*K-ytAXavXYQ~$l|quRV8iC=PHQ+H}ib>nVre>+#85RBZ{|&d>BsjY_M`qXdQ2L)%qh&2&PEzy$6` zhB7v)iserCVc!6>!FSgyOKl*))3~Evc7~M5-B7yw~O$e5X4w-=0vK7 zhKQX~W=LzXuaJw`ynnz+g`vBt`9lB(cyMZ9E{~9<`guOi$jB%Y{bIJO`%QW|L1`yF zKt8Us4(A1)%iHZzl^!uHrM$envqX@Q8a(9=B>P9g+EGReK~Em1P-<(^_3Qp_RDN%= zC2+sssyg?8EYm=#7lH(#Hyc|YB300Ia>ArI3N*kS`SRtg8)uE+#gAwKNrt59RG$Z? zs26gjjrqa;9GLoznIlDve3gcr;KrFkl+mvPhZiN>l@d$mf`c#O>MbrW>y1GwwcgF( z3__;RnoxsvE!37TQ+U6QK#+%gaPXdLtv+89Oy}XFM_o#S*SRl#ymfzXRp|D^a<91V z$2YVcWO9s5{X>jTkwsnFN@+7;&H}{BMdYBox0e^_!j7E5G-yG-?EHyL%!QeECoLsf z?^@g!##GpcmM6YE2t5P^E-x=R!nvLlF(nY8Fb{c?hzu}jeEH=B@)e@bAT|;2iE_r{ zu)%#hPrwJq#!`=0!cK^biP_GVL;CB@Qthh`4iUjgiNC_R%@O!aDCI7{G4}D9OKv}L zGT8sfp+lVWM?fGp4b_JfvafqnsHHeyRJMo#z1bc{96St&8Z5W*f^-&?eAUCuH7-Kt zgbDV#dCjjW?A!xbpws|3krzb=z7xm#$eV#6vXP%ZB{1S+&+03*=EN-Gz{w>v&zfGC zvWdIXRjm*qani=)V zErT3vU|L=q54cx-1#69X8il_)JaP^W4o9pV!9P}2#ey-{H#9sR5U||MZ-I!*NPQ-q z>6#5Q1R9K9ctK&Uop96lAC#9#lbp*fF@^d-!#IEomR-AQ=Y99>+lLwf;lgG;L&HZ^ z`+mxiWpPrWs`1L8_H6itbhYZ=W0;hMkllXf?JSnC(2QsIZq5Dm(62%oQhP=j!WxDh zI|L@RwX`DNS!ZD+HUd9sY3a^2Kt6YeFAImXeaV=GARNd*PF*6DewQ&L1BoAUIX(Je z2ZQ8m#^9I|$aD@L+P_tSr zceRE-@)l3IO&yWF$KJn-kxE?`RR}JGzKCZ(jt}HRA&>*hk*Xd)hIjhhO#?6!!`F)| zWi6KhwtXyC*-{h;ZNM+&R6Bb9qLm&Y*J|ZBu4J z!OLukZ$TTgu(_U|C1pxDJfwT~?mdchLmG@*Jihrm=yYTR4)bF$V}Kh0qwv(O!IMB| zSTVjx2$*_%qnDQaadzxIJle9{&4Cfg;p7r=hyUrbHt^A~%|Ua60R(H=w zXBjUt$WQts*1IE;Qxa3mJ=e|0eQc<;-gmqwf2P&VD zH;(fSpf~!g0`jN4@&x4ZfSu3|q_+@K`NO8ByI1eyfTJtJ1M=I|)3cz*1iB%w3Hb|CxJz@UZFb%1Y z$Bl3PsYIhy5S>D|-rxXP9X*grQj4Axd9YluNqchy;HtH*FH_Qp!BO%Lsq|{!zOAX( z`c2Rpf{-;M;z_pjLW4|&eswJ%d4au*R3T?d+F5O!4(~vWc^TE`-A0FZcqQOMI129d zE)lO4R+d*(6gEA9gH_fiI`be@jGuoKk>RcV0Je=>suedK_O!M(;o?O)V9G>uR$`Cg zstNmqb!)&u#UddpW|A4D$74ECE53gHy7NvEJS)(f;`(|~(@oXFB+StyWPaKCYFSSZ zj}av#+wd;qr?S+tioYg0o=t@$TtA?s@wPC`2TG**+%T$vmXIUY^Y7mMeopMk_u=6u zqov+hr&&y3KY|_r^uT`ejQl2-lwC6Ty+hQ!pZ}PgtQ9XF*iB+h(86n(->8Nfj&+VP2yj==BhX5PhJm_dlj1B~NXmm%)&=?}6$C9ux0Na%Ikgo5ns}EQ> zSTO925r|fC-glv-yL_2@^$h`=%njP05C7t#{3e9C#Yg~9_5*(cwEH94xZr|S&yT$} zJpm+QZ!JBr_@0B?rK@q5S!iMOA1&T^P*kMc%D797>UYn|1R=2;8b?EqQr8_$}_k4?E#*HN*@3$Ivc*A*4QjOrSO$^!)uX5+SS%jU}%aaGioh972w?xivF$rIj(irlj?4qWO!>sv54nPP z6qBIZ<5a9WCP*Tt& z`EnR;(aznwcU$OFEFjv@)ul#IPfR=h^5x{INpA3<2uCYNU{Uj>!9mz>f?yeU50nD8 zq-2+UMTY~bsi3rMLNHVMi>*wHr1{;MJkZ6K!R%RPP~;}ZmX7k2p;v<|=9`d51hR(?-x`>3}8nO9+rGrmkpcOSE5?#ohOD7zEJnlP4 zM4m*tzyZ>BUr0q%WTepb;vps~zgsP@UeTf_19C6UN8c2o3sZZoq!Ez{UyggK7AC=-XEvv{crYMxi@?n_d|nC3)}|) zXd92;K=#q^3KwKNh6&=y6aLV4tcXdR9pDTP{EDMZ)(VP9l&FiJSLD>|lggH;Oa=MG9 z*)1(6{R0CJ*M7nD9rC`V9HRFn!y-ck@52~}hXS8g=&TUh4!2%Y;BnAM0w3yu_v$)D zE&``wBH&vW7Z>!~wK!L5@^!&^U|D}F#gyJpA3c1BFXOE{r2GlD2o=u06OiJqTn-}? zS)XYA>Hhbe06t>U%M_z}Hm=GkV5mC0IsaX!J!7xMI+bvaz2%iVlHcqzc0SuW)n*mK zORW-Q9@pvW;1vm(G#x#?ZL!AiW$v!7F5JOL6|#uIvfUNZhUOh71u)#Ak&SLA{{mP| z+=|1C&}f@v7mYBwHxnyEXcLz&b{i1r_PeVRn=Q2r3}}GYJ(bBUNGlL&NGvZm>0FP^ z5XIJk`U_sL?wEU=1znB8CL?Q9ViN;~d#fBe6igZF>7p`25jJheh~c;W{rzR_pQq&4 zhYyXP_3;T7-sCH6I|(C+@tvTh~`eCV4B#&*4}@fKbC13nob7>a)u zaGS(xtWk&4bpa#MFIRjwcO3;pM`x$wNKmj*QZVFy`3>1F3?GN7*2wu+!3mP$v5Mc1 z3pem=er|`H!&|4L*P1FJ`VEaS_$8o>-41h`v$iVBfDPBz=KvrjlH5YQZk>gd)wef| zSZC;JFh4>=vkLq;S_z_jICo0EF$vZz_$BqfwkxW`7#Ime#Fn^1=-fC`G(gH=z;(^{ znyy7TctanvXyS+jYiaGLg_DN$?c0_U+w#6#kH*P^R2}DW0D8pqgGEJ52q0+y%@8gI zgHg~l0Lo^DjUCImZxh+CkSB%TMTkWFiKk87-HV@3nxRYDtuQQI5W7bX<&Jym0BCAh z8q&?8hxU^R5kNpb468ml(ev~S6Hu1 zG3Xv*(YL0vVT^ca>@k19mFHpi=i3I2ylKA5EqoW+efQ6*U29qu8yAdvuh79Z_s_?O~-C@iSg_ruQa09Z|JIKD=N}wjnN75cq8u1>$ zJ50z}JcQzs5(q^Oae#NGbAIG=ayq&j74rAA#eOBs77 z*&Oi#uZM!1d;t`xkYRHu_$=Gxc<;kbhmxaxyagI(&~#6{91!S&RSPJEd=@s(gXzvM z0QI7<7kmrM5oH${ivj?YDAZBf!5B#erwHQw$RX2lzqeZgOq79aE!sdbQpd_l5Uv87 zT%bPvDNjIyd}UE|D%tSs@)SsVR2(58Ax$4Y`oDQ|7%GSX{M--oPOh%%uC9g0M$f|( zBZ>XJP`2T77G6GV!dzLL!?sY1fFQ%Gh|>xG5k3cM^Pu&9=ZDv_oKsEyI!-&o058Ji z92Y-~>K=Oj>ca8y!xwqvTWOmls{E+BD_>kyTuT0)YPDNr_Q&(t=3bn+sbB-KT@e!% zJBJu5Y;>6@I$r{DN2QOmq`;lbS1I>i3IXJ5of3^I1^gl|8#SIzv9^?c6xL}V4A}rf z6TseJwc){|y&l9O`Y^gpnE64Y7g|9qQy4fCEjf?H+`s=4`}*#-Rph>UcpxQ_%=$xD zfp&>>Oz3-zKM-A?}h;yQDb9fuO;6U)=a=~_<2Vj zQGWFe;)gzsKCs>200-k9;9A7E%g^6)%GGr?)HvxKW}C3HGb8V&uI><6$y?w>+=p}SY)lK`f0|lndHCp&g^djZA|`Jom-kG6M6%s>xaZMfLOfBrcg~%QUb(`B zzw`Wre>E2~bULsW@1jn|!LbW%n1Bifo}xthFoE7HB=M>KAS4lxCBZ1@Y`fX&*XnD5 zfos9lb+9slM+N>FiVXoky3v(3;E~)e7jL|vppPM z?h$8M%YshNmeCopKe7!DTo^PDr`-x~6#FJamYI#ol9wT~@!)vjsXHbw%h4oJn`H6e z;3!|vJ=!BwUH#@2qk6QE?#D?oa59U2BQ zYXEIGG0521h`>>!ZD0@#`9wx$CS)J)_J_X$$p_6E%<6&Y0%B4WiBC8^ogNSpF0`t$ zvhwb(a{#5#LLIcW7KXPbBQU+WSsO4)VnG2LJStL4-hiv-=P#4r%FJX${D5?v94b|E z?zgq^Dk^S+8iv6BkOCp5k~Ftt3&cF$*lsK!#;vcZ*?8CdK%qFtU*EB<<3sR$Y~vDB zvFe~6!p;@g7!1>ThAmKN0{Ur5wU7{g3nHj1(joMX7dX#n4?tL?@qW+LSXuAQ)J(P{p8 zer=xIVp&R|0vp`f!6wW@T_Y#<3)$sl4!+{xxG5fvEU%&7d)p}@uzy}HF)G0 z{tINo_3 zG!*b+BgJ{7IPLlt^S9HYmUtUQCxf#k0;;Cj**9*Hch=;p+OJ$){NSK+w$%emXMVrp zy-d6Q3@aWiBO=&5fo>n1o@P}~Vqti7)oc??rDP{T+!1P2_5&Mj zcdH}A!~d4g%{Vr=Cw9DOW~HlW&9i*;CBC`0fRmo&&q9=6tywqo z;;+iec19C5=(~T4APob@(MNSv(WqD0pkcrwtI^Br0PfD@!kj%~0joejC5o8>9|ENK z^gbQAVIg}T22U}b)NOoQ!d zm4Q=ZPwp(Om57*%muUQi&sfieQyY6Ysry+y*dB)-(hs5IrOKxM;cSJh(8u~#Cmzq4 z+&Q{bFnT38T9uE7=TQBhOQyrJ+1sO|kKQr-^<(LW!{(=V+o;Eq=+`{JeY~)pKV%U4kpJ)l=7~o0OlP5O<4+dH03l*wQ?oM8mp2mtH z7mZ83&l@YxTn&zNtmI^%&x}>f`@ZIimhd&d#|hxmC;}Pku-G^%zKLkUh$>2Uo4N`!Qijv{N>P{HK8?Bd7s{z zCE)s;g+dam_)_nioSd95@!!?TJ07)6=Unl1b8_S``q|2o?B#XHPMYMc0+7FzaQuwJN;iSFyucN=+Q4=4YXAoYiJFuMNHX zLf!R*2hE6We)`)Ro5dS@?}N7}cJ8n<3n>*K}eaA$$+> z2HXag=CGahZ3B-_Ezl*mu`;}UV;Os^X+Lj*_aT)YH(JxR{QDS=SaL@+$?dSPF?`*b zMHO+zR=}wzD3Ckg+AYu>!NGMJd;j@KEHZ-semmY>HA;tY-D+x|ALG&d{ns9{uHH^Q zkL7lRIS=387vXpU_v-Io$3y-X|FFqBSj*-XUVeXH$H*hhkUP7uu=B^n*v7vvXvyjS z#AW=?o|X(XMSJ@jA(2G7h%*KDGX3p7dBH+z8UY!nm!(Yi{bx1i{Jk10zlZzQvu)n0 zc?pV;8YsrERM{*VX@vpyeBvX+wbwX2@{=w>(88^PzQv15kFSy42yWB?9wRA?c8e6wg_b8q#o!`lu^?OBGtlZ$`tHY~4 znW~lAu}|gbs%V$^-#JcOvvmVqCts;8`;=)}aDF4zh9lI~%XHy66e`E>lzlf3-|x{n z!;+cp_Gw|U=s!QcGlGpRW`Rz2=ef^P*AEHgtbO5czG|~1@8J?k{>_F>#*up~1T7jK zzZ6;aiHpxjW#(g(J5PP2i|%#QIp>u~?N+hvDJIoRC#+L%?A|b$alATeJFRsI-D7Ko z$jE=+ge*xz?Y(7L{XNnw*ZJE99ytV1iB|-VMBmFPzrg78MlhyYAWf3bE{64n=o|OG z*_HUsxKCw9)h|mKl#3TFF6sTdD4lJi)!2Gk#JRoL9mM*KDjPD`nkD%kdG6Sxt+%&4 zv0pbY*x%fG@`e~Yc0IG&$EO>%KmN}@-EAAgibr`!v`BA^Tc0*{OXRcMq|+UDSVAst z)$80VxFhel+H|&-LDP0Kv(Z75xy1kMDFu19Cnless`Arp+wdmwd-RXBqthwr)VEUv^hYVrobCNi7M>Oue0~ z^mP-ro|SqX_{u8&?~Yf{e1Lz)6BRWqskuzvuTt+7>@_2GMJ5F9o9I8Ym0i#}Ia;d1 z*1Edwu-TRCS3?wNyOJ9eO?;}9+`|MysFaz{NX3|mNAF_~rM|}_f31njm^Hh;9xC&<_spkRb;$to|5MMxEi zY=MrQWV#}h2Xs;PV$@p=glJgU*)gHshl(CG?Q-;7gN>Ahw>LNWEu~+YF!qceC}q;02lW!NDWu_mA#`0K*)mC$wq^ zE2_qqz8xDI23QrNcX=fx*#N(y60agc6>aTnu+t#7>b!j)< zm-FnnbCzvug!l>Jj3WoT8;Yco>r;_X@Z{m;Sd84uuVOH-v~R#04Moj(2d#0YMJ(pkb^Ne4D|v7rP4M~dKR?sr^ZSQ}Rs+)@ z7kFlmQg(aS(kv&#+A*UKC~DE}xi9|S3$-l4h|vQIJE@x9(RE&mylr4^+kHYpppx(5 z(!A6h+vlPq!S7dmc=D~d?k=aL?Rq2Rk$mnk3Z9(okqFTzpWdNvFwq8Ah1H104XdeD zp;R`O2@M-6bhI`DL2_V=AV{dyTND*%K7Q=jK&9WhrqLPvM<`-lT{b?A;_0D3ML_5C z=Tx)Xi7X3QpDD|^k>@reAO!LcIRE`%X@bLO`7#fFmq3H)1<|>KuNGVMI>AbfzevNt z@bNthpbg+)y}>bSQ$R#qBPyLnS9SH*cgrM>s5wXAh%8esf01SPfJnSbk%BGESf6$u|%I z)~^ms4M-k&u|dfnQOp`1I73_{mzSOI>@kRKi3At4+EYJ1NkFCa@CdVWHE1TyM+y`O%(0|JpO_2O3;nr}(ONk| zwQ4NF$J9Y0v~BGk2gNf1C{ZKMUXE!!)$Cdxf_bYAOA>uu4%s`>Va&>H)Sq z7!{Ca-QlHN0~`nluurK{H$ovbG-v@%j#VADwjNDbKTcU!74t@$EDy3ptzEZH^9oC& z(jjm!sEM1tenNMJt>WdGJ!IIiji{=cvoiWys0i%cGN%z!1DLTAX92cwkYDZUm*6Tu zjMvg(9ol#2CGd~2MH z_LPOTx?{9US@peb`c63>c#Epda}alUVu1?2uU$-jQiWQUo=kXEaT6@govRslVDP`- zq{D+qlu97IIgo-U4x8~jhJ^rNFVytg@&4f$Cv!X?eTRM%c z5?MlV*ajzJI2TVt?kj5ziZ)M!IG={EKnNCa6$b5qtRf;0H2y)YRY2CE(gS1kt7^`( zFLAKpR>6G3P$O@fTVutWWP!FxR~9o{i%ryV693TxXe!%96i9q8vFDxLt)G3kPRTt0 zC*2?<^4@ZgOHtsXx(a*4I z!B;wMIUx|j3*BmdLQ#s>d%tT$_k``V^Oho_pdih8I3m+1Oz6`y$V5SDfR{$jCF=Ov zssH#;WX`{nwoT2{aGSa&fk6qsKP<1ff&?WupG?Bm?Hbp zs;dn215w-{JJf6wGFM&$-rXxFN1yj;QD6H0Im5sj^UB3Vd4Ms@oSYsbl6bS==9)zL zgR3?fDYyS2=-z9|s1vYt(A0&!jN!bta>IRp&v~j7!qhfD_A-Ci3r$u2)DIj`aCDKc zJ@czB_Xe_~GEd!u7Y94ykHZTGsZ~z3*8|^$Sak^ViZRaV6{bmJ##As|TliYbd);x$ z0E1tRvIT*4Wv`Y9absk}30)7dN^7%{fEYk)7<0V=dy6VcFodnKpejJHIoXV%liyXY z1u|8p8&Xg3t4xzUxdB8fae@-g1#_QZ{%tMq$0;^7 zIiNb`r2%3Iva=U%1`&L;a0BA!z-_=utTcIft91+X-i(fp7WjDLA`&oB#nL4F;!ASK}2SnsP|gaC^8tOR1Hc-f!u0U3?l+4)dq4FBSP0m{VhEW##bu zIYK|X%e_vOjCMCSCrEbYEH(AMa9Rh&F2_$}RkhCWErQSTcqdhF1@5rH1SFo1LMespvt4nGt?790%5r%z8} zmz6M1kBdx9y>EDO@>x~!$Lh~?fCDd)jyL$g4H2bd0ZF#I?g5qtyEw?K~oaw~qfq$DUV5F3Ou zgKoN`F9r#92sef|M8*2$ug~=xQTm@AnTX^|ABnx^P@$vb_~L5i{I6)EywWG}x%w*F zLBTgJu9`bCMmyZi=Hi(a{~g*ObiS>;^HT^s1LyAN@yo!9z#@1&jbNAIxMtoia(F^V@K$uo+$I2 z<9Z*2>iEO#9Nuq0p)JMdNEDrb01Zx0qdogK8DJwq#G%{StKu>5QlCDBbTM_d2wNQX z3>9>DWMTy;XWBc)XJKWUhYw?%NA>O6nK>mymW9EjgaQbGukR zmkd3YQ)J}h*pn!%U4Mx|by+Yok4gy15k84RUod6}B~`(a%zjo6A0JbCb1X2;IQizZ zJK>-jafd#P8${i^$6ca{nv@jlCfS&O^!U{mJsi^ojl~Ed_`7QW&%PBBh)!$#wiAsQ zOS8kp4)dS)1^rg6TjK=6qWwV!6(4efX255k{AYUvNqxp<2X_x0n z5E|h(z{`@{HZ=0s25PZ~L$GxdG$vAcFDBGVopm%fuNsJ|v|4Qj<{op;SK~k?R(u4} z!kA3*Ixbw;1rt3q7H0#5@d$UWbjKvROb|w63e$I>MMu#iHj%3CgID29_}ocqq7MYN|iFL@UB58 z|D($B;>GW`+0I7P6Rob*wO=@wf~Zmw1#r|fKd1#Z-61K61U&p(qi5@px(swADxQZ| zc2~O$b6T3qn;Ni`Qh&bmS9}Ut1zM8`=8+KcBdcq<8XkX?JtUD9lqlD%{j;$1P>287 zwZlLpG32MhXf9*pC?(_3uSL0t_`x#2ns1GA%nt%qhdErVb~@EISh|PVgavv_SB^&@ zOB5XM{JOk<6OHYv20#W#+Q55Qogm{2GzpD8>P%NvG3*%Q&pezvl|}{!6J0WJM`fq^ zFXR}&ka7d-arcik>()VcGtopgU>rhg|4}Q{U}r$N`s31GUBi2OG3^3%%*C!P7#joI zUQq2=DugDykmTggyW=i`)WV)9C;mBhAM^Wn?>+^*12O?Mgv^g01*lre%N54 z2EhjIf~F~V{PHIWAX|=x^p9W>x8c0sVBV8haaI+$^-cT*m3j| zTV+_9k6r3no$zj=T>=FT9NjpxU@XT5)6|E2Ez&J=BU z*X^bAB}GKun%y18rUwxY9*le;-P!cXjx^zaVk#Ag3I&yk4&3$_e83P5bPf9u*%pQrUsUsc93U~NG zz8|4yLvxB|!g2rSpJ{7Vx?Y?=b)jCWar$}5Z7|t~jvoCOxNi9CSMEOySVC5+;waf} z{@7Fmat!$gz>KhZEPrkFx^g94UK%q+@?EIydx`^adsH96HOh}52Nje@Si;y$f_fVe z)<`yy)_#<4qO_`N(@{1~^(eUtBx!6b*r3lp_~z}~{FwI=Qc|uzoc$U)ix3EmW4X>Q zq_OYWOc)+vC1zGWd3QmYR!E^xeUDpZ2fOt9_{Rt<|u!1oeA*HPxxXqo^BGBF1)t&e9Dti?&szEh?fc;sEvwJp? z@>tST<~;xj3?6#INE?3ry2EcbeM#od*@XCbr3JH);Nbm^Ij(q3P!IHo;8>{w5S8$& z9=khWp?{DoRAEd$pNWZ?m30kt52#R}p5?{2#Sw)Sz+~UX#by5B{(bk6ZY^Cl_)J>t zHld>3g4-R`>!fi<%h)(mmmih*B>d&{KAOS7cDazdLesmf`{gJ=L%?uoJoS?YqHL#+ zxV!&OIDfU!dflmtYnZVjfBEMcoS0Bly^h$Wc`Gu~A1$*xs>stfOaPD}M+o3URBq!= z<(eS-wwJR5G0s_`ue;(_OxKX@dY`cA$gdSfw8z+k4NA18fBwXTl%as~-id2_czF8N z5adiz_Vg_2F}fb!Irm748MzAEpgi?yu=?N+#!iAk36@8ajr7jqbY_Wdb)`c|8b?;v7D^W&kzA9{BA4UX^g=f7TO zm+I;0cp1temS3WWvSL^71;7IucZ}n63`9U8bbR{MEc)A}IBEFOvLHFCdJu{#J0|)V zVOGbFhZ{%4N32nyXk*iQ;zi!%q$f|lsBM31BL#^0RQi1siRL&On+oH0GIs_#v_b9$ zk&L?@TwMANtL`kqHlxBf&q(Uf?<+kRAlZ8J?hY>~2K zgG zj+9)G1F9)`Oct&mZASV%Bch^GGL`3HH!m3yNAXGs2fY1Qh)5-XaQWXbE^M$w-#I5u z&d|}mGEWX{KVrB z+q~I7=>&3F+u9avc>`^|XF|liY$Kk044BgASKb42f0$O?aKXZJvHCVx?#g5=hyfKlNqJdv^Ggv z+jmA}?n-N`i@<)LKhqjpvZ5m+KR;VNsti7?Ge8+`1u6NCLJ@!9`q(?PPn>{;Bcsd| z&Cmy-@^wBu>wBB(k;>ueh3hOY&l>YPe!=$jGysxF^cvqV(aTj@5SrNR(>qr4CXNm! zuT#-2kkUs-nK$~(iyaFa#vHT|NDY4e(Q5-A+svyr7a9rcHE(TCH!3~1(9`~S&NygK zQNSqk2No#d^69`|yh1Z4<{aE{Y`s4=IGpXy9kvZXTM_e&mYVcdfbzjYjCl(zOOeMy zUjY6AEeUuMWJ-~S12t(hRRW4Ac-4Cnr*^Ty2>?NL1)V<%NJ~o^sF<;659FYDS8crf zKna}$@lK6xLOfs#was7 z_ntB|#84q#taAdr+h+4=xMN%-Qm)7y)zLXSr+~8nUbm8hc$-lR&al@zmK1^zO!mEw zUkrSo`+H^@Hp(@Th9K|Npa<}RA!dg7H03>K85-jbyn;x!`NIca)Z{y&>WY8d7QB;@ zxR7#VfuHI`12u!#!^Wy_^vLKpS8g#;Un8SKJ>c2{ec!)vw^p!#j5p zC4F-O#(~;q{+z|$su*{0-7ptim53!=otB0y{ZrP9=BEyRn3cvm+nMtdAPh!;=(Kje z5as8mmW_20NF95@6t^1PK^s*Zo^5*i==BbTM}^-lp?7NMact@uU@AW}&o@XcuZ) ze%`^5jD%VFxdD07l!PQA+d-e63GD+DN1=isnkRG$i0UV*P*4J{9CxH8ao%6C>?sG0 zL2Tx3ZgX{^RuT2icE`?n`2-5EiP;uK4oFwf)+q>A`tLuBg({knR3Yc=i=H7MYOF|PgY$3qf> z(Tord({kTM+ggNF77WDWpaf=J>pgD3I~CxS8(c%(Gt34>t}lHhl}4A<-Dz+@n_ejbot)^ zPbJ7krRSDqqWBjosmJ6*bq2l!2iwDMeu53+B#{j+a+GDHmb-iRuItuByNiUFgIGRO zZ|e;N+kq%q+5Z{QSuE&G56mf9dMcu(%%}J4%B4Xq(pj39bT1Z;o1ns%rKl@VXE|jJ zce~Jlx!U^1YKzpxJ)82wFM#gEp>kVKc?p>;*G)|C@Z}d2kPpR`piCszAS@QVm}Yx6 z0ekjH&1tEs@@>1c6ZG-)6KdLc zLP>45AJ6O|!8Q1tT}CSuZB_`2`z)Vc7%Ty1lC$bf z8{_nxoaOLV(kw;t2@4-tSm>*`0XPSp7kG``GzjD4fgb(l?)YOnHv(n=9CHmI4G2OljWNinf}S)l>Fypn+QY`ooiUNMX+pN^)rzw zL8Jl3Of?;ykJnd&`1?KoYZte?dwkdm045c5r9Dm6e!w^Yxu8*E^sD>}ka{U*;?`Nf z9_^DVscQb zmXiYg7BMstmn0AV#<8IcjSp&!R?#cA9N#er7@LV4v@HZ6#AdO$IKL6aB@Cw|M9g@m zzRkB!Tk=~nxkgCqlitAtSO)k9pkty-Hy6f%K^*`g@fuvbt%FBb%>reON|!@+W@c;P zUvYe-+k~ZpkQ-gYurGr{B3V=5pTYil~4^6N9x5#|>RP0WrJI{?Wb^n$!~ zu;-4wkA{DEjH_sCd!Fbx%yv(8;rZPGGh5c;O=*^9U2%DN8)@^Q3=~PQ5oh#Jv zU?vcuLNNkt+S!$VxLfI`=gL}YnIBm6(1Qi~z(@&&s6?Y6r*T8pQYU7bW4<$ejeizV zESPFdU4B^{IQWWgmESM@JlWJVlsb131qeuuj4COerq`$z0r{hPtcHezbl|8wN@^jC z0H02vr8+qS6!myh5)cOp?8>PBSwJ}mSPT$>I*kf1E;hYRjzKhi1wwBr0Cx+Rbl)~K z?}=PoC>Z3(EadLC>t z8O#NQ0>1)UV*^BJW5soy#dqSqxMRB`LZQwnkIDX3u&chGIk26#xE_==nV3VkhL)CJ zM`20B444d;D0JAXag8;-eZ zr8lw!X$@V1R-4V``!5^PZn2p18gQ6_=gbOz*cVaAd!>Q%6l)%w}zxQLcJH- zR&WwB1w1?$S`=Gc@vgICTF=%JT)Ks#T;UhN(kSb{{#timLrqyniHS)9TwFfA<+`YX zXI{sbrCzc@+>-qbEE7EA!ZP!Zf=7fPVgObE`v;Q$2BYEWCILB}Iv=@mW_E(7mv{VL zuUlxLcgxs5_Q?HN!|LC;j>&5!6!lrpwiyV!tv^i7$KK^>u)SY9;A+CByruV|HbU;L zXM5hK6!3nP&i<;Uy#@8s@q6c>vm$;TNFvZ(UPE~Upyyxn8I~)-(vS*4>cr+nvCtY{ zwBA50NqQ-&Cbvyjxi)XxMm&S)z?ngt!kwtfk&J!;<5bm%xnr3+GNsmfr%t6G_zEQB0>~y-3J6Lv)D=IDh-Of{9pASO1KSv}f}eZNiQ;Sk zJg^=aA6Swk;2ZiM1nV4_F|GjIisXj@{3P;4w6vIsPz$`*xT?i_P8wZZGIX6=(K{nn z4$*aTQ!hsA`upQ&<9bWn)&p&+?VZg(r6 zXI9s~etiq`sc`+>X#3G6x7*dh576AFrNgG!&dTSNtM~Kg1B!_4qus0~k;ZwxAqv(z zq8FY}8F|++XJ2yB(%npx4Q)722rqzqG9(TAE%B}v7jpt~{te+37&XWMoYJ;4Kqkvd zq4B+x_GGtBm&HO!($_Lt-}nQswVQ79X?VW1Dq84wTCq9>I0e(mfszn34Tn0?Hinv9 zW6ydX&o$k}-;nFdMXkKwq2Qo4>!CYng}q>9G{^Hn<3MRhZ4bege3y0Y#Ea(-` zbrZ4Ot+f(~0-cQ4FeLI{rAG%a|ggsaevOC}7esa2Rxt&k=1R zsC8J0ARd%}t-N|!hXnRr7vc;&#}`E#ynBOIx67|)EN-c?k?FtHK|Oaof4(OEr1!^;CljKL%}zso64=dI|G-6xTwrsR+k{A4%v zPktRbw|8{kgS-POp;g^NIhtt_mi9#hlIZ3Dw0q#n$mk`+xWiMN?qWEDG8Fl61!+U*&JjE}I zohepD{xwH9bN>*P{z%pJ#9&BsKt!#FC>TMVD)3U{`M>uHQ^kSisNm@va?NnFy^)&y z@3V}7R=QL_<kNAJo?VdfI&)ITTJn;Ye&tBwjW^!3h6RajOd*-%#w+wgimUnP6Y`e1I)=9BMJFTiZ z-y8GCs7FiMt_mD#dvP`7V&-3Txsrd`jSCxep4e0VIR0CZeP_k-x#r- z?$F6vl=XxD{2xz^bYMm*RP>WCOjYz^uU4P14h|Lltt*qkKKV5!7;1IXgM9EHj4TT# zS*WNtr24~5p->oFm$8w>^ylaVT}GHS8Zd$Hta}&N$F!gRFAs-H}});g<_~EbkQ09?cTkLo1ywA^RWuhC$)w ztHegs&YFMYh`@LD+dTq<%@9~yDP-Se&z^nBFx59LCI(rOB}FpEXe?uykSwEY zMGVFgV~Mde_I=)mzURElAMl=^bKLXX*L_`|>vJv7eLv5fd1hjCos(UN9Rvb#8t7j& z1%bdQ;9rN88IX(_#Qz3?ARvRQSIi@_7DoI~vLuHwn)rG055^!Y&UZk@S^k9E$3`98 zxg$)Cw`dX!&a+)zb*$7pZ+%w9uyZnvaqI~tST!zgGy^Z{COhin%3X|%&3grFJXH=X za)bs!zVP%cAjk;6E<0|+z@crJ!Vk9!&-Lh{uddGa&a7^jt(DfwhZ*N;!NX&EFOSfZ zP?(iO@%pttv;r?|=qPO^&80NZcSck@Kzcop)n-OqJKAR+${h6!^i>?p0AXd2ie+L& zKv+?`yb#bs2yFQ}0>t|8KW%Yhm%uf4Y@0iJHlbigE`oUE8uEEvy^!xGy+zKx#2ia9 z*I4AHSQiX&lNSO$s)Fsivs+ZyL`C0Mpry?W$I zA8hjjW=8WPtdBw9i+TvzU+9u{<&5Zxmx=)u5FkNGn74pmPSN=0 z3^YTt@?Jz1S5l#}z!>Jo^ebF=slg$s=H5PG`QCeFKdkS~(|z4^tpYyDuKTO}1s8C* z2!EfDFoqeQG;I8G5Rk!jVt}POTyK8F@i>^l4GB`L-fragQrj~5^J~B=WhZp)k^J+z zop{J0@s*q1-@k1V0eaZIKM~vIN!?zXpQ#12f;g*pT!&#_Z2I<<-&?Il)%M&;#3n?y+fR!Z+9rR zoM#fRakJciD)l2H2}n-=4oFcIHt!uuP?Q9?Vo2bL1Dn3_RwNKQ&XKt-H8G1|&De~! z+z?Va27$Fk@k6Zq9Nsr>QfN-|j26UyrF@W6LXfaZjh}yE<3VgA2RIM@;$RpjlV_En z0`v{b11$+v4=I4XyD;R(!E{3Ta5}{g5xt8T=zISC5F^b3fytV;Ja8TVLXeFI;yTFG zmPF$YF9W++6&L&ko@A6tWq#^V^7*fZ0gJvjClA3EEPTi{`6y~q7;umo(4h}x#7?6= zq^T#{(B~BO;U%uIp9B9i1nk|fxVYuE%Wvn(Ni@!18|;`&*{)w(@|wHnaF00tT8B=z z1*~+tYB;y`G6Cwr1R_WYLo{+W>krz%Jt%fJGE+BS>4hNp^O*xH8h>S3;Jcz3b9H!J z0ye#GDdf&#+8oSP50oL_aHk82&@-Qp`PuyG1kE6T} z@!iG@?L_--%W@J`z0@KvZtrKv7y$rkpNp8EHqmA%4QfI@3Zp-h)(nO19!gTvy%k20 z^-j}!0S$_hpm}`I#X38C7E0CJz$&JdG%>I$%h?+6qCQru&*cE+!XZs!sPD>DBWY@2 zx;>@VuLh_92;xvx`O==Td3>83G9@{K$Lm>X1!3c;0rB-?F<{{eMM*^crHl1)2Q0oe z2_fYZ@s5vZQ$h*iFY3A0dD!|hcwtVb2SK>4>4%k{micD9KJG7WQj>lSf%S*)MAyWn zJfSpvuo=5%EY_Pu3&o}T<)*%%s^4e)&MmD16G0mPt}Q7TFjO^ro-5AT+HeCP8&(8` z-CQtwJ3eXQHPWaDNaWsiDpg+G$~6EM)@H>15f__k-+7`yLKUR66u!zr> z&lr#z8{)t&{(D);K788yZxb~CjNR>ET^+1&D*GS(ySUv;#q5=h}jDcGglk7Sl&`+9SHlT8%< zOS{=o1$65M4U8Y3?1vmIdA#1-=*i%1y8^T^*_)7)`E#hbH-lH-`Z+N72j&Mo_-M^3 zF(&KN^HwCx*3<`~PtnpYs(d!H$-t(M14}HKPyvPqToP`S0JjPmTX?2Yg{JJmq#*^g zQ#9PW+?3Fs02s4KkwAgFUO9ZM=l&{4RJ(28Eb;wx8mO0M(QpEgs!*Xfijv>o{uF|E z{0O@YWy3!!RFvc~eaOiZdHbnM%^_}PRnWzf_G3*ne&yi^zVy=?kQNo1{UVc4Pza^Z z0Io2U{@?jIk{{;dA%4KA^U(HFJ_&>y`(1Z+sfjc(9w@%L7KyFz{>rDT`a2bRf}XEv_VU6tuSu-b3mQHovU1sMdj z?&WWP%44LHd`~Us3>Y#uLj__X+v0DFs`rOEq${6^Bei+%*C48E#UPJpg~|ifD(e^X z+@&j?orQhB@4&^g*tk@M)sDZ4c(YL}0I6^w8aep!86V6}LYltT)vhneJ*|`dospU{ zLM7@Q$d3VXPw4PwcZg1luc*(VvIZ|;`s4}rFRUWtKX~egVh+CvHl9^S3@C3wBa^56 zmL~Y&sLv%>T*}$dkmcSAhwH8`m4`I^m|6Wuyr$&8`oiFg8JY#DYj$@D3BQJb6ah|k zSPnFFh5u@NKR}dVA32i)y0Y|`m8U+0#o?lW6Lx&_HUraLTMAf*92#QsRE5UG8dX|! zpltfx?R5kLQyu9l;(M5=v={o2jGYuLj$%x0n|$K3#9-3?_AmMfNDxbB^CKmFN=;cK zH}gS$UmgRgkA&^DyBLe!)dQ*uz;?^P0D8zR{9yoTAi;!&H}5E_Jz=7QD_)0`?GIS2 zCKViddVKw-(l1XM|sBZR3=uPxf=+5ma0P*WUy)Bf(G~@ zs`fa99QK#lBN~fx2BzPeV1$6=%P~IF|lTk?sKdjJ+Kvn zfKI{?5UIlx^&yHCIF;1pni=*;B2l+9G58`<&ml zFW}Poe-~PI!6f=a?F@10YPD2++FS7_s1`w19yV~YHUkrkhe>~*l?QZ%2eKsz12J7e zOeTWBJWT&-i_K7Rg2{E&=e``N1H@Bq4l6hgS9y8hUE%-ZPg~VcL$UDNT_wgLob0Tg z?u&_=rB!L}m*h%cC~NCyYRpYXm@(Q0mJi3Wm>Co&O_Qut+rsP@6QPauc4<4mUM5Ye zbYFtfF3>TDlpN{FD47^&pJuUl#cn@1mD6wK6lL8MGv;&mMgH9U_u3J; zPw$*k{jkM>?@0nw_u4abkCV5*sgT0;GIP_HED5pSX9T7vx4E62w~XDVqRv`HAl;qo zv@|S~3a6N!cAgq++EZ+a-MCv9-B)0EDRe}BC(tHAsin{lz_^{i6*=pIu%8!bT3+<; zRE+C>Vz%<-+|OD1P?p~!=8RE08xO%;&i#c)hgX1K%PU8UeW~Cj>eYPp8!;=$J?7^8 zc(6ogY+;r6CY(f&&+TpMjBBOgFza&eypR~n%Xo3BY1&$lol&?%TA6sdwYZU;eAVf| zts8Ux2uzotYcGw^9vAttHL`kC5s9Sybgp|@`P)k!JTZephcEWK_O4(0s@qy~E0s7^ zoLw6u?bEB)AQv6y(bESKRBwH?AwCxLsxb;-FF%pzB!Y?MIeT(|89Y(?CqtLKw0yla z(yvmpR3&7~)Y3W2$~3$s6biFndOMx{FfA@pR(J-d;)zrdTc&M2`f%UY2=S8=ykX3H zPwc*pywlV+@{06MpkSq1sRbp=(k`p_OD%Bv?S_x7Xldei!8X-8nAL&wYcCTbeXT}% zgBbF~at&=>gJ*EPWr12|Ee*obQh>nE!KGt4ud5vz>$zyPw)oW++oIm?>K`gEUc>b> zGjKvDbPK0G{1{wpgm#i)wh^iQK4M|c49j}{!x*0?^}~-%F@YV zYaUv3ERKu3+1JHVRnewa@^UZWJ*#HA1w}KNAcJiO3fOSMn60~qb@A$7x3Sd&U{j44t-kY`q)zYl z>OB>47wUb4{`#fd_hn8LInCCNqD=D$->Rbu9!3@-6#`89@$n;wFRomEaDnRx^ZuhN zuh84DksxLh0b+YerbnG!SJbrQ!S(Y;Cm(^l0&&6 z^!qJ)mx`Lfqm%44Fvj?*^@SQzbr{n4Ms`zzpu0a8aE{p$ivDM^7xT!x-EeUITm2 zRF)!p3q4lkolfl)U|(2@MC#B;=kx#zy?Kz0rIPXKQg!?#i#6gMZM9In>X!BbtXpGBbX z;F`s;rR@|9TPn8nA_St!Ac1A*{7DjpsOQk6lGnbk8jJ1!YOETc$aQKn*bMmHOTo=saU+t%B%YB)|jDo<9x6@g=zikn~-V_jtv=Jc6`gBD)GwBbUzj-}R z2N4oXaNt1QqHIbgDjHHUu63$E`CbWP3$(I#7AeQ5&phUZI2S93K4u5^bS{KR!=g35 zZ4ZCGEku;{?ofXzcSQfg6AcbZhWiV3)rTN9yT`NV%vn+X{#AzHW9VyoULsW=6lY9; zrzAfgQ!yii0mb zmqAj}pwq)ot-%vim%+t**7=taYsD_Q@GE?WWKP4PZQVA{zi{P;wsIB7fXn6;*UM%G z03SWU!>!f+lr=xbg`pqi-W@d5{6<}(H?qOZdARG@k*Z*n`0etln|zQ?-wmBD?dBT) zjMo7Oj8JP9dQ^$IAaMR|>p)&~&5TXv;3b-)K-V4If z{^_zpqxe1v@Ujb(bm=$0$VvvfHoy1hdNh6qtM0>N+6yl87LZ@_*6jtl!Zs=B#LCGx z#o&uU$ntWXN}sB(amALcFFDs3+*)Xa8gnjB$P>4Q=+vOfyjdXm$n>ZK{rCfYT=}Ba zfV{g6w2Pux8GA+tQ7!WXBq-SWEpO<%8)DPGK)>dBWIWIzktM{0%h<5dt+6G=!rL4x zgL;RmIDDIa-GS=r_;Q~)+mW_~oJ;E&X!5d7`kGw)LhX;>&N&I#FmTUpR{X2!D+Hh) zfIbFpHhO#ri7NM)Uhm4#>`=tg)}~-2*BAGmA)hFfsPE}-z)x;8Zks!IU5(&st{bt>VPq>Y|3oMHvD2iY^dI{Y3y?~e z8S;%viZtH+VN3cFEP5g0*yXOU3qZF^z=ZS=KRI}c*pnmG?oRB5 z8^rbY&*Z8D2miXMCn?mNDSoDesywnza_PhEUHr3N!iv&lbhGJcx5JV-SF+LD+mBVI z`Q~2h@w1_Hq3f3m3Y)(u{pOF(ZII6LuQK{O8nX(_WVQMalVGep=cQ^GkC zw`S}KBEh?VoU&}yd}>tuw~qcFi^m0h+Te?X{wx{$?!YFzI^!!R!lxcu)6y$kMtQYL z4Bi=8HZGcAQQ*}wCkdPIB~3KN)$l^feL8EttaZ#;RF$)$wkq4X)nYbBluibp99z1o ztv~pOi-_*2a9QJp1mb;g&KbZ9`(GDJ!uVT=j#3B5h0Sq-r|h&W_Jv&+tY2t!+}a}3 z5~IZ+1+=D?_kSDg93`KDO_Sub=QhVLc>o5tvL0ZdpPF!JX;?_jhcC{6Xr0oPK?u&uT$l9tMK8}cHlW!_B5?!l8t~C|EgkfXa%^xtNr{I$b|GV+VNIl42y)$`(!ij=vBp!|u&F*R$7jYT$ zmvio0@o4(QiduI72nAxfQ<-xpHuBDUA1O1nmiN1xf!=)yShQE}*?^Z*;>NO{E1_!l zKP!|Lv7+#M4}Ev^5dt<^=I1quQm~;*AAobm>2$*rWpzec`1^cg;c4gza1WlvoqV04 z`L_%w-^w2BD|B@Iv@C;LAa-HtC~E2D!pYX`7Qv_5R^im_YlsTs_7>5c>FMCLxM%Rx znG7tA6*X<$4U2&-DmB%u6_$zL2Od;+js_25$55-tv>8=HX>wM)TCZIOHSlrvnxjE? zf>I}(eQ?^oH6x2k_02U6ebvsA{t+ODU7)|1C&9z}jU&4rfr>tTQOK=ZBcicP&6eL( z#(>(LT;^QXmJ?4}tyDZixPFQp-7b)F|Anh5H%TDnusB_?XlkIrn1ibrlm1%58eiO& zh^D?NJzI&%e~-{6`NUmSDWLio5cG0Jf5QxqYeV<;zreH6RJvB3gutzd3T&R^31 z&^1<`Ti~i~#*WHOU&S1m{;>h7X;t9%xqN>17CI-h)deF8#;gS=I}Xf=g=A3~8=TOJ zXG(7Nu%Tkjl?s2uxlsHcY>8)_KH#Zb23EzF#DBk^94vzuS!G96p@q$&#Fw!{p^aPdj4fFmsxn^u?S~lTh^;;nVQ;tUzji`?N24s_HnsI@-R^ zZ*?hs)ySfXcMOdtYzd#}~RaY0{u5I?K^JTX{&p4gyLzXJ~#s=)AAFakqG|qg56RAy(FK5v6Hy0 zvyas$JCJq*taem$$eP#t2=LrW`hsW!y(C#{dTR%c(GC}X4)`eE}YqXt+A>5M||mXeR$2j^ZmSOICryo zpZGUN8P1!KX-^1$_baQX=Y_L&t|g116`zRv-s37?Jq7E!y_V4DInQ0RE$f^HREWSi zubVKn;+MJfM`XvjQ(HLp!EnIG9b5W2gYK8BM~K{5v5y};eQ0*qU1Oit7p$Ko_}&{0 z_%pozerU&|Qj6*7633oX@iwe?f@%)`yv@xyZ!G5ye>%9`$3$LZvv5-P#pTc4q>Xc7 zu3OFJO4)gSBXwK-;fNmEuyP)}Oj z&D;s8%qIv9l>VgZwyrI!D@B|4d5VVG%gvISpDg4i<--XK=h^M0;Xs4uzy2`CA@Mi(YVd~LBS1Id-%Br`gN1{ z-4P2mtEXX7v+9|9TjTH8!wboVQt$?}%GrisZ?4>I#YB<003-3N`@jzaln;Ij;Dh-= zm_}|aKwHbzFmu>8)elh)bynjVd?5wOfxDmS!Lpg%;bQY81L+_0=SFmeIUJZX>521$ zU4#==Y)-ihSJ7e;n!o)q8r`=p%tc$sCzP73nGA6kMU770O7>4)wY1>oAC;cHToxJ@ z+P7ow;6dKHXFqta?{bRP?{c&&lxW+$V!jt!tz+?r{s#SoW$c4@o&W7ngLy84*bg2F z?K>8iSyqJ6{tVRyo#N@L28+~)rCfq?A0(81hwuk7uI~lp0p3NsW>Cse%~{Mb3!6qmwpb`Yd2$)C)qG*$o3Mv8%R3tS)1Q7%U zl^j}KKIAH-+I<|*|X;yqej(R@2IL#v-dp% zJ+0O3>)CNQ+-e=|1BN&p3m%7KvRk7bge_8Tu>#gJ4;`27w9MHaRu&vuT zM|aJmmnX_Xv{#m{GQ;^W@5|>F(>|BqvL=7)OFKQu;B^`n#87AAeS)!scj&!p*HOlf z(+g*_(rE2{eSJkwk4i4s>C}T}VX4!}-RIw+i7$P4y&0hq}7D zvMMSnLgBx*fq{Xwu!6(#;YX!8xwx2ESy{amZQGciJb5B*Y;3$dDJcmjx23*sEVA#0 zO1NHgyo4Et)6iqq$7M(K-I(#~yOHY&L*Im< zn?plG+uiJ3TxMeQ_4MYu(MT;4H|9$~ZqMD}M?D1Z)TYB46F;)yaCSRMytp)Ka}i6f zJv{5gr{<{~t+&vVnVIQH`1*Z12o|aqxWDIQXl3_v&qPifuI?y}*(-8(k6R&LS$SHT zJ!WAZW)Q7ezjq-Iv?fXniq_K7;tC83l1dg803F@k4-ZTnO{#|_S5j-W$RLL(F*(0G~`{g8jq;PMqszeisQBg8cK}67^mZhcT!dU$GX*BLa z`{*0TUE%m6bHV8L1L$^JmFW2nP-EqEFQ|BAAqvL#Jxq%NyGq`VPDvK!Mv@!`Nrt1M zqEZie){nL`zj3s+rN)41i}p^Ezpp!bffa|#Rs)6Pjt;etol{aQ?NyI~fwDX~h+z1I ziI(2>Q=jhzQ}wn10>DfoKeIfm9EXwG+9N>1k(Pz5QS*MkZWvP(mi#lv^T)g_ zdBJfaJt!zBDOnWxP`L)IzyoyI2fCb7pU<3_q_!_q*e=}cvFK+-&%Z&>tJnA4=xQ$d zIW1}{EFv=B-CWdaExi{2a|B62zM(Sr3v@LAhKOka0USdsFYg{Nf$@u(g8tV z>+9=t&ieWJ6)CH!wdv2v!MAdfpz1NO%y3Lp6yw*oj*gC#^U7%4JTz`2j9UV7g=GO~ zM3Ov^$^|xnI%jSn)L-2do_};s42`n~jRPht%m+NaH&R~-7Xuzr*l=@^dP&V$U}G-B ze_muo7XeU!dR+M-P{O<}0O}R2z`CDx8Co|FtlJaT?XqoL6K*ONU?bv!@4}e4x@924 z7tjk1ry@pJuCX3w$7!&F$l6`Tt&wPDL#_++?v$bCEOe`l9u21Hy$8>>f`xH7myPh$ zB;1elA|m~$!cDkXDH!I4{{Ol4{|yaz?Q3pry*@TGK2ZE%ovcb$VWBCVF+E!RLYN`@;Mre~^eO`{2-!Nq=wei;d%l_;9%r1aJvoNdh|&XGcU(;E14XB`hy?MhK9z z@=1bgJ%AHjaV#4Vu0=_q2cloB3fiz?gSQfGyR7WVYBHHs1W(YY>eQj>$Ed9?RnL0( z@L~Du2$#%N8aW6QvAjM#c7Tfjgc#h7{WKv?60g@z03^;!ZzZuroUk189Gu<6{M>Bu z#Kg^mcsomb`<=l@QqP_~o$T+&RHhklxBF*Rn0IcMsw`)@`@ya|ckXB~;SItLe?1_!l-)x;66rCD!F0c1aK;x#xG|5yV^8nF@ChJT~dTy zh|QBhnYdtOQmFVE{4(u>Xx7{Bv$B}%aV{g>m5+V(g&zLu>DgBQd2(`+DVfaFaPL`P zRhaCy&SK|i?cBF-`TR=;KYu>mO$KCQ*BRyKiQTpRTA_>Z@1Lz@}h_iDic+(WAho z+CTun$vCekD~Z7XF)svx?L2sKq)IfI1z$z=I$2ZZ{<|!@?>thoKOFt zuyp~t10JCHLi;cG+@iKcze-PMOY|ynXvgYPLxa7nQ|HccRIk|(;bYN%iTUm(&iF<_H$JWUDc{JNnwsuEmWi=qx55a@ z0O=Vdyxd_QsbG*fR{dYUQlhpMtipTF=f`gqDrLIgmhWuz$BdG9M!x5Q8n34+|jkz3fY2^p{EvBp_ zV%y0O+Cx5?;_X!fA7>u$0vgchzqCC2<=oty2IGuU)xZVDnWrj;aX0qCn#EjwqyPwI1Jk^u5Rlh01TF6Bf>hSx$)j>5Ln*!PmlI^r`SX_e)}f9VWgpg*&t+SXh@@; z^~8}QNBAM0^lqRtZ9$;bNP!71@Z!DW(AupYgNCnx zL~8t2yYdZvFlh15PLlnqRja&n8)v2_OU*VpaV#r``{7TwR&-Gh{!h&!`xpAjqHc_nzLRf z@A!B9VldpwPB2*l^3Oj-th{^+a&25JH{6&57Ttl}2(I$+4u$Oo5^>9I5NZdre(Vvr zrC7Vbb#e!HMOAK1LNS{LyFD&?vrqZ5``V>Tn+(?BdwP1X)UJVNMK7WPISqLJIcVcF z_5^6lU_FWVDWLFgU$wq;tz*H7*+R7ND*FoMXn{S8S0wD@DOT*U7?h8#=tY6);$Q&f z2S{orG?)r7vj4w+^}4W7pNNX!lUH~ArbCHI1 zarnRxHNfX%$C28Y!8#Fa#NxhWxE%ca)vH$;CX|2z_t`zcGXl6+TWWg|S1A*tbFwy< zq?N3>+RhOcsc{!@kqz=Fsq(`F86aKp*FOhA=t=`G)6-`G^vHlR?3{kjez~J2Qqh~x z>5{+ifp71(Z^k2+a9%A!LPE?DZDz1H*}c!n5!4p8@k&7+ybDF-v&{NiLXmJN{QelYvT`>%+NyDU4uvQzxf-o1OhPv2c${#n84<1$zt4krkj zh;{dodW6985$(i7y!g1IXfZ2bJgXQAn>lhO7ubM}d2G`k^DXZd zHAIx@(GJc(s8@vY^IDpHE$A`HvuZu}671x!Gn1#>J)T^+jRNroI_qH+0JK0DS0aT4 zMVK}yfKdSe2!u?F22g~EiN;2h(_4}!I}VX`eWKL3i}$amIi3dNzph(Zdan8YIg`S_kk2k^tUS33=9l-=k8-h z@npl*yI;zd(OPHwDKRyQp~dwl<7QJ%#K;P<%x8(}GA(p@PD#?p^JA%bu-ugXy z%elTudJ{f=?l*RN{dt~rK}>C;L7huGIf$aHsCe?TLg|+I^~qh_SRKKR4YL9tzJqDW zZO`q;?8Kr!rLm;FFmB9}BwpBeFqSA**44bU> z8?tT^*o9yu^jn^dOE^&ii~w#}^by}<8m#46l4r-pC9F9DyhTVxwA-*jECN0%F?o=F z;HFWNc!3h3Q1!(R7kM_kGyhDdPVd4D<8AzdV!_!S&-F9?O$i%`KMFHN?_aWY^Jsez z%O`Py<~Gu;bKcy1Gq<{#jEv0j1kOWP3RkS`BgGK}dGUvXOEhc;5hZ3_JDw%&MQvKL z?zsbt+SB-)rjoEl#Ne_vPr|y2{5jv3jkc2BKOfdbKd)Pu@wGlEN|K*gSEQ0g$W>;$ zHU#0&l->@K{CtG2W&mWEtS6C3{Pa9r;_!hXI4f5Kr|;~bfv$&=VaRJ8t3af z={?2BcMY4jT;Xob9%b8J_{zV1wu_RJoh^{9M{9vZzj{~c7E{;$SY~Bl>;JH7pa25} zz>z);aQz!c_a!mPgCzD(%V4DVH`Hu7l%MmW`F!az1>klI`|1b2?IhA{X6szt=&O=q z-=5Ioo>eCnW-_f~A5f;L3-vnZFSr}h9eU(wzlLUuNqGkSFzU1hbY3~m;eAv6s`$R$fps^Fdl0ms+y>!LrLe7bM0a*V`X3 z`LVLBtjxL?h8m};_Zgi8+Ygk=03&0h52889>9u1 zHH(o?gtyJP-Cp1Bl!xt&BRn<0Prc9+Qc%393D{Dy`NmQ^_1!S$>c>i$Iyy-|W<{sv z)925hYxEa0qZHcf^BTN2*P@3bzWMh*-&d4yBFVQkB$&$A1s%pc927lXcI*bQBkPx; zf|pa|QZxB^B0ZN`FFQheIKcA{lC`v@aNB;8u>i_igFOX=@eSvV)tHRC+6klc~2=P)nXXF?NbOCF1A8{ zID=E^pt$%vjD@4%VP8l29a2u3#vfd+M`)+8VUe`E*zImmzgF?C8@&EsQ`pTKidSvW1&;nVX> zD`>ep3;8>$XYC+h457897v<|5PvDPphyIl3zy4^<;1*Tyw!L5EevpTT*(g{acZbIu6{x4C|uWo9KllbOsnu!#KE$cnrE zH0po-k-M{|9K`)8t|oHvkxLCujZS6(i$1=ck zkN>nMN&&N_|Afp+1ep_m&dqIF=ysY%y)->7Z3O^bAWJEsdSl>rdU}$Yq(G#aPfzsT zThfNiWF-q!D<(ef6pK(fyzeB!A~%#86fs=?1{^qA_aWMC1}dmyJhKnHp#`d=>e%#I zX`_;>adlZhP{yTPbo#H2Xc#3 zS?%P$HsWSNIeFdWaOIhV3e1UkM*pr(5xFKX3u1Ngn<|iZT$;k8R=<^7He1n700)!=m@1 z6bFASclfHpK|_HDiL>vA=l!Y4i4^DAiJ|*^-cla!P0h_I_-$oaCbfzGErvIc0^&Y) zB7|JO9UH8KeL~^i-*kz6g5CbN!atPwac%4Ln;;m4y3}aw?L4I%essrX!d+6PO|Xv4 zyu7Kt-~&KAA~kzjYN*PDTOBY!V?x8go%e`X#DI}^z@)ba&_<3W621__=b$|@?Z}_g zfL(uLJ3YF0k$G0?at(5c;I#`6QGWF=x4<9Qq+L@d6nf0f7&;ATyT2-yfv7AcCB<9G zrme`cXrt5M^mz{tHE#92W$7%*jjOJsO#$Em$x~9Xn$z~*y#N%p>;Di1+peLQ{M#8( zMvGMPR_C{Lm$!Q0(pN=2c<=xcixm-NarEwP2|G8pbK*e$#K_18fL>NFaod!8;rNv1p~n#zv;!dV(Sg76ET1d{HFHOAriE5dqBx88JIZ<<5)O z^pSdwcJ}}LRzrsR=k!&WJ+S2K*c%(Bjf6l&LV0>KotnPaFFE~mc~W2DLn>*?;|CnK zG3v&Fe7%*{|Kj6}Bqo8^yA;%|{XHwH>#Rfe)+*wTUFKO~{6S=xqAlrVgh)VwX6H_I%Ubq59H9HTU&fwi3SGYmAs#Z#fk) zTtDS;p9+Wn(Vyn*Ve16D82Lq4t^9LU`#k_1Ml^|Af2|6NVk3)M$@zyZf<@s*K73^~ zMR3jEmH-HbB@F*_2~wPY)b}aKRjs&OO&U#Km`P_6bssxc);`zT&T^QG2(=iFQr@>l zW}_VX8%T~$PP@5T$+Cr08-rB_&q;a|yl^F|$d0?jZAV)Ee?Xpu6YJQDrhi3hKu&ex zLR{x;`+^6>QhoNcnA&`luO(w<>ZIrR$*?m}{{Fa|P+mlwQ4_PxY)L{XG$>GA?0Z{V zT8pfsqocR@!4FfK%zzaXl>=6^5w(D|qzHR>|I!M?gG*YK{|i?CH@Eih;mTP-Hk%)T zW79f;SrV5Aw||g&4@Hnm+*;+EzS?xcMJS>KAECL?I}eJfeQTIxaSs2f_R!bNP50|+ zy2}*p0tEqFN}tGV_)p`Waf)PJG}=8%)6pf=f0=e&Gp}=&ggyE_IIXOrT6Rx6kk4 zuBgd%a%0ddyipYkWzXXclWeer!T=1J8YVQxNR=$pt>G57(js-I?>Pa#CjgQ^z7ZQ_6TIucZq=u#thnSMw-i82igReYlB*JRPc+~F|-^h}7UiE6SF?Tb&FnsPR* z-hPEW7S(tl>o(PDoz`}z2J5xD=M)u*TCo$I8h=9Ne>of^awc#ppA`R#!RGEOvM(xW z?>}YT*0$wOFZr9c>(U9&P{QUT1&$W^n`sn|&;k^jVN2HBbA&RuiSUgjKwo`Mp^i^! zApR8ok##jhOucJa>mckdw_=3GFeCsP0qVUY7fznG$dQfov2^pqyU)D6Xk)X3n``G` zVTZK+e_4J8cGMnCED^DawP5*Z~JzEc(C+rqO>H z2KB)(&(r+WnGIRUN($9AHM`4mrp7l0Mmim4C&J+me~jn6b8MfGy7NfF#)Gh9&zQ!m z>rPUdvuw9{%NCk-x?b?`DC|VY#nQWANB+NwvmJx2;Cj+%|6e2+cNSCcE(M<+sNw%6 z=KWcivt73Or{Fdiw^r7zB%YM|%SNsDH7@}Ki62cBAJ5s&|FT_fpU;nv^tBXPt3E%~ zg;Kp3Mz@p>RJ_}0(3;{_yPjk0u)!1r+c3TN%I_~<-0)nf=Ai( zme2tt?lmyBnqm9dw@G~>0hcD{=RGdb0@8C_Cx=h86uR%_E-FV5{mh3y3B7!O+kxv| z5iW@V5G85~hcaU@P)9|`Ok2Dv07Ql)UntsHtO(Um`-S;Ajea{v-hV+xrAfW&mVZ#xqP=y7 zBZl|=!~1S55p?4XE_NcECN1u$_Z43|ksO_!m4ks5BKOc#MBN z>8;e@F;XdIi5h0Q*I(ZmH+Map3E6D) zsJTaNo@z8oU-vr>`yYVfcZk%A!bwtS91lKS?=P3mO`h9xPfzo)y1*nvgMl&eWO_nh%{T@3! zXR|yvaO17d8qor%cc9qv>76jw&v1xo88eMVY1+b9e!PACnj2y!I6lQcw@lz;Fcn@SVMnU_OkdJ6Qsx{) z12+W?X#qi-#|z5F8(KAWfsS6;+S;B>dqWWWjI8T4d8*&Q(Zs1|{H5sHB()V*Slt5h zouNfTK^;-?h@rHD9Ao{uX2%6>X0lZPVU@l5tFcA^YAYCO$5I}=$ z?Z0y^6FM}JqR7i|4IUJJo4S+()}0)Xp>TUgfIzb8kRNgk>K4maK0gh0ki zo)eay#yo!S;rwm|V2O3nQ>LO8dbQMFe%wr0e@cdqHX|lt>#U*EI6B%hC(pWM!Sq`POxH zZ=tDaKEeJb@@stXHdC$sE%k|yA3wf7RcHb|8Bq3IEDb^Wd2=!UIP7ByN7w&Rv`5V3 z2`EVmL#FgMe1lfuIJ#pmwq~aeF%N&#p96z(RLXc~22liAA41E^VM@TImLN|?mltdj zMM~0zZqp-!T|w%cr9ES^3nQ{jD3=B48LDOlE{_>)9WD_o_zIjy6CJKsba+6Bjzur( z+Y$ohOzy|{qKavSXnO@jMJB%iuow$`ks@WnS-BhZx!|A#a(jsfV*V+6?xJtHufaF} zscdHb-X|EcAP>F6-5O;fD)MKb{s60g8a$-1`V45t8>81})W7AiXL- zM$aUxrC6!>p-lZ8Y{IEKSQ0-BXr+mF{Q| zJ=GI3BM^&0<`mF_7KY(m3Br4QI3GhqaGs4=hfd4*@O>eaCO8&Gjcz#K&4m4~n7bw% z!K{Tk-f$e>>XY=DbQdnoLlq>dY(r0!PY`ZR<)iKgN|LQj7RJ%I$p3{D4I4 zoF6n9L90g%?6|HI-Ibvl{k>nFPn87b7DEkj4V=aNS+Z?SMv0C%sPpo~ER=P?&Wj?g z!N=`I$q`f_*ooC1o+~j_L#q=`4$N{R$z~MdBhYtf6O{`?7;3J>t=QHkQ^qwtIy&kN z3KzfUC-8OkuEYFzcn#sX$8?pMarK&Iva8}_JZAcu5G6y`m$y>eR~B;Og{wtVWwOid ztD`nsl^3Z8Mw+?N4{nzDwFZAFnaY$V3mN=ike_W?V>k3LKr1kLIjRtrPIkjE+tOK+ zpB)M7?1{>y2)1W|6F?&qs1>aN;}!>AAInK*{Y6MXWx5p|$dW=Mx$$`b_urQ34a6+d za+}fwU7dfT3iuJ!(=EwN9%dsh8uuaAwOc1@`+j0#A|ze#u0&ucgc7-@X5qw3Lr6Y- z{Q<|3`j~lz*AVW!SfvBsDfv7v{FPIfqGz6-x1%e05T(jf?w%Jeh&x~IGjt0aSZ)b5 zJUF_aLCpRP4zIG9$#^zmw>IsXnOh*7A0s@YlMM(qMkNR#n?UPy<+Y0~uIO+8;<)Ni zicTPau&n3QlCxNqMlz=27N8T1A7xAs(j#B0q3waFE%8O$Xw*so8|W@*E;Tit~*K>hZ$^#;c~gX6!WpxEQ?JzuN-@%`v6D0Gnc5iux~JLI9s=}$4HkxP$A z5uiMCdjOFt9D|ChgXwhOzz!(R4mLrYL4a0}$cfTOKSIe9P{K`ntAH*GVN&J-<@CC@ zon5-_+wD~|&*kZQXAVc)_dC@JF^wJ2j0R)bWou1Bf9-`<)^|OyPl1~{AU7?8o+xaN zGd`9gSk$_BRL+3?Knm1_8m~;yyc|mYOhjLkC&3Sz?lui!H9C=@N8>*5rH1x`9QXCCCaI3*nXq*C2MMTvh~JUUsf*Z9@X)k z8nsJu1t7V0?ZvDIRIw-*R&USb#lxn8sukD*{`JO*vA%kZ{2ao>;Av7AO3IVl#wBIE~NP$+^x}jC||hj2gEk0&CoX{3;w8Wg${pjyw23(OH*? zsXzWu|0Uc=1K$D5KV}33h$$;-2`j%158Ie)e;#N|XQKOg1I_c(gX5J#5(CBE^J;_R z7n{kw#L)%?%`O@znf2i;85s_|7Hg5I<0pmkElw}HG(E(l5-gY{$B@R9lC1qdqaH>G z*Kun8zLxc|sY*6Bkn7y#E9)3aNiSq?$#G2D=&^8ASl#gIdPCG4W`E-bA2bqTZ{49* zAe^QowrU_a9IgkF1CDTPfk2PTanJ{Z-utj5LJ)}hX;G&TdQHR`wp25C7Fwu`ng{ks zBuX;{?`O=*R~?@~$6-Q>=zWkqii%9=9i5f}*Q{gt-x}!8Y)?ji645d@YU;3nMS4NM z6M9>)8b$^uS(+Wx3(Nh28aJUsYMB5#Ngiebhgpt07Z2+NAk`8fZ-VFrSDw5T^+BN4 z1AJ`n_&_5+IYynUCGVE39UQ(DL;L8#{_lVMIN`?!)XTBeClUt4LFd}?;8i3?XoQAB z^I~rsbSslPz=@HaDX3>Sha2w)tPd=M^E#ridgn`CTQwtS9qoepJ9OONpK{;E8AV6A zg|eCZ_z6mF^j>dxm4wyM?_oo~hw({a!$&g$=dWRpgHF3)l}4@P!@o!TZ(Z63!KNzo zvuE5x)mF$Ha9wo@vAxi3Yl)g+mF#S6Y*wsYyH*;)yA9}ct90P7@E$|#6{DEdosLn6 z+K`c;j}X0ngRl*Zgu_7};d0n*5R9Q%33`R5J`HKi%D|~$Wfph}UdjP01FfL}8gxtD zp?ogZ);%~pyaM&mmeeUcR`u{~YHfXW)I5mEk`ZSjB;WJvSFKHZq3|g)Gp+PoY&$ac( zq3;UUy_GWx;tgoJDJXECSb8-KI&vmGMWIU_g@4pb$t4G`pqA_D>1ovS3>^zZwPp2+eT+$qn0~$Dgw_GWOlOclY6pG1kn!1#OMN@z{AU z-ty|zfx)jSC%w~)=2g(

lHHe&yvg+QK^wU1!Fu&p#1A2q(o@Yaznj8Awm+4qz{f zLBr@`Gpz`!GA0R&CV`d<2!h zTgg+ds4>m?h4yw2eH$09_V3?cfP4Sd54>}62FQ;V`-2xhPo)pFlG6r^<6|e~trT2> znXSb3tzq70Dz18^n{8&b579Ds@1VrT{Lj7|z8-go7ULTA8*dPaicqA z``PzyGG>|@%SLjx#-3bJh(EYv`@MyOf6TZSE82Z+ay`PQ^M~lVobq&vPKZR)8y_j1 zUB)z_ARj4Z4;K9piON8JyiUj)pB@6#Pw3kSArd+hgSXnq)a{LDm|`%ht6F-DL3#T%$P)FW1SNnVPbfw>Lp+-FBrhS25=_Y_?38 zO^xW&qXc7HOJifF!WThs5X%WiP!a4z37rsCn6$fVDU;8j^3*S{xoB^FqeXV|FNuMSX6pULH1KGlLB(`&%NDt%N+KDwZkC5Bhm< zNs!TsBy7=4^+q(IBv`60w$u%1rZGNzMKVQ4&xjN%p)*nrA}Fh}knKUb`r|YZC;v@y zXp3wSBjdbV20DlJ(JW#Oal71=-6UaGZa+$$AEtgFt1q0hD{5cIV2qMid5nG5vQ$%5 zX^EsyT3^{n%Aiu>+LQdf33d(`N3J_RZ)hH`}yhf>Ler5oZdK^;(RRhMSo+LTuLjms+W`#CykfJRejLwg*tXNz&6N`RJ zyHf1$UVxB%vn5$TSx6R8lylLN#EZJ)e5n7vGxW_*2WJbn{c2$K$~R|jt(cJX9!-kz zP;q>7ijOf?ub&=~JGJ}9Wq}{{eaGbr&kK0Q6uQq&R6|C*PH0B;k5mko&VI-aPz(Tp zbmo7`VoEXrS-b5Pr<@KeT8Y4N3rSM~V1epix7qwggsH#}@CyKZM|Cq^o2IWqfOU}h zwmK@g?v$dP$MnxIOZcG4dMEB-NjK~aH}7hWa7~@)OW% zm6wCz2K7mfQ6QEq1h+5=(&FqQoGOpNWu1^sa%xR_x@Y)e8r=7|;BRV8ePsSTc-Lj6hqq<6ua>brbhM9S6MNZNLP6%Mfrr*Fq?%P5L`TO*T zNRBH1oIdXuEh^AQ>i6^tYH#MJdt%6XiCv-jwncOADF`OE7ciI@%~Eo`!O`J1d~sTLQG^r> zG=T>2Maou!o)#(e@(B#tJn+Tk-HW29zQi=g(-lh12rWjhMJgjmy#E&MU9hAP!3tgP z(H2Q~^C}#9#|6-Ph=f!;Jm=H%2tMoqZ_o*e@&~oB6O9aM5>3Z3SvGDn{XR*1%a6-z7IB44VxFXY3?2)Lr6{k4 z{~}mP=;*=F-J7-$^uYTrhhbXah3ThPf))&5=I5Age7AUo2<6!?`W;39MwHZawtLzW zm{&}T!GjfP6lGx;*Bu*I4WzGpvu#mJG1$0VutJByMeQ~L8-dMz*R$41^C+l!i_WM9 zN4+;+1kEqt6}R`Y=VaEhRCOj6pH3^*8F{ie1Sof;jUS)%4F3B+yu>))ikqoXY>z_r zQ8pc@EpC&rOWZM0-81TAPhkvZlG)*;F36J8-9bG8-ceE?g*}~Rpj_8G^zsIzejN`` zka7ahIyh@vBwCP!I)GQmaM59?y2xrFqF_wb$N$N3nT?&P9govE0f@?TJNGPW)G(k)C_Q^0o9W1pTI@Jw4CChWEies`3-5;yi< zc_%Hv8W`8kTWK?R@k1O)_WbyR9C5g-;9`w9LE+@Xh<>N_Uz>C^Dn%^)2hMQBlP z8zR{Spbd4aK+IUV)Td;xonx~bPb=*1Flc7;Hw@)|%u);VL9hPla9WP&)eA*YX{8u4 znE_>iRh;heYH#fi?067P_n3pik&G$V98p{C3ARME)xj<@eG18gZN`>aqNvZxdJ2#1V+dU-6 z;&gTDdWH0|n&T8kUs4SFJgtO_#pq3jj2-YhP?1yz78&?JSpGHKe72Vmp7<>;u3f6K z0#v0Fa{1C?08qc=bW3x?wv6debRUMHhp<0E;DG56oE6EOVR9gtS~#0_{xL51%q#YC zPsiS$`vY5ZdAXmzA0mWAWU%>j`js?wE1?chQv2NSEtanA=}M`X+fcZDOR>q?rZlEA zSyvu&1fOH@*xiniQ~LQv@1!=wKnTd&Kr;{sM5Te2w6LA=viaX6^~YeA3R?P8Qa~X> zd+Hj6yg;$px%q1Kd3q2F(BRbVxe8HFykoDqPFtpVvr7~6fn**3Ps=T@>^0dD#?nQY zrdNori>k4(EKk4M8#;J)yKh!jtWsytG)dzwCa*t9Y@m}%sph?8 z-@z*BW|!tw{K?m+VGoziZnasJc+nic?6a1r`*AtWcobTMYsMUJ|3U~)x@g{1NJrdY zG*E}cZ2nDvP@k(Xz*MMX46Rx^A#U8Lyo)3?0dGmg`~z{Pj}!zyn7v`EK|#%Z@+d#bX}b8ZH>WO+Q{O9-;C;6iK0mf#4+CJ$N7bXGU~?2n1A>jlG$_>dHfAop0R zePKS3RG)l4UpD`(dcK9wfufoIl*}Uev02GVag0s0Vxe#|vU71$2+6_}E#!@gqY%-d zI6zNPB6ruk0CqIN%O(Lx~w$Z!e{x%rPC44!&- z%bv19%S$rUyEHVTwCZZF(}S+e%EH)d%?m%n%-GADJ*4f*o9%@bx+?Fe!AdjXmEeWE z)--VYBKNav6(Wx+@lhQ+$v1l^kA_TQk%2QfJSnuA58J~+CSfCksPcbst?7&OvP_%e z7aJ4|k39<#{MPj}JVJbGl&mf*poI|xrH-{UJo)GR#89)3Q`Z6M`{e^Abpx_~t%?fa z7Yc^U0tmv0>GeHlj7aEgho#Em+yYQ+?YD)kn3?M1gaY)7NzMUUC zsnDHVjb$}D4(I+iE}tB{$(bhF=l5T9cyzovu(2vGtKId7;+T{Dvj=Q`s97cI^jd|kd!?Q3 zB#TVJnmhNWG9PyRw8^@v;Cw2ae&_yH{qF}tjIbT!*$Gg0g;oAh7IFsw1?z)dj9I#^ zU?Jq4>t(?kr`&x(UVxACcI1-EXFzJlfby#2G$D`n#g2d_wFer*a)h4Ick$!>+7%bi zHkT~u`&~l2Vf9m8pM$N0rpt%Ml}rbrvzDouf%H{-!Y`<{y>EwK^N=$&)qGWj znCP)!PjfAixQjDB*=l{!x420riOQP@{SFwrTeFZSX5r{DJOA#PFj!Ex!T;pDk(Va7 zE6rs;%Xjxf8OnjC~J_?eK&xVrTD>WH=(Xm zq4yuVANWF0efZ4!%3M%Z6``4W(ev1?_TV4t$8)lI%(DHZR?I+cyf$@jhk=m%EX14C zfH1B8%mAs0zD>qY%BqeR4_=xMmZ-oSAzc~_lbB2q8q@cFF87t)lR&VsODoVRAUNZz{TrAlU>*4-bE)$R_EN@ zxyk85C-f>@A`#+WOY?G;mCyP~Q#bE16|wg}dhmmqTApNi`tCN?2VoMGlE?@di#r86 zv~q>uL1zL>idHS{zecotR*>|v=zn@^N6HSpE7~F5?x!{@+!WrJcmJ_&r+KRvk5&l^ zOl5=^DD121{CVXaJ1R=RUVBb1aHD+`f>CsXG>&1KE!^XCR{=IxWrz2Mr_%K+$Q ziiuQwnwmB59e*q_t%N4l(?%|9n@qtzR_;Vex3V~L`h4*JF67A-C^zrEjY0&J0|g;2 z5DG;x0L|(tx3xcnKrZ1W{<~pXMPpjE|X5*UFcHxt%5Rj>`Yy3YIY z6OTg$U}^cf@fStKGjyVk>aIPmXzZ~tH)%QFr|&5(pzkp<20tJHvA#;?wf*9B2zo<= z!q9x15RC)>={!MTQ(l9#17BXw`RA9jFDrFc1G#f`)txerkICJc@u_>AeN;fJO_pU^ z77 zqfnEKL0x+M0h-+oIWkXOis*xM&-u|9$drmTVT=)bH09vFCFzv|(9F=3iRKKE@I!k@ z26zId({8!K!_oLZBr0v7Sam&lU_6&%k+~J(VRC@xGnzIU?K7&b<)ca(d}=#{^t1un zZ9}@Rqly0fs{Ev85e}^Z{vAAw4G(|ozPzXaxT=R9#=idl;zc)p_@O`a&-sn0;E(+y z2|weo__yGpZ%>EaN-~)&3Q@Z+Bk(0&Rn^_Dz%*=rmNDR9(7qacl%`CXNNpU*3-B>{ z-D;zrdKPZKHL3;;e^-ZGhws(*U0(3ZJOA#C2}3V1Xmk0;n|VVFRiU7Y+N|~(3*KL& z(|+zhY_bN%CT|_|a6kRZShGk7e(A4rS0yC}3Xb%bI_G*jZykSbLra~d9t)%>%T#pH zOES!4*4}cB|M4g+EbPO~*B+KfDh;cNO;&Yjs?mDyOeZ~x7P$93sWPw6;=1wS-Ov`b zCstK`H`r6Y_9xB;rxl4#&bmLXvFPaQORnz?Ul4J2aX~w2W_#=A>2dQ^9+2QX{34I) zeBev?O~XwD&LjB@*;kECuR2VeQ>^ULr8=B^E$7{DShvm%0PQgt?|Q>MgWMm?CidkT z^h{0&;z#2=_e8c{Tlo5OvI~B*mV2*!UI39^*de0j&BcRn9t>+9Z0zEx-Ma3&Cru9BdlXVOkg7OkG5p{?u@!k71$L#jCLqWZ!ly1GF*uGuEbw;+j7AoOL& zCD-{qrA^mv+LxL!l$|;pat6nzA457wn;h<2TmEJRnS1{!nYE9fq)?hxYf=YNT&|xL zaiz6f+jFPgDW$h*oP|`411?N@05(nbV1`svjZt3CcBkDaCKKp38^I+D^ywQ?BwV_`461})=Ip7qUwwZ+MH>*~0espE}ldTaZm z>c)i)(h8Ect{^i;w^w=CnhmsAWcGCzBxE->H)&d}!#A5UUzyF*OR7ITcJv^;F0|op zTl?|xAGrz>6u}SE^CN3NX9n#RGi*0EF*y}DxyoHOhSB~qLsS_0yNcT2m#X$B=sj$x zP7iI$qz(vWK2_p^AET^!;nPzmWq9J61MSS@`JDbDbs^3R1*S2=jHGM3`r*BZIoF7b zv{aQ``P&}fa@4eN(RxWA+H;dYB7s{p4slgO8IjEmJ^q6PGdXi4&$}x$nX^6pZfVzj zEnCOc+qfo#RcE17aBQ7z*Q#&sK`+y13!a*pt$lE?ODkiHXJxv3?R2C2kY$QU*v}$S z>QEjJ{L~=yQeE=nAU19P1!YW29ig0h`uiq-jbcXffr#dFnK$id*)E|=V%k| z_Tj0q25OhI;ifX`y*;GN%8%3eChjZf)b#_ItEtg(ljA3bwh^GD`}*9D&c{+I!0MqbyX{XkcM>!?<5RKE@TAIyUzT`TbPu(kE)M6E*7(O4zQ) zcQqAtty*^-UV!BM>Ku51ksVNI6Ey6q8q{6^zl~E?)S49}gik+MrINmPA#-+4t=b~9 zJDP8r+0*dm?L0R269=TldBdI50<0rZ>=gYt=04 zbycZvY=oY=(9XRw7F|B}ocun$v88N&cc5gJz)olj4;1&cTv^8RnEp)h2Q*y8>kAvs zzGJjg`|UaDh14%aS967901gfx^%J)cOy5`DvYR+pGw0!X^Vo|ZO1PQ&Xw235jXupy z%WxWI7&G9feXFl#-P{pY)m>B>s#07nvZly1y~HLf#XWLn)5EEA>5Y~=Q)jY266JTt zkW0XE3R0QLj-9+Mg)z?rwY()a;gY!VnW3L$c2vYk&Qgz%4Tl_JzW=1McepWAx4)Ms zjo#!C#-~3Vxwamkm)*;&Ua?1X#c&ll6#KqYFRLXh_B(}< zxI@=IpTC*Ex`B z&sKXN>|~R)VOz5A$kmRG3sK2Xd7q`S5qnCjX1`3Fn1u8PNLS`&twrXc=A+S{4e6DW z7vE$zIU2)D>o@IRRHmmSPks5R_NJ=+@tfwM4;SCOP>5HZ#b;Xnv4>6Ar)Nk&g>ctE z=x4a-<8KOtUz57m59M6n6Db#2Q(IV6!H3se`H*_xUYLD*kk&mxD1xLr(szAgoobl1 zQn5ZJ^fPmO_pEIu5Rq3QA)69@$A8+*l%RJ!y8ZL*LLbYM^lR_VtiFl!I5HCY?VPLL zDI!D1CbaqTEITpft27?Y-GDA4RcS>JChe_DwT{kr5B&W3e1h%Tl@-*px>mfl)Jd9K z24m&BYkVi98!m6MHF{<_65v^T4L+4OEc za64g-d;4@A%iZto-%M6$t{`8XP02VGrYp4_EU4hvG^q~1yu9w{E<(BdY0HyAnP)>& zgse&|y-<>$|^Z`NccGiJVy{lN|@&i11SE(BgHYL*~y z3KsM`kO!PSJYn~_DlD>-U^@E6^{~6_hE@mwXD)}3M%U0u#xbD@4ROOH2T|6^X`VHg z3V-GXFjNenInUP8*5%?x!u(^#h?`3;ev`e&@u7O7@s*w`(X}>GvHueGf>;rho zcyi^Jk*fJKwCbRX57fJo;SI_J)A|SaNgXwsl&{-mJJ$=pK20OwkJGBP3XW{5x*MxY8|=IpOW1YSRek!3 z=6vb)1vS~|x}POy>q8|-ql%qpn`BiD!^mHB{6BPla*Cw+9~zzXuthr=9kb1sGL z)NSg%+5J81J!9~y(Lvh!1%Zs6=fApZHx9VO7`uy_hpu_9=9fsORr||c4m6)*#o@Ys zUVvY}**M(yekfOpKJ8bVBq{wu^NL~E5qs-irs*A=Q=`uoKKWSA^Q^pXb7U>PUj8}t zX5NPb8cn0x18tu?l!UI_2^c((HLyy=L~pE#g2SzEM*klH_#g!d{E&|@PWo<@y?&R!T*~gucH6O0L>z7d~ z9jJSEy>E^C3i7p9a?p=_zAG844rDgTOt-u%OjW6JiyYb_^0}?s@e_2L&kiEt+gGCy zYH#n8pr9t3tP4QyWfza_b!j_G3z(ceQMl0AXwVZsc|1^kl)8yuaJ0RCYbV87CHezI zc6J>jU-k&ATRP>n5_P2svO!Pbhpg-O)AH%dEbr&C&R$>sWw&K!)7L5aF^B7UjP!@! zk4D#-OC??x^`!NZ_S$uuF ziBr?_CyxE{wZpO56WLFXKxH=5@=A}aNX7rv-j)9)y?lLdx5eAy(xPdlnPp{arD>%I z-|D873*}a7YKzM)L36=S1Waw!vN9z#Ff&TSr8FdQ;cBMWTqvaoNpZ5sSb$K7LkUs|Hu|h& zI5CrBJ;eSxEUy0(x8W9CHketY-1f5SiiZS}KVs@HCgta6j+?GoPUDI`UGfXrV6`mY zEdmAaE#pnu{MaG*M!-WQ0n2O&f!)+gSy&RGYPtg30Qy-gz7Vq;oP($@`#dMdEG4mV z^%iKm0>Lr#UwT z`H2U`S9BVE$6V(+lnI>g?uJ0HUtRbI$*ufl%Mv*dhlqi0<(R9EhmCiS_1%QKM;yQf z+#tjVQmxX?BlFLK@!g+_>TCHaxSInot1`30g(++*1i;zZ&?|L%P~n}C+jw~1 zP2B7)d-*D+5)-}>Qa-0D=AD@NN;5AvDHO%6&e)caa8at<2VjVF{Cpq~1v>K2?vItY zB57_Sn-?MaN$*J%sF$SHZW#u*AuXso5vtP3K1uNgZJlNC^0Dw{SU#4<46US?jz;b- z*r=g_b_HuE?~*-nX~EM`i+)F&fNPKbduGL!LZwQ|mTvf*!NiEZXl&@OyR>rwl zyfOFciz-vpot7a^G{Pa8+7T`=6?}6ZX)?_-wnPW^gysf*0f(rWGQM~}*fjD^I+_`R zjZ??4*Mr#8sd&Qn^Dt&5qm&4r>S8|-~NaZ(Q1e}5qGJks+T z5WJPB*aj-wrn!HAKGOlKCD>AvXdJc6BJaqc9y5SK&$tox(9)kkfohqOj&H3&y-ahy z@Ss%csZAP(ZmrSiGD`sPYnXB}q#?#G?C(Lhoa1(fjwoF zG6%reqN@>!SGMDPLO7RwGnp2+>`*}?(jZEsGcV(wod2Y`e5VRs+#7KcoedllVkRQe z!xJL5f(~RJUCd-zd=FuI877Y%P`Rs3)ji~fk5%udKNlD|trK0r?L(WEy zj<)MK4-@oaIsBe)HfiEh7bpC;x=yJXj581?;NsHwaq9xbDvx(%l%cBpvAbf}_WSUKP0QpO^FlCN2Y%c*iU zd26#EH^J`~0*QD)UDSRpqV^6#vCF&6#bNqcT zwaoT530c3SBFVeC4p6S;7#z-idtSc{I*mQfKd}!5tsELZCBJi{tZ1F(WchOeGgKee zGPQ3V_)w_XD#-O)L~rf+q2IrO_4Ja1=!{ro4B`vGuf13=W3M2MYnFr$Jh2)VMq2w% z+Ad`Bs+bl24W6N^5`*(mxW?4*KziwqT(&!Xkhu#s`VT9Gf01gR*Z;(Y&=xX`tnQ3s zZAP%>3>qe*K<~0g5svMu%e7WPxl=o)6}b@DtRC-osU8IW+%x(qg450`ZaK+{*9%qN zAU@0YCo(OJ3UF!SS!G4tOdr4+uCw?46j)w>m{2H2+t7ZnA3-uTNg<|IvsFvEBD>n! z+Eh^-Mz337G{&Bjvj4(VtX{%p{Sn0BmC~0h=%qWL1?U8U9pEFMXdl%b{;BbWqZY7Q zDq5}ln(}$9lrZj1^B1S4Kbm^e3ccQx7;X``9^8bEqiKB&mjJY-6}fR;PTcmt0uy@2 z#SsosorQ~-qPV=;^Un|~i|m+!6$2BKd5Uz_IMA*{Y4pvi_@G(H;797DT#3LO>5v#1 zFMHtVKClvCcL=*YZQ7S*&w&5vyP_2SXzVf4qZ#aip6LcWF=ft7HE)Q7XAhn_H9ZX& zNO4X`4Z80;`QG(_!_49(>h(*1ON zxgWmuZuzt$EINk9C2nBY za@b@X9Op}SG}6%cW`LB`PC@>bX}r<~G;;&KQ0S`jX*2rTCEUc9IFA=HAGz#5^t6%v z)BQQbhgoh_z-OyBf{po5JzS9kqF?Mc$~areNtGw|jmX2J?mlAjv+y%Laj~QFTW(bY zUj0W(oslqwmn&u6`D=qGk^wNV3^SfUV2tE0Jre>XM8=Opd5QUMj%uLA=L#il*+!Gq zkvv?2Ipa%iLRI{G7H%(9mBZu{v5}!yVyJ#whQjBu-}4DTfnY+@(8LV3^xe6rxU&#U zyKBJv#rwSG5Fqc$(60CW)f~kACHFZNOsvtv>z9HWDqVz+EXZ2lh3kXuR**~{Wtbyv z1SVRW0oNIOOh-;VN|1~R=corHB~F?B29XNXlQ4mAEh>4GJU!O+Z41(@>B#Mug4w9W zY$s-);s_ZX0Nk7a=(V?MESqJL0+jt)v=9l^Ae(hlR;m?kXFBg(kUpLt=f;sbUu;5U z4c%tNK*4IGh$n$#l04?c#5RKLGT^)1n^>zwonH{C(Y20Gjf6m3Z;YThDE!%0sX&8h zUgiFsFq{b82{AIyOWeU=xYyaK^|y3$HAhNgb{*@z)!lL>-WXpPVPWo&6mgN5Nv_iF ziUdLvbnl+S^TD>TE(;tU1OZugb{2%IIS`{=xMLyn;vOQ|@y?Y>PRSHCZnwh(S+q^7 znA3{k>YfM@#&MbRUH?$6q^qz|LKJG`Xqt!6qqdJ+e;qK&XRmwNpEeZd(UA;G_GiV| zz3m*$FQ7~GfXlYk$NfDN;<5d?gwN0IOuZ&s64^6CxtMH!8Ds-X8nwRFAAiBAbL>wC{IKFgVO?dy9w9G_d0?Wa@M}yYH!9w5Oi9hcV_^Xpu{@0EE;mJVY2U&3pK`1Dq`ie0D*y zyr4((pLEuIP3uu5m5~K|C64ZTH8$uhn68=|^IY|;_pM#PRcB2SXP)0Bb%6*<-V1-+ zmtkIv+Q(Sdw#?`b?wp$+i<@~npaUR#GSZ&(8wBe9hRq)e%w1h9TGZr~1mp-~Qa*7u zqC>@1PWYAjwBE~e)+H`->zb;`kZfnZQOl7X%if*IQ5;w2I*?2z+~4f ze_r{CstvsfQ$Bznj-!|Vi!SBgzD5tL;D7hVE)Mgb1oK0pQ)Lr>C8yJQCpglcx}ZHk?VYoE0s6Sj@yJSu@PzGh za>T0e817&CU_ITuBzkIN25o&47ya<|Mda*Qh5te(ltl5lDto2DPL=?}4%qR)OmwZ9 zK|4|~(dKBMLU8&h>cRsLXg_tueJsKmIWk+b5#}c_>f2j(DY-sgQUO!;pkJfW!lkbry_i}yzBDO+PSCM%;VfII0gfKFLFe;Xk4>n zb<~+on4kF?KrXP8RKaE^4)2BifsiWquZqK_AblCEa2Y8?lQdmqcx}+XFSOE^g8q0| zvV1_f`Puu48!(3Xfs)R@QXc}`Pnq*|cJp@Iu92>y2Nk-H;sMP7OUhXq7qt?^%xnYB zjFl&Du@`vEg z{KtI{{SA}5C0#cffNd#_89sIk(U?nDl*pd=_PJaU`t7Q3f`Lp}Ci zzC|qzh!H(;xj6WNWsers?46dSTJ!|jUu$(z`c%Kn(;jgPO9fa__t}YtNxdrakE4l+ zm++LMX%*c2gEyb#e(;vGJM~!Tr5&Rskt5o~4y$L@K!*6mp@my!?*s#LUHl+`y{+ck zsbNi7ZjV1KY^XFuZnf+|*ioH?p^B1ca zL4!Sv>eUXOQDd?80mS9uc6nIYJiNCV*9!VaY0=I>Ie#KI4wL;m%dd7K7E7(^_5Q<# zoXf*hrm5l%oxs2Ko!~ZO04#QCrobu4M-Nho&s@qNI343>px$o^#rg6SBcbZ4OAcG| zvu{D-!eeXgiSESp4_mh0MiwOu0(rAjtAf(E>C-i|*U^&&X12v$cLN=CTk~Intwb_0 z;c;QX)pShXv+~2`CeZ8l0KQht)ps4KR{lkFSw(455T_G1%qXxIVn@z9Ts*YiI(MZw z@5ex0@49i^Yj=rjZ^7})#;akKlF{NG8{$wJqL@K29)4)}E}OpQ4Z^>87SUB!Iyu(L z8t(zB+CZJRfq@(}x+5ZB=|9K}WX0drex>FCnh7}EkGUs48wQaUiuE2`CV82UcXF81 ze2nF?VL20qD$#{M4sP58l9DC&b8aGU5e~24Sh?13Ml;F2!RCBTZ?=_mp9hma`O>enF`-VYZFmA*gJCgqc^pAGu)#pH?ycN38JlAckRDVXf zz3XoDvpzPNiLc~%83myBtp~6n-Ed|3?bV&C8vpdQSyWAxR`EE4UqH!)DT8{ep24|X7v-BN{QFyb^kcc17s#xqxN-R ztgW>*{#8L|`$)0wlaNs6i8_MLNxNe(s_~18{K%CM%Kclc;^D-dZEJy96GXRr%Q#^- z@k-!5s_xBFQgK*FpnX*Jr-lpjRRSy1fULW7Q?b}@eka#!UDq~+&st;LM=asy6|K7> zLN=6%v?J!|!upx;1{*5F&qD7k)sLEc+}w2Cv|?gnVnF;rloGK4lF@RWyq5J%{=As` zKs-7FCKQ$-%RSV7j);#vka_cX1s7R<_!)2tT#|J+|4FE@`P{3ui7X3{#}jU*51F*NI)jpQe~)ZpCbl`b zvvL+eR5Y=?V2tgQjG%E3I9ZqaP?}AHt?qT4HdKF~i4JtIsML8tPw}V#jOkvkkD6rW zEsXmjsU_uyRnOYC)NkDLXH(7AijfD=)u*-UjXRQu9q~N(EKwX+emPG6+fGe@M`-h; zwEDH^$VcwawRu-FYT>|QEN%D(&YWsUI{}pg;TF~`%fsdB`_(0>6`auh_wWB#{vQvB#60!V`dMIi{aOCAWPQ+8oxbIB=D#W)|K3-- z)I@o`AZXFAn%KYb=rspr(nAb&##VJ1Ny4klQzentasT6j^x-$vjJM`MkkGw>Q3K;xb0>)OquQ1#Q7xZa`m4dm3(CRAjhvGxuaC%sQgy0+XB_|a z$eU&wc$Mk7x=X6XxQ1Vs?hdX#C=>5^*LiwMnO6{G`>T4h%sBjKUH&0WJZy>r zL<4n6lK4}U`G!BQ7$4MxX)B%ny`TZHgQe=s$5X!Kq>)qsngeNPdBEX8U6Pgzt5%pO zPZFEdZM1+7u}qb;y%ewb_wwH<5*N(@ytavQ$o+iSYN+ah=74HBN%U*X9~--aCrnc% zaLh8|O^KX$O=q5<(+GZW8zy?eI#!ppjto#;uG6S8JSdBd(6is!#Kf;WDAPAd#jiRj zQ;(xV>dWOO%J?GkuSfc=xvBX(9~( literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-en-rUS-xxxhdpi/image_wifi_list.png b/app/src/main/res/mipmap-en-rUS-xxxhdpi/image_wifi_list.png new file mode 100644 index 0000000000000000000000000000000000000000..7d99bc65c29db38bec14b69bed790b204a52e4c1 GIT binary patch literal 113423 zcmeFZhdb5%{|BBG*^-f&Q3=_U5g`;Q#BuCn%id&1c8EeHBT_hK_TD5})iJY)$lm++ zJa>2Z_w)M`e%JMLUH5(6H^=dQzuwQ+^Z8h>6RvhoiHw+m_|&OWWOr`g(l~VrzYzYR zBsvY>S-+9acIwoHQ+IC3YI?r;J-R5V_i((;NuyfhYUT@Tb<>;!cdiGeXOypGzDTmZ z^1wVRtt|HTlP9-1KR!2`Ex55lXB~A>mUH-)cik>i`^MAX2t>u@@yh)1h@ugL3+(@X zMIZ!Y{cvvm{c1OE`1_OethNA!zu#An!ify~_bZ(NkCy7+F9p%lynlZo!kQHM_x0y6 z^o4(4&y^#H`uloyP1FDX5ByoAa~P8nUFN@w6qc^_w95kTzjZ2!SljdYpQrTyk)@rN zl%>3P?$^Msq{-jsoIWlm;Ixo?Yai(^`rln_cJ93@icnu{|F0a=Li?qw9}HC_a@jW^RB#!c2+u*>DJM+9(|TOiP$=cfg$O%L^ZkB2OPx# z+T3cy^&9s*Yf^-x^kR>FZZZC?@AUD232M}i1j^mPwAnnM|7~la9gfjeYI-rUjPb#k zbzk{=A8k@8jPt`Pa7JeSTb+;R%;+|yY$+8zsF?l zH5QL1>g@)XZINvlWvEM$4UrY2c6{@s3?k?Z?4h2Fmfs=JUb`NqQ% zLB`(%s;-T_HO~`2yuO7ut@UY=yX7{9J}_vh1^sb|5S9%I&S*d|7fg-J^KN7V$vAreeSGE%%E;%*TD=m23NHgNTL+ zfrgJZkH0NRJ%35_s|U#`@OLvG;chp_581UHc1uaq%cRX(Dxz7L3*?Bj+e0p?9t}yd zThx9Po0|Tq#EYaec7L@amvFh}8N9_v&wq`@HTsM+4of3mhBpayLczR{>+zu#jYW+_ zr(NJAK01-do8i0Lcn8Jcf#pH@8Br^@JP)~|ynqh#wtUM(HlEx6mDAiyxQ-|0xXdBj zpMudY^o8(yR%#u6g}h3&Lat<;>$UCb0|YdM+uG)}1~#EhxeaADNjN-2|Mv#H(d{7* z7e&U-SFsms37lP95Sd(9UC3E!TtNAF<=M-|d2v&`7rgE8qINB?gd-6X$}YtO^PLimQ|vU_c{BMFNq0Y84~h4nq3lcSTSF?ZGSiMD(Xx_dFy z?lH`WavGa$QMmTag01P&DuS)g!)Ydn=i3)`-MZ)p4^QR!isoJojy={t{+|_n(rVZE z#GKs=VW1#j$V`*pavss?EW$NwrGCw{cl8W6n)p)U8L@IQz5)`%M(_7?Z5*Bxo7an` z#~$}RY)Ln#V%=ix%e9xQ{kUEK%+1rUf5#N=Uaq{3*6f zKk_)S)2%%u_tKI|$uC{O3h`6PzFiKYh(bXqcMR*}zfFQG;t>IVg00H@=%LYOZdJt1 z8sba(wHl)74taFNKOF`g?HeYYZXF&%J;I84g|d8m|IoFdPCg@Na=D*WV{oGj}+~0=BD_%NwnKsNGBT7q>hbY_*Iz8mJlV(XhnEC~jYo~;cVa+LTl_1~|I5Lfqk&RFN3#;*Cpl$J6Z zM*En9@~6oEo~gRr>KW))^y4f_Np+&@Z@E8DVUBaqv~I#7oASLwZi8FPiib79&A*&v zYctv!_Qz;QVum#abG)Mp-WSA$ZAsc)G5b3~B5+|Hpd8=L@=Rl>)^hxGqTRa~pE9;X zSLqqeL1#emizO%Re%vFlmyO@F{>s zxkkcW?cnoRS)*4b6Z32LFRv{p!@jaDO@6G(Q+s*N%IKkdGZochR6bd8g3h43ok_z! zGdt~n%l4$QhVRP=ZMqA}y8>Nsuj1=O(MJAuXsLgUwlaGChr@ZP@KMwD+(+AkVVKH( zoJ_4Vp(9ipEfJf7A%XvuWZ;iL#?EbXR|i)mX^rHq1+;L4_7aa>?{LW~QA${9L2Bcy zo9sjNbk)%auUW$u37_C57T;?Kcf^EqwO{1_+!`CK4{RYqQ~wz}trz(<)(`4Ky7Ldr ze;N?jXgkV3G*B$gIRm>sfXW7CdTP=A#t-`)e%7M@AR4>bh+SjhL$38$ZVjBpFwZRw zgP7BqOa)q9YPwofGWTPrXn(vMNonuQtbIwxWfH}pRJ1f~@%QnhvzmUE2)@?m)!KNQ zAa`XgM`4S2{7W&Fj8g1RDyf%0G=3}OnpYY%Sbr-u858RH`#^44-kO(!si{aFe><50WN+nObw^^vN|z4Rnmh$%ED4VSecBLra#!AB~uoMu>iHD{4I=X z+7hXsU?c|b*5}YOy_Qy6%gie66JS^n+D`2?IsW5EODF|v@AvOd-oL*@N=|NKW255C zSUnou*eHAV?%gL_`t=+!?RY_r0Uj%3;Ry)|6V8=>gD&>=_9iIQDLXqmD+h=6hK8Fh zj!wv=l7O1by%)I!c<`MPz^XDsk55$H?M&1rA%6su zf1kqL-5oBRkB@JvFGH!qXHV$sw{L3`jd&eB%;bcw63pj_2}Bsk-rTcn8NZCZl?Z#q z9a@-De$^Q5_BI|j=7q$a{Oi}vUkBOVtXQpqP6}mE$xSo`A&D z59G)>wttqpATyKT%9Sf&;o-8jw!GFhHbrG+v|mlH^72mf$ei4|dzaM2#AJ1KQl6Ke zzj(V}>Ax;>`Cb1i*$qozj6XK$T=JaqbQ%tIF!Y7P#L`GtiD247!aq`p4sVud~* z-KEQyTX*;`T{`VBR`VERePo;(Q&}l~j)sN}z9;mGbZ>8Oss~^8rl~2%@{h`(q-zf8 zZ{OlbBrkvO5xj9D3ZAgf;jUl~89a4oXQ8S3Vk};t8-*^sv|sj#FsGOt$@Znzt8#t3 zzcKN%7im5P0Hp9;@dyix#PcV5OR_;9@4X2vWi1+ZbAa*ncx35#7GW%iQokvdLtwb#>2zzB=J_F1gF+Au_6}7=&Kktx@&! zlU7tzM3s;9{6564(@?Qxh1Zt#_fI`NN)8SV$ab3W08tqk{xisO`_Z%hmxyp*zkc0v z>UDB5v&KYh=WNBJjZ67P^(>h6_4U=my^Yl49W3#f*Zw#w_SR#=zkYiGoq;f9F5g$a zqLlcanj0OVM|l6jF8-IKxi!Vnh4T2qJKw@6LMZ&ug@MW8G`~zG$?<3j%tRQ}_4Fcl zcXzX%r=&#tAMefGjdn3H!G%IJA>Esfkr9xQVO^hQrYrQRs}0NSvr^O2x)_cO4i2Vg zWtAz8M}GVEjqA#l*e5BstDR?wp`@E7@}Y@LO+lrM);xN!?gG`lI8eYLCPwSz z;5TQEHnDcp&YPv>7e?`2cFiBQWJS0cw-Lt7VaTPbvH)};ec^l}_Lj7?Xx8|@Jbw4? z9m>jT{%&+}dOGfzGiSoWheo6a`}M(UoqP^^PqH&;G}`m{P#mtJWn`?{g97fz zQiyudu^}QdvN@hdo3l8>FC=K>qJMlqd}89|y~>d##Yd0Cs!U4{VYXMgoWk(YJ!M~iC0(ZPeR;$0xvXJiA*hE&{K&U&@S%YyBFeS-hjgGKi*h$m5}mW zy-7+3TPHp~9%*1ec5ui{jvOd3Qc_YP^z!oZ%lU9WHDYDu5gC%OC;RTD<|xK%hxWok zLV>xtye%y)7cO5Wgy!?XD>?{=M_l~;{S+x#7Z(>zuB%sR%5Mw(!zY3*JIbDvZMhWg zFO=XczQbrMeW@Kb^2KD?Hthbq&ZO__#tmSzd7n*$d+{Q=&@lgdhWr3|rowpv)RGeK zY2N*d*OTvk>FRo0UoXR{rKR=h)2C=RNU8<`#1?;RJ(#^Nxy&Sf*65o@&PF}4iJc_2h z8ac0aP|#%ESJ$-qQ$XK-fWMd+2(MpQQIX)ebLYZhCznU7jqSQ5ZJ?*XzWZ=Jbm42J z3hXKh?}M?2cnLjo&Aq*pEYdz<*Br)f77V0zuttvGKt;vGOm{rL{He2(WTez)09p>$ zQ1tnE_d9p)Oj#Fy|E@VRGc(Z`L@3*3^M{%5mjWUlu_w_T(8FG-@fK#M_bY6t<~SzP zB-6r5|Kpu_qsQh0fp1|u@pfbu7a|t=vKIq7jQ7p4O|OrFstc!cdJSc4EKABGC@9Fq z!$ab|72iXr+pz8_)oUdp@anEWQrF;*A5Xe0NETz-R#*y86B4%4sK>sDjeVSwl0qHB z^CQ5#2#FGURajgcG&(x^z~7yToDe40gsa5lme)m@Ki5i}sX~Q#_^Y#+_Nx;E)ui`*H9wwsW$ODl7(orG9xwn@ajYIq->CVsz6$^H!n{%4U-eMr z&)cEdFpeg3>ohvl>op@OswjZTC>}B;TS_F6pM2X+^UFqjBu49e3&UwXrC*&NfU{VW z*JRR=&N{U**8^kWJ!jhCC)trk=ju`Tdx>A_sytR$#I7BkpzIwSg>M0Tuk`G=+JUl$DJc=xSe*Y*l>8rmTSf6^n*pD3{l-Knw zr7L`2{(fTpiT}mz@mI~$4Ox?&h7Gz2`AybFb~FWwp2J$mSn2#`X!W7=^z@YVn{6#E z6M%f61gQKC^z`(gnOE*sK@+}o>Cz!W@=Ra=0D`s8p#_Gufy$X@<>N<|LON#yzx{gB zJlU|lE%x17bgb4p^vxTlj+%E*p5Qx)X$ZigsjI8wcs+hbT&$_PSSGC$vJI)g-@X(}r#rxwxq`O+8#a)2jJPDS(#kr5FBH*Q=# ze)A7$;F7X$j3OA(m}&lge^{E{YAfCoBkSbp4H#^@jKbOTVCdzwo{UF(@#6wJ2s`0~ zI-{u78V3$Dc--mb<#gHwhBO@Na5XJP-;Rm1gLqO{q&!bWwoZBI0g(OtS$WMJUZP-W zc{vxsqo}0RH#8K!uweb-#S5m&2<~%5MMV{^zs_1)TQ^lPOil*SkagQMXrM8>iv{(Z zslkq+N368>8g%vbTcESF3=E8o`Q_|1+lr~A+rYp>AP_C7!hd>w`^5?YljE~{0yJbe zDnF!=p;ei>n|a&D&5cVzma;Z_3gzz^-Be1g)G*;IZpH7&6SYc>PWr1-N$1QX(fg z_C>U&jHZQE9_)V6egu~i&&w~$kK^_Gj}S3xGxQesbDTjw#?sKEGF?5rSOAQ0JDis< zXVle6rx&y@xtjv`>gebIY~2`4LZ@bENM1dgu9I7M@4pMw86Rq05Y~p04h*xH$H@GUzC~KHfNL*_tMIIN4O3%^8@dl*GsF-h*>dZ0wEN}i)JQVT&#+9| zw!0kW1HC5Bz+Dg4{mwHRr-dvi?JBJP4R3N|zy*u-LanT=&*JsMc<%f9^=#ijaamc& zTu&+%YC@^szJEXT-UpIhlA(ctP{1*Qt~b25NnvrM$H%zy0id?Dwz6?>;I+24!sb?b z@PK-Mf4>)A8yJWy=>DV1jikA`xp2r9Muw%d54x3R zVo802gY;jm3xpFqq)J zzP<;9`OP?JXt^t6wel7gm(HF&tER926rOv)jxRhJ_2)= zx9sitBqSwc-pFbj8S#gV!mNK99j)xg|3?Loo1>NLl_-gg(TF8SE=bfb1$BM4n76G8 zOU*Fq_`1z*cqIwjO(w*e6myqynIDPD0p_x+9JT*6>)i1r4S-fyEejOG*qEV{%5-Za z-P-n&p5UdSCHMI)FJ4|=l&2@X$MO# z*-XgT(vr}t)=+5mpg&KK{`~p9U+q5EQKR+#Ctu2IkE|@I3W05_>F9*(mD?vPdwW-V zntv`W71h+%j*Ll8NH`tTII-h(aB$$X*nic`-282B?p-0GBTiWUiHQqib-q0LxyrY1 zH`IFX9Om=QJ6Aq?{+z?!^eR7psA9%r!vZBcyQ^oZso9=)JcGdmz%ii5cXh*1O)bD- zyzY+Q-|9=8X!_l4JCmXL5@+$#kanXzs}yAcgQoNMtKZWfjGhS^JsC$|apggf4QnlB z>HQc{tY9sAEfV$e8h^tt=afaeC!|Q%pSEI*IXO8k{D(R^I`fN*k)Ldeki768^6u_s zyBANUS|hV^asu`Flyr2?L#Gaq^jJqw}xn@=tCD4xP?qtb0B>YF{*RL8KOCcd4s3N3*sA%v=xkIW% zK&|JRTuoeRBkHEFZ>^c0RT|H&{_o$zcwX6$)r3RArNwMHHZYt&-w4VAH;ms37zs}R z^TQL1+gk`YBRN>`0!!2SwMA9 z`=2dLUfmw8zJZ*{_-Fsxvf8S3uo-1F5{?qSd~+e1E`lN==VAv;L>P_`YoE-7^edeS==crKm5ZO&09+3{`N2_B z)u??(krMaV5iu5vHrR?mxkYGl)4-NJMCf((^r+Zd3cZ?G^W?Rokvb5pqRhy6965^FOZ)Pe$; z@7~?yON=ZYfnM8cb?JG>>aTB?*NDTtYFWt0$V{H8-o4xM{PKNH99w5+4gFUYtPSKn z^{U})0N(YfL`83ltNQzg;y=+X!;FNvzEs=%t$fyH2qb?fjj!_T?7 zqLPwx>xHY$IE(vRi}UmIH$6N&G@)RFzWtKga;ntl11PB6Jr0TrZi;tm&*d{n=t;ox zT6=rdZeFwhK`C>Y5X+{Ob<=t1d0N7R;9tusIB%F_ph-b|oS)}LL>r^(n?hb6A3 za2}6DMlE=4=5Fm0Ksc2@ev#-jK4y)-p7Cjbyh#zI284Zx#SF zx_tf0vos%zi;atr_m0{H-UP%aB)Hq&1rkw5??rx^7aB3Z?6p1kYe%PZ{C8Jnf8-}V zdlmp}iX-$rp|fTKI7NlJdGt(7=Q!f-UXn*3Xn~4gdtu#Ar5G03jK1AkBcpmh1$FgU z`UXG>t#)}AFJ7GbT>SgDEzs<}TCqRyyI1E2tt-6*J8NbW5%O(!y+nntBfp_91yZFn zD;eEZ^N@uvhG%MSUVCcw`l{Q;;!c1T&l%(r+5zP<44P@QK`>1hb{gN_fpeG z!RoFsMtf3afJNQR*2Inl>(VBR;1} z-(swb3JU|^=PwcxB1S#}yMafFl|7z5C3ULS7Qkx0unPR|Okby@B#=tpS5}q-EqicI zOcRPcj>dlO3Q9cr9_XU#K6Ni%oa;dOC3Xe_2wJOyC1?ZammR(MF5n^&?xxobfaYxB zhyyI{`5`3KBlnNv))*Dxo)C-mnM0Kob7=&7=QrmVj1O5=r&CfUS z@nM3tMm_}dh|}oj&Kx;&jjDq~!HkM0fL&0hn!Ls`Gc%uAaO?2WN_lPGJ~T;9PL6_w z3>c{gwYWt0DgX)~Sy%|XxxI~T^)NLXk|jMru89H>(A3hNxkSdF2dKxZSFb=ikp~zI z@=Iv_$uZ;f^fX&?C#>u_I=aXnmyMsQK7hb-cdj#mPT?nO=k0xGW@WA|xRPmN+1uDsr&M`0@G)c6W8P!lE78KL-_P?0rQA{pp~|5A_IH z%HHvD{(Ms9yLWHd*eu32mk;#!1C@w|HrCOPMzL$@>odhYf9^EJhXQ=vR-8e`V=XiEd*8g zBFefMyL2|xl0(Pm&z}RKJAzHIJXT8*uk1GC z3otzP)vHHlS#cd^w_$~_mmNF=fY<3@+YV4@Mn(o6Ab${3+JFAEK*layKRMi>u>VoP zrWhI#5fSFc*AJ@+!x_u@w|?OB2FtN^S76s#UOs5o3noeHhJl90)XpOc#X_9Uxsjv} z%-|r`BMJ~)@Zbtet{3a(d2alS+SNapaTbT&jW-thZ@;l9KY!Im6^r4Cka2t3&K)#F zXiLMJHkbyUH_I}IU)NwSxwH*IVWcZdmkL2%zgYAM^FNqG4%FJ>8X(b zUB~W4Qj+%+2EW#jAHXJdgMflNxU^k( zd>figL?aAUf~cq{oS4o@#|HcI(5_#uEC*h063LuZuq=1Ric!JTg)r^|x3}G|GerkL z9eSHJ=pvC=*a4;yB`a$TC`sUx$pYd`o!#B_1X>qTlEXKMZN~_0?bb+qrWdbYM?fz| zd3fv$j`u}Hk=5HhfkFE6)vHNTY<@3YxNK>xjnP*Rz_<=!?gOL8y)vk)uW5@GZ|sj7 z{Mv+=$)#(T@J{CDoHulU+24revt7&KiLaFc^ z)6mj3%{sH)xMA=n7@?uz{G0asG(ID?sCqFNw;8eixVW>xNtyPf+^Y?o6|J78z~fG9s9NLWdFN2X8hrhb0-ETqte} zk}PNfIjKRy>7cjMuXeh=!%etAgfud0ho0Cn{|uTwkleMLAeIcZ{ukqjoEF96mj7Gt8K6adjf zadM_kV?m%%`yDVpfRA9!P?xsW)=8+VsY<}+R<^cM&MEPYs0LR5Ln;9jP&jNq7fVug zX8jlPEqS{4I{c3Dc@bgN5C;?_!Fng8;(mQY{l0%uu}$Qz_MIi3v6k*<)ktMR0h|+S@QFzPeedXubhqn)O^r|yRo+|r=hAEb^U^mzePX1 z^b_6~P!qPq&Q`AH&z}c@f?Gc~N`X|$`zam;S{&#Ntb4CvZ>a0)a-TsS^sS0Cks%u; zmM7zQJ=+*PhPK=I`HM%v}FhU$NX66tvyHyspmO53c_F;X{=_I|2#Jbtd)@h$;%Az(~iS`vU#@b8~Le+Ejt4+6o@EchiDWcxDc;?JyWjoYpN-QBftu>{RALK&ilyIU9{nB9D)WUpIpr`z$pz z2E=Zk-Bld$8DtG6?NTw;3fP(KiIr!-H>|M)oT-RFB4PUK9JP&t^cJ-kNvN4Z#^gt0{_k)IgX*{%f9f6JHV@s+BRxd0r8g^Yfx`wxSvq9r^B8*XBhmKf} zvjsX7R@eS?)kH=T^{UIl)zy`$+ME}tH!uaP6#xqpja8HR_<*^Ex|T|TNCcftzsmKF zzLTbw76AwY`7dE1sI(1R+uG7|a)_az3=6L1PBQ}?)o#XioSdA`EBa7^fSvC5x@5x? z0hzvK-dUqTS4XF@Ih3MxPFYoz?AIVHH)yA>Zf+p-kz$pxe}GhTcHs0Km`3M_gU54o zL7RFJAI~iA!i~I4z?;z*2Ec4>4-o3w@sW4OBaD?u1rX<%DV*fwWXJ1FI4k3QeQY6B zfK8nI3;_FKwKr(syD;#uQIN^i{hC2nJM6k~qq3ukkiz^IQu7~s=`pWyt)o|o4ZqlS zr@2?{*P|)@D3DzXiu87h*WUmu-}l8zNx&T9#3f(@1#4tWtxLlyK9XX28WqJRE`A*7D}Q?kk!@I@R#Vyi9VYNnORzbPJ8E=um$`; zP;#FpLO3D|jShnS4jpf|$6V+<_}+y@MQmgK-rkHLm0aU9tl`RkW@B$3GGzNFI7a*} z+L90(s0q#HB1Vdi=cr|7J!wh{Xzt>nN+B4@C*!E1(!9d0ez1gU$dRx9N%osu5>P)d zn3Nhrey|o=_-hXuXP}Y!X$wit=i(-SD>rISv5M1?$Quwpz^A37E2^s_ zM`IYab3WX}!f%kcSS+DYE-Wsp10M~)06VyGX679y%h1wxTFla__xe;TiIW%xk_-YO zA~PP<&@@0V1RJv@ARgd<&NP_Uz;4>g9mabH2R&z$t4QehKyBF3bZLRT{PX7}2u^{5 zwhHe9f({BOj&n7L|4srYb(TFT#sC$6_k4E3v2k;wfmFrRLiQ1j#bcIs&`ROCf%(u5 zMJ^~VekMv04}>+pOVFZl4WFT`t%>2;PiV9<`*AcgU-qcpK8vDSB;5=^zLdPHXOxTg{MXE2A$uGc88C@8hfu)kVA)g5TBKtch(Xmn!~W_w8Zi6iee*S;DG@Qi7@hn z#|IStF|nOs5eA65#%qiC=;&w{5P2?QF}7aKzMK&_fpNhLaWaqsu(H1xB(UC$ z6Q_VI0JIjv&jbP=)^>ze^nqbMA1ZKX*&n*p zLqWfM`SK>j(tz4P0wV_WiF!vGz_`%uzGEQ4+b|$ z(7>vT;-D?~QL0+$c5lff(0o|UtI$kWuG5Dk=L3(r% zz?|b=-Gma7UMD${1#1IZ7Wl5Qz@-2O|ETrGc6-Z@1S`C%_wPfR>Ufoe4;Tpi0=U+< z8U}uVaR*ljI@bgw0?LvO znKXFGRR7nYn53kn$k z7_4za#*qC3=Pj^(T710-8au!Ts6tv=+SU0!j@?wm)E+RIhc-C%3X!Z2cpg#U7z_T>W8yf zT6JDGG8#~T48SFrhalfP_nEARuo*n#KwURyT5Q&C8rn!)r4kq>mUT^^m)s+TV*$zB zD>e9HUvBE^s_CrIa70wdT7Vl&1n?F3Cp*kLXx6(MJu-Ot>BO5p0A8oO;}Q}=mY0_U z{LNr2fdE-jULL7;HRfAi-(&Bcfs^JmpBdaoC?3Asu>p-f#sQ>Kc^;} zLqQK96JdzjmF}2z7VKv}$2AC!hlrRMJ1FK5h5|r+`S>lxxx%vYa;*An-!~egbf8Tu z75*n2*6LDoQYpDC1-drKdDtK*Hogkc6w817`edBy_Q&K$NuS!YADrf`52LYe*uQtS z(84fHd5!5Lm)vy39O91>Jx|Fw_Ay6U8k*@AKMAboa=^`jEF`(X@IB;Ge<2>?T}|61MjC z_m~*!{p$gsaP-VUa3LDN_u-)wR+S)fhJHjH({54}rrixaKweju0b+4#5SsTaoCI zSiQ25#b{o%uGd;3$Zch)(GWFhSygzdO^V#?gb17fJt?4Bx&kwIfm2vwc{+$~o?=S} zpBLIVxPwjtZjgF~ktr`B4GJV=n*cDu;5r0QZuRhCBT!n-Np=`?E!a$!0E8O=e>o+n zrNv8w;;Ceh_kio%R9Q2&z(0OmZ;3Y#yfCq~I8fm{8$r*&z{qG^gn!I`{s3nY?9DL1 z8+xF%7rDFw?+j$ME8Ph0t5+{K-m9Lv>?|@$m4lXeD^ac6(&OqZjlhY}5eT z7QhdM0*7~Q!a6g1gF{2IApY)F?TilujhtT@uU{$WcJT7jeX|1=NeI}~)G?xJ4I13> zSkoSokT6z3lyUmqN<}V2Pa4;_al#(g)imtvTuf5o};e86!GA{RWUh zV_})!ykUZwlvY$k1sxSGTFK9T$z2j$XCPVpdo^@4G$2-~H1$r3YlBrh)w?Nkyo*O1 zJkp%rgK+^G>M9s=&yG+3IXIO}Rz9Kl;VoWQ zEV<1rzHl& z4SJ7XISoDzFjxq0L5qT)068atF^d&AE&#Ybn?$aJ#`cLipYs5DJdgHE%`Q~I)4a|E zsYiNdW`#R)${`psQl<=jF(^Zycw^K;(cBn0|#L4vaRCZ6B%O?Z#9Qzl8>c zg}LM7{yF2qU}e00%LWB{0UIySLMgp^^X42sX~Q3Go^qxW|DUL6Hv73khJ@KHy+eK! z=F4w84%?Uc?VD{PHFCQg#(tL#8za?6xfb5fX1&h2)pa+XzEC&8$k@jemprtY-w;F( zeq)(k2qe7)v;kpqzcp^qNnxY2QQRFL9$p_Yye2IT(I)bkc9$6pIS>K>5_d0A1D?OQ z<6vipZ4};oq0NuO!_R=_#V#p%@CoTApxfHsJ`H^b8=Hr~4)mN!SBcj4O;0JZlA6MVJ_zb_nOJN_`cTBptG$4q(U#BPQo!zN%j=n zW5RqR#O;?OlhBq(8|fz?MG{V98Ux&Z&=7I>=3)&I=5&lTR(A0-zQI(GZ%`cq23F`6 zlSQ%4VO%{wB)aqR@~~_`ghBPDii!$W)J&1~UDz3h;}=EM)r&j&uq&39mf983K^w8e zBqZQ&lb7l;3;4kqjl1{nXF#TELhILdP&i;Au>ZDHyI; zCJ1=I2|&zR1-4-(Cog%-*4B2MiF3xY%oc%(h=5VgboB^4I5-ad<+g!`78BV)?5_-c^Y}wMLZe1(1m`k z4H6=sYQ2DMX{jR8J@)(uXLxhda#!a2ih84SI+Qi<1MoRo3S!Q2=TcP$v*m#UD`a4^ z=C-`B$5m!#%<3_>AQpei$cXieh0EZY^+_ezz@VDO)adFLV&kOOuY1~3?t%CT35r-? zIWVO`NF@hI3PJT2AXD&6_4x+EH)6L5y;%+4J_pJMxd{li5y4_ZH&HqcBndo~)D;3M zQb$g9GlVs;Z#s1VAnB^O<)4ETM^{qML(>H*CLC{p-=OLVWDwZ?oa4HE@1CNZTp%Yg zSfObkK3N~1+V}C+X2eE3IKM-J752~XPiPhpZNbTy0NV{mrul=8@9c(xGzuOfv^++5 z#J6wXz6mI2YI^!8(D07~!0y+LJt)&H95WHVtc8@}L@^I4XKkhim6j7PiZ8sMp~plu zaXdMx-Oz^Pd-Q7lxAM~AbOL6R#OVMvZGso#DqlF9%hpv7DRLL%hY#<(>Ei^}4e}`n zm~faStpJyf7g*9CPn@-qX64euYpKb9>K?0SHvF_;IzX@7Z7#Jy8x;K=tb!V7&9not({}j%~UPciJe=-mvL@)O; z<*tkn)kB>vWY=mTmo^;Igi?Ki_r`~s`f*>^i{3#PEjh6M)^tNXRJk%FO}~7~<1}xC z1juMuy%!h(7*WB%#F4xStlP$JmHIG-U#6tAfgj%shfDJF^Esd`l7kt7g%mKTAi@!2 zuvD_b>pux10oW8U3$R9`&?`B^_%i=PRvEur5M6}s^`xpw0xZBLGa-Vb*IgFE5P?_) zos&MQEp`9Zuf@e?;JP4sJpn}pDtAsPSCGh1cJ3TlHO^xpNB-bT~P4^NT>P zAU|>Sb4N!bU>SAT*^p7jMqg8Tu!f`2V-?5A$UQh$Vx%OE#2(i$dse-#)-XJ-c>M%o zFbltwvFaZ>OR;|825KEc&$Y(2jgHEF3m>jsRP0womA#H3MJkaw z#%%LY?qglaFrc;Ih5_3R+Q;>$g%W_{A|U_p(smYs1O&Mw_I(vjB3vf&_E$Gjx-5d= z*e9ev8&O2upP9>QYsn&8*S{f*m=9|plL2@gn~XL##>y91TOXJs%$ZgH?d9XtUq><1 z*Qe$k7u1p^++6iD_cb&m#Hp!5^=G-$Z!wV@BiWrX0;aZNBXjEozJC5MqbL~l+Ct_i zc38U~j?5M3jg*A$9BjQxO${BgmENw@f9uJYB5u|AqX&|}Rw5=|Uc=SFB7>&)@835C zyC5hi2vAC>;iL8I*hnqtz(#dGYwI;|@q%eIkD*#`ovTooV;{>e36Vht3!#_`qa1f= z&UC&n*EU`nQk*vo&XnInp5Ko;qKtojpKA39|v!!)ZF-`U2|5kftSaa6z1 zK{LAGzvIET<<;KETi$vPe5_(fmC;O-0bft=nhwD=PQ#awC53g)*vT66Cjw z(xH{r90}yD`|Kk3#87=d4`k!$hP&)0DYOakc~jYVG)IWw-fIU-i93tq3vU@cE&C;wD{;@g z-+?ps+z!=Dt{+i##E@@}9N&-upl@M~HlH<>F}@ z+x0YiN$1M1^|~BZuk!aNGg8rMMMqvXbnA9ccT@|Vd+j-!;;SX79$gnK&8wGSTs%~R zvslPOkHJ?w+1rZ*t=&7PPE=GQZIor#$2s)9q&*KZ|psD|Pl3!+o-rAH> zV&?!^l%IFa9BDk=f6)appw_%^zrahLRVh&p;`^<*;!L#M;LS^{!>gNU(BuRNrYo0fJ+iO|l z6&+W^{#~`-*!mH%O+snfH0I&h|LZR(Xx`$zPPb~2d0vZ(wlLa-rvI_t84rcrxe+S# ztrJ|lHXPgQdCxcmD)8kHX1U_L^C>HBk&`AKHD6a^wE5d2)FgF+Ix_F%>LNt-2=UG! zy|oRK%P`vi^R%5f6#_fV;LWEuwESRXvxxl{0gbym3+YM8zfQly}IDDWm!`5aUFq4Um144y;x9L^-(LYHSdL@ z+Wt~wo#GYr=$jN`00Fj)pHF=Sm=&kH_{*J|^{w?oh>>(r__w-1r)4P-}YAzPohQId5Qa9l<)ml5+kL!aFbLoUBv z_C}bTCl5n<%ORjDxLCZRBl`S%Mfw8rhxnkKuZ~(jk#~Ku({EpIoOln7A@ju0rOq68S z{KA*mz$Q6MFF)#O*sLW@zwF4Fov!Bn#xO0Zh0Cz)G~`E7O^vuU^n7x&NCJks?-{;1 zWGCG_H|yWEw=8h}y!O+$EXmkyXo8a2@ebeZ2z&+g3ms?m<4D~5aM0g~pZgNHEV}HP zq%`zSQF{HX>J!66?5{~^K26B*%=+XT-}1J;c5XsgKZ-W}hgwKNHZ5rvg|Xiw7I{ZsnO8-J5$mh+)=}SX<$Kbd)hU(PH9v_btbn-!s;S|Qhs#D{_=NH z_i@G|pS-qVa-Ecyvtvzj(K^AY#A;HSPu63FG#PVxS2J1ijPzFh_L-%>xTe{ZQI8gn z&c9le-TAHL+T}jge3x)cwLD|ihGe0>MlpVp=Ch(YX5vivS>!PDa;LjMSDEhUIB3mhv#M9 zleb~W*Jx_LG3Fw2ohVU_dGb5^H}ptDkH^S$SqOT4CEiFP?8e(S=&Q?#yrO40^y3)~ z(~Z+vZV2C?zvlP2&+G}vDfZ_{&1)oh{&ybE-*xZyi1F|6us4nA0?wJVN{M+&-ChYetXyUL|hVbJh7* zzZ&OOrpFv-c?|cehf!IfWq(cz!pEVhBf}zyiaVc%cb(bPIaa8yB-`pN@aMH)cB4U1 zZWQ7shii#xO{GMZT8btVpwD^9A&Lr~mGWEck?S4oRn*3`^RZlQk_mDC?whSJ@?CGU zXL}mG#*?7h`Py-INT|YNOsf#aT7P3P<^N3j`MVmL1bnRo8Q;PLN9d~ts(S71<%_e= zxT%O{>E=pRhRr%$LNrj>oLJ{3)*(y@C_f&y<#KSdT$LL_UNQ8|zd4$yTXMHfw&yMd zDarrC-kXMFx%O@2Nr*&>ib83UA(RLqAyLVE88Q}1LW6ls0~wNviVRWFg-n^}gd!wU z<|LWoG7p*l`&svD-QV74+x}nPZF`?S+}pjD*5x{n^EiIP{@eHcpcU9BR03g>xp~=^ z*G#SZojx_v)}HkG3<^92P@$!V?@*U4v?}hW^c(8S(S_{<$AG8dP;+ z9n2mH*&H+`s~zBa+&X5Jzog-F`;Lp~X)&C8PQ!Y`{wPi_(-N9BPpTTjSeLmrk}A5FX8ZP1;*{iwjSe1o-v($kL1mQW)Bmj&928OtAm`3-1U zFxSG_fpj8&?0x#m$_=65EQ*#4#5>52j5O-FlFke>k@84}B1W76|5SdyM}MR^T~T}2 zx+U#!_m7l&y?Q0r)ZPOyYTK0VrYPunxvKe+Lj}2@&g#;oQwMq~N!bjISk(Wjl!9Hx zS%y;X*{gkQy<{68>6<)HxvP^$G5{mQ>c^Qm22uct?vDb9=#K6&m=`mMnGLViqbn0Q z{b_u3Q|7`gKIYo9!$ub}To286+D*ld`ThNNyf=?>rY=;MG3-1y=cmV&7u#eL$(zwO zB0JM=>zLA7plIj#hC%d5s^2|bJ?OZ)TlMt^IgYu0x;QoTEL`uWdsZcJaeCFr@(;W#7WrkHT!t#ze=G z(maw>2$W7=GLIT>uQLAFy5-HvK!c^DjdCTGq&JcRXHenQ{0c28_}gRjD{O7HN<4D3 zNlt|SQ!(4e#l?uypqmLD$se2p{;RlA*u$&EGQ_)mNXfe?h&G|1ZcvGICZf;jzY^@V zw=3@myUOdN@TX0eCm!+E;iXxhbo5}~U}6RTzZGSS@M`;alDx!vJ!8@@q1gANrfO z)!)qpr}PL}+~Pk!C-sQi-KN{)^xHfC{?|=G<&ihcnl39O-MD-8Vc)uuW?7BD|8dHY~!}$WnT6*?1BEe zy29)KSW!l}Pwe4subm1oEtc$iYM^TUABW0Y!KJD8C%3YEcZxil-Ie#??cZNuS#$Z) zSkH9v=${E1v7N78PaT~6TjlYzmLFn!^7qaA^2YpKQWkZEzlVS)#<%?MhbplAmjNly ze;bgB{*$I*O?3Y6W>sLV`+xZt@E&(~6hdaEK;8C*i(Fxz1L7MB21?&$^WH_TS8&z@PukWP7wbhF1soAfiZI2!8Nx3=B z#gaS2!6^s(R5}R9(PsM(|xT@WD z-6$!~*UyNBB6H%guFhAxTgy309DiSRjNwkbTP-iY7TK=1npgaub?1FzeRFwR6mh?$GMk@FQHU@X?<4N#XR!N#) zyOKfH*D3aqu*E~utGAakd|Ch9Mr7Br#$5T5uTKM7J?L|iTF-~5^KUCMRM3v{ofe^A zK2Rz|6eCl-}l?&AMf9Lo;`Rp`&7FgyLPY91??um7<;X^ zqxk_Z*3#@7J71yM5Ft0}UcaB?_D)s@-)vIyT8ms}9+%y_1Z;TkJsd4k?f&;H_Jzj8 zr+i_XtUb;EDkS@xAXir%j{1$dhJ7v2Lll$W|x3)6`@5Txp}x zKJ~IbMfMlcJR=nSK>K9%BYm6b6T@*{%I z-7-a`0=ldV9jOO4@fYY6Zz;HWFmL6ql{J(@e>ZqtPRfWKUG$r%N#lmYjF!BubWDyQV}$QEbkq#KaJX^PzG6VX;5jcJPNqt( zgHCXV?fOp=+am^?|Fv1X_9KI1XM2JpT@*II;EwelGe6Y?X=t%E3DU$KV_#N1vDx5Z z>aLqhIq&^kSG$inyi-ZoNSv%^&JsV9CoY>7$7q_PN`k`;H>A{HVB7(@$;{cA{r=8d zi|xdm0I=8idq2NB=Ij!uydBFvC&;jL2|g?Ej?&Z;$=w#4qWP}Wf~qBOC70M5rzN>} z;^~YM?-F7al*`_G2YAoKxbmAOd8Ki&tO-re3Asn*ueufk4-ljY>I~*Vgb5s`LE{q> zrefix9v(zx0*383yF+je3&QN=O=f0HTH1OzhJipW0#KQl?-9&65C(~V10M@MKE6+% zKYK4Nd0^D~78;sG=bK?MnCq9l5u_&i~%q`z$}7&+*7E_PbBA720{;x3|xv){|)tU)m%xzBpOr=!&uVtJLgl-~9Z1cPf59J_c%P zYB+fO^PL%_71iO#QHS{gn8kRsSaAI@d2^bd7A&u*0C@P;BXWP2CmN=J06I)PJ7te*XbHULcWU5qk=K~=TIDZ2Dc|-e zk-_ShV$@h=tksd59c;h)Uh(qn4rODt&kgd7Q$1oHwK{yl`qC~8<}@LV<^(r?Ugq3` z`}Z*mE|btTg;x-q2ME?xGR9wpn}~hEy8ix7v{5v$VkpCCvLKbvkoexc3oE$8#E2Rs zyJz@bp!uQZH8o&AYsXjTmj#@uHB{4mZ7pbGw*ERRXu#IMv~_C=nNIQ0-R&mMkwX>q^fO!9D_k0Q z%FNU}pg{oTipj0E8pJ||l_&OllKwZ1#NZX%yh=+XpA%~GS|;^;7auc!_ezuf)y z)>(fYy0S!gy2;1YgBH2QB30&EbhA=Td7_WZ(QKxoohS z&SF>gUC^1m6-#6bVjL6B%@uu1mF}`LDQ4L26aDs_ritUL?Z$VH+x)Q$fy6ET_3LsB zgFpnKQj{<_vEwv2yUq*0hLXd$Z7|huuTdsmh!T(TdJrX}>j$vCw=`^oF$60?S%>Y@ z&)Oc|pAJ&c4G?A>7~Lq7_s`5z|c4Gc~#g1K4yxa!BW8>J~jMHlF220JRMFKrYqyyif7jNS5; zS2Go^JkK5y9rXw)+~c&M`tv`g;W0fXV&P-(wR0ci1Gg0%j?((L)9SGEfaexr(t;Uj zm~TjABvXMA_jKRbj-ATh7#=}Z1iE~Im!*O850W85)xf|2p{+48ik!*#Ja7#=hLF7C zqk`e70SYd}LSI3;lB=%6F(Ei|pPHI(gCyjeAKmo%_R5awlkou@R2lLWp5`*hmRI!T z?2CN8XLust-1$_nNnL!Ksm<{0w-%d;iwN}{wNeQ+(i208Z|G?g*V*~;G5YT}n)W3Y z=-WOP`2gK(On)kU_4tMro`?S70)V}VfC)X_#mtn&rFjZLOPrh(#pnx!bdYH=2qZjB zj6LScT<5`KKJ5OB)ge#%XYHQNFeAWdJ3cY7eTHIfObqnFfPzB|^wPg0#PX6fv}3~J z;y#Uy+K09>oibUk$O1ww!Pmw_3|wK%^9gYyT=5_ffs{caI>Z*KMh#$;>O0tWS8=xV)3&tAg<))xEVDO_P zLkG$N=GUSJ4|aopn0>kDwuODT5W#RGSowzzZ5Ao9>v$Gz|FOVbxIn)+edgPpcL~Qu zE@_O~%~$%*4AHoS`Tuk_ziw76x$@C-GdJa9m$R~M)x!6f1q!^cC_EW_R6f+)H)eHQ zJw5EJdF1JLDSQ7m6+2wlbNfH$%(q%0U4ZB}R_~OyzP?NUBEg@Fj2tQGf(i}_2Da(G z4Xg1zF;+ciVZp`WPpCw({*zNvAcAlXNf0amuvMWilolmpFA^@QEG(%T1*F>OD1{qG zN2&(q?y@nUCTVOVDSS+18?E&W&MKQw5;j@f_UQSyst)l z3Po#Jn|_i`^(8jN>v#iYW+j-TVvY?}tni^jzE7U8Bi|+_Czp2H-8^^bSq$$wMHYA) z5<4t1@-~clAPR7CbpV1Z}&*w_Cjg6Tfe0ZJ{QD%0hpDO5gDv<#HTXeZRA1o?}l9>y-{>Udq+lCBeWA$ZU7z|>9{Lb*xDq*(B;zr#0W9EdFWaF0930#CrV`{B{_-~r?*7HVWGf?*{76B zZ`!kWwcI*_sslfwZGwVpA=8BoN-?O}-b;ZW@m4`n$`2w8VF`l-T4)?EUWDBLbABYq z-t)B5MyQVPnc+VikPRvjLv!~3zFUN;vA#ZbPW%TvMYhFysj(l* zLt_QgA$i{=a3T3bbf`ysJ_1=u}vc5qlccHD<80utop%*^tqivoT;FJHcd<{?%- zD5H%a&PGLf_S-&1oVA0CM729IrXzH1G*dItu-$>gDy-*GNQg7tIY=dF?U(X8a<29% zcxn=xSs_l-(J|{sS1``{+Sx*sM~&^`Af_Xe|<1Me6nJFJ2I9Y_Kd(`}bV;&g4uogjh zaQf=1W@wo7M2QVm8)6(N!8F$*33d!BZqa0A2@llxIUoXt{MP;KTN30+SSly8H68_o*l?J6f7Rv-A zr>igCme$lmorOI(i~oRyjqMgFpO82zy*u1R8Dgk(&7ylO{`BJlzq&>@Yx}RbUfVt*xDxvwet%Rck4lo#hMHOkf0#4)K>EUoJntayWy!V;G3`nkslF@U5m4v4q#9tKV z?eH9e#|sJ}Cs5XY8vJlWBLrW-i#Cryd<2`^X8TT}agvW{_Ig1ciP!?gHw*xe!b=50 zZ03&r@w^PMCLwGMq1Z+({PmHsM+wda%ce~}P;gey_#5X}|ZMlkj+qgFa$Ra2zt>-iZNGD%$0=hq91a_cUv3F&Tmzgkx(&fBp^iex4* zz}AfvJ^ynbTj|99NXI+xCl91ZXXqCjQxq4(um1WLLMDT#4b5czss~7TUNSeKm6}m} z5g*SB#Whr_e9;VD=siIxq`0GknyD_*XpE&xBpM6UK%I}T!Mv1_k&&lE z>g#*MYE4=BLt#=dA^WMVWj;@tLlH$}`#U6DBMZ7~ zFh>ahp!dq$g2_fj7OXckH(}Wu5i+VC3BeijTk(s0cy0+9<$ub5iNc@Q)hJFEnIcK7 zG$NJamagmS;=cT>GAej3B7q|9&i{5qGK%ViPCJQba;wxt zMzNQ@j$Q-e}1gzMcimoDyDyvZ7~#dOs_F3VuM%rIt({sVbYEnc1;-ukwairmz9naH?x)#5`e! zk;cK_DYwM-ch|^YZB543iH(b^pt!Rtjxl*o9-hG)M2k~mB7EMa4FCmx?rQ5eH*OB3 z>aA4+bi^>qR_Yz(&P-A=UBO zitdv%0?O*CBWicguq7EV&|18}l~B2RjH*>qY$6JukP6`w0KtaSS>PlK&kiI4fyg&l z2GD?lmJs~$?Alc}Z%WeAy7slP4?ZAqceX()=aFpW)ZoR2=nJ@qmQ%OTef~B$`_;BP zP&q8hBtwu`JuD3l(pve>qWb$cq1U1evE$*QJbuwb%R<*_3uF=RXBPeu1v7c5p<%N^ zo6yLhs7{da@q9Q(0F}UD4>)$VxbHucw`YVKFIwt_$@0EcU3FAD00AOSfJY7W5d;WpAb)}o8^m1|c=Wczh#y;Xe&5IMLkA%eKBlQze?3o* z=emc^G5w5r*ZFiYme2H_q#!ILnJ?6VCed!IY(ve-;`^*@Xu)&icDm`^@189YFVB4u z?fK(t2#GyoB|~OUNVT&Vl0q(N1ga7jp<5hmy^)F;nVCOkWQfxIH4~gkiqUfe69IUZ zK(A5wL(ds9DytvHFyBP-EbF@z#E}AnQ38{QHr@hl9fQ2C2#My9)DRZVQOk!U&v?2<%B?;XneumKE2a8W??yjrPl8<|?ow~aJvtv@RS~hL@#4rG zuRd-S>=L5Mo{=Afivf%Vx*VlyqsKbhpaHG~#d*3cm{5o{_5kL<)}h$4Ab1kQ zW{5~3&}cUHEW?+);bDl{4*!*??1~NR*SmQ*`Nt4@qB^aU_yqisos2}I32Up7`EJ)Q zjht+X5dQB3_+5}pSSG`U*c+H5fq7;!Ib6F|Y>`f5Z}ZQQ23lING1TWuT_iNkpu>Cp zn7duypYQ##d4xilOX9JvnUJ79p`rCL@#m^Usj02sxE%aq%r48z#Tp$28VPt`Z)#(n^Xk-11eG3cs*^*6`H+D@g2V`( z$bD(Wn-*(c0fC10X><`_%NIj@{t5Qa2%2e>FG!p|OD05FIXv8Gy=(GaR!5OCw%c_q z!!P^)z;J3n8b3m}NUU>LDZ#K`UZi*upM_u)%guVQgLeZ1%Lq*n%DAyH z6^J_v`Lmm|ud*FYA9kY^kkb$;(jD&Li&V`=@fW<=3?2= z#T=v?-ZnN!VOky=RE=2C;S&);>h|cYFb7(Iz|_g6j&4e(=K+Z7u<6YDxQr@z_SaOx zj02G4&UG8{HqjP9H{xC~G%_;nA$$yt43HGuS>aJj!DfS-tqkcQXE~r*WX5Q(jI=aw zF!!x&;B?~!WhLel;^)zr*CqP-`&|)YUivk4@rdki=LuuuU5$HfgG*e? z{eiw0CgvD*ndB6g1HP}-J>7W+{w}vj6mfb9+c#sCTOy3s@D6NzW_+)EbVKUTeKX;| z66F<+B`rH?&&nw*Co)#B-z9O`+uOt2{r-&n(m;LOd}b(wLO@5Ww)hZT5Df7sQQ??| zu(3HW9|m9mJCgak+DMstE89MO@|v2mFY0sPSlNUah$P>0cClo>{4J(cuQV#ASPDok-zL%174WfIo&J}vQyCt*Wz{rYw4*pC-h>!LRc+di$XK61$w7&+|a z*W5u;2ll<{uw4h-bz@`Cb}^5lu?10oVN}E9&*++ghBon&1}hC<_CHSRC`VC10z>tw zJAV^3I+LTUfEOoeo7BE?dzz5t9O|Y;7b@GeB@|H!zvJ|}3E>QU^NN&P{rZgS6=)Mj z(a_@-+dp<4Qk-cQ@HwHloOrWhxR7M)Oq;pM!EaV{riXO!a3Gpw z(FA)~XT5qgq8g{UK^}uCH=}|P05$S3S`wc|u5yuGI4u9wvDOR*JB>H@8>`9}@8<}d z*D=`zvj1nLvjvEOu8`RpG)2Z(vaOY~&cl{SD=+e7|3!GB3DpY%a~pv&)3N znGLW^XQs%TZSop#0Ya3$V%8;-&90K(jcXx-QaRqw_DBj=F$>91{g-pygM z#t0o9Bw7KOE4&UEXEdEz$f>p{HTGP5L4O8%#d$7E94hosoo(h87A{#lD)(;!@N@QI z#$oS9*wZyKk{N9$9zMJ}ta%TnX|RDpHZ*mXZHDU~&apG6gMUy^#ivi7m=*W@`+j3F zbOP%P&y4=!&JS|`5+2yaQ)0yKkZOk&zww#-ekD&Ld>=OR96eMLq7=L?g;lZajk4UY zY1Q<+WY`(8@iOWLmyBrCNjTfRQ%Pn67eJxM*ViYh(DngNLQ*+r^5mNFS5cprW6_OX zMw_jmn3Gk6+~iEsg(~yH>#cBNVe~IcTb533Q`gjtr8fj#siy6?Ga)|y)0xOA6y82d zMWqd;s0$c=7s_MhAbiA@%Cg~053(3#W! zvWGR*J4^{vaC_Hu9}9zK6~l;lPEnVo`07~)?;GtqwwtsV^0~x0&}PfJxTYn1x?A;x zUe}KdW<=e=z1^3?moHtv&^Yq!r^j;svEqq+GmUF%+bR<}9E=q|rMnQ`^)bA}B_(0J z4VYNsxfUsRVhEp;&g-MZ-Z3=f)M_kP3&p76)r?Z~SMvVLIGBDh(PXm9#Fika>Yf!8 zEWYci0Fn>Wh2nV*$mV*WB*&}iY?k4xELi&nqh*ZG;wvnFD-B|hrX(e6S8wu^5@K49 zzL7}k_>HEXT+c?`4dv>TW~OrzC8=!7Rc)AbcCJb^Pw@8qr9cs@9F(I?^o`}^YvN?c zEmV0gyUmRA%{ckIlu?V}2=B&`KGuB}>Fk){H77<64h&p}Upt(|W|o&xnfx(3HdPHDbue_h-Ls9MX23Qe_!07c-dIt1mvy|YAdMUjNt`x z^1GAZPX*)-TeDj*v|Q!3)tD+FCui>Da;X==RX7?%HPnB24GoMYZnPeQmk?p1h2Ii+ zhaEBFs0Jhjl!m+_ie>H|Pw@6)z6qypfF65I_jybGYhDK2+km@1`lTz-fdk;0+geHS|8VZ}NBK3okNxK9!KMDz zZ7k7~lkrJOibR)}tc003m=P)2*-jSULVP}uqo21G1nw))KcW}4x|yEwDzjs87`T@9 zxluD6E>u&cmS?9z$dPrwUv)+8%`$tAfo)~kXJkJ zwzR+wwen=4Dlv)zT8j|@le;aOqMVf#*Dkw?OoLA-$|=>fcI^;WM|Lq119bV_<2WK*^P`F zJ@+Tns8&8<(k17nM~rq!v+$?e>@kwKIU$|W!L5A%Q(fJ&7PHKGY6?n4s!Q{2U%q@| z^ynJG2+X6W(kO1P$%nK6sO|}`?W;`q${;-uC@+v*pglnd#%{1ogmAG0y%BWrqmu)g zr+oeH-Yo~*=LaXlB2(q$X5z+*&gg61Z)py@&91{&_o&rew+jBs7mb>MrQp%%M0Jhh z>MwXdw`|h8aA7ZT2@^)47_O9>2tWPM^>ZBoZPpdQwQIt*Qf*>k7C0d4!*vIy8| z5^Wo02hu<4e*RT*tLL4$_V`4{SXx1nvUrTD$AACLvjLLb47wmvQ5e^!W%hYU+pvu} zi)4=-3?BJNhYwN`@HZ?esvq&S&nhXn^eKh6bnkv6PT=3GKo*$ySU~{92?_ks`a;U< zQR2cN`Rmn|L8MP=rY%^cS7bk6W{gZs-_Y`gX{$swp2yZE1kK3K1gik4060_kcyCqM z@1ujJptIYr@UHp(Cj?dxh`GhJ2nh<&um^_u=S3fRG!Op61t3hJ!giGtjxOi7&42o| z4l|WP%9R43p1?CX2&pfcXjFUSgExs?^Zfx3X(OY~R0YBJJvt-_v&?)Z{}pc1VqLySU6Q6>eY*D6}{-)(PFmG$p41@ zA-6BSv4mqC92}fVxl9zS>;fK->o=xoY2U)VTX-OJlJ3XyOR>t^F%L!m;$h4W2O|{l zxB;ZhwTOV=ks%nJTrDsgb39+PCk%z2nUm9O@k~qam2Ui8PDA5!p>IYT=o+|4u5`&U zjEEpSLAcus_P2n}p<3qBfGH0Gj!&bN^wk@c)Z6`d2st^3asXI?nne0L^>*LaV*IG` z{!8QoAR_w0hW;Ir%#3YQ=GR@f>QQ4KlA^%rz}cIjW*$I;BDHRXRi+1}V$ zt$F*mgn^%nhO*+YC=2MYQNo=D76%D~BaC0T8hn7;A4S41j8{K%=BK#K+!YS$P;%~$ zTHH5)%Qm?&U+DoTPgfp^8JG4N!Yvc%7x)j{hcvCOU1J4K+Vn9s*K=70Je-vtcQH^0 z5g<%37W)7MmP3=|o4DqXxbp^vjrYL$$j;7ouMPUcGUq*vVLz17M#-|IvC7hJ4fW|{ z-^t;mn>k55$2PS~r5zocjh)zUG;=~u#6W(-<3t07&b!L9#uzG}lD4}7;&FW==KSefk)Ya4zxr!&lS$*T2EJHQ5 z>cj=NFAvvzogVaHdAY7Em0;kr?gq~W#TsF%E93r)KukdzgEXk5+iq3<+f(YSxN!{Z z8lkxQIeF@O5GAU5KOcs3PZRU4J?gBc8Tuee;(sNIBZ!Ua`<85}f7IcDYq+6)hF2>U z!RYxfa9 zWZ12&Ba)N2E!o~Ol+<*QinC|En7osA8B_>_{|fP^uQE+rPB{zPPWvR-kCC41L{bHO z7TXsFB0}woO56)0VNxl30yuX^4k_=y$hR@Pd^*+)MvHs4$J*>MleS{16WLy}_xAEu zZS7m&hDx$&P5Qqlx7{HDRReeW%TtDjs}I#a_+w-A`#0ZBjMweZ`tFiD%Gfmz%L{%e~%pTAMeTKb!)aetrJLYs}JFJz23DCMVQtt1J1L z|6THCj3<$h_~sSPjkIbwB^wo|JFwWxuP+Qcm;Jm)qA-T6>&UzL=>zqaJ>8dwYMh-i z84Ecdn7rX#7c{Vy=kIm(ED^3?I$)$9xtHG4(KjsQG#;IyRZ(kN8H7{ebaHXGM$nsE zr`5G|w=&2GRi57h$$;R<8qyQ{m6c0uAlT_TK1~+90h;Nb2V`M+H4>uc@W?N@ilMb) z=VAA_wR#s0uH-6YQJa)gu#dW#b$0zPi=6>NA9PcA!9qWDhGEr*0%>&(twV}z;rnQQ zoT539z;G;ZKj3!JpjUiv5xb5AFTqM>eR-ZhLk??QQsW`fB<09CW+# zx$dbo?umI`#hHk2D9WFN6^CTOY4q3;#bn<|W%>gaGzKhJ4!%47?;iMmBZh33t#vYt zb@F6o{1!V~q5Q7zMu8bpM;3hp^r@J;vP+x5{l3o5KC!X)i^V0Fp8s|TCiagHNQ@Z& z-&SPj-m^=TIWKF)Mvrx4&rc~hq`T_q9P4msCp#p6R!O!`&dhE5+UYU-#!%sMoNI>8 zknhdH3+xzNTi1-rRviCV1H-x#%)u72iJ4w`oF09|hV}Xt?deGzw7VLZkH;_Xe0KT$ z;&LnFdaNd+(0kKxXEGO=}m`HV{7P>?#HHw-mz;0<`ms2FcE9m~?$zte%4c1qxoRt7nM*|uytC@` zD2k$5u|gz}YR!t@fBp~uZ&?2Nkt2Wp=8?o-YD!9RfBwNscj}qR=ze?@@h8>qfB13# z(_j0)fA4?(ivD-4{&%f#2LBHS`TwR}GJJCjF6I{JU-u>Eh)LB`ncBXIs-a;`&*iVr zYljC08e20?k&_H#U%s5GSd=hxaB-b)?Cg9sJ*_%5wf5t$nVYqJkLp`q|M;=d{#tfJ zv$$P*)SqC+eQr;K*TF;Cdc(tRN9SNKMXTsTtFH$Pr39v7|Og?ji=6Q6a-2J1y;ptci1hJNebCMnAS* zrKJ4)qZt|Y=`J1baNBpMHih9>}Pg`o@YmLe|99^rMk#X^1=*B_~J`oZ1va+hiy1KnZo+DIos8{{@VUS2Ir zOHxC!P=goNJ0v`u__E*6o}zHtgn6s*+M5bPnuEp_gmgdjlIUkcw6aFZm!FVI3Zl}j*tF)e^*XxcB=f1 z8xNFlc}F!yQsU*$$Hy5iwSK=}QGXE(lZPEP;;&sKC!3l2rhdKTtok)i*VtL8yhZF# zF39J;c~K$4Pb{TdX^K=sS7sdYS;qg75+fs+*S@Zs~yO0wSC6VlQJ_)Z5r zc3;i#a32yWc(H+a8ZTz@2Ag6A+EUVIQSmHd-F81v#*4s!Zm_@qspz@vGaYIAmvAAg zfs0G7zCnbNTL5U0f`(zXXUs(#&-$OYw!U9xrjDKM=NHOen;KjC;@!KQPfl9&%q!h~ zJ)lt7b%stLp^-d39ztoUwW|)J1+(+xMO=l|mT^uQcOZXz_#hpwb6bLDC2rgZ2TeyX zTyVj4`?yQ(_fKP=ti=*CGA`9v+W+1$UOS|=(AtclOIhvtou-neQpgR*hs1Fxzai5|WMiqiThUWDmW#%k=2- zE*&|!?ts!yZnTN^Lt)ywy3b=`%&jg+jI$|UFW!hlcX4i9BgrsNwV*%-Vr}k}GyAf} z$3yw>h1uEJ5o~0>4c`C*?8y_o@><+|4q?_%V6zh+=2|MJPe1x_4)3oH8_b4#74cYK zH%mODOZ*cC;Y6W%>QoZW@>#FZIogL$o|r#%)WTPfh%f{S9rZjlRoTI{vgAO@{)kdpHLkhOauwa$03;?YJDe~i(Zpt#eGjR_f6+JR?Y+tA#2^kHb~ z!oX)Y{B5NUCd?@J50_A6qPh+}62Jq$cws*7GJmL;lXw!Zv)^xWrFfS(D&Ydo;?0{8 z*KxItIPL22YOx+EwtWqG>$t48(+R|-8#=f;{nRVWzt(Ed^6M8ZGRDRHaMKf2xAltF zbX(IBtHH3wAIHf&D-JN93>^s zJawlbzJ9UDwYSW=ngf)X1TwjGa}XbY0zAKEhrK4@r?G3-i~2}|UOU$J)?%lnOmaH7 zUc9_rYpb6tYRt*0+4c5IeSO0H`@Q8!_mpz2&XcLC5VRAjqhM$m+BS1&Ee9Yi1z6zs^>NI)c8T)c7SpXZspzLm)S z33+)+$me`~`Y$n5V^5BD7NSjjzBA#n{ikjo()>wrleLVi9tH zQg~FA1T-5V67j>z&Tirs-V}@hSozEk1cw@CaC_@ag;&@lE*OG`BRwo%J8F!KYq!ggSy({+5 zJ3Oim-DN|X~(dA1ell1EC6mSI7^h+t@mRW6A4I) z{}UGZw}dz6p9~4nPSZ~UH9|lArRnFHyJz%R=Oo$KLX_N2?J>Tdaa7gPCoTOdQ)DdL zlBBzP_e7aaA}GK@<6pq@$CGTW~Q$jm8A1w@)hO^{SztjLeUHnALGIbY3UkZ{*-w z0J)O+E{XoiA%-~VufK!I3W59$7RA7Abxcizak)dBmY&{=NUr3uF>2}?U~Foss8q5j z-hMWkqZF#=u6pTGM?h@VQLb-Xj7CsZOsOaKPxkWh~ zw~#V338ylh9K`1y*IM&p+%+j~lOEuIfSt1Y{Qf5a&Eg1&d-uMwvXUI1xVzvsIMj@r z5vpewMkg{*T}ARI|9+!R%n`zfxB@TaD{jjZuRT4zYIb(XqiAfzu>v-%At+Sh-1FB+ zo7g+fZ0<8*W4&1$<+o%XgjX5BVj)Iacj};tqD{e>g4~+TfuHL)B@}ujeXcL{2^Z44 z&yVPe6QLuA?NSxW#(jlN4;Qv1tEhx-sVz!P-8(oHR^^4uNuN(nmSK^!A(y&xbwUeS z4tCENw(#w%d4BVzf}nxU{sBW8=1r@ugWEU@r$l7Co;`ow-?f9D{tgjH%FA~1hB~y1TeQ#!w5Fz{i(-XFI5Q|!Lc+ovMlZ+J4jL}L zXft+awQZQPC!%9W$ff)>CRoIcLQLGgktoLymDFoJ_fdzo z4QpQ-=D?`{`9Kjt0I{m~nnQeav>IwKI02OB@uvCLVn}#N3ZyVM|VD4FgSRns@H{trU8?ZxUDHXeZr?+7 zXMVpy5hYz%m_m_iWlK5a#Q#js+?-!jc-`aap^uYJn_N&13Tc}6@*zj#ZZ;G`=1-@- zBQzM~9owxr%Mfo~z|`X>6yU$jIp6G()KOwyXiAAw}9)hgBz{1HSTNo_Og{zjr%aj2FYA%|MDy>OyB(6 zxk|It_viM1u*x9P{6Wz~$kKv1wuC=?l+|#ESr9uKOQT7p6v~<}OK|E9R5^Cbe0$ZcU9PuQ7oSO-W!yo9Rm-@1*2lYKRIZnX=2rRk$?EE)beDhwYjs&rxSgm(bOE18Ezue5urNIZ%eB9bBYUCGG}ltX$;Z?_3T9~bDz8*tbM0U2^Zm<;Hl z?m}xiu~hH}euL=|=Wc|(`}Z~Qrcgs+Gbt^$rgEg9>_eHKpsz1>GR;hJj-?9`m(ke% zyWJt8ia}VR9D|uz3=$rqDWa^!;qW1~baqrrRa)pW1`RpF!@}a+40-xa-~cJE1t;v% z1DU1sv;ug}-l`J_MFG@P%msWzHy9hMiIy_t@nd*+pJOC__~3xn&+5X3@M+iEws+d& zL4<7?-iu;bxDZ#j>EMW4U2In1RQYpQe}HZyj4tqUh6V~FT=UFcn|Xg0S2ZDv%nHxE*H*{NM5&`cO7*+5_?VBcgF}|qHjFX| zi`Gy#Ho|6%64lE346c>O_I=*aAlh@pF}(UE+PCr{>1L{nCflM>XaZjNfG#mU9ygj^ z)HX80Rgu;`hRi!ie)x%E!P#>T4tK|fCWu2Pg1bk4pU)J#%_&T&Hiqe+Kffi>A+*Kk zlNDDR*LNek~ z>#0%Eliz(vey2>&==7U6*X*xdt3)f*l4jO3_F7ln=8Rrr$FRCbVQIE`+Oucs{3IQA zpXg0&f|{g91|?tHiTC1x_kt2$Wbnu|-Zxs1&B?fL@qVLKNNKmPZuh02L^i|c>g838M{v?7tUEgIkbh!?NY(+#*zcRioT z;i1++szx8v(9v;#Us16tpxNuse8TJO4Jv-8C%L)psDaBHMV~xr0ZzEie%?g*P##qR z`gX7x@QV{stJTY7&N1o2EeK!H>f%*m4Nnx*i+;?Kue%K zS901_R5Q0^^&pLz<{P0T1eAxfLX@irK z1>@4)Re$49*yyOt(OA`geldqqj)d5yZ_w7z(y}Wkj)YBGUsxVY#V;u6Ue4dgL_$L_ zHb(ysCMD1Pg^C~JO$@Ie z67RsZCv)(Wuy9+9i7|6N?5-ZvH9U<_e-yn!W77{UclR6c;l4c8_>7b_=jOq-=@Bnb zw~Z(AE2~K4n3yZ7mL`D4J_C4=h~OOj`BUfg>10G_S~^Q{-v6ARb$K%PsGIQn?H%*b zimDI@hVQwoHf=-00~Z4BtOigQTe|DP2exFYw{R^o`h>{m2-2lcm4= zd%z#)CQwCaV@=Va08woCR>rQ`$+ZcfC31iK<+!9vv7rJVLg1l4t9nxz+3Fq=08XEz zRGjBYpKz;Uj?Js%Gcu|V%@dt_DQ(~L?%fL`L% zs3aZ&S^=QTCuA%UM>TYwS=CdBj@U1#&WIuz7!;zr@Gu3WXsV113Dm)&y^Rh&9@aRt zfq~V?O$TiH4tIJo|L!kS)~SA>s_L7#INWMqo;UU)E)JDr*=)vpJ?-G_yr?8}l3#~A zTZf;HrRUh-|bOCxh zgQ{9vQ&T*S>S87kf~uZ@dIIt!K$H&GgSd-?w)cuXZnwuSJcSTNv|+}^%g=+RT-*Wa zkZ@NF(RQSy92XSSl+DDv03CEQo&l*v$KE~=DBk7e`E^A6^15YrlnHkrp9TVfdnH6{ z)}B0hlE_M}ZBhq?*FkYeDNIa*c7Ex>f^~a$Ge2s`;hS-{rn|lm+JkiK@zOW@bZvP2Pim2f< zGy>%t`T2A>NMD@_WRmo?iSY+&UgQJfD6-h*;eZlg56T%-<-dO2W;f1yAHT6ML`1#n z(IZvo%r9C$q==2w*xW1xEGaY7A<3W_GFA>CsQd>G)Nfu}ZIKS`c-I6~LRNDe?j2Mv zjjL}Fxljxlf%dUu77dh;_V)a}o)&0hl@>ew7(*)NDN4T=YU5jaY*H-zr%&Q~I|d-7ekMn@6hzi_&Q5C{Zd!tx$^;KsdIewQ|kGJ7mP1W?>I zGpf4N5+M_aAh0Pd&mzzAT5bd`G!GbgRaRGPy1Moy8aHF#wG5|kAy9JIE;W8mlUuv? zqPAX+3Z9OCkL4Y(hA+Q(`hm5Od}-_(PCrwUo~CVnO)yoJP1eP!L0nXFtwsgGVr?4AU8m-v%-mjZ;Zhj6uL3hyhAvGE`pic+P-l>F98`h&ybZDcbY9 zOwwJw=Oe25x33KG4a>Dp;eA#14iaezVVhs)VUUVTUb3>% zPX>g7aT_X1w|Cta$yEGTiXDO2l=PjGJan@6JQ3R+yC&vuKn*Tlv+4j4s$5aoLB^!g zQ#1Q+22bQ$Ok5op+VTl!tiDsyX?DftoZjTLG*sL=Jx3Ov6dD5|#7>GWCp#wVr=bky zLu?M+S50zuz7_WWvG-O{S?yihI7&&0C?Ji9fKq~V-W!mVkVd2t5l{?3LP{EG5k%?k zlJ1gFB&DQNx}@WV|6KY!d+&FQ|G{_goqS`w2ivW1$6CKN^O|#BGy4AQ=C+JWP@6l< zg5`r{g_)ZUg%_X31YvJ8z%cV#P}{4nb_PMnDCrlP`)eNTv~4K>42tJv8yakKnd9ln z34QWcU@jM_OhSO4ooeQJc!cH={{sPx-&Bq|111!KKmp_eERT$oG%I;#jLjAD(O(XS z09`Rvi8VXyp#T7d7G5*+`RjnEKwe+s?3f7v2~4);k+FR(F_HHE+Rms&bt>}W2nb9* zMBcoKSQO;aAP|P+33T00xXq;&BJr!{2K{|~Hy9Xt%858cL}Vdh{BDp7z90jz?U{jU z0CVAeijF%fT!LtKKJC}_kruL_z+~`SkETGd4Fw^%O>k|@bF;G)sQ9;UdnsjWe*<4k zv@{799~Av~_wi#Il*s@aD}G^?ia5`a<>*~27-C!OycQkwqn5yU))89W@99^-p_#i7 z%+>#8G!XKqbhH-$-~b?v5`dZjstV2-d4B5WF+nPbh?Wucditk?x&+M- z?SJ}YDbeBu=;g-i4eJ?wQpOobzn*_yp9c$WST|5!3DzC7+H9E39m+T#AcXpRw=C@1`%^~RU1m>4Dqvp(*!rZ?^EA=M^JFiWt()DU84 zLT#g5q>kC~P+eMjj{D#TIDH95M!#G&qpd)QJBE-IH)50HIWsYHAN=6xsZ2Fcl6fiiLn4bb!)a&%3L1 zNfkmJP-V#9Axh>0mF@C~mFNR|1fVX&p@{$-&lKXEy|1BOq-(I=huNoie3GD*n-w_- z&)x=ok}#0>L=8|~2r&S>c2jhH za8Y`kdpW3ls9`}h1)}tUG^HYXlHbx&zY=>F^N%)RD2x6l$j0!q_e{lQ-_FrvOZcl+}KjC#f3qd#C82FAk|qxApzF<1D^$$$Rp{()u> z_dkFCHY-QJ(J6BD=b!GTKL0<>V5=FpIc4L+M1NjG!y_wZB(^;n|KGR#gkJ+g(4T)! zMhPwb(`dM$^H1O6ZSH@1P)V9?|7npV{r*oYsjA{X#Owe2hX0dODy~=Zk`(5m>uuAK zlS*b-rN*;Ze1O$wXD+1pFTcB6tx+3WQEjBeC} zamF|~a{oL;*&jn*+mi#_z`2~{(e4|uK-Wt=;=7Fwk~)mDk-J<*w3tM+eqP(R>XFpG zY3)3ro3dVO=-XGmng`!W^mlw!#g1CaTUdhkibP%ik%o@sLjO<$Co9RIl=V0(Si#%I`tEY1LwPK0$6H(o!`HBmXtu1}8wlaRX z@#fqaNp3BC&=sn6a^&ZFSbt`fR%nyh`Oh3H(&Q>EnZN$AJO4y5O;bDMdM3*ue_h~Y z0nStE{#ccu zsBzO#s-x(y=?byhulE-*`R6Gqec!(=r}CKo{d%P89O3!pY0vd5`!zvQU#lMLpiagz z)?BRh@@sh#3pbOgbJN)1TY|juPbv>Kx$RCLYTT%uviHpil47lJ*3mwlaz80Fm%PL> z+5Zo@^={Z1HMr3lE~Y3CfStrG=#+Ebn-wwt&>61 zKrG2nOf>ENgm5ixMhMNh#hW9ob_e>n?`UZTq^TQ2Hhp8IEUT26^YW;L;Au8+CN(Z$d=br`37n~k>=aueo#O%8jrpGyDlU`J=j8WlxY9;DnkvgVL@|(OI_%rBy?e6P zwZAo-hi7;C)Zz1+QRShR`uj$Eds|hPZvA%_pa-|MZZ+oa6j@W{?BoaS%$ljqrC4m5 zd`X7IdI!1n72?H?8irLWd<$ojDcRJ)m)`lv2kkd?Zd6^W9bAtp5B*!NdT>kcUQa zMsdBi>=PFo$=tzU3f!vnJ>tbB6ixTW(Y7d<2HkFW922&<=V@SQKXi9}A|H50EMaDM zxX!H(2u=8eg|h%l#6FGQs<8x4DPVDc$;w_}K4KPwf@k60s!f3HLf3N#2Z!PKnW3R5 zX6EsD0@v%Lw_GEenwna=Zv8qwPb0Wdd*bqY7Sr|-=rYhBQqj}H&|*2vVA)RAzovxI zI!byJH}`YNld9*}Nf84+DE6YBBA?Tm`Yq_v6Sr4WCpnk!^ znko-&;_}`q-C!I*1YxItYOA_-L^$PbyRY5))_NCep3A7mgB;(x_|={@`lmo0Y`cvH zP|~byB;xJcB;eKjI+tciJIuXbtHeMRyOoEDkTE9NNZ2}zFR)Mteh96CZE z0nRKd(Vcg4HXVG2GxVn!$Z)U& zYSgg=zFrI_u_||mtspSWOiH@S#KHnVh9oeCS1zVSZ#NR$T&RDI*?N@tdwiMJ4o=!> zIk&9XZdprg^YbOAjRsu1y)pac-I1q*9A%?P)K9Bb1;!nctt;lp$6SwAE05NycIq*S z7dBhz2Lo=_W(Z6;s{_eF>yZV!14xL$2p@w@R{{5Rjyg-7uA0Jv(?oI7x2{|B+)Pf% zt=WF-CB%yrgROio39VVGr@BnPp7)BMV50WzJ8oB9rFA()e}JuzM%kGaB8-xhd0~Kc; z=Lp;Y_bMkn2$EbQfuiA{`gE$o<>)2MMlLQJo>q1WFSEx!Z=poq929Rhd*Cw5NZ)hM zJT?_F*)gDIp`xQRm^4S0-rlxd`4|<|J@T|JcRucwGAx*{}E2!uQl5dEl#~BKcPJ`a50yx@pX>R zBpemb8j~V8oo{tvWI*qCVjiBPwdHy>9WG+7*PY(&a+j8c<)O8#brbpdE~{3DZL;D? z;mX4D5DNPSFZ8La^qY%sQKqJ)Edgr}D(kuYTLU+=onwuG%M^iO_l@)zrfVPU*PT$cqYaC30E-hu} z4+zv9C?RKDbRrb@;_D6AdSmn8)(6|2e(jrWHb7L>?}i?9qs%{;LbZ>Nj|&m&0F}ex zL6=(|tfj?}#T$^CGJg}JWhRz0#{gA_h-=krT{QUfBut3`o z2)v+haM&VHo0#vqlU+Ic_KpTH1)QF&pAJl%?3T@-xhBGaI6nQdp|dLT7}m;X&X0kr z6j5bATuzI&?#(S5&k|WHmjZ2xH*lE3ULC92b3m;+@(GjoGTsbfv;JPi*lT7Vyp&r* z;Knwgo*!g|zA5{VrhqDscA(RR0A=JY$sktfqPOfycXIN+n8;$TE`)u7IRM`QmK2%D@lv z_*_sw6<`mk{PmTs#I!Yd23>Hu8vGA%|14&v$MuTsjV6O0=!1dT@(9x63A$G{_A=TP z*g2NJu*CPluh6xJ_HzO+RoV_v>%j{5qJ4L!QOv<#s?J)2AIdxZaDboFNi9phO-oGt zWdAQY0nuA&q=x%ijS#%$RSWFiEEa?vMj!3F#P(uf9DX}f#l^Chez!|>OA)N5)mWt+ zv>ruFtiS)h2;k3$lO4lTO*pCHlucMQf3rVGU|cZ0b)$v)=>qCx2DJ^eT88HFF1vw@ zpY?EZ+RjV>p@4d@iQ)0|<+*2qvoEW5lIhWMFdqc=q;h{cfF+1CJXZR>kh-_w*3TWDW*r0=rdL?356_rv?LL5AVU zulF{tG(dSV0GD$eJV=P!@eI!i`}{2<;KLBnt#K+5Kl;%ngMLiTp__8k?V$Z@SC_Vx zRd(s)A4zO^<&r=~1eI%H7+_{Wk9G;p5Q6_%g!7Hr+G2!YHp%-5c%5A}YH;5+sjK%3AxzqJp%r`blVg~ws{3#PC zk+d+={qwIOR?k=#m?BxdI3N1e^;Qn;t8tVkBPMxAHuxne>$3avvGxXiC{o1Aa@_lL z8wlxYPLAhM%RtC70PZW1R^;WQk0O_Qu)3BGaF2_^P5>)s=;$Pj{c5 zruou2J<=-kR#sG8NPTah247c;UVXX@R$6Sj>jhjg5T)#--gLRKG`|mW4FEOAclhXh zu)k_64LdP|oGDI&?0KBiO+q$+)a{xvbgza;kBHf$xyrITl0^ z9Qk>9Q$*IQ)scrDvvx(N_)%D=$hs)ho2v8kKjV8#f)^WTzgd@qOXo0IjwGI|r6aaL z`DL{{kPC61+qXEp8_r>_lxEK+r=3+(o1F+!@z3ZAfkw>UJpt(uZPW^d z+G%dG()SO4RFI_M2MWnk}=hy6h%qyS9kG1I( zQf=ydU%SmT_N<8r;#J{kQ-_;y5S5^LfK$`&2qW$cv74C0q6t9TWpVnNhnpJ_$c4(~ zyzqX@Slj-4P+Kg{S5I*{+FgY2Mdl5V2WQdS^$jp^aFg^$L#;pgjF3nKe9`m1`h!Ik zH(h8*cRJo|O?Pn)W80u}JAMv0o=WA_m8uDJo^|<@4`W>$5>6CPB2EUPC2$i+(3E^4 zwi-QgoCf57#g1DK^`AGBy{OPb2*-rxV@#dDAvT)eX7yc&VjRB(v+?kWi{~N!*`Fn@ zTi53Yx*F5{nVYKX{Az^&bKgsShw>xWqfo8W z$G2zJ!vhK^3LbUVY%~(+7Mgg2x&~&b8tp9g4_DeP=hStAdXW<1>_p@{Gc7H}25?qB z8n$P41|fhdSNgik`YY9mQ^ZGU*BxpCJK7>hxrT~LS2b=9BrQvC*z%%mHML=|W36hv zmNCwZ%&{z_w6rv1D-toWKwOUA$#;w0v9e`{(})K06}y3Z=F<8%w17Yv{KLxuLpXu) z9=<`niemo#G(z5J?9G2V0(=poeQ-m5n=ZDLt8})xTN2;ekX7W3Se0D(52a2k)bw*6e7B z?N53Rmp-|#Sd+as9u^8YuxaH3(|v`M&v6Vj#{;i;t^ocv%tzY$-Hm=Q-hgt@&@jHc zwr9^;ZcN}}FOeJ7_taI~iLh>g9P&<`e3~czAP^*ULg`?$rl#ib*ZVpeJCPwIPJ!?eJg#0v_76xVkn}W z8QBY0XQsd^aLwoMK`>zf&N19zYdOEpb(pO)uVz=*1&nl@ZN!Lu?G`P>*ogMe%*-5u z>Sw`u+e7!ubyC+sU=DegF|~-eD|pkekUq8mH#b9km%t*o1{ke=ZNu0ttKXCkvV(|o z2E0FGbLsxXVdNS(7mNID$Ia%;C9qj4W9!w;^2xJ^D_Y-7j&}oAm_gu<+JR8hP1aev zVZ^#hiCAnqG|urSB^n}~L0}Z-<>!B?p&bJT2J&hP2os!EO9r=Bin^AjeCY?kxww92 ztAp>MLo{(17*WpFUfo)sD`W0+++feRBXHiLze|Rf1mEz3UD9QIc{f)xy#o}!q07TX znqEyezcB$C5hOlS2bqY3WI9>qwcEjaw;m+IaYV;Y!4+(`8=j~E-7xf>+=ZG7`Aq}S zRg@guWMG3SNs?Z zD6}?FXJ|kAT(+-^8!GwQ29Bw_zz#e&Up}^$ zF?et(e%}k?INJ`s!P_-N>(012h&2bb4yp|LKJ{#&u$3-)YwOkil z46fK*T`nGGYd^sdm0*>mtXtMHE=td7@=OcQTuT5`Ok zQ#Gzf%PcXflM1?2I7R=ZU!K`8wY4Oxt4}n0+A(&OLwqD(a{ZA$<`KzqM0swXu8WEw zj!udKtf5MV#MdL!4tN-I3ujb5^5R)rTRTAbz5zks6wqJeH3yk3zm*$2^Ac?M_nDthmbPKe(Pt)+^%-EAJFZIf`)lm<^han0x_WG_+{k0&T&Jk z;vlu*UJjQTVMzjH#vai5)3D+P-mw%%=CQE-`gk+2MYhM}?SXfi1W(oo8x~A|@k*H9 z(8pRFt*{v?GAAy5I$`j$xJAnMJl@0mIv&e=#SS+1cuvx+-2%F=7cVkt^pAdaUVh5z zRd;_|j*PF5;7&I7ZhVi?kgz`4aDooDD=OP3%jYbwsj<5>s}ihM@bK`sTlMk@TB**k z&UGIm0L#aOKr-LzflaUh#xsIihLYOIf|qJ#q^v8!()`!#7r|G%IX$MzN=n|ayeeV% z1_#G#SjS{`0Ni?xUWFQ$OM%UNrvs$rR<<-RDrnTxm7BrOvsRP0C^KkWCl!1?jRnC- z+8zY!bNmtce$)ciM)mGzJh-d3dtowQ7Bj4{NS%iwTi1vVcFI`4DAgY<#+X_K$-ZY&Ju z)9aR56PcTv4~>j8jgQm8W%~O1;vQ}KE1)no~*>#j3-Uh zPC1JHq*k`~?W+>e{7vukP2|0ODCDD#E70o3;CA??kdo%y-6Of4|9=9UDt4Y`fqNUpf=6BHjT1N7e@7d*<|( z()pgJy_I>Te)QNuE$GXh_9S(M!E0LCc7uvfl?9O)%S*Hz{I2=Y3O`tMUw=5&oHig* zGUg=*)7krYxEN2r(za*fb4+Y3EH)vSZ0Oj8{ggU2PJHlfcc+NDzkI=y@*!*hob(OQ zqlteK(A4DOuZPyg`Yg?C!qSl<^APzNb=HW5@tP{5ct)APf}!mq6%<;dJG2@UHA={a z8Ds1SCU65mQK^CHu9c@t6!X=qqZbpv(kZ*W)K36usG$9tUWsBrv8}ruEL|mpzCSLz zfx*Gc;JNa`W`3X51qPK@?w~=5J&#zO-E-73pDhn?I71k|vA5@2RAdt&mHo!GorqSL zbiHPe4tV_VBC?J#GHhc8`e=@qlPw7i^9cf5(%7EQI(P6vYQs`rc|WCj9@p-S*7|kq zW1fie z6}1tB1BOvN=D`j7CnrZw!=IKn`4C;gx`K&ASP$m?VXt`5T*;t;XGlnhD?7-E6cFTN zjM*ZK8<7N3(}^B}upXp1WMOH&hygJ1Wq8#k8Wb;YUrL0)ABVdsx_U;-YzX9#Sux6} zdtxv~SV*V=7McL#ZOQhcmOrg;A4Rd&WeTOQYSYuXmTQwIH*=WkS+y)Szsr}L3`q@e z*I!k+01Zu#dXl_PeEL)GT&_MjTn1vkzhJo$Fri~-7i%&dF92e7vK4ddzh2n! z*R?d2c+R1g{(dqDe)t^qAkrY`Ra)=Qe&4KBa4Dd9VW=>960@$j>%Ahg6m&B~PiCHG zHaXaaAnLv!+)Kdb7K7`0CI;l}1&&)ksq{Zafma0acR!(Ewtr+^O9urmmdnF<=RE2rI8qSa(hfpKj5B;G<@7a zH$j0sF~*DjSlNqq>*KTt(Quob#)0Z@&Lj?XgHxL)Ucb#7dS(~x=yXF1;h1C19R{`WNXjBoFkl_2y3i_#2Mu{QU4Is3597(paj5C z*aEdsib_VJ39yWcROy9h1|Y84goF>TbaQ+AwuHoM`I$5Blspg5eYF>{Tk(n>^Xgi>GO#5VQbI@Dylbd5Yv5`>R=&gVBOFgWL+1;LxOfoq==`2 z!~~m&nxA+7?9}3-|5%m1wjh1&r#@Tv)SgEO1AHL0fbv~Fb5m1KYy$F0Sb-O^dYKxL zz0lSOP+>Bd@FLqa=W7PGVAGYMLS~Nf2l8uURlfI%9%@=@DMFUolPHC&7%xtXm@Wug zeuwg4d55a(Zz7RJHLMB&S(SSBj0*xxFZfSmi3(N_-A6Z#`(ox;2r0bl+t7Zsj91`p zN?6bq{uRO!Y-8`DBA$=@Pu>7N)7aBPf*1>sCLmkAYrNzN7LW!OLs|{wyiQL~pG+G} zkih&FBlJC`Z+r-28T>MZxO2G?H7vo45wY)FD0~M(clBI>@XHlHaB)p=oJ}A3tg!mk z0Ri%?suF>NGy)#ur%#_&qjyL4p%}!*j%3qYbiWOirHoB`h8(l2J8 z`6!JnN_2s;^(q*lD@Gvl*CF)KG_5H^LNm!WOs!m9ri{S+^Rcn9pfN;u;y-|~&sbPke=&zofxB-3GG$fBB*5bW-{tLzXEnfj2^%XUjExx(@qyy75ePcu zEi@psYHKIUeVLx{Xf*38D@uMHxRM>_4q)@Ee~KvAZ*qwT!Bw*=7IfHcAZ@J8rZfs; z@q?NqmBz?BV44Vk8gfFf09%P}5bS!Cx^@xI5-X0ygW7a8bT>r z$m{d^93d=@LAlWZ0WXdlHAFwHaI5E2)hv2TvNJKVd8?r|E3j|0HeMqFKoujh;UcH? z+HVz)U}R^{(QV3BqaXZj4nSiL$3LH*kMucDiw^^nkV#L$&oo&nx*zevt{NPu^ScA_ z_0=m^>W$JQp-O|~f_ml88kWr29-}f^>b-E4MhTvxQk6#gbytLTuGCW%m;P+3&iWmJ z!U|WaZvth7Jv;tD{L%=Qnq7>78>M&MKa&iUh#8GQh|K@{Y>=pU_DeYSNO@INbSmzE z7v812u+mlH%C81odWz~iSmF(736InEg7I5KWHZ&%zaDSMDJ%1z^HPX!`xYxw_LZrQ zDhLORR3iZ6j|;jW$exCqkuelV_<1%5g4PFSW_X95KZX{ZylOUEsDUDQ*tF-}Tg3Lw z%6pyBnnQe&j!u;LXG<_>%de3*p ziCOKS^D&I(N%(x2mL;P%DHUjL=KQGd&^?>;s#(|BQAZ$hTou1Ms#EjamrJ)FJV;5n z_bL-8TU)^u1P;%`?lp!81#IQGQ~wni#2PmBsu>6*kv<8gqUx0bj zM{%3tAfYw%Y14=~kpjoY!;w0L)JCAi4*T%IAKZv>Uxuon!$!i7UBj^z@w}FD8YV~# zFGOX1-eXZ*AGuEkic{&T5>V#KDv>XTeR!Mg!n^#>V^^0?I+~C?1p<32EIhlVz6MDC zSP6aTnnBcqfa#iG7c@m3QkJm{tO+=gZy$JcsvQcAqIF9wBdD=7$s-iJ5s*OZEaj~S z=b$2FyfOUoT)~4|lwb<4In;Q1VxB#FR`JkC1RwxNmrXYIo^MP_gnz8iws*IKjS|&R zYFqeGlM^ZEoToP#9_cUZ76zcFYZqIo|SsGaFJVFz?VA z!Lkq4`HtGtrP;kA%WsbQmyK%5m0v5p3OePmA{@AAgun=gH{bNIsl9gP#?Lt}IQPZ` zM`spKf}Nb2S0ADTSpd@HkI=~4O5;W>PmG`7(70FyZ}Hbx!XhykUm_|!g0E0onz4n; zwFN_1(8X=q^6uWMhOl=5JW}Q#Q0s{ib^P>gc@H4+B-s!;kInMRN)tFsnRrHw7;zV> zqK6%~%3Z+*@-7}~n!DS<4lcxVPzXLtkZ@qS=#Tg+AMM{yT?+#Pf`dKqn7LaVubCZeRW-^o%J)AfQi zn=Q?BO&lw{0%gMiqn?q< zTL1(dxdt5a;CQXy9TWERt-6?Z^*=+Td zz*vu{6QI=w7reBUKJqp|Hl^bzjfjAWG*|sCVnAIWuSK4A7;MhkoM~-pZN<&Y%PS}= z^R1~7)6>)IhOjn}k_QKB>_dg7t)@LOHJ|hH4i*khV`rx_y#e2oVNwVtn_)9S(73=K{0K!@ zpePGw22wNF1>FeO2e{3utN}4Vc-yNZmti0aN!>~Dy;D`19=y@eb*?q^cFnd+?8)F| z;+)8=m~5dsn`06|UKO0x!y;opYAlaWIzI51>0G}pVS!vK^zQJt1X3oSHW=zw6uF|E z;94Og_58Wm+1UxX|Fa-v1}t|7{u`T`qzc9W{R{yIOa00TsGsV0l$b2t9Ha5_6hz za_7J#2GX(pzUNFj3ZoC55IiF3J@4b8g0F+kU|xC5J3qh1#ASD(dT6{36u`G^`(tAT(QkA3`74>!VQq+|8pRf< z4~3$I6&M`Y5vG%@Gc(v@jJ$~#l`Hj(vq5L;po=0Rk%4??44`Ri#X#+_6(WQl4Mh{4XfyhT^`%Q3`0xBjgC3sid{LKp6GYcL#Lu&nK#q@(j|#JO9LGT0u8u9do(W9Uh+~ymhl}*lU)!HoZBqN4CnFUB-Zh&@Bi_Iy(_rq=8 z20#lt(YLHjfR`#rmFSETUV-&!`59neD|n)%MGni{)#eHj>=;sr4@QQtQmab9DSC2NXP-%0D<)hFo-boc?;lb=jll}IFuU+KLXz!78-hYPJstL7jjA? z2*z**odKhi!FD4y4aT^W-9LSNuyyYIc^`l*T~QE$BS)hgBWT=9@jI87+iApT7X?J@ zGE{lUAv9vySJDmx`|6{}%#)d)Taws+_NeO-mu)QPXUYPZ*DB{D`{XX!+`-ks9^`8q z&5ITv0vP9tdGiPMX?80WlzGbQ1DHVjo1hK}=-gqlFIE-A)6}(+Z#K>}hW&fc5G3 zBX-rn;sIJgsqqoklNdp7PPzShocs*0th*ho9fssYooiwOU_kgy6RbP1=-vPAy5)A7 zFxs6V_$7cI0xGc3bdF+F{Ez)0V-pPwy_Wz=>){cQZAHD(%=nYp~9Q zK;1+pkmB{U$;_$0B2fVXID)OB&XIwaSUE!^6+)=YOGU(KSQ~f-6Nh4jk(;~6QmdQ| z&@5PffxT`D&vO%+Ql{Y^GW*0q8fpPuu7=(vkG-DG&hxdkwXkz0>x)@=8V+K>bl?)M zT+ao>1E6%koL{p%6f*iP=PZ;sIzOdA8eo@3X#3o=7cW@%bo;Wki2+4`^>=DPin-Yq z@0fI*k9_fKlF1G)ELWMbl4fS@>2XjRk%4LcRHP$dcT4TH{5^%3io>XPhOf_%bDxD^ z3yR+fut@7LIvNsmfbF;+w1vuQslf2w6>e@4fR*@lDoa3ZhoHAgUO-MAll>1yz;Nx_ zZ7y+0haiF>gI2Pa73vt8tYir4;qH#%X|oIgEpoTnc#6ntr>xL?9SRg#` zgr?kNjvF_)EfdcmXLCV~58Mc)(Fc+s8Bf5+8G$okvZ^{L$T|$!T?@6R7E9N`I{%rPfqZrH4sJ^Io*&-A3gRG(37Tg*iTUlZrxJw64gU%wG831D? zw6--cFhCLm@JI!wt>kh#L789z@??)OPz zg7zoCxA&9l!BlL+$jHcajiuE^P;GFOu)bV*!{rCaErioZRU}Z?AN_pVppabTeD*e( zJbLi@MngX9sFs#thG{0oay}c?H5au&SMEwvrFPBf$%w>6>eRzX{Fc z$o)-zIW6f23Xy_GO@Vw8-=xhJXYDCqQxA-$QpqU1y*v6a&I4> zY4Gh4C#&0n$vu|Or+jb%##wuP!6--U&s5`B@@O%y9?1rE)I}I=J!R5C8>?2F8Hh$j zEEsA#j5ycP259P5m&szEYUuCuZ`k2KaJffl_GL!h1)Hn>Dsw{5BLICcJ}CM?5=Ti! z+LxtC04P=~lu^HFeK85f$R(bSA61ZjaaM~xqN%yV`Zr7iq+Amx~b zq)1@NrMRd_3XFK6^_Xx`{(|{q_f)k^ETs`jBN9aKL~E}{C_s?`v|*(ly!m4-)WPhf zPddemOGa#?Ons`InQO zHeSnv>s-uIm+2xd8wDw7FBsbI({E|Yu8JqNj1Io(7SXkLP0YVMbvx0HOj`pG#?RLj znnEB>q5+YR27G|EgvKgYw`6i|&bzz&E|SMR%&cZ@j)8K>ean{+89=)o3Dh8rxXjij zBDEeJ937d0cL5kMrr$?9^-+oLXtm=d=#(Xbb&wGFzgMUU`485LbfQ3o`bSQLb}F3l zpU3T_n%$37p~10jYj|tBuaz~$UghX5z1*~ZvR#=dk6(RY>i^@=nD#){^GRK1)@;Pc zPodq-J5--tb-W}tD{Z1fQ$I%dkrdt4(C`XpQJDtNOB$A#12B()LZSBe z_mM8_M}v8^AkSP-I9H4nCWGj>1zLW5q3KuCiLc_T8k9o}-Oyy9vu9x?EUf+B06YoF z^c|phaRD}4BX$9H*evvAUV@au8&Hx&Fv1jo#Qp4wC-%SX0YV~`sUfbV@?3+J4B}=a zW`z987^-uSR9->aRuJn20H!Ade&8Oto=@M-(JjG$T6@3@qJJ(`?H-4zu+#Q+n5@3; z0Buxr@A0K1ajD58a}1eh+eJh-@L1AEbs~4c*&FpF{zC5fa#f$L%$Rw)sDIaTcR0 zIFpoymbcGEjGsEE(Uh>#>&Q1U_YE7p6LsD z>e~G8cVk$y7PlRI!n&Dyy@yTVbuD-01*<{&kXGA9Hv3|S_4$i|?P^K(#b;}hNuxMb zr@y0FN7+hGHnp)Z*?+rFCFz@_b!|41P>^&93Q)XeH=8F?dg_hwb8P6 zaX-HfwRRnwdG7jVPkxB({_b^<+P^YO@q`&?US8HRwm%iVU(dS+C2#Wl)4Lwe ze<%X%nv6+Ws;S~rHh�->gs{@kt{)JcGghPy_wqi6 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-zh-rCN-hdpi/default_select_photo.png b/app/src/main/res/mipmap-zh-rCN-hdpi/default_select_photo.png new file mode 100644 index 0000000000000000000000000000000000000000..a0de3b7fb72eecd4943d977ec0b6112dd3cf10e0 GIT binary patch literal 12024 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
yaLj7KsGMN6r#Z zFBVzHF;K(aiQ5yb_?93gXF=6)&VJ(bFPrQFAr(LzC)*qm!*LMRx0Lsn#b&c^dbdDt zeE8&eN?3P`Prn*hPF2Sup0;TX8mHSG3DKp>r-P-`d%9H{@VXtVZ@rKBeOoX+AsiEC zrQPwQnlkdMj`uXk;Gudr*YrcpCF*i;?2q03NpGTQr>Jb!Vqa_pxJE$|NRGQ1NEpU` z%kCRv#v_I=lGT;UC*D6zJleU6`N z0smFs6h2*GzxQy{G-Yz)(Ynie;H+BYu7)hNFVvDbMd4`@h?jjXb|Un?5gR)0)nYBR z_Y~b74&rMadzovm*_twGW6mGHKF@HYOoi>8V^eVa7(i-x4Pq~$uF9LA_BB;{;rp>Y zYVDa329zuAu!6=sjxd#vJsQkEVQGD1@^wR&rd1=c`=Im z&U*AcP$JOcQ_V6AbD1BGA|l3KVH+d2E2|%PbT1{@Iqc%&RFRx{q{yAgHv-F}%mviD z>rUyDW4Z^0BByr`rVNvhytdLwYH`emgcXc1-zBBeq%=rWxOzHO-EOq}di+GNU$OEw5Eq$Sqi)=mDP(3Gb&f~v>pyBHEwNrWk?{7 zEV)ChBR{Ff1$$^#E{J?yI#qZIs1+03%h#4Km7UYSTpXO-h~o* zs(n{S?p8!$fs^KuYaCtexCrP2*T-a|jj%P2pI|$tW{uGI<=TNmuG-00Jt0*E;d=cG zea}oD!W1Q*2+wU&-`mC>P-!&7rVteTsdSRLYggq*@?^PpgxGnrqo5Bh>E`4qLm2}!0LxH%;Lfz zUoDck9!r3_`p645jyrBQU*Xc)Pw#6*ewp*o2d;^BhLtLX_?q^dD4%+p93b&H*=Vh= zsp6&%XJy{u947wC_My;rzSj18{*=Q`D|pZ-UuzVYr4PnRKptus-y`0hUVjR0^YBV@ z%zS2tIn>pmIs4E;ZTJ&%onM2JX3t@5wt|9lI0Y$&>^xPVf2FvtBDG6Go<*#>zH%fz zdUnD-K+PY)BOR9B;amh!`Hbp()`IU;aFk$b6T$=!m0l-}UwkI7z-iy>BC@}kX@_wL zkvVu-6-i(fPb$Ff^CbXcWvMXkA+jyuWXE;Q(oqv+P3l!CkSkoXx9U_NQE4e&ms(9( z-_Hn7I7}Jl?+R1BrJKD1v2z)+c6|`uB)6^6bLQf56=~kiHu1KFT*9&KWVCLwmS+NO8>Q>pr&yuhb$4NjVwH-ZFtBi!zZ53_Mt`fh)-H--7a z4nT!{uS|U8(HmC^vc4I-*0Wump?@V^Ebj*WwT!fQkOtxIfVRX_cEmS}uC2c2ytvk0 z{e^-3Crv1}U5Q9BSbhc9dpQ(FzSx#m-o3QBf`CDyfQks7!OJyev$6|T! zZ*qK)N_N1@z7Lb7z9f;*RrLoXZni>0RL%?QE*%w;V4t8;VI5M(y&=?|~wNA=b|y(v7m>bhSXkX1oWqHl}+ zqcZO^Ljfv{1glE*JM>$U@vYCt+&w;Fj8#C!@56UJ*O^Q~0N-BF#|oLpiyKdgqo!&j zjtSW*T^Q8g^msZ1$ffkm_p@b(dnzC#L?k^JR27OfV(x+URKIhLzbXB(Z8UR04LTD) zCx=~TZ;vmPOr@P>Asi+PMu|^`{59+EaNXcN`+00fZ+vOYWhK6upt^gmR*QFf<7(Nm zhlee%*7p4`TWN8)^N6gSH@m-FY&wN##NLH<7=*79_A>^la<67;tL9pxgcm$9XksIU zh#{5F)YzQLK6K?m+hz-qyESuiA&5=2TiXY38Z!K?wJIjmvfUY$jP2)UQ5twDm}ACi z9(AsOh`Ww!skDGu9L{jI#BYpyBQxptWg z93!8OO-C8DUX1E^Sj$&Toq7}5k-fK0m^8`rtB$p_NX8nAk>_-O2D&>ZtWcG1kQmvY zSxVac^(NGvp*9NZFWB(QN^D9F^CA0BuE`<9WO7=-lLbH>#G%)o{L6RB?|ijCLBE; z9-=^OBwF>p%R)H<8L{799Ur>@7x-kN)1lx>^8Cw>XF9u(HiPofrB&@|&|j!gUm_81 z5=T)jO&?JERAhBAJirD;4wcPwP7YNVd*iGlI2JcrPO=I(H zYadP-Da)@P9J#Qce9?mkcaAO?UaPrh;)o`7$_~r^^#3(k?H#QvnX-LGgt68GB;Ku6N<%r1-`%)k02< z7@uNnwBdOwGgyqbf@}wtt+H0cKtH1M{Q8D%^cB8VpDuRXqQIbJ*0@5Qh=(tBvc>L- zv~N;0jdC`{TA;Ztt!c}a%Osn>K10r$S-$2!wm*VV{2+bNwAsy?W%guY_|Pq7U==f$ zRahxzOTPBG+=FAKPuoN_9A~tA+met`UPJ&3X4E~kd+_$lDF0*Yx@+ttKP*0KCrWYmfUPf zx_@&Ynf}SsuYnm-u}#tS-k0bWfB$WgsH~`b#7TrGgBHmH6-@_7ttPJLN^If-8Pb_` z>HYmKR0=T{)TPMUNBF4#`=bqMR>2k9WvwL3b6L2G8vcewJ&~xEfK8mD5ocw-w@r1> zAeeLqKC-BoR1r?0e^Req4}F};n|aY4XteCvafGbwwnw{sz@Aye34ZtQ?muiThAUs!vM%&Jnhu}(7bYdCY+?~{weT6L6y$~w>NwdV!**viGha`R@b{`H z&n|h26vdaL)wW3SFe$WNu;7D}(~_eTUNewW1XC80pdb3w)_aF0=h$d)W@}`5O||=# zu-f&$c@v`&FYU2y`S>y2VY@t@H_}Jzc>lfVqnFfiVRHS@tO}snw)>Khj5(Uf(8(UY zo#QVvvo5H)AXJ*mx|7bKt;_+1X->UK96w1`s6|DxP_q@wu4^)>4@sosZXy>mJ?;kt zybWoG?z9a`K~8HLaC3PBX(jPY^DmwBH&|Aye9&MaeKkA_N2sC-+4YF?`GwyHKcL!} z=PY;P$`IA{h*BQ#ppEMiL%OKYI~lTk4ey4mq8E~_{0=f zz^JDAtK!MH$R7g?^2x{k%@M0jsZ+7yI$8Ek=OWe;D(I^#VTiu>QdN^3~Ti9|by{cka+?cQRUGKn$*@>Mh zHvpXl(Z_K_4;*%)LrxV!BJ8{$Sl&D3EHG0BvNp??P`xN0?FrmJ^jqD;eaY#h(;vOk zA7$7dIop5QyFVJdkM=i`(%fqJ&%BMx86>`8DR=K-ORcZvV~8 z4s^!Hr(-+fR1wA&;{h*#3z%ZfKl zOdl5ou%JJ5z@|5C@Viqfj@)dhI78V1V|V%JMSq%iN4yq}6Z?&~0-v4?Ot)xYj26>V z@r2iz@ihFC&sZ~CevkiH24%8=b183k!&Abvfdkfxk!=o z9N7@*7m1LJ;m#O%MTXI8%IMn{FfEl^mz`T%v`0R!G~pXiTILm6Ro7@HkZ%8>ffJ!f zLSAQBAY4Rz=ad00t+vYomNYWzK7k8Tn==&pL&p0H^J(qeT46h)Cb^m+J6;P-)_qBn zmY?L!^8=aDJHL&56n&Zcbcuk>Z_VD(qVkUW$?gyL4@HXB5*Z6r{H#Q`DK;G6sr>zJ zqpviP1F0gV2v0U#Q~dgVL6H_YBRx0zJEIKOO65xkca9Y5j0HtdX*c$y&>Hkuu3o7| zR#J(u;pPG+BQf$_tYpu}$9)066uW3+2;aHRCoyBC(Gp_&_bsXCTw#BQZ&FC@$8;}e zfb+*z_JDb8tMI#K!}{Sk7l|TNWb?rL>{Jijiawf?YnahvWWAz;6-@crj?sIgfCydw4M_t z_SjpstGE-=e5r-%G8vhvXT<2(SiKz`Cel|W8>PzLytw$O(f;ylOuE+2Bd?;|!r@db zNl&$AjesF7|0h!1nexQBZU!E8?!|W=SUc{1 z%ZQMYOV3gC{KvanRMgaV6`j4k%C>Ytuujor2?1QIK4QkZp*K=Jf6m*D`t=y|mYQFORd*>e02!{r&wNM=m|X!w--T+OE!E zd3)y~O_7Vgs`Tw;uLd6lQ_KsbEVd!RnzoM>8Y~4pzNnQM`}MrrS?KoX!LHVmSaBj@ z5XY5}kl-m|@XpA>PU|&8sbt@`vEd313F#dkUUW>HByM<;rBFXLHFXpIj=P2K!;o;%o;^Qamx+_YY z^2cyJ|> z7vtinO0STU4_mdG7he?>r7TO4s91}KoBKiw6+aCT zsFp&OgZmdys-gU6t?Lt&%{?96-Lkf}+^#9I1_o(mtC^2u;o==8eCS=EC=WoV9b=Gj z<0(aE6X_*G@x9K3-`5@r55y`W7xPY!_l=r^uM}!6j22r=3lrOy(`{{S4Hp>U2!~5K zIPkfq1c6LPEGe|54i68lZ9F)2GrBZ#)tj1{^!L{%^h23>c`t(*AT>3q_co?T;^j@W{w!!{40*eH^1Hua2UQq`h(jsskQaE8cf@VU=TzrV6~vh+0}& z8vbhF|D?XYKJvRU=YryMu?P)4z3`qMCGovsqv3DQ3BXU3SWhhfk&k(l`QYKhmrQcR z!|*Yrlas*q_I8ppa@5aus>aK8`}+;kW=)rz!o1#UkA1_j60614)%&KVH`Kpqy!`XW z5v-BBrDuGc5Q#w0&;;|Db_rYd4GN6*^fu4fq8MEE7@O_UE0M( zsG+gZ?pGTr?j^J&n#}~<@8V|Z@ETYU{m>@s&05p$AJWSC6i~%Mx|Dp=FazbMgosQ| z4zn675oxxg0|RdI!NJC^&>0-L7a1Ik56846DhbZUzup%t`0cxQU{#E1X=%8`#MnlJ zbglK>-6U`nhLpclGcz;wLk(62b2%d#-#Z<(-g})Cl{bv-I?U+Fd zOu%BWLkt%S>6@C$xV^JO%E-9!t=-ieu`M0}s_V~V;?kK0AqfX>Wc?F_vbI@`PfT)_ z!9hPh>GThcezcTUd3@>3ShPMjO;c|MIf@ekiWK|1V2;8OOy=&L;Yt^-hK7b!>$Jh1 z9$z@)tV7LErpAVi=@1~TtVI{El;cX$5KHheuG+$ zdfNN<7qGCfaEXYn_;X*qda0nG00bgqZ~v{&D2WDDA~wX`ve`tYIJ_pr#B?E)XDd$# za;e+I{sUj{A*q5cuGOX247y9xze$*j8jX@eE{3-(3`cO&JQoV+|%tDV`47j_kE7&yfG^FQ8!7J_)`TG4)l zl$11mzCBi~s4hJtqrjjMJ810=9SY7&Hk__tOz-}EOnV0hX534HmcvXn6i#NYOKZ|&8qR~Nc>guPFMjd`hMWMvDyj-63KL5;?| z%xrA9;Iz@le_3z3ng;c~gvl~g>Y>XPh#<7Z@tQ#Eobf&$RhSIE|QflfK zLiP}?v~E)r6%|1a_o{DsWuY@cZG5i)IDSO^UU8`}*d-=2`hZvfKKF z^PK{6Y=ng2hWOz%)TW=YEVXe`0c7n^i&y9k>0n2pr&5p*Vn;HQ_03`wIkji zPx@h4@V>ToDy_ZGjNcIamVW5WbiM!VAAcMY!_%W(=k}PlZ-_v{VP z_sHg|OCd0uT3STMAFExBdjIX)WzeX)&uTfVzvDYi?%%)9Bq};;?Jg;KiH3#-WTknn zQKs3CFy?hmSip}m;RuHnx|RE$6Qph0m(vC;ZsH~{t*l6CXi$OvxaZ4(AA!rYY;~@! zI=UZo7i)!ebtyEpwz7Z$hw>PknuhGq($F9-U%muugFxkC=YIb_sxc!9EeIL!giaIm z$LDhgKHe4M23w7fk9Qu+$<8kDz)l}950GP(x_9q_dahOgSRRk#yGPgk{QV0IoAJR4 zC)qq9iaNUllVT!QmnRBMBO2$gz)$3ZYYJSI@AH%;DM+|B+v2(>o{yJ%rr*4{2P2>{QSZa@yCl95#Rs@2i4i$J=$U& z0S{eLIo1v~-E8rT$_P>rNi8j!qvK*3{J8g{&6jOdYGnMrRYK{q!kLyjd6l0&z2Qux01>V$<<2e6A#l7>LBwgf zxkPZ4^{}GyFd(%Yc#A|iux1(|lS>L;bd<>-GSb(- zaC&;WxUtbXJv|+YVaV`NC0l3R!qJgDEG*0!!v@pf+n7qGN_lm}(UCg@);Y-5Kjr2o z_ZfY#gt~y9bMtA=z^9xXha=IhWU+;!=Sz>&)UI$os|f|i@Ops(k2z#6VR`h#zvny0 zAcJE>3ro#9+w5n<-Ym_yvD^W|!D%!3+p{a->E53h+^h9gDKfRckV@hf7|n19^F;EU zGdYglNx*b_eCaYx_|-f?itU8^i=7VVZ`O$e6ke8nW_gtpCat%EXI4ZLQG$*2@^1l~ zq`bq%dt^Eyz5IIz*D6-IX@DN7BY*qXz-#U})1jQ-dn-K=S4(EOXU&bG?4`mD=D8h3 z>7fqPwfI{Azw&4B>OScvt8gWcuDY&ld4(bOwX~-iUB66s3I%l!Ayb|`ujL#p*`ka< zD|fCO=`MK(;D=aI$2A74D+<*US}HrgaDSGKYBUWr%|2*07^kY?*)aNz#qiWUZ~8$q zGrW8?jg#04!%8V05deG_DQZNb~u`XkM(fdfBT?0ID9qRb()QXu|aeg&n#m1%1)5>T}p9g~)uSmex0 z7@w0-2`kVoF>^CEpf!~e& zpt7jf_XX2c$nw|94SbZ@u(${x!wL)v;t>}QO-o~rvPzIltAkg;4&V2hHL1TZbnu(R zMIzrbT>}^k+ofT1=3c*fF=z)BEv^5fOh0%)?G0ZwJWSPZE&z`rEe=P~WZhe~Y5&&`oW@`Iy3&#Q(geJ+Ci7WUt#3QE^0p1WeE4%ixm6 zLjA6D^{y6t1T^(mp@I3q?Y#myY4mUZ2cRF?UjAR9LW=%Zfvrn41jNs{jXd)3w7dinL);O2%(wDN zwWI6?{O%mGTK?c=KK(|WA-cgx`S+svKNB&VV&e*KwxgooQBZa8<@eqB!LsK^y}~EQ zW>M_BZ%7b@{{B}(Y)+R_+IVKN`%KJ;3bkV?F^h<_3wZia{k(i%^zfzdB>@7}GvFpb zFYv_5oNQDA$)lQnY<(k0S2tdK?~Xh^kMqwlfBK zOVBuh`^(mtHV62Q?-l~Aq%yq2+6zjpqhK@6Cu97 z7oZ-xFD;!`QZi^Xw&2D98R2l18y{4!R7QPo9$XtPvtvm}Ncg?GuVg`vzMhp-pG~9T zm9KYPcyWj5`3&xhoo9ZtA#D`2#BV>bHb2slR(W6RU{Puy1KeMlQs4Fb@l!@Ykpl&T|x!f7{wwRnUWF? zMKGO+J?6?#eo$>~?Zh`6VmdJ0)V`W-A&swm-I$YM&pl+^K-$Wljnxe0^*ju;eDVy{ zUAD@8k(8LfRJFdI#o>u5CcGEmJPWcHr3h(WyT=WTnT3$9s1q8fa2?z*4W~+9&pL^hUu)WyR zvl%?=V@=B5AK#-C$IU%4#vM&)@F3{up<3w095N@peAy3xydXDp731hwBt_=aopJ}N z1z&JNTDdY09^mrw@iiaz_V&IC4)zUn4nxXASOd^?mGFYjNyXhg`&%nZ+w4*c6!G;dHxwn^7Gsc8Z0_s;rbtaqUAX?cqpJ(M)ec^fQdI2zGB`kk^`+Z3U%)l3 z-cM>l{;G>CD&=#*^!FzzD-60lp!XMBZ!w^zYo3^x5$RN~ouB`6kf2?!GR_rMnHPLG_nOhcOeK#S1!1(_KncXPsR#=MaH zPcIMTIH&38>V|#%_)&AC)B@E?);h8Ay`tCR3Sa#MlO^3(!*;v<*wpWSSZVJlBb}@s zJ>GmvZRFma#5i8> z{wInfVb_YCo{JwXX3PrR&Q-tV9r`l%6=*=*u=qiLO%YR~=v(ra~y7P#^BxlYsMD5<5 zQ{jQ(e(IjwDg=OU3qs-w%$g>B(X!?WV^Yin+PfNQ9ScOKZb+Rk|gR4>cpwL~%7OTaE zvUx84wsPIw=7;gFw{a_F-7N1~Oa6FXs7s~gb}@dQL~^r^nvc+=JDgmN{T;~qU~3LQ z2J>PX*b*%4hCRZp%tveG;I>^RZ%z5>K zQOEo=?cW6j5KAHvt2MSOyY2v87~0zQSReKGi8%;xw-`CZxcF~s1zi!_z8iov`-Us* zdR8A0B^%QD;AY~_%i( zTxlb{L)37`V-M^$KyqfUz}eY3c!C@d7^sU3sQ)gb8CMb+N0${D6T|B4KYB)d{l*Os z%V!jNb%AnZZ>{g%eZh&0(=%!5O;=p{r0lO*SHDBj(EWSK!K9R-l83Rx_JyS-rV$~O z>duT600XAOd4}?!8x515{+qwPM}uGips}XU`fe-&YE&+M_`e-4JTj zUlgVr&ht)1e$!>X%i~qY?Uw#MKM023T1f^qIJB;8DQCDB`ZflbR3iSUyDX~8WRPCG zcyYMaM}o@8IaaQJXh@1R+F<8*r$&ioyspr^r@vCJdLv+$?Xg@gi)XjFxMY=-5KtoB zPzVVL0mle13g{Z(Y6|}SgY!^It?cfHBffp5xP^-~Q~%0&>@H~d+*S~Ak+;2~QpWS& z&rNAjYP#x{$;~1UTwLe3@v0xzMP211PT9A1S!@K<8M7r$ijA5Od+U%fMfJ+4HT-p7 zdU`s7lyt_C5f=E3Ho*J|Al|YJZkXUq;Q;_)Wc$4HR1t&QFVepr>iF~L&ys*#qYoNa#79HWV z-BiNxuRm?Uo0ovj0aJR*afTt^95jvV5&V^G+Jf#@;%?FCA(WKvP#Yf(P-M9b5X=>9Ma@ zVzq9UDVZXb{jr8bIjHEg<2Dn6|7NC&8R$wwgXaGA|8fCl`_OeB>VO|i5|{aI*#Gip z|C6@>CxrYSaEOoUEBF3A>7)Ml%Kx`7{Qupj#A#4oUKoojw2pClT3Xn}T0vc1)^uXd z9ZMDX&1~-OM@h?TYc3Y&7#NL<8;p))o13p11y$LJws#2L_b#q|Tv%AhC@eJX^)Ud3 zgLr!e(sfRT>@rz&&)^`Zf`zrUw229;qbQ50Xhl>?%DUr3a4`Fa4({T?yYZ^1sF=Kc`xXU_O))xICnq9> zq_)Du!66~vg9BGpRn@eL3WX1qBmAJhK)`7=#59GOk$|LFNty8RWDXfkPT?wYXM_J=Y{n~e)U z`y%9NQC3#;Z9jgLjLGWhF_@b#Ct(|CYvY8|CyxIPqwQQ=UvEC#p#&HB>dl*wS$lwx zOONBBUNnt;iql?H>XM$BDSzTtk*A!zjzmB*#Uds~yR_8W#6(Bi$Hc)QuT%2v8~)*8 zR#U1KQsc>!pj%IWr1eqT%|8+e4t~_r-+!rC3n#hj6(mc4c8P?E8oqqF?da%;%;;qi z5FkoUo_L@r5g0{!%aOO@CMi2tr1WDGbn%k}Hh@S&c1 zBo@#DqT=FEy}bp}=golDZ4pLbLq^QQsl#?3U~U(C1gvDYw7!@ZrNUN9ee4 z=}D@nT;_b1k~BFma4Szjcj%LX>3!!tJAR>3N!YuHh&18NR$pO?ZRg=lFG@^#`xY}(C2VGf^ux!GqC}+Hh!T(|d>s08r34M5 zqoPT|Q6b^soI#v}LEWV4PlqHqV?$z*pkQcIQd1k~S<)eixyi|i?hT{uO{}uHH%G{t zUn)o79;~FI0vjq%XnB}fTE_2s+y{iC&j{)Fwbln0UN@t`eok;1MafA%vpP};mgkHd9vJWkaldZw>=!T}Q}^_& zYSe$14PC2`((rt^b7W#71pI`ti3#(qTLkaksSzVTsmKRf!sXw*c@z2W-F4zW4<9_J z`yPE`4aD(2-$wtx7MKH64jLsbEfdPn#zq!&6I$Kko~|wiz~5YX$F_*Up{aY19^u0e zH*dNhyyxsJI6F7jJ0)RUI+cyoP_ZWkM*uFu%w~hUlu!6m9f%dY5T`D?lNqTXKYx0u z%LVh|!Mx^#H*c0VMf-mKM29wGyiHd`Nl6I{GxJ3b4l6c}>d??o!pa_%?EVJ|3Nr5Q zqR`Ok9Ulixd6k#PuqC-08Y%}mj(*eL9{+QWMVk7GlDaciYdC%5?#dO=m2YDk{>m9) zsf2IbdaiPSV79?*XqC&dqavd z*5_wMqUFrU8At35==Sx^KgWgcqQwf@%pqnqxv{@P>pSRT&(e5p^JsHOW?Ng^JwwB* zAV{(-A)(T%&|u!(6>7597^{Nbiy~*Dt8W)6aK(O3_cE<6*`2+`%^kb|t_jStSNRI~ zj`SsKojc;!BHv!DUg|9L7?K;w%5_oW%)eF2imLT-jGCRD$_KPGt$kK=uQupqKhCl$u-RNS{loe*(0bN(L73PjJmXdE z>#38anxXIjKVV)22b&{TJn|=`mV1PWoxguqin+tRL$B;mdx~YEqnnUo|pSmK8!Xshpc*DyJ}TO%Q>z) zokCla9vg0}8wt63=Z#+C6Qbd%XWf5t%WAl$T3!y?eIT4{TC411lEg{B;b zKgzK-Qq~?cyV0*atvyo1#KIb}ddmJT{lkZ*c~Obuk!~pH@PUQU?Q^z6yp!s&E&`S% zOqZjOl{i!YhwYZd3THEFk)noFq_1?(dLsVbcAdQE z*?A>j{v1Y(8KP#Zg%*e*fpV<=1Ln=Q@~iyLPrA?VL-(G_$n|I`Yb}P6kx>@hGTeZWpoPb!iMcVZ;zQ7F->je z^4=mqi|Q(DedAC=Wb>g$r<)_T=9u=4mu#4}HJNy+_ z@`fi48rTyKZ{+J1=gTqz>2B+Vg@=!x)|!MGw8wBzF*5GA?M?ZddwDL1P1#X<=b`_v zN1w&QsrN>4rEtGUc!W(i-6yGM$(E!aiNfXv2{|M$xUOfpL=6j_@0&ivHn6n34WM?- z`RT@(e67#X5Kc}`3jUjamihpafQ=O=p0!Gx{lyW! z8eptXrRw_Zf@XxG>s~a40C*MpLK}m*+QSu2x8MS2CkqlG?Hd4Y15pl8r-S3#bB`dV zq`0`c1OW>K;4V|=XZy}$p8FFnq)=D`<}+Sd%1!whRH9R-7M3@&un?qM={ytRbHZXh zQGta-FhxCp99ksbN>NS@t%AiC7i-X#l6ro~==rBtw#;Ln6O@S?3<9w0*^G$04P!R7 zVU*82d-DPgc2dth6>=N5&z%U0eLUK$jj%S4B^31@%_vNi<23Du&rMC0iLJ~fXg%h{ zedcrO1Yme{^qk`v?93N!rZ&~P6c?t^G6sBiGlTII_d-uk&olzX=zYKp5H%s8#Hg` z9h*8+CoHn@TG1{vpQuI~%wB0NN8b6~m`%6&l*_vOw0`R!3}egP(T$Cn=An(?@v!kh zu1T5fX}z9`&(|qY;y@$~-07kR#Cb8fQl zGCvm~(GtQ{19i>i)!_mRfCJHN;}oAWx2<*|?n9wJnX!5epd53W8~eKwldVzK`xTrL z2WFSf|7`1S(WO<=TRuC=7kfZY)9R`4oU@$iHaoi?P!!JoWJ%1#o2DRLUCV~27(f%D z-|%9{g#z{LWR|j?s_|*f_LZ!a@k$pGy4D#m0N5t9kC=eR0CYSwCDWKU-t`N>!%eZZ zC-d;hE2zBX+Ow6~I=k^Ae_M2ztEr+#U0AIU0G8|8*`zqoCDSr88kZ^xvwhCz?_Arj z^da6jOr1(}Le!iEc?b{lgdY+z=-MOW-n{VxzzN#6(2jzVv%$PL{mU0QI%!P}jYWGe zQzW#%V1)!+Rnzu&{?Q&gmo?y63!K-qbjoZmdV71fb$17iSjt#ia{~KHINZP4(60Q< z(r>eoM4}0rI0y;~))a>i5IIhc>Pftr!ex9;wp!QVdhkdRacE(Q5>Sn0kE|vr81Q;RkXCXoy zE~J(w?w=iRgfMcN#>!sk@>c?yBTpdO80Wn)E?oi|G>-oESf4}porV7Xi{ju!E&%NW zkg>DPAcd+wy3XT&!GJcnvQrt^Y@H_;jCNI@o~H9LMg8{Ms{7=qSO78AaUr{l}iqW#zoenIszn7F{}79g#KmN!siw zkVc_5!@|ZGp%Gp}A{Gbbn(CxL(b#$!=V@;Ic94bZ9UM zB%^~)>$TBh*m6d%@Psw!29?plU}?>~V~rTnb?3J{U;*gUNIhFh)!~$tmM#`n)6gi> zN8-u};u2yv7L8Sc3wBLO9ePf7VY9DvgSn=)5_xc9;S$v&i!^%*ycYQGG$rBW^FeJJ zIKE^t7tu9yTMCrKQEvoLrCnS~`>f7ZO(iglMfHY7)hf>Uih+*yDK)Nj7~B^)X| z^BMDkzsd?AE~?QR7`%7f-3IV><#D;nT=ru}uxFYuBeTl!+98X?=zc@c0DMIjetvQ^ zb}jr}jE9F=kLp~=XGcf@ZPH|9WaxkdQUTAj{IwR19$&j=JXk8_e!NzS4#754cZ1x( zu*vpcR34nqByi&9eE$5=iu#GNvX`hik2VUO!vIhA#yT1ympGXrxl=(ha|nLLabr6W zmcw;s%NQj3+hqy!E2cl1QZ&n_be-I`(b@0oSYJLx>G) zTWjZTp7yE>J~bjcTivXXnfg9%;8688@TTm;c+8K^RNoJ+fIuLKLyxi9!bH$|oK3H8 z{fiD3^M#X%sZ;uslM~?elaiBTf(rry8#I%$C|4?I`O-ymd$7Qo2^DDZt=9`V%C zV5!M!%?ae!{;_)Q-{-@ur#yG$q1yx{Xj*nQ9$I<}US1JvcFNFcXXE6AF$6I^@56cO z4c#N~RdWzhzE%D)G&H<)4$FB7U-ClBkpl{d0m*^tW3sls@uuC{iut{|_@(7Amvxpr zQ#zj=n;oBR%&$%Ue+!l6K4r$KlzTsVHrFkcwg?8k z{!@^M`IJYztxs&Du6!+V;^ur)kmq96=I9-|Wh&X$!cx0#K9Ve)d&mcnL`oO?I<0Uj z?FMMOR#?%UKC1|;9ZwQL_#7m92wRoC&KhgkIzOB4s>-8wRR2$LLZAh@?>b+)A1Pu_ zhBMj{1!?U%wv6YedtN7vK9k6$1smoXQ@SA0*4~3=?SrIfl;J?h7lJS*LG2F5Q}Vx;~qsO~zn@rNDtN$&UU> z<@~?@B=7na)cMZfm}>|W#qj~~+ussbwU8qgP0m3bBuPvBo7&?zx(I*59P$u>iT=Ol zf9)##@5}Go!ne5e@3&`Ipk!MkuOv5$yT23X$M&v|fWj0_%b9k&*l5mhBTxIQ$QX(! zp4GC8*WmHq2YF4_FWuY*-8ad8XnpBPr1)L-w`Jj)JX$x`Q`j`wxA`u6QDNH=ebK zsEe!4Rqx)O071#`xGMWe+lSb|#iyd7k$n1;63t`fjZfmtQeumYkAEE#Ls421A06!v zEn$wMl^rZ#H~1vJBt80-XV;B8sgBMe( zT>wO&@39?UxAS5PJ%93wd)5<9HnvuL@Pn3D`q!@rNOko?UxT~(+1Fcow64P>CIrCE|fl-;v^ZpxFOBFD^6b-sa9# z4@pnIN={Dx9(b_g8;9!>Kyx`e^9HVW`nPXCvqwj@fF9s>jT}flXMHA3l!;loU6xli zo9xI2=@a>d1y3!85-}~i1k=pJC%)v}j%R`~ieVUHpfZ993|U}r1B~j=A{)*Gu_}}Y z`hsJpJW28hd_Uj5EJZGj5H!IaUJndxFyj|JS6bYKJVaE~z3X^sbrl6^E2mBw_lgs6 zo?$Eq&4SL;S?ULROw)XHbo2yqDFh;58bfGci4dRN*3hYrK;4c38Y~p-BVKk>kgBvc z^Z?nsxOm|CLHSPrkF&U11-%|I0B@>?ChJ)^B_>^keoKWBt7Qj&y?%<@7-iz^;rNvi zid7iUgC04Q36Oi$nLC}7AQ%}*TBzXcZ+W+w(4q){XdjBERZT7Nrr@H7`5-2&kC$ua zTM$S-ZQcJGfZK3*vT)s)85+J&U9!Ls0JvXJ7Bs_!%1GGf?4+tRUnN^fP3?N1Hc)aa zDk|QqWUp#@!3+g3XBL;2?KSi=RXSfxy@>4;cJw|Pd{4xMyQrjL@U5)WDq0%deJ5w2 z6E3{w2U;k}{!a30RM|~UVsVI)m;GKG#Gfbw3}l9gnH{qIxi&P$FmdcW51 zzTr%Wa{ONX-l_EsZo}XF3PDE3w`N~mUCqYMez{v&o~QxJX2?2U<#Gd=94fTRU3B3^ zPJZpo6XqHJF)!}R%KFa<+noZl1F(tVTpPi}0;d)A%2Rk7k|g**qqU|s!knK5%?#n@ z?wN_G%3&(fxD7g;)#wc^@b{1n&jSH}Ej)e>*zya`r5%!(2G5=`0zrR%b5h}Sjv2U| zzY4R`(=Ubc1pSwWG*sf2BKzbC85|v5*Wn9(8l5Uv(*Lym9zJ~C_?{mO4-}VQK%lcC z(OIL>=t+!+ZtR-BxPrRIS7wK8PQDX<|K}gstqSyq9!9rfciw)@ROIBL{`6_L`5kQp zOa|ct(;R7GaSIz88_4xepaXCk`i_pOI%nuoQ(yo6!48lwns!sYk6zflU0&+Tf=m#g z9`k)>Pnbi4=-2hLOc$45s^T%<6@u(-A+ZDW%^wlO7%IRmtGyFZJ{mHRO~ zfxtYh+^I&NQ%fR}4L7=4|H-)oNJPIgLBRPLdzLqzUbVXb0On2e92D(IXA;FkTf+%+ zXChU!)#`R%Lo1QPcYYWd#T>VH8$ZNMvx@AnOx%P?OJH_1mZpSIazT2Co+#_n!I}vq zqNOXLr=?x#SyR@~cm@70=s7SWfu^-8>0*v{Md0H>JE7vXODJSoU0%Kfv@P3d-$rjZ z52!Z0ysCve$rf-~u3r7>bMBq>vF5BCa|YlFy5ID7J)sJKA+}e2mPidv&DRMDG&nS2 zCcP3_sA2Tj#JQujbzU+Qx1djGf*!+2?0~s6(Aji1fwjR5(;mQ4A@+BIxzTJluQbcm zLc>vKM`H z2%J$GaG|wwow)^+ERnEkFq&Vg($WECCpy5S<5WT-dSE`fh3dzTA5AYxm>i#*ACP?; zwtV(BtI;m0@1;*+=Fkc$0>Kn63A1WIss_3d%;Z1}gHcgg4UITgEwj7N=xC2!^KsHt z#6;NN`Pl}09q+-JudlCb<_b-GQZCk7L%hlJ`wA0gpkqhwfVyaDnG01zSOVq+29xww; z0P&_Vh$JIF-$w6vS!okUz%Kq@t=fV+N61mmmOlJh&a@RqY5ulATbw=2ZEJgAIax)G zL&DGm$}x@)tBizZW(yTBFK-g|4A5%8jgl#fzXX=An82>qgQw7BQ@NTVm&z_CroAe2 z#*fXM%yKOii+~>W1m=<;ztZ{O{Lu=JF^fsEA z5lJu1&7pVuX4qb*4ctO8#33@)=0jdIoS_xhyl&Up)ii40cQ1r+CKuaai<~z2-~Z-Z1bB1$Cy-? zS-Cz9RoYR~xN!WH3^1}HA7#RWjf3OLM(PXRctA#91DzUF8G7}0$pM7W_``siAL|KG z7$(xVO#u}bq&H<=;kKV07P?+D{>nz0fzyZaDVS^3sqv(SU<;#gG-22yR-cH#?syUh?%3FvE~kyf%_oRAnH_@LZagqQi@C-7 zq1+oU<@Iv3aMGtLi%L7ELcxU&m zZtO3~R2Fg9O(v>Dx(YfP8um#&Knl$U(M}dpw$-A?8fi)}4SHXkk^0{dS@;}u94$(} zK=1~Q=VW+#?_S*(u1~4!65CK}H_uxkh3UsSiP>i zz-IW6mE|$dI_1YSJ*>u8GM~_NqetvXpOy5Zcum3vKdqgj2u&Il#c+x>nypnHu57eW zkN4*n7K~sJ3bdpSa)QV=Zwy_+QaWLF7Dk$TCMVaqLCVlf>|Vcm3SKrz)alVld1)yn z#07;^8T4dDRh4+b& zx!NHxvs4IN$3A|_zl^XdbEQtBshfPxzvGoAo(H%k>;ww3SNo3t_)cqY8lye#E!U?5 zQ_axU6iuO28rH9edPUGUK2qBN>6L#43MdlJ^mgqn??0^1x=vl1g3tD1Ub$zLktboO zE#p(X>>-N}k!>f3?3!uJo+P@wy!P?$4PRdWyBCb%-+RGC#{DhT{*T|<8^f7dUZzo3 zR|ig8B*x*IKNOa@B7}cgWjue$Z4c!Ba^NoiYZf>CWSy-6WnOXSXag??wjnO|r z(;+vPl*UM}W2sGC%5%m?d{|^OmBX3Y+Y@YQZ7qOIUimPBQDSza(Da7)IH+sRoHQ1t zwyR^8Toe%z`KpCZkH2c%exRt> z3bd?yBTGv!;0^;56V(gOcNj=uvY5&U5*d;0ePwlZ?4U+c!4L2<9Wf5v;zaSpL4p{@ zA8m!{;Bf$z*K0-+=3b_D-oe4a&AC<*SMd~q&GZ4ex1$3*9>|*$ z*62HAe9X#X4xaJ9rLvEMspH-eWJP@CI@a}E3E8kb%K%2I!jep;{HWH2`Njcm7cn*D zaDP9he?8oU0*qY=5-jjtYXn@JoPpO)PcH0}q263e`}`Rna?Qy3494bPw!)CGnV6Wg zk@d}O0U`^x3}JMYaBy&d{mT0IoWJ(*nJLrZT$4fZ1j2{NBv>VhSAcEt;O{UyFtIHK zGm49WiWB>s8lnyKGl$Nc_Y6zNdItwTR;sTL9hHQRV>7gSU?$$aRW^RchpU@XT{^KR zQ@5M9IEb$(k02%{239o?`!M?{K)a_MMPYscZY4uud<+%kM{H&z!p_c4Wcz&l#l^_dk`M^=kbpZn{^=Qe zrlWJ;#N?wh{fsa%;P_>Lrb7|MBOnlvoqdy#h$yY5h5=sJl9sH_gS&JvnoU{R+}Bz8 z#lpU_&F(77Jlp=r_)4gJgx?A4-Om`N3et$+^jDw_PzBjc)nIWn?uduVuz(^wdlr
0TZAoch~sBM%SSot+)q$_aywkFF`L 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 P0)Na*ER3HRx>EiN4u;iq literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-zh-rCN-mdpi/image_wifi_list.png b/app/src/main/res/mipmap-zh-rCN-mdpi/image_wifi_list.png new file mode 100644 index 0000000000000000000000000000000000000000..de7ce219b1b9a6e47e51f900bdc0b2ac749a302d GIT binary patch literal 16804 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 IHwpQF0P%t3Q~&?~ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-zh-rCN-xhdpi/default_select_photo.png b/app/src/main/res/mipmap-zh-rCN-xhdpi/default_select_photo.png new file mode 100644 index 0000000000000000000000000000000000000000..a0de3b7fb72eecd4943d977ec0b6112dd3cf10e0 GIT binary patch literal 12024 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
yaLj7KsGMN6r#Z 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 Qe$fDoFsAx{U3Coq56E0lr2qf` literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-zh-rCN-xhdpi/image_wifi_list.png b/app/src/main/res/mipmap-zh-rCN-xhdpi/image_wifi_list.png new file mode 100644 index 0000000000000000000000000000000000000000..4a6c6c12d06d227b68dbe3b336df211ed13922ba GIT binary patch literal 43446 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

8KAzp7^SMMX3~Y;?p|eZ~#{4vRbGFAr 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 B4Bh|$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-zh-rCN-xxhdpi/image_about_us.png b/app/src/main/res/mipmap-zh-rCN-xxhdpi/image_about_us.png new file mode 100644 index 0000000000000000000000000000000000000000..58042b640ae503bd157771eb022ecee980f1f898 GIT binary patch literal 9112 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 z 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

yA7Zw+ZQO(s1Qzu?pn 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-zh-rCN-xxxhdpi/image_wifi_list.png b/app/src/main/res/mipmap-zh-rCN-xxxhdpi/image_wifi_list.png new file mode 100644 index 0000000000000000000000000000000000000000..7d99bc65c29db38bec14b69bed790b204a52e4c1 GIT binary patch literal 113423 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�->gs{@kt{)JcGghPy_wqi6 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/values-en-rUS/strings.xml b/app/src/main/res/values-en-rUS/strings.xml new file mode 100644 index 000000000..343c32955 --- /dev/null +++ b/app/src/main/res/values-en-rUS/strings.xml @@ -0,0 +1,491 @@ + + + @string/app_name_en + 首页 + 场景 + 我的 + + + 成功 + 失败 + 错误 + 下一步 + 重新发送 + 完成 + 取消 + 关闭 + 确定 + 确认 + 绑定 + 提交 + 删除 + 修改失败 + 保存 + 拒绝 + 接受 + 退出 + 同意 + 返回 + 返回首页 + 问题反馈 + 已复制 + 请打开 WIFI + 下载成功 + 下载失败 + + 微信登录 + 邮箱登录 + 手机登录 + 中国大陆 + 使用邮箱账号 + 使用手机账号 + 使用邮箱注册 + 使用手机注册 + 手机注册 + 邮箱注册 + 同意并遵守腾讯云 + 用户协议 + + 隐私政策 + 获取验证码 + 验证码已经发送到您的手机: + 验证码已经发送到您的邮箱: + 未安装微信客户端 + 取消授权 + + + 登录 + 退出登录 + 注册 + 注册账号 + 账号 + 手机验证码 + 验证码 + 输入验证码 + 手机号码 + 邮箱地址 + 密码 + 新密码不能与旧密码相同 + 再次输入密码 + 忘记密码 + 找回密码 + 设置密码 + 密码设置成功 + 选择国家和地区 + 热门国家和地区 + Copyright @ 2013–2020 Tencent Cloud.All Right Reserved.\n腾讯云 版权所有 + + + + 消息通知 + 帮助中心 + 意见反馈 + 关于我们 + 当前版本 + + 个人信息 + 设置头像 + 拍照 + 从手机相册选取 + 昵称 + 电话号码 + 用户 ID + 修改密码 + 修改昵称 + 手机绑定 + 旧密码 + 请先绑定手机号 + 当前未绑定手机号,无法进行修改密码 + 暂无消息 + 请填写10个字以上文字以便我们更好的帮助您 + 相关截图 + 输入有效联系方式以便开发者联系您(选填) + + + + 请输入验证码 + 验证码格式不正确 + 请阅读并同意用户协议和隐私政策 + 登录成功 + 手机号绑定成功 + 获取用户 ID 失败 + 您的应用为最新版本 + 没有可下载路径 + 未知错误 + + + 我的设备 + 添加设备 + 共享的设备 + 扫码添加 + 智能配网 + 未连接 + 请连接WIFI + 自助配网 + 消息 + 连接中 + 连接成功 + 连接失败 + 继续添加新设备 + 返回首页 + 按步骤重试 + 切换配网方式 + 查看更多失败原因 + 1、检查设备是否通电,并按照指引进入配网模式\n +2、检查WIFI是否正常(暂时只支持2.4G路由器)\n +3、检查WIFI密码是否错误 + + 当前暂无家庭,点击按钮进行添加 + 当前暂无房间,点击按钮进行添加 + 没有可选的房间 + 当前暂无设备,点击按钮进行添加 + 无添加权限 + 将设备设置为智能配网模式 + 若指示灯已经在快闪,可跳过该步骤。 + 1.接通设备电源。\n2.长按复位键(开关)5秒。\n3.指示灯进入快闪状态。 + 请将设备与手机尽量靠近 + 提示灯在快闪 + 连接WI-FI + 输入WI-FI密码 + 请输入密码 + 配网进度 + + 将设备设置为自助配网模式 + 若指示灯已经在慢闪,可跳过该步骤。 + 1.接通设备电源。\n2.长按复位键(开关)5秒,指示灯快闪时,在次长按复位键3秒。\n3.指示灯进入慢闪状态。 + 提示灯在慢闪 + 将手机WIFI连接设备热点 + 1.手机WIFI连接到如下图所示的设备热点 + 2.返回APP,添加设备 + 连接设备热点 + 重新连接 + 连接正确,进入下一步 + + 离线 + 设备在线 + 设备昵称 + 电源开关:开启 + 电源开关:关闭 + 开启 + 关闭 + + 设备详情 + 备注名称 + 设备名称 + 产品ID + 位置管理 + 设备信息 + 常见问题 + 暂未分享设备,点击按钮进行分享 + 添加分享 + 修改备注名称 + 确定要删除设备码? + 删除后数据无法直接恢复 + 退出添加设备 + 当前正在添加设备,是否退出? + 分享发送成功 + + 厂家名称 + 产品型号 + MAC地址 + IP地址 + 固件版本 + + + 云端定时 + 添加定时 + 修改定时 + 定时名称 + 动作名称 + 重复 + 工作日 + 周末 + 设备动作 + 删除动作 + 名称设置 + 当前暂无云端定时,点击按钮进行添加 + 每周日 + 每周一 + 每周二 + 每周三 + 每周四 + 每周五 + 每周六 + + + 设备分享 + 分享用户 + 分享用户列表 + 设备已经单独分享给以下用户 + + + 家庭管理 + 家庭名称 + 邀请家庭成员 + 家庭成员 + 添加家庭 + 家庭位置 + 请输入家庭名称 + 请输入房间名称 + 添加房间 + 房间管理 + 家庭详情 + 删除家庭 + 退出家庭 + 邀请成员 + 房间设置 + 删除房间 + 家庭名称 + 成员设置 + 成员名称 + 角色 + 关联账号 + 所有者 + 成员 + 移除成员 + 邀请发送成功 + 成功加入家庭 + 成功绑定共享设备 + + + 您确定要删除该家庭吗? + 删除家庭后,系统将清除所有成员与家庭数据,该家庭下的设备也将被删除 + 您确定要退出该家庭吗? + 退出家庭后,可重新接受邀请 + 您确定要删除该房间吗? + 删除房间后,系统将清除房间数据,该房间下的设备也将被删除 + 您确定要删除该成员吗? + 删除成员后,可重新邀请 + 昵称长度为1-20 + 删除成功 + 设备已离线 + 请检查:\n +1.设备是否有电\n +2.设备连接的路由器是否正常工作,网络通畅\n +3.是否修改了路由器的名称或密码,可以尝试重新连接\n +4.设备是否与路由器距离果园、隔墙或有其他遮挡物 + + \t\t设备\t\t + \t\t家庭\t\t + \t\t通知\t\t + 开启定位获取WiFi信息 + 版本升级V2.0 + 1、修复了一些已知 bug + 版本号 + 安装包大小 + 发布时间 + 下次再说 + 立即升级 + 正在更新,请稍后... + + + + 已发现如下设备 + 正在扫描附近设备 + 发现设备需开启手机蓝牙(10001) + 未发现设备,请确认设备已开启 + 重试 + 连接 + 全部 + 客厅 + 卧室 + 厨房 + 推荐 + + + + Settings + + 所有图片 + 预览 + 完成 + 没有系统相机 + 已经达到最高选择数量 + 拍摄照片 + + 取消 + 确定 + 权限需求 + 选择图片时需要读取权限 + 拍照时需要存储权限 + + + + 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ + 请输入手机号 + 手机号格式不正确 + 请输入邮箱地址 + 邮箱地址格式不正确 + 密码支持8–20位,必须包含字母和数字 + 两次输入的密码不一致 + 密码修改成功,请重新登录 + + + 欢迎使用腾讯连连 + 创建新账号 + 使用已有账号登录 + 账号密码登录 + 验证码登录 + 手机号码/邮箱地址 + 其他登录方式 + 微信 + 账号与安全 + 手机号码 + 未绑定 + 已绑定 + 邮箱 + 账号注销 + 请输入手机号 + 请输入邮箱号 + 请输入验证码 + 请设置您的密码 + 请再次确认您的密码 + 确认绑定 + 绑定手机号 + 绑定邮箱号 + 确认修改 + 修改手机号 + 修改邮箱号 + 邮箱验证码修改 + 手机验证码修改 + + 注销 + 注销账号 + 注销须知 + 请您确保账号处于安全状态下且是本人申请注销。注销账号是不可恢复的操作,账号被注销后,您账号下的所有信息、数据将被永久删除,无法找回。为避免您的损失,请谨慎进行账号注销操作。 + 如果您确定“注销账号”,账号将注销于 + 2020年8月3日 00:00:00 + 若您在注销日期前登录腾讯连连,则自动撤销“注销账号”申请。 + 注:如腾讯连连账号是通过第三方软件(微信) 进行登录的,您所注销的账号仅影响腾讯连连内的账号与数据,并不会影响您在微信的账号信息。 + 《腾讯连连账号注销协议》 + 腾讯连连账号注销协议 + 请阅读并同意腾讯连连账号注销协议 + 我已了解 + 确定注销账号吗 + 注销后,此账户下的所有用户数据也将被永久删除 + 账号已申请注销 + 如需撤销,请在7日内登录腾讯连连 + 知道了 + 账号注销已终止 + 由于你在申请“账号注销”后的7天内重新登录,该账号在date提交的“账号注销”申请已被撤销 + + + 密码修改成功,请重新登录 + 验证码发送成功 + 更新手机号成功 + 更新邮箱号成功 + 短信验证码为空 + 邮箱验证码为空 + 手机号为空 + 邮箱号为空 + 两次输入的密码不一致 + 绑定成功 + + + 头像 + 修改登录密码 + 账户所在地 + 温度单位 + 时区 + 未设置 + + + C + F + 注销账号 + 中国大陆 + Chinese Mainland + 美国 + 选择时区 + 设置成功 + 设置失败,错误码: + 删除成功 + 删除失败,错误码: + 反注册成功 + 反注册失败 + 收到消息: + 注册成功1. token: + 注册失败,错误码: + 通知被打开 : + 通知被清除 : + 您有1条新消息,通知被展示, + ,推送频道: + yyyy年MM月dd日 HH:mm:ss + yyyy年MM月dd日 + + 分钟 + 小时 + 图片加载错误,请重新选择图片 + 图片裁剪异常,请重新选择图片 + 未检测到SD卡 + 图片已保存至目录下 + 该图片已存在目录下 + 北京 + 天津 + 上海 + 重庆 + 深圳 + 解析响应数据时,Response为空 + 使用RespFailMessage类解析数据失败 + 解析响应数据时发生错误 + 微信已经绑定过了, 请勿重复绑定 + 添加成功 + 请填写定时名称 + 我的定时 + 中国大陆 + 请填写问题描述 + 请填写不少于10个字的问题描述 + 提交成功 + 再按一下退出应用 + 请您打开手机位置以便获取WIFI名称 + 请输入昵称 + 仅一次 + 每天 + 周日 + 周一 + 周二 + 周三 + 周四 + 周五 + 周六 + 多云转晴 + 网络连接失败,请检查密码是否正确 + 连接到网络:%s 失败,请手动连接 + 全部设备 + %s个设备 + 请确保已按官网文档接入微信登录 + 服务器出错 + 授权失败 + 获取设备与 token 的绑定状态失败 + 获取家庭与设备绑定关系失败 + 选择房间 + %s 的家 + 填写家庭名称 + 填写房间名称 + 房间名称 + 标题 + 云端定时 + 手机号码/邮箱 + 天天 + 大厅 + 颜色 + 红色 + 亮度 + 电源开关:关闭 + 电源开关 + 正在开发中 + 我的家 + 3个房间 + 123的家 + 图片 + 爸爸 + 1张 + 预览(1) + 警告 + 设备已经离线 + 0个设备 + 弹框标题 + + + + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml new file mode 100644 index 000000000..f0db5713f --- /dev/null +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -0,0 +1,491 @@ + + + @string/app_name_zh + 首页 + 场景 + 我的 + + + 成功 + 失败 + 错误 + 下一步 + 重新发送 + 完成 + 取消 + 关闭 + 确定 + 确认 + 绑定 + 提交 + 删除 + 修改失败 + 保存 + 拒绝 + 接受 + 退出 + 同意 + 返回 + 返回首页 + 问题反馈 + 已复制 + 请打开 WIFI + 下载成功 + 下载失败 + + 微信登录 + 邮箱登录 + 手机登录 + 中国大陆 + 使用邮箱账号 + 使用手机账号 + 使用邮箱注册 + 使用手机注册 + 手机注册 + 邮箱注册 + 同意并遵守腾讯云 + 用户协议 + + 隐私政策 + 获取验证码 + 验证码已经发送到您的手机: + 验证码已经发送到您的邮箱: + 未安装微信客户端 + 取消授权 + + + 登录 + 退出登录 + 注册 + 注册账号 + 账号 + 手机验证码 + 验证码 + 输入验证码 + 手机号码 + 邮箱地址 + 密码 + 新密码不能与旧密码相同 + 再次输入密码 + 忘记密码 + 找回密码 + 设置密码 + 密码设置成功 + 选择国家和地区 + 热门国家和地区 + Copyright @ 2013–2020 Tencent Cloud.All Right Reserved.\n腾讯云 版权所有 + + + + 消息通知 + 帮助中心 + 意见反馈 + 关于我们 + 当前版本 + + 个人信息 + 设置头像 + 拍照 + 从手机相册选取 + 昵称 + 电话号码 + 用户 ID + 修改密码 + 修改昵称 + 手机绑定 + 旧密码 + 请先绑定手机号 + 当前未绑定手机号,无法进行修改密码 + 暂无消息 + 请填写10个字以上文字以便我们更好的帮助您 + 相关截图 + 输入有效联系方式以便开发者联系您(选填) + + + + 请输入验证码 + 验证码格式不正确 + 请阅读并同意用户协议和隐私政策 + 登录成功 + 手机号绑定成功 + 获取用户 ID 失败 + 您的应用为最新版本 + 没有可下载路径 + 未知错误 + + + 我的设备 + 添加设备 + 共享的设备 + 扫码添加 + 智能配网 + 未连接 + 请连接WIFI + 自助配网 + 消息 + 连接中 + 连接成功 + 连接失败 + 继续添加新设备 + 返回首页 + 按步骤重试 + 切换配网方式 + 查看更多失败原因 + 1、检查设备是否通电,并按照指引进入配网模式\n +2、检查WIFI是否正常(暂时只支持2.4G路由器)\n +3、检查WIFI密码是否错误 + + 当前暂无家庭,点击按钮进行添加 + 当前暂无房间,点击按钮进行添加 + 没有可选的房间 + 当前暂无设备,点击按钮进行添加 + 无添加权限 + 将设备设置为智能配网模式 + 若指示灯已经在快闪,可跳过该步骤。 + 1.接通设备电源。\n2.长按复位键(开关)5秒。\n3.指示灯进入快闪状态。 + 请将设备与手机尽量靠近 + 提示灯在快闪 + 连接WI-FI + 输入WI-FI密码 + 请输入密码 + 配网进度 + + 将设备设置为自助配网模式 + 若指示灯已经在慢闪,可跳过该步骤。 + 1.接通设备电源。\n2.长按复位键(开关)5秒,指示灯快闪时,在次长按复位键3秒。\n3.指示灯进入慢闪状态。 + 提示灯在慢闪 + 将手机WIFI连接设备热点 + 1.手机WIFI连接到如下图所示的设备热点 + 2.返回APP,添加设备 + 连接设备热点 + 重新连接 + 连接正确,进入下一步 + + 离线 + 设备在线 + 设备昵称 + 电源开关:开启 + 电源开关:关闭 + 开启 + 关闭 + + 设备详情 + 备注名称 + 设备名称 + 产品ID + 位置管理 + 设备信息 + 常见问题 + 暂未分享设备,点击按钮进行分享 + 添加分享 + 修改备注名称 + 确定要删除设备码? + 删除后数据无法直接恢复 + 退出添加设备 + 当前正在添加设备,是否退出? + 分享发送成功 + + 厂家名称 + 产品型号 + MAC地址 + IP地址 + 固件版本 + + + 云端定时 + 添加定时 + 修改定时 + 定时名称 + 动作名称 + 重复 + 工作日 + 周末 + 设备动作 + 删除动作 + 名称设置 + 当前暂无云端定时,点击按钮进行添加 + 每周日 + 每周一 + 每周二 + 每周三 + 每周四 + 每周五 + 每周六 + + + 设备分享 + 分享用户 + 分享用户列表 + 设备已经单独分享给以下用户 + + + 家庭管理 + 家庭名称 + 邀请家庭成员 + 家庭成员 + 添加家庭 + 家庭位置 + 请输入家庭名称 + 请输入房间名称 + 添加房间 + 房间管理 + 家庭详情 + 删除家庭 + 退出家庭 + 邀请成员 + 房间设置 + 删除房间 + 家庭名称 + 成员设置 + 成员名称 + 角色 + 关联账号 + 所有者 + 成员 + 移除成员 + 邀请发送成功 + 成功加入家庭 + 成功绑定共享设备 + + + 您确定要删除该家庭吗? + 删除家庭后,系统将清除所有成员与家庭数据,该家庭下的设备也将被删除 + 您确定要退出该家庭吗? + 退出家庭后,可重新接受邀请 + 您确定要删除该房间吗? + 删除房间后,系统将清除房间数据,该房间下的设备也将被删除 + 您确定要删除该成员吗? + 删除成员后,可重新邀请 + 昵称长度为1-20 + 删除成功 + 设备已离线 + 请检查:\n +1.设备是否有电\n +2.设备连接的路由器是否正常工作,网络通畅\n +3.是否修改了路由器的名称或密码,可以尝试重新连接\n +4.设备是否与路由器距离果园、隔墙或有其他遮挡物 + + \t\t设备\t\t + \t\t家庭\t\t + \t\t通知\t\t + 开启定位获取WiFi信息 + 版本升级V2.0 + 1、修复了一些已知 bug + 版本号 + 安装包大小 + 发布时间 + 下次再说 + 立即升级 + 正在更新,请稍后... + + + + 已发现如下设备 + 正在扫描附近设备 + 发现设备需开启手机蓝牙(10001) + 未发现设备,请确认设备已开启 + 重试 + 连接 + 全部 + 客厅 + 卧室 + 厨房 + 推荐 + + + + Settings + + 所有图片 + 预览 + 完成 + 没有系统相机 + 已经达到最高选择数量 + 拍摄照片 + + 取消 + 确定 + 权限需求 + 选择图片时需要读取权限 + 拍照时需要存储权限 + + + + 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ + 请输入手机号 + 手机号格式不正确 + 请输入邮箱地址 + 邮箱地址格式不正确 + 密码支持8–20位,必须包含字母和数字 + 两次输入的密码不一致 + 密码修改成功,请重新登录 + + + 欢迎使用腾讯连连 + 创建新账号 + 使用已有账号登录 + 账号密码登录 + 验证码登录 + 手机号码/邮箱地址 + 其他登录方式 + 微信 + 账号与安全 + 手机号码 + 未绑定 + 已绑定 + 邮箱 + 账号注销 + 请输入手机号 + 请输入邮箱号 + 请输入验证码 + 请设置您的密码 + 请再次确认您的密码 + 确认绑定 + 绑定手机号 + 绑定邮箱号 + 确认修改 + 修改手机号 + 修改邮箱号 + 邮箱验证码修改 + 手机验证码修改 + + 注销 + 注销账号 + 注销须知 + 请您确保账号处于安全状态下且是本人申请注销。注销账号是不可恢复的操作,账号被注销后,您账号下的所有信息、数据将被永久删除,无法找回。为避免您的损失,请谨慎进行账号注销操作。 + 如果您确定“注销账号”,账号将注销于 + 2020年8月3日 00:00:00 + 若您在注销日期前登录腾讯连连,则自动撤销“注销账号”申请。 + 注:如腾讯连连账号是通过第三方软件(微信) 进行登录的,您所注销的账号仅影响腾讯连连内的账号与数据,并不会影响您在微信的账号信息。 + 《腾讯连连账号注销协议》 + 腾讯连连账号注销协议 + 请阅读并同意腾讯连连账号注销协议 + 我已了解 + 确定注销账号吗 + 注销后,此账户下的所有用户数据也将被永久删除 + 账号已申请注销 + 如需撤销,请在7日内登录腾讯连连 + 知道了 + 账号注销已终止 + 由于你在申请“账号注销”后的7天内重新登录,该账号在date提交的“账号注销”申请已被撤销 + + + 密码修改成功,请重新登录 + 验证码发送成功 + 更新手机号成功 + 更新邮箱号成功 + 短信验证码为空 + 邮箱验证码为空 + 手机号为空 + 邮箱号为空 + 两次输入的密码不一致 + 绑定成功 + + + 头像 + 修改登录密码 + 账户所在地 + 温度单位 + 时区 + 未设置 + + + C + F + 注销账号 + 中国大陆 + Chinese Mainland + 美国 + 选择时区 + 设置成功 + 设置失败,错误码: + 删除成功 + 删除失败,错误码: + 反注册成功 + 反注册失败 + 收到消息: + 注册成功1. token: + 注册失败,错误码: + 通知被打开 : + 通知被清除 : + 您有1条新消息,通知被展示, + ,推送频道: + yyyy年MM月dd日 HH:mm:ss + yyyy年MM月dd日 + + 分钟 + 小时 + 图片加载错误,请重新选择图片 + 图片裁剪异常,请重新选择图片 + 未检测到SD卡 + 图片已保存至目录下 + 该图片已存在目录下 + 北京 + 天津 + 上海 + 重庆 + 深圳 + 解析响应数据时,Response为空 + 使用RespFailMessage类解析数据失败 + 解析响应数据时发生错误 + 微信已经绑定过了, 请勿重复绑定 + 添加成功 + 请填写定时名称 + 我的定时 + 中国大陆 + 请填写问题描述 + 请填写不少于10个字的问题描述 + 提交成功 + 再按一下退出应用 + 请您打开手机位置以便获取WIFI名称 + 请输入昵称 + 仅一次 + 每天 + 周日 + 周一 + 周二 + 周三 + 周四 + 周五 + 周六 + 多云转晴 + 网络连接失败,请检查密码是否正确 + 连接到网络:%s 失败,请手动连接 + 全部设备 + %s个设备 + 请确保已按官网文档接入微信登录 + 服务器出错 + 授权失败 + 获取设备与 token 的绑定状态失败 + 获取家庭与设备绑定关系失败 + 选择房间 + %s 的家 + 填写家庭名称 + 填写房间名称 + 房间名称 + 标题 + 云端定时 + 手机号码/邮箱 + 天天 + 大厅 + 颜色 + 红色 + 亮度 + 电源开关:关闭 + 电源开关 + 正在开发中 + 我的家 + 3个房间 + 123的家 + 图片 + 爸爸 + 1张 + 预览(1) + 警告 + 设备已经离线 + 0个设备 + 弹框标题 + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 908564eb9..cc91b83d0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,6 @@ + @string/app_name_zh 首页 场景 我的 @@ -252,7 +253,7 @@ 您确定要删除该家庭吗? - 删除家庭后,系统将清除所有的成员与家庭数据,该家庭下的设备也将被删除 + 删除家庭后,系统将清除所有成员与家庭数据,该家庭下的设备也将被删除 您确定要退出该家庭吗? 退出家庭后,可重新接受邀请 您确定要删除该房间吗? @@ -400,5 +401,95 @@ Chinese Mainland 美国 选择时区 + 设置成功 + 设置失败,错误码: + 删除成功 + 删除失败,错误码: + 反注册成功 + 反注册失败 + 收到消息: + 注册成功1. token: + 注册失败,错误码: + 通知被打开 : + 通知被清除 : + 您有1条新消息,通知被展示, + ,推送频道: + yyyy年MM月dd日 HH:mm:ss + yyyy年MM月dd日 + + 分钟 + 小时 + 图片加载错误,请重新选择图片 + 图片裁剪异常,请重新选择图片 + 未检测到SD卡 + 图片已保存至目录下 + 该图片已存在目录下 + 北京 + 天津 + 上海 + 重庆 + 深圳 + 解析响应数据时,Response为空 + 使用RespFailMessage类解析数据失败 + 解析响应数据时发生错误 + 微信已经绑定过了, 请勿重复绑定 + 添加成功 + 请填写定时名称 + 我的定时 + 中国大陆 + 请填写问题描述 + 请填写不少于10个字的问题描述 + 提交成功 + 再按一下退出应用 + 请您打开手机位置以便获取WIFI名称 + 请输入昵称 + 仅一次 + 每天 + 周日 + 周一 + 周二 + 周三 + 周四 + 周五 + 周六 + 多云转晴 + 网络连接失败,请检查密码是否正确 + 连接到网络:%s 失败,请手动连接 + 全部设备 + %s个设备 + 请确保已按官网文档接入微信登录 + 服务器出错 + 授权失败 + 获取设备与 token 的绑定状态失败 + 获取家庭与设备绑定关系失败 + 选择房间 + %s 的家 + 填写家庭名称 + 填写房间名称 + 房间名称 + 标题 + 云端定时 + 手机号码/邮箱 + 天天 + 大厅 + 颜色 + 红色 + 亮度 + 电源开关:关闭 + 电源开关 + 正在开发中 + 我的家 + 3个房间 + 123的家 + 图片 + 爸爸 + 1张 + 预览(1) + 警告 + 设备已经离线 + 0个设备 + 弹框标题 + + From b512c9d5aa81828e513774c347f92a7fc7b55c5e Mon Sep 17 00:00:00 2001 From: archurtan Date: Thu, 24 Sep 2020 17:18:19 +0800 Subject: [PATCH 007/804] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=BF=9E=E8=BF=9ESDK?= =?UTF-8?q?=E6=8E=A5=E5=85=A5=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I1bcf03638d09a1a4ced7cdfa4faef58de3ff9918 --- .../java/com/tencent/iot/explorer/link/core/demo/App.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/App.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/App.kt index 76151e66d..2db3658f6 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/App.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/App.kt @@ -19,9 +19,11 @@ class App : Application() { override fun onCreate() { super.onCreate() L.isLog = true - //需要打印日志时要在IoTAuth.init(APP_KEY)之前调用 - // 否则看不到"The SDK initialized successfully"的日志 IoTAuth.openLog(true) + /* + * 此处仅供参考, 需自建服务接入物联网平台服务,以免 App Secret 泄露 + * 自建服务可参考此处 https://cloud.tencent.com/document/product/1081/45901#.E6.90.AD.E5.BB.BA.E5.90.8E.E5.8F.B0.E6.9C.8D.E5.8A.A1.2C-.E5.B0.86-app-api-.E8.B0.83.E7.94.A8.E7.94.B1.E8.AE.BE.E5.A4.87.E7.AB.AF.E5.8F.91.E8.B5.B7.E5.88.87.E6.8D.A2.E4.B8.BA.E7.94.B1.E8.87.AA.E5.BB.BA.E5.90.8E.E5.8F.B0.E6.9C.8D.E5.8A.A1.E5.8F.91.E8.B5.B7 + */ IoTAuth.init(APP_KEY, APP_SECRET) IoTAuth.addLoginExpiredListener(object : LoginExpiredListener { override fun expired(user: User) { From 0ff9e42792e95ca63db7a5ba7b8399509b554389 Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Thu, 24 Sep 2020 17:54:03 +0800 Subject: [PATCH 008/804] =?UTF-8?q?[=E8=85=BE=E8=AE=AF=E8=BF=9E=E8=BF=9EAP?= =?UTF-8?q?P]APP=20h5=E5=B5=8C=E5=85=A5&=E6=8E=A7=E5=88=B6=E5=8F=B0APP?= =?UTF-8?q?=E5=BC=80=E5=8F=91=20=E9=A1=B5=E9=9D=A2=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E5=8A=A0=E8=BD=BD=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit http://tapd.oa.com/20393192/prong/stories/view/1020393192859862773 Change-Id: Id06c2eb0013d2c492bc61f451d0373c91d59cc57 --- .../kitlink/activity/SmartConnectActivity.kt | 13 ++- .../link/kitlink/activity/SoftApActivity.kt | 16 +++- .../link/kitlink/activity/WebActivity.kt | 2 +- .../link/kitlink/consts/CommonField.kt | 4 + .../link/kitlink/consts/LoadViewTxtType.kt | 6 ++ .../link/kitlink/entity/ConnectApGuide.kt | 6 ++ .../link/kitlink/entity/HardwareGuide.kt | 8 ++ .../fragment/ConnectProgressFragment.kt | 39 ++++++++- .../link/kitlink/fragment/DeviceFragment.kt | 40 +++++++-- .../link/kitlink/fragment/SCStepFragment.kt | 86 ++++++++++++++++++- .../kitlink/fragment/SoftAppStepFragment.kt | 82 +++++++++++++++++- .../kitlink/fragment/SoftHotspotFragment.kt | 72 +++++++++++++++- .../res/layout/activity_device_category.xml | 2 + .../res/layout/fragment_smart_config_step.xml | 58 ++++++++----- .../main/res/layout/fragment_soft_ap_step.xml | 33 +++++-- .../main/res/layout/fragment_soft_hotspot.xml | 9 +- 16 files changed, 424 insertions(+), 52 deletions(-) create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/LoadViewTxtType.kt create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ConnectApGuide.kt create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/HardwareGuide.kt diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SmartConnectActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SmartConnectActivity.kt index 99806e5d7..b55b122d6 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SmartConnectActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SmartConnectActivity.kt @@ -3,6 +3,8 @@ package com.tencent.iot.explorer.link.kitlink.activity import android.text.TextUtils import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L +import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType import com.tencent.iot.explorer.link.kitlink.fragment.* import com.tencent.iot.explorer.link.kitlink.popup.CommonPopupWindow import com.tencent.iot.explorer.link.util.T @@ -21,6 +23,8 @@ class SmartConnectActivity : BaseActivity(), GetBindDeviceTokenView { private lateinit var scStepFragment: SCStepFragment private lateinit var wifiFragment: WifiFragment private lateinit var connectProgressFragment: ConnectProgressFragment + private var loadViewTextType = LoadViewTxtType.LoadLocalViewTxt.ordinal // 0 加载本地文案 1 尝试加载远端配置文案 + private var productId = "" private var closePopup: CommonPopupWindow? = null @@ -29,8 +33,13 @@ class SmartConnectActivity : BaseActivity(), GetBindDeviceTokenView { } override fun initView() { + loadViewTextType = intent.getIntExtra(CommonField.LOAD_VIEW_TXT_TYPE, LoadViewTxtType.LoadLocalViewTxt.ordinal) + if (loadViewTextType != LoadViewTxtType.LoadLocalViewTxt.ordinal) { + productId = intent.getStringExtra(CommonField.PRODUCT_ID) + } + presenter = GetBindDeviceTokenPresenter(this) - scStepFragment = SCStepFragment() + scStepFragment = SCStepFragment(loadViewTextType, productId) scStepFragment.onNextListener = object : SCStepFragment.OnNextListener { override fun onNext() { showFragment(wifiFragment, scStepFragment) @@ -51,7 +60,7 @@ class SmartConnectActivity : BaseActivity(), GetBindDeviceTokenView { presenter.getBindDeviceToken() } } - connectProgressFragment = ConnectProgressFragment(WifiFragment.smart_config) + connectProgressFragment = ConnectProgressFragment(WifiFragment.smart_config, loadViewTextType, productId) connectProgressFragment.onRestartListener = object : ConnectProgressFragment.OnRestartListener { override fun restart() { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SoftApActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SoftApActivity.kt index 562ea9828..59a57e20d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SoftApActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SoftApActivity.kt @@ -2,6 +2,8 @@ package com.tencent.iot.explorer.link.kitlink.activity import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L +import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType import com.tencent.iot.explorer.link.kitlink.fragment.* import com.tencent.iot.explorer.link.kitlink.popup.CommonPopupWindow import com.tencent.iot.explorer.link.mvp.IPresenter @@ -22,6 +24,9 @@ class SoftApActivity : PActivity(), GetBindDeviceTokenView { private lateinit var wifiFragment: WifiFragment private lateinit var softHotspotFragment: SoftHotspotFragment private lateinit var connectProgressFragment: ConnectProgressFragment + private var loadViewTextType = LoadViewTxtType.LoadLocalViewTxt.ordinal // 0 加载本地文案 1 尝试加载远端配置文案 + private var productId = "" + private var closePopup: CommonPopupWindow? = null @@ -30,11 +35,16 @@ class SoftApActivity : PActivity(), GetBindDeviceTokenView { } override fun initView() { + loadViewTextType = intent.getIntExtra(CommonField.LOAD_VIEW_TXT_TYPE, LoadViewTxtType.LoadLocalViewTxt.ordinal) + if (loadViewTextType != LoadViewTxtType.LoadLocalViewTxt.ordinal) { + productId = intent.getStringExtra(CommonField.PRODUCT_ID) + } + presenter = GetBindDeviceTokenPresenter(this) - softAppStepFragment = SoftAppStepFragment() + softAppStepFragment = SoftAppStepFragment(loadViewTextType, productId) wifiFragment = WifiFragment(WifiFragment.soft_ap) - softHotspotFragment = SoftHotspotFragment() - connectProgressFragment = ConnectProgressFragment(WifiFragment.soft_ap) + softHotspotFragment = SoftHotspotFragment(loadViewTextType, productId) + connectProgressFragment = ConnectProgressFragment(WifiFragment.soft_ap, loadViewTextType, productId) this.supportFragmentManager.beginTransaction() .add(R.id.container_soft_ap, softAppStepFragment) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/WebActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/WebActivity.kt index a04d2455b..bc1ac9f56 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/WebActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/WebActivity.kt @@ -35,7 +35,7 @@ class WebActivity : BaseActivity() { showUrl("file:///android_asset/$it") } it.startsWith("https://") -> { - Log.e("XXX", "url=" + it) +// Log.e("XXX", "url=" + it) showUrl(it) } else -> { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt index f868f14f3..395e4b6bd 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt @@ -39,6 +39,10 @@ object CommonField { const val HANDLER_NAME = "handlerName" const val MSG_TYPE = "msgType" const val FIREBASE_USER_ID = "UserID" + const val LOAD_VIEW_TXT_TYPE = "loadViewTxtType" + const val HARD_WARE_GUIDE = "hardwareGuide" + const val CONNECT_AP_GUIDE = "connectApGuide" + /*******上传文件********/ const val CREDENTIALS = "credentials" diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/LoadViewTxtType.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/LoadViewTxtType.kt new file mode 100644 index 000000000..6d5726aea --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/LoadViewTxtType.kt @@ -0,0 +1,6 @@ +package com.tencent.iot.explorer.link.kitlink.consts + +enum class LoadViewTxtType(value: Int) { + LoadLocalViewTxt(0), + LoadRemoteViewTxt(1); +} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ConnectApGuide.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ConnectApGuide.kt new file mode 100644 index 000000000..b9655052a --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ConnectApGuide.kt @@ -0,0 +1,6 @@ +package com.tencent.iot.explorer.link.kitlink.entity + +class ConnectApGuide { + var message = "" + var apName = "" +} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/HardwareGuide.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/HardwareGuide.kt new file mode 100644 index 000000000..a5d68839a --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/HardwareGuide.kt @@ -0,0 +1,8 @@ +package com.tencent.iot.explorer.link.kitlink.entity + +class HardwareGuide { + + var bgImg = "" + var message = "" + var btnText = "" +} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/ConnectProgressFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/ConnectProgressFragment.kt index 6663c5ba1..a26eddb3f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/ConnectProgressFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/ConnectProgressFragment.kt @@ -1,5 +1,6 @@ package com.tencent.iot.explorer.link.kitlink.fragment +import android.content.Intent import android.text.TextUtils import android.view.View import com.tencent.iot.explorer.link.App @@ -12,6 +13,9 @@ import com.tencent.iot.explorer.link.mvp.presenter.ConnectPresenter import com.tencent.iot.explorer.link.mvp.view.ConnectView import com.tencent.iot.explorer.link.util.T import com.tencent.iot.explorer.link.customview.progress.WaveProgress +import com.tencent.iot.explorer.link.kitlink.activity.SmartConnectActivity +import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType import kotlinx.android.synthetic.main.connected.* import kotlinx.android.synthetic.main.connecting.* import kotlinx.android.synthetic.main.fragment_connect_progress.* @@ -20,18 +24,22 @@ import kotlinx.android.synthetic.main.unconnected.* /** * 配网进度、绑定设备 */ -class ConnectProgressFragment(type: Int) : BaseFragment(), ConnectView, View.OnClickListener { +class ConnectProgressFragment(type: Int, loadType: Int, productId: String) : BaseFragment(), ConnectView, View.OnClickListener { private lateinit var presenter: ConnectPresenter private var type = WifiFragment.smart_config private var ssid = "" private var bssid = "" private var wifiPassword = "" + private var loadType: Int + private var productId: String var onRestartListener: OnRestartListener? = null init { this.type = type + this.loadType = loadType + this.productId = productId } fun setWifiInfo(ssid: String, bssid: String, wifiPassword: String) { @@ -98,9 +106,27 @@ class ConnectProgressFragment(type: Int) : BaseFragment(), ConnectView, View.OnC showConnecting() onRestartListener?.restart() } - tv_tab_connect_way, tv_add_new_device -> { + // 切换连接方式 + tv_tab_connect_way -> { activity?.finish() - jumpActivity(SoftApActivity::class.java) + if (type == WifiFragment.smart_config) { +// jumpActivity(SoftApActivity::class.java) + startActivityWithExtra(SoftApActivity::class.java, loadType, productId) + } else { +// jumpActivity(SmartConnectActivity::class.java) + startActivityWithExtra(SmartConnectActivity::class.java, loadType, productId) + } + } + // 继续添加设备 + tv_add_new_device -> { + activity?.finish() + if (type == WifiFragment.soft_ap) { +// jumpActivity(SoftApActivity::class.java) + startActivityWithExtra(SoftApActivity::class.java, loadType, productId) + } else { +// jumpActivity(SmartConnectActivity::class.java) + startActivityWithExtra(SmartConnectActivity::class.java, loadType, productId) + } } tv_back_to_home_page -> { backToMain() @@ -111,6 +137,13 @@ class ConnectProgressFragment(type: Int) : BaseFragment(), ConnectView, View.OnC } } + private fun startActivityWithExtra(cls: Class<*>?, loadType: Int, productId: String) { + var intent = Intent(context, cls) + intent.putExtra(CommonField.LOAD_VIEW_TXT_TYPE, loadType) + intent.putExtra(CommonField.PRODUCT_ID, productId) + startActivity(intent) + } + override fun connectSuccess() { activity?.run { runOnUiThread { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt index d7969f37f..7b54352dd 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt @@ -1,19 +1,25 @@ package com.tencent.iot.explorer.link.kitlink.fragment import android.Manifest +import android.content.ComponentName import android.content.Context +import android.content.Intent import android.content.pm.PackageManager -import android.os.Bundle import android.text.TextUtils import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.* import androidx.core.content.ContextCompat +import com.alibaba.fastjson.JSON +import com.squareup.picasso.Picasso import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.activity.SmartConnectActivity import com.tencent.iot.explorer.link.kitlink.activity.SoftApActivity +import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType import com.tencent.iot.explorer.link.kitlink.entity.CategoryDeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.ProdConfigDetailEntity import com.tencent.iot.explorer.link.kitlink.entity.RecommDeviceEntity @@ -25,11 +31,8 @@ import com.tencent.iot.explorer.link.kitlink.util.JsonManager import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.IPresenter -import com.squareup.picasso.Picasso -import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.util.T import kotlinx.android.synthetic.main.fragment_devices.* -import org.w3c.dom.Text import kotlin.math.ceil @@ -40,6 +43,7 @@ class DeviceFragment : BaseFragment(), MyCallback, AdapterView.OnItemClickListen private var categoryList = arrayListOf() private var productList = arrayListOf() private var isRecommDeviceClicked = false + @Volatile private var recommDeviceIndex = 0 private var permissions = arrayOf( @@ -67,6 +71,7 @@ class DeviceFragment : BaseFragment(), MyCallback, AdapterView.OnItemClickListen override fun fail(msg: String?, reqCode: Int) { L.e(msg ?: "") + T.show(msg) } override fun success(response: BaseResponse, reqCode: Int) { @@ -96,14 +101,28 @@ class DeviceFragment : BaseFragment(), MyCallback, AdapterView.OnItemClickListen response.parse(ProductsConfigResponse::class.java)?.run { val config = JsonManager.parseJson(Data[0].Config, ProdConfigDetailEntity::class.java) val wifiConfigTypeList = config.WifiConfTypeList + var productId = "" + if (TextUtils.isEmpty(config.profile)) { + return + } else { + var jsonProFile = JSON.parseObject(config.profile) + if (jsonProFile == null || !jsonProFile.containsKey("ProductId") || + TextUtils.isEmpty(jsonProFile.getString("ProductId"))) { + return + } else { + productId = jsonProFile.getString("ProductId") + } + } + if (wifiConfigTypeList == "{}") { - jumpActivity(SmartConnectActivity::class.java) + startActivityWithExtra(SmartConnectActivity::class.java, productId) + } else if (wifiConfigTypeList.contains("[")) { val typeList = JsonManager.parseArray(wifiConfigTypeList) if (typeList.size > 0 && typeList[0] == "softap") { - jumpActivity(SoftApActivity::class.java) + startActivityWithExtra(SoftApActivity::class.java, productId) } else { - jumpActivity(SmartConnectActivity::class.java) + startActivityWithExtra(SmartConnectActivity::class.java, productId) } } } @@ -112,6 +131,13 @@ class DeviceFragment : BaseFragment(), MyCallback, AdapterView.OnItemClickListen } } + private fun startActivityWithExtra(cls: Class<*>?, productId: String) { + var intent = Intent(context, cls) + intent.putExtra(CommonField.LOAD_VIEW_TXT_TYPE, LoadViewTxtType.LoadRemoteViewTxt.ordinal) + intent.putExtra(CommonField.PRODUCT_ID, productId) + startActivity(intent) + } + override fun onItemClick(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { if (view != null && parent != null) { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt index 33d4586a4..8e7441ee6 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt @@ -1,16 +1,47 @@ package com.tencent.iot.explorer.link.kitlink.fragment +import android.text.TextUtils +import android.util.Log import android.view.View +import android.widget.ImageView +import android.widget.TextView +import com.alibaba.fastjson.JSON +import com.alibaba.fastjson.JSONObject +import com.squareup.picasso.Picasso +import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType +import com.tencent.iot.explorer.link.kitlink.entity.HardwareGuide +import com.tencent.iot.explorer.link.kitlink.entity.ProdConfigDetailEntity +import com.tencent.iot.explorer.link.kitlink.response.BaseResponse +import com.tencent.iot.explorer.link.kitlink.response.ProductsConfigResponse +import com.tencent.iot.explorer.link.kitlink.util.HttpRequest +import com.tencent.iot.explorer.link.kitlink.util.JsonManager +import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter +import com.tencent.iot.explorer.link.util.T +import kotlinx.android.synthetic.main.item_device.view.* import kotlinx.android.synthetic.main.smart_config_first.* /** * SmartConfig步骤展示 */ -class SCStepFragment : BaseFragment() { +class SCStepFragment(type: Int, productId: String) : BaseFragment() { var onNextListener: OnNextListener? = null + private var tipContent: TextView? = null + private var pic: ImageView? = null + private var nextBtn: TextView? = null + + private var type: Int = type + private var productId = "" + + init { + this.productId = productId + } + + constructor() : this( LoadViewTxtType.LoadLocalViewTxt.ordinal, "") {} override fun getPresenter(): IPresenter? { return null @@ -21,10 +52,63 @@ class SCStepFragment : BaseFragment() { } override fun startHere(view: View) { + tipContent = view.findViewById(R.id.tv_smart_config_hint) + pic = view.findViewById(R.id.iv_smart_config) + nextBtn = view.findViewById(R.id.tv_smart_first_commit) + // 加载本地文案 + if (type == LoadViewTxtType.LoadLocalViewTxt.ordinal) { + loadViewStandradInfo() + } else { // 加载远端配置的文案 + loadViewInfo() + } tv_smart_first_commit.setOnClickListener { onNextListener?.onNext() } } + // 网络请求成功且返回自定义的内容,调用页面内容加载方法,网络请求失败无需调用 + private fun loadViewInfo() { + if (TextUtils.isEmpty(productId)) { + return + } + + val productsList = arrayListOf() + productsList.add(productId) + HttpRequest.instance.getProductsConfig(productsList, object: MyCallback{ + override fun fail(msg: String?, reqCode: Int) { + T.show(msg) + } + + override fun success(response: BaseResponse, reqCode: Int) { + response.parse(ProductsConfigResponse::class.java)?.run { + val config = JsonManager.parseJson(Data[0].Config, ProdConfigDetailEntity::class.java) + + if (TextUtils.isEmpty(config.WifiSmartConfig)) { + return + } + + var json = JSONObject.parseObject(config.WifiSmartConfig) + if (json.containsKey(CommonField.HARD_WARE_GUIDE)) { + var hardwareGuide = JSONObject.parseObject(json.getString(CommonField.HARD_WARE_GUIDE), HardwareGuide::class.java) + nextBtn?.setText(hardwareGuide.btnText) + tipContent?.setText(hardwareGuide.message) + Picasso.get().load(hardwareGuide.bgImg).placeholder(R.drawable.imageselector_default_error) + .resize(App.data.screenWith / 5, App.data.screenWith / 5).centerCrop() + .into(pic) + } + } + + } + + }) + } + + // 网络请求成功且返回标准内容 + private fun loadViewStandradInfo() { + nextBtn?.setText(R.string.smart_config_first_title) + tipContent?.setText(R.string.smart_config_first_hint2) + pic?.setImageResource(R.mipmap.image_smart_config) + } + interface OnNextListener { fun onNext() } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftAppStepFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftAppStepFragment.kt index 556707569..cdc848110 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftAppStepFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftAppStepFragment.kt @@ -1,13 +1,41 @@ package com.tencent.iot.explorer.link.kitlink.fragment +import android.text.TextUtils import android.view.View +import android.widget.ImageView +import android.widget.TextView +import com.alibaba.fastjson.JSONObject +import com.squareup.picasso.Picasso +import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType +import com.tencent.iot.explorer.link.kitlink.entity.HardwareGuide +import com.tencent.iot.explorer.link.kitlink.entity.ProdConfigDetailEntity +import com.tencent.iot.explorer.link.kitlink.response.BaseResponse +import com.tencent.iot.explorer.link.kitlink.response.ProductsConfigResponse +import com.tencent.iot.explorer.link.kitlink.util.HttpRequest +import com.tencent.iot.explorer.link.kitlink.util.JsonManager +import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter +import com.tencent.iot.explorer.link.util.T import kotlinx.android.synthetic.main.fragment_soft_ap_step.* -class SoftAppStepFragment : BaseFragment() { +class SoftAppStepFragment(type: Int, productId: String) : BaseFragment() { var onNextListener: OnNextListener? = null + private var tipContent: TextView? = null + private var pic: ImageView? = null + private var nextBtn: TextView? = null + private var type: Int + private var productId: String + + init { + this.type = type + this.productId = productId + } + + constructor() : this( LoadViewTxtType.LoadLocalViewTxt.ordinal, "") {} override fun getPresenter(): IPresenter? { return null @@ -18,11 +46,63 @@ class SoftAppStepFragment : BaseFragment() { } override fun startHere(view: View) { + tipContent = view.findViewById(R.id.tv_soft_banner_title) + pic = view.findViewById(R.id.iv_soft_ap) + nextBtn = view.findViewById(R.id.tv_soft_first_commit) + + if (type == LoadViewTxtType.LoadLocalViewTxt.ordinal) { + loadViewStandradInfo() + } else { + loadViewInfo() + } + tv_soft_first_commit.setOnClickListener { onNextListener?.onNext() } } + // 网络请求成功且返回自定义的内容,调用页面内容加载方法,网络请求失败无需调用 + private fun loadViewInfo() { + if (TextUtils.isEmpty(productId)) { + return + } + + val productsList = arrayListOf() + productsList.add(productId) + HttpRequest.instance.getProductsConfig(productsList, object: MyCallback { + override fun fail(msg: String?, reqCode: Int) { + T.show(msg) + } + + override fun success(response: BaseResponse, reqCode: Int) { + response.parse(ProductsConfigResponse::class.java)?.run { + val config = JsonManager.parseJson(Data[0].Config, ProdConfigDetailEntity::class.java) + + if (TextUtils.isEmpty(config.WifiSoftAP)) { + return + } + + var json = JSONObject.parseObject(config.WifiSoftAP) + if (json.containsKey(CommonField.HARD_WARE_GUIDE)) { + var hardwareGuide = JSONObject.parseObject(json.getString(CommonField.HARD_WARE_GUIDE), HardwareGuide::class.java) + nextBtn?.setText(hardwareGuide.btnText) + tipContent?.setText(hardwareGuide.message) + Picasso.get().load(hardwareGuide.bgImg).placeholder(R.drawable.imageselector_default_error) + .resize(App.data.screenWith / 5, App.data.screenWith / 5).centerCrop() + .into(pic) + } + } + } + }) + } + + // 网络请求成功且返回标准内容 + private fun loadViewStandradInfo() { + nextBtn?.setText(R.string.soft_ap_first_button) + tipContent?.setText(R.string.soft_ap_first_toast) + pic?.setImageResource(R.mipmap.image_soft_ap) + } + interface OnNextListener { fun onNext() } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftHotspotFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftHotspotFragment.kt index 064288c6b..bc3573f5c 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftHotspotFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftHotspotFragment.kt @@ -4,20 +4,42 @@ import android.content.Context import android.content.Intent import android.net.wifi.WifiManager import android.provider.Settings +import android.text.TextUtils import android.view.View +import com.alibaba.fastjson.JSONObject +import com.squareup.picasso.Picasso +import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType +import com.tencent.iot.explorer.link.kitlink.entity.ConnectApGuide +import com.tencent.iot.explorer.link.kitlink.entity.HardwareGuide +import com.tencent.iot.explorer.link.kitlink.entity.ProdConfigDetailEntity +import com.tencent.iot.explorer.link.kitlink.response.BaseResponse +import com.tencent.iot.explorer.link.kitlink.response.ProductsConfigResponse +import com.tencent.iot.explorer.link.kitlink.util.HttpRequest +import com.tencent.iot.explorer.link.kitlink.util.JsonManager +import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter +import com.tencent.iot.explorer.link.util.T import kotlinx.android.synthetic.main.fragment_soft_hotspot.* -class SoftHotspotFragment : BaseFragment() { +class SoftHotspotFragment(type: Int, productId: String) : BaseFragment() { var onNextListener: OnNextListener? = null private var isFirst = true + private var type: Int + private var productId: String override fun getPresenter(): IPresenter? { return null } + init { + this.type = type + this.productId = productId + } + override fun getContentView(): Int { return R.layout.fragment_soft_hotspot } @@ -52,9 +74,57 @@ class SoftHotspotFragment : BaseFragment() { } override fun startHere(view: View) { + // 加载本地文案 + if (type == LoadViewTxtType.LoadLocalViewTxt.ordinal) { + loadViewStandradInfo() + } else { // 异步加载远端配置文案 + loadViewInfo() + } + setListener() } + private fun loadViewStandradInfo() { + tv_hotspot_hint.visibility = View.VISIBLE + tv_hotspot_hint.setText(R.string.soft_ap_hotspot_step_1) + tv_soft_connect_hotspot_tip.visibility = View.VISIBLE + tv_soft_connect_hotspot_tip.setText(R.string.soft_ap_hotspot_step_2) + } + + private fun loadViewInfo() { + tv_hotspot_hint.visibility = View.GONE + tv_soft_connect_hotspot_tip.visibility = View.VISIBLE + if (TextUtils.isEmpty(productId)) { + return + } + + val productsList = arrayListOf() + productsList.add(productId) + HttpRequest.instance.getProductsConfig(productsList, object: MyCallback { + override fun fail(msg: String?, reqCode: Int) { + T.show(msg) + } + + override fun success(response: BaseResponse, reqCode: Int) { + response.parse(ProductsConfigResponse::class.java)?.run { + val config = JsonManager.parseJson(Data[0].Config, ProdConfigDetailEntity::class.java) + + if (TextUtils.isEmpty(config.WifiSoftAP)) { + return + } + + var json = JSONObject.parseObject(config.WifiSoftAP) + if (json.containsKey(CommonField.HARD_WARE_GUIDE)) { + var connectApGuide = JSONObject.parseObject(json.getString(CommonField.CONNECT_AP_GUIDE), ConnectApGuide::class.java) + if (connectApGuide != null && !TextUtils.isEmpty(connectApGuide.message)) { + tv_soft_connect_hotspot_tip.setText(connectApGuide.message) + } + } + } + } + }) + } + private fun setListener() { tv_soft_connect_hotspot.setOnClickListener { startActivity(Intent(Settings.ACTION_WIFI_SETTINGS)) diff --git a/app/src/main/res/layout/activity_device_category.xml b/app/src/main/res/layout/activity_device_category.xml index 4e518d297..3556d75f8 100644 --- a/app/src/main/res/layout/activity_device_category.xml +++ b/app/src/main/res/layout/activity_device_category.xml @@ -13,6 +13,8 @@ layout="@layout/menu_back_layout" /> + + + android:layout_height="match_parent" + > + + android:textStyle="bold" + app:layout_constraintTop_toTopOf="parent" + /> + app:layout_constraintDimensionRatio="h,16:10"/> - + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_soft_ap_step.xml b/app/src/main/res/layout/fragment_soft_ap_step.xml index 243c68024..d87e129b7 100644 --- a/app/src/main/res/layout/fragment_soft_ap_step.xml +++ b/app/src/main/res/layout/fragment_soft_ap_step.xml @@ -1,13 +1,28 @@ + + + + + android:layout_height="wrap_content" + android:paddingBottom="60dp" + > + app:layout_constraintTop_toBottomOf="@id/tv_soft_ap_tip" + app:layout_constraintDimensionRatio="h,16:10" + /> + + + diff --git a/app/src/main/res/layout/fragment_soft_hotspot.xml b/app/src/main/res/layout/fragment_soft_hotspot.xml index e287c79ed..72f8ba8a9 100644 --- a/app/src/main/res/layout/fragment_soft_hotspot.xml +++ b/app/src/main/res/layout/fragment_soft_hotspot.xml @@ -9,6 +9,7 @@ android:layout_height="wrap_content"> + app:layout_constraintLeft_toLeftOf="parent"/> Date: Mon, 28 Sep 2020 12:01:15 +0800 Subject: [PATCH 009/804] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E4=B8=AD=E6=97=A0=E7=94=A8=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I5ebd714dc310f98a56fd9098f4505cfc5bf5cf31 --- app/build.gradle | 8 ++++---- app/libs/TencentMapSDK_Raster_v_1.3.4.1.jar | Bin 262940 -> 0 bytes 2 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 app/libs/TencentMapSDK_Raster_v_1.3.4.1.jar diff --git a/app/build.gradle b/app/build.gradle index 8eb8e8b50..717a7d88d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -140,10 +140,10 @@ dependencies { api 'com.scwang.smart:refresh-header-classics:2.0.0-alpha-1' api 'com.scwang.smart:refresh-footer-classics:2.0.0-alpha-1' - //腾讯地图定位 - implementation 'com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.2.4' - //2D地图 这里始终使用最新的稳定版本,用户也可以指定 4.0.3.2 之后的地图 sdk 版本号 - implementation files('libs/TencentMapSDK_Raster_v_1.3.4.1.jar') +// //腾讯地图定位 +// implementation 'com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.2.4' +// //2D地图 这里始终使用最新的稳定版本,用户也可以指定 4.0.3.2 之后的地图 sdk 版本号 +// implementation files('libs/TencentMapSDK_Raster_v_1.3.4.1.jar') //垂直TabLayout implementation 'q.rorbin:VerticalTabLayout:1.2.9' diff --git a/app/libs/TencentMapSDK_Raster_v_1.3.4.1.jar b/app/libs/TencentMapSDK_Raster_v_1.3.4.1.jar deleted file mode 100644 index cbf60458317f391cabe67cd4530e98ebb4f8e019..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262940 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 D@m1DZID8gkrZE3KlPD%(Uz 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

    nqkA(0~md#9k~JR=?&c@TQ- zG=xZH6Sa}7g;R)TJQyPF2f*8~^$TQ}zJtqAh$9A)BUKjQIXQZH89fzJz&=QZXu~hB z5JF`LZn*cPF7Hmzb1M{0l$enugxGV_Aa5b?p1z+H1wohv)ERy4#+-9wy$~V=uiX>Z zZ3}k+UKCgpbMCN{-t|3?$=LKz*&53NpYn0Yy<$PTnMh zNf)f8@%;;oLtw%ua85@|8JR&$48-fq-y@Q*@IR=mU{PQbr0TiWY z;2N~yyEBC_agwDpwcQY04M|<7JVb^J!t30pb_aIcYhreeB$1X+;_W#nClDi{=itOS$MXCIET%7><0_`{@i->^%IG*V!*Dg2<6T4<5ULqHE zK_!ZFa*W_c|FU03O#~fpf@e@2^IV9D0XS158HLLnTcG(sxu%ne2v;=Arq3Yg#^?!;#-K3ILW7O>*@TJuqGCzz-z{&t;9ewPRf0dTygmgto5jj z=Or%A6+*-rlW$X>bs`rUtjZUUp@qamoVkr?gSz@Q%Y zK}e#&7_cl65NAceX^^sW7XasCG2SP$-8gOX4WEr-cj7?-w_3}PV8_-ri0ZF4M4iT6NGL;d}5CNVGoCyURVpYtdlhA8onEl}bn2m_)B3c#5f zj?JacheAp!fJUQ^vC<(X2H`DOw0LsHh(n(_2|Gay<{&VG`I%lqnK&0# zRV($}LV$UOuP-vaiJ3Tqw3+iqllOyyQ=s>t4WH;s3=F_sfG(zTR{Da=vEc>ko?rgN zOfp-rDUW$bPf>*?YXfyAlF#>2iHR_j#7pO2Ka7vL15gb}MQD*25ljrlW?*>Kkc_%r zbLW*&d=JbjV4`(rcs4OJ9B*VL zV;7SSiyovBzFuRnhZsr5z1$sJqQ-Rq6;D87Lql@-K4KT&7K0yMv1cy6BEfe>vP%FUCJ>~9WwYvYuAqmA>vHMmVP?Dp$Jk0 z{~FMmVqzlhW%osOuYd`ZAaTw{goKq8+-*`ZCm$M!49kGIY8Gz$nllJ$$wrX>Bx+t zW6I+d1S(@v3!QI6GN85t6)DZOA>%!6a_t8~Ul@&h*ZYQWc2jS}7 z6wbAzG98(8Ml_!7J!@B=JqP3>Fo-5X_qi>cju|A3&cMlXHtbINbzsvV5zj~1v>M@T zcX|{ZULNO6r9tQj?y22BCDQ7_G^HR!8xgSPp>P3itT4>#jx1&jJrHhi7a0HIGj^z+ z1N2uoQTvoU7B0dXc`+PsFy2sP_-aG6s6*eHi>O~&E1Zq#PKdu*F-dGA;3J@P!J19q z!R0J^Dje?wH)q+B88kMThU4CEHtwlgL3Qj}-GV+kmf0rO3+JP$L9p>_RovNuAYlun zH3LLKccX9#mMkWl5!hoQ!t_}mE|)a~EENs179w&gn}o|jTcTpZribB%lmEFz30EN1 z1;KS#)F%_(2$y6_j<#jcOt5C*6$16uMcAE6ka2kUnjeMpg?9&cbGO~r<*!lxPXBnO57E^my}ktLa1&6S$asP%aal=XF&ENY|Yb_B&RVT0bAHY z&Gl-Oa4AR%5$unGE0@~_fq-d{1<@X1IZn8MKS3p!Jbk5;;RmQ}7JQ|7tGsY>Z{Zir z);H2Ke+}#!FbkTy?@SiX?imLW8Xof~bcNps+;`k_V7J%~RYE27JoEvBIKII%_N`tB z`oM=VJ_JC*9v)Hd)#vxaBMCxTf^=IY7o&d{IM_vP%RU}f{;Ead^$+b~hffy@i%Mm< z1T&*;>F~%318+Ezmne4;8;YC)p=OBCPs+Gf?J)?}hyg;a;c0V^-%pz_2_#3rV={sx z#caod#$u3!Jz)d)W&717k*tH=q2z|r8=3stvn<*}Hi8sIAjM!&ZN>;lU>usp?4mc0rRH9)cnB6+CB|124H%3!jH z{YGDVqv;jMfva{TJ4Bv_rYQ1wws?g8V8NuYqfCQg{7EGitsa~(%LpzqP_+KMtGQP? zm$M4CT^Kl7hh9aYGO)R#7Mxgyz>Ma(=+Jk#l_)~o=q}XgXgY(2(}?RSGu~o}>I0nUc;b_dDE!}v z%8D)|0l)Rs8GHduCCg{3c3V-TU{TPYqUH4Bxl(sPm@UY)>Jz|5L6A+3@Mqi;K!Y%2beQfk;jD_g7!djXI+myY4VAq5qgU%@Tdx|2n zCoQSilH-}|Xh$-O9F7zAtFPyK9fMYNz=;8pLZzJ*Yh&hU+$bl9TE92fzF>$JP?z%*BL2&Ck$s9g=4=%@M#s4VbcjXWv5v{&_{?#^+a|up#X1#KyC?ZYC zFoFpq!=k7uIV>!IOu@NxXY1wEGY_CX*~2;q42${>E{B#NiX6gKMc$Xc_tN2d21gV) z^q<~gbN{R0c?Yn(FADA#ay~^wAp@!`&Yd5;@0slv(v&8OkO9d?aES4~nXzAh>|de? z=nrDSeBQT8^z%>e```G4@0j3q4)0qT`o(_C5k)LS0Q!ywUIDy&#PpF}jobP)yWamL0o%Coa(H*z>F4-W_6hIbcgN929M+6U Rq$}{BrWxGhR}E>A^nc8))~^5n From 972e37b6fcf4c10a9efa752a4ed60a1d78a4a6e9 Mon Sep 17 00:00:00 2001 From: archurtan Date: Tue, 29 Sep 2020 10:52:26 +0800 Subject: [PATCH 010/804] =?UTF-8?q?Revert=20"=E5=88=A0=E9=99=A4=E4=BB=93?= =?UTF-8?q?=E5=BA=93=E4=B8=AD=E6=97=A0=E7=94=A8=E6=96=87=E4=BB=B6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 5cef70a559b5014fed574da34427b5425f28c69b. Reason for revert: <缩减仓库大小需要精简git历史记录> Change-Id: I50730f1adb27cfbb410de48b7ac40fe32caf1750 --- app/build.gradle | 8 ++++---- app/libs/TencentMapSDK_Raster_v_1.3.4.1.jar | Bin 0 -> 262940 bytes 2 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 app/libs/TencentMapSDK_Raster_v_1.3.4.1.jar diff --git a/app/build.gradle b/app/build.gradle index 717a7d88d..8eb8e8b50 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -140,10 +140,10 @@ dependencies { api 'com.scwang.smart:refresh-header-classics:2.0.0-alpha-1' api 'com.scwang.smart:refresh-footer-classics:2.0.0-alpha-1' -// //腾讯地图定位 -// implementation 'com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.2.4' -// //2D地图 这里始终使用最新的稳定版本,用户也可以指定 4.0.3.2 之后的地图 sdk 版本号 -// implementation files('libs/TencentMapSDK_Raster_v_1.3.4.1.jar') + //腾讯地图定位 + implementation 'com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.2.4' + //2D地图 这里始终使用最新的稳定版本,用户也可以指定 4.0.3.2 之后的地图 sdk 版本号 + implementation files('libs/TencentMapSDK_Raster_v_1.3.4.1.jar') //垂直TabLayout implementation 'q.rorbin:VerticalTabLayout:1.2.9' diff --git a/app/libs/TencentMapSDK_Raster_v_1.3.4.1.jar b/app/libs/TencentMapSDK_Raster_v_1.3.4.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..cbf60458317f391cabe67cd4530e98ebb4f8e019 GIT binary patch literal 262940 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 D@m1DZID8gkrZE3KlPD%(Uz zNxQq=frGlU;Q`&lYNMt=?IsP&{v_afuw3^drdLe3rNwg+Q2aQ&ERVcR2`ytA3wwjn$K+{WQe1=DxC5fX zAM=M?BF6S()0%9dD#)G=5A|Zk8KY zn6}{I}P57KY&266M@!GzlN7X^$=*?Kv} z;~-RZs}gE1U5A>}!a+Dvjd5$%AE`xBbowcHX4p*o_63?A5FOLN4fq*ntB|~X!gG}f zgG{I4<#lA&Mb=?#Hsc@}$<(p5xk45u1M#5ayM`H-FzS_q4QLnsH};E`^4|H}1q$2r<-n5r*uw5LJF37+p^AXoYqje~Rc?fin79x%5Hff20A*e(B89 zGWr6)V~5=-BHuCV*e~25(|a3N z%+up9%VmFamScoj%IOhVAoaczs!eA7#FKqSjRc{Gss0GX0yo(`Lv?zDGzSwuh(J2r znX{>*f=NKj2jhC%ysD&+0XsNwngs(YBF#4tc@PqdI*Sp?@7wxs(yI|xSBp1MYBM35 zFK)rQwAbQ!7}+RcLMpM6`9Bx{%I@}}pwNaaXuia*RVa|FGiaA7BlUfu5pyt+xy?Lus6 zM5jBHRc&Szx6&V);*-Dx9jL@cE;0Dlzv_t&g|`ti%g@*C{fmyS|GsQ) z=rFm`nM@5J zJB}^~aKhI3h6+1SRz0HX;jLCQ_&v@I)de8$ILN&PHD>Xf7_2ZBQxM(N&Fm}Mi|R1! zb95K??;v*SIG=9oP5@vhQ*Z0(K_3Y{{Ga)Mkq42iE3zZd#N!0*sIO`=U}H_3wf^0<#hN;}1W3bB^$a<# z#dMJAJKU8vP#Ps;fRhY~qZj-HZqKyI^)xUrt;Y0}`e%9ro=!Eu+2(i^MukXm^lBTn zr`OzE%0&|Hexe;YD(we6v0x6u6e3~TqFTw)D@$DdngXfzzC4fU(?v)`p{ayRJ<_yz z!TOaxZ}#ESc|V1@SV2`)*@Nf28~#%X>g5mwtD*mS_PBP&zYo@g^J0d%JY2DARI35K z80sNhr#-ahBd&kFRZ`I%^q^0*zW23qSH|mGBa7`hWp_WeHoxmK$d&}DcW_sOvQ|Sv zUWk(R;AeFn$8em*vbbheFLoTkifkoyUYHMXg#)s@GA+*W;%RJw{cN?X zHcgrk4>^=CK^!_??wLs0z<2Qs4%HkkqK+9J9Gxwn9l22Xnp00_WEOjGMs|I|BQOYcT>Qen+ zshx;+tFkM*H%*t3DML1L6Sa@?E?RD`ftafe^ZTv;nJ4@1D`?37-Y`-8A1qKd|LIOq zl$J%-NAS^EzYyr?RgjclR{#Jm(Aq~^b_f0@{b)7=xdDz@cjQ4kp>I^(?2Se6^&&Ie z=H5DGr$*Z12i)KLs^{kM&5ov{gsR30jc8?XQ2zHKie5b7fvc6doMm(N(#o^5JKk>Jsg0 z0C}k~<)OYq?yAVp;2%;9#1!ToCOk`9U&**P~m&n3Oa9MvCb479EM`O zBg=N0OLwv2euzUguRCm)WtZ7W!x{01HP34pl?3DlS)e*D@rKnSQ3`tt|G6%X00)fE z$6sRtlE9xnnEo&E9!7Db`0ZvhRKB4R_#u(N)yxE_jNPI*?u~+D;ixF9RHFcx_I?Ru zPJWD&*6eK#B6&v)sh-je9o9ca>1FW`x+teK5t4L@@XbNknn#wY3Cos-aW2SDmFB3> zd66q@$ZnNKnDaq*FHkC(*jUBUa7&#my}yJ6Y)B47i@hrjaQz%51c=k~h(}_(+}2Kh zkL{rtHgj&0g}!N>sGGx-tdMMV!BFKVfx3yDzWfAH_cMDGRkP=WS7c-pOHh{2Dv9q}xolGcR~SnHcGG_XsEJ0_-OQVZTRt;%eOSan9GI|Kaiz z4cM0A{yyU1-$(p^GwA5M{^uE2n3F-~N8xFp*>ce)Z`6w;ROUBtnO9yUiwsMOjm_mw zeC}Uxa#ch>Nw$K3{W=hou0+CjTO5p0n4uoTLYOkS>T*2ZWIEnXyW;E41aS)-QRils zXOU;J-x&-KgW!lHsF^BcRYZe9p(&KBjU8?bf+4k{)>|HCyj-=jn-Rfnv1(0isSD@G z=wt#Zv#?go)vB@{8;$YIyK*sbe86bB-((O zMEfKiw|Iy)pj(AxG3YERZ23~a%T`5kP31+drA@Lr@%Slth7Kd48j7mcYG5kpQI3w^ z&^fh3G<)W(jVh#rK#}sdyXR`SzQ%twsrsD`h^y}PcnX1sZHrd{bjOjrm5tWevbh4! z-h1x&M1I_WU-UqD5G+#0*=5xg42~fkg6PXIH9DD)<-W?{1ugHDUI(adOqTqknl_E( z0%r*Phaq^7`HG-!sv}A@>HS+M7KfU}yhM!|4%*!ZT&f@xyAe87e01XY0Gn8LZbn<2 zcP~rQDCHBFMPiuNc_&2ecpRw+jec)9Et(pzbC^b~p66`$fpbcx_#+u|%4Z-I!qIl@|@mJAvQ5mW~BO2)|A-&0}1ZVNJ`Ux^q^9`qaTIr0gyx-Ju-1AL&kLB zmb0w!P}+e<+q!?N=V?j9FF!&4`z#LfW~?at?O?a~29f=5o&}@-;!J0$dOP7LqkeTw zkuq_0ysVpOHs_erT#yn}f?F|AG>Naz|LHcHPb{2uspnd=YDim~o@|CC{Cx|HrYK*A z?-i=H2*{h4{;ff25dkE#Xfi{cxq&=>M)!4-dBBN!n!aQeUt`5Nj@jwD+J3w2c^hs4$lrC7>6>PtI)%D!EB&v1!rKokVEdN1mSG<*Gl#g zIx(Ir*Mfb(3;-zesMNx3g4qS*^>h4^Pbk&*f`Dv;iu& zb|g~2BKjT;e!9F~vtJs0^QpUFATYXt1CFgxy9qEkCaod6yuojnaP(f$y9~i}3|>jQ z;`rSGqF(I%aM88r9jy}~$L`PE@VdjGyi(WK5EwVR%G~DzP@9(n@HZ6rI)+1Z7(PK< zUe7Fe25yTXE!XP!J~08j?|z276T`kH&(OTzhOBZ6G_~*gy)X|GO{w0bUUMa2*?#kd7xB_1?Vd#z)rJ4XZUh5^l% zMrO?RYT@(NycI5JSFTm6-$CjBc5iNHN%li&RnOL}hOA7yAG*4%*x8(T4~hfz%`J2V z9J#g7#xtNR{L$sDZ8L9=iPz0Aprn_w#G#9+(tjy6C~hR|U7vFF^*UL5?%0(3Gg$_6 zYqD*}puQZuNNBy~!C))i2q`g*byL=K=@0jJ&7RWRDW($KxLf=TAoQDsncyDE)F?2s){5CU1Czie zM5Hlau~{S%Njx`yAtfq@N|bL<^pshF9G_W{6798;C`~R>2dSbd$76|dW42P;{bi{Z z<5ac`T$fzV&6qs96Kaay)8IV&mlvzK*S?&Lb-FM~%L@mRJ?$o?dXXsJId5J#8QM%S z9lj@{83of^K31tOtUAnexQrje0&5n>KZT-}DXY~c+z=mZWA5yfe~YO#MgciFrs!0T zYEF5(6ioSzhdp;A+%%9gj#xBOSSVnwijmk%p%80H7n7eP6bRwzmsGi2l8T_s8Bf($ zwJ0`EMOojIM3uTgS92Qkv`2&RUbp&Hr>+t@nO{PO`#2 z>$UlJe7-k&qnr4m*)n#Sq(O0 z)jt7EEqoiz-1D=qNn!U z_o0ceH;+RKXm@YlCnOR#ZdhY9m))8}G0M)!m}KG--7qR+zDK&8eC+qd zr7_wVVm?5v$zmM>=a>#%UscQ0|FDTE|L=!%8~L<(!*WsEjXQLWbtA^xNxmY@{6uqH zMN4Cftg$DbBc|c2hNjq#|KGn6J^rCo#Gm$?($B_N$_bmoN@aKhs7ov(a(DTLA1L}z z0LZi5VGTDsT>01W@#&4&Ec8l_F!v=oKQYXNbmrym$P6t#wrX=5ETAxvw~&U z#N-{)8-)}NB|mC0L|YDDhjEVS()$_n7@FNC*a*rIiW%;+TeL{)8OzFH30h|1Bz_c{ zaRt`<+iR&F=dGzi@Dva~7S72ZLwU#;D~A^-hy>vE^iz_Q9w_OE9^%4Me(v4+Kh2xz zUXXOZlM76~g+Ad4v)m00qT>pq-jVD-t7)6pF6v@k7uR`U+Z+GXO}+yUZ_pCY4Q#Wo z1SE2&Q3yv<`+XOF5Ul-;CY42Hk0n)?iUs%U+P z56Q?`-9fl;6ZGvs2|hS)cIo<-uZ+29={np2@>sQrX1y(IuP|Q3UewSt`-}#5pg(G2>!u-QvUd zcL{EQqWL{6QU<(<|K=&`T!X)341fMfae(o30)6FR>U5;yn^9h1*2P1-I8zXCze;T4 zKUtxl8S`huQw^~tS{zaWV=@D@j)v)O^d5&b)4OiCmsrSZiK8q_XvYcjd$Ab5c)L?) zHgkqYMCq7Iz2$2Y~1$op+9-26Wn z*7Ys^<38*i%OwlKj}kOM+(spUjM|MeVVp zy+FNrBdR%Hx5}d+l~?POvehexONNa*`#U@=4{?%0?e&ykjoci==JU#wT#`|Rtivg4 zaW5!OW(FHEgG_^jm4-Ul$a_pqoZ}&>P&N2SE7hGZt`T0DkSR=xd4ksL<73jSIk%TF z(J6hSSZ68r16F0SyKb;IR`AgRJlHYuZz35vr_Nq)T~y~jxJ7gcITv2R=_-HU4J7Kw zvaBrAL=iSt*^%7W|F{u0TsiaogZc4e4flUHc6$8B>z`7C)=E@H`_k=6dkNOZko)ro zuk3H{UjvO_&r(je;AM@Nt;V2Ip}jD$hF2k7xm8w8Rnj!p3#=^;Owzx`r>dHpx0)Zd zt(&YZHw;@`DlW`rAAP%DevlZ~>VEiqV=AtAzFUL4J*RnMu5J%f;4eYx)!UppEBCKB zKlAo;I6sT_rEzWlJ-0-Eow#X^aB*%g-RR<8{d3b*RncCvifJsuPu*z0;Mkaapz~~| z-O{qic& zrYbaELHMFB+^X>-%uyu^kI(Pd4bTf3@x{t$02g;IP(aQz(8>&WXq z{_D^jYVj>SVxo(tJJ;1dw~ApAzEH;{cZCmMzwOFE-5- zLgnpjqZn(%u3Z1*P#)H3EQe@>3^qmW?iizR&SNrpU-9mE5r=TxilR=n+-af<$NF)Z z^=-UsYN~0wy|}D?J^l(&UvbULTTt_kCp)zEWgg{lCdU^=L@UQvC??V%|C^-lZsD}E zdGFg)^7GfkG(NZ3S!6;M3%e>al^DtlzE2 z^M%uN?2o8COhB`_i6~o4_~aoggj;^$juIGD4pLL6 z?5sK}%(oYz!5?H25v2*_Os0Z}S2pNV_`bn6; zSv-^9(a0Zt$REwbF#7uS2Np2* z2aT&j1SHBML(axB;G`Z~TB%_wgc|1vUc4}hKTp^3R z#jV{6=r=+TzB`E1YfM?WOX_7n4N)x;4f4g8A4of4Y*4$RpKfW84Yz4$jiQqy%wN!+ z53Xt-$hpZsyH$WWxLZyEyBH!=+YMtwtqKirNRHzy`CKyUW%rGf(b1)xu7*=(4%(gs zYGedN&}B}9qWLd|Pv8P3ojacNtT2YMMlXHW#Uy?V-=!hPMj9OG5#FfrX00&ZQDlfi zrNn^L50s{&nWIbXKv!|H7IZ-e#l;21naCHW?L<)|^~Z1HaY0I^4ZR{5lsDZdFC{Ze zE_r)vVv9cb?YmX*W~VGuFpoiPuA@kaKpo|wNUqTeVz%v^Y?V_M5VBT#u=mO2MSwK{ z95*iT9Ct2Ak_o3)JI*W0M+rYR*?j}+v6KpJnO-T9*?ag;NzD;l9FxRJF*@tI5^WUX zlGafy>sk7`QNe@8mh+9y3W+caP9-YVx9_ZWy@NBtP)!tF^?o&_k6C_E6^5y_HUqZs;md0B}RGNO{;)2T+% zOoICnUVJbUZfB07P?HJ$25cCKcNcnMH)t;jx!RvL5b%%-)&BZRDx2B^FkD*>V znNvm#yY4?LNS2dy?dyrhCE8K!+raMGWB!{+bE~Fjy_HmSz$BR%7R9BgjKOw`U112T zDylq#;dqncfF>8+G}Zc!%(fLeydxUnan1f?WgxWCXWo<$+y;qw-ycrQ7}^Tsv9hUx zmW06TS3FpP8?fYnxnj!PiYbxa{>7`>NMWLtsSwwVNEFe}P84}nuijVe*WJv-*vQS; zxQTJwq^aA?y1W8q5Zl40DQ;-zb@#9_z zrny&N`K1!C-MCp+q_XEK@t{<3b|ft(vs7f?c2`J?7JA;P#3P5L7;6EWI9xnjIP6kT z%{=WCSpUrY8N|TCQcV%5&~lHSB0d>|`jlO3`RCFrM(37yFEt)1Oc_3{&K<$+%t03oyf&nAmxyHvY;ReebR!X+f>|lj$b^h7TAu)0MG! zriO8ni;=M;E(F{HubC4$8P~Ha7&kshrj$uWA5WPti=Z2X8oJNh z2d)1x-+ByQC*yi2_XNsAp~~(^{i(!?jy#LQqC{R$MjKyZ zP|FoD48w|GQesV4q7|^fp;Z7^D*)IxQTCIv{B$h~Yn8=~*s@@JEZ@IwP4_olf^w5i z0%|LV!@vBxE=sq^)F81+%lTata%{j*uG7g#sY9bh9CcelB$CnsGesRtON^m-k`oWV z6|g3^&E#RY%gJO6-rfkwYbSJq6$KWBl;}U zxTSS7kc*;If3yh+*PLeNb&6oghP89z}H$w-B3tb9W zp$bBOI<%fX3&c^-trdrR%~by`Cm(uS9y$PNZ zGGtjmepf36VV0p9IJ6?IVAU!RSS?jCY~X}&Exm&YaM%CBS>wD{ucR%QqMvFgSdcF*Q1_c5ieULZ^AoQ?9Ws#1UKNTv z7!$-8%9J!hsbtm9akjY+=RXs@f2hD0B%N1HqbLH#{m&!-#T&;=I@q|#&Hx>CLv zwIUbUR}c2RBJVNh6XL&X=YF%y|IEL)Hjv-?`TwS!>;G5YFG_ji8vujxh5N`j;ncb? z0n#N#p`Cl4h*n2kv>E76s|IZi-U-`K(xI4~rf<^R+?|Gj{1w>E92K@ZltS7rDPbVR zEb<0SsCjig5vRVHVzAPlBOUBXbx%MaP*9kkpVJJ|Z&Q96!3-h!yPwGeNhwn-UtHVZAY7VjwoWUf(q+nK? ztMy}JZI3ht!_yb+3Tn;k>8TB11w_fi!f~mIY6OHJ!t#FSw8N?~{RYCS?`ig%^E9J* z4LgGLc&`iVSczvlnG)E}D`hMursLaU^-(7D^ zT*p1Vb0R#^>@Nx8Y*zHF{3 z(BHl>=cWqCOhBA9F-vhnb{}{uqO(P65}5MR zORZ=KezQ`LAh0tt$wM_{#JK5&pQq7cUI!GWml!_&L$oge|9Dg*DX?S^X=&&`**Zi zZ+2AJCPCKXY>J#L8#Q?zwtP=Fk>HvtW)P|NO7{d3LWwWXj;vF=_2{NPD$icte3&z# zmma?6NPuwBVGAHM(WC}b(J6U-n2=;reJsSAlH|fZC=G&RXxos_l5_{#D5P@>7N>!6 z2cKtq-PGVT^RXK$5Z19%1^xjRX2qCwVDc)WvL8~~`Cr~)c>sjGd3G|H%k#fDr2YV{ zv6>Plv6?!Lv6-Dx?DhyW_c`?wyR8U-29;KHyd@BM>5V3GOWN7h*lZ} zL3EG2mGmbYva3T9`aq-Kta%P{zE*C7KDP>hlul{uD}Hn90_68 z+1^)EP6aD|?MP8p``SRFGK^!?80-A7b5?}?OgP_fxh5O#PAb&WLu`q4*YjPfNyYlf z04fBMON>|8R+DUsl>V2{kW2KJNg>rYK)GVTEYxpYC5bM8RYG z2zdL1J_PtZ^QSxX;jW{O_~kjdDt?sNvlB(RE=o9_5|hHHpJhUU0`T;of4sE#ou6g% z3559l=%c3f{3r?w3&_8=R!LvScmDggDs`95!0$US8u6Xg{omrc?*F0cRB1qaC9F7q z;h)`%-I^M{_xA_u*%_#_l5>M#1TZw)QyXCWhlOR43W*7zjmF0r`9q1P|M`6|_Yl`e zaMd_wR-Y`|%UHHhxz%2I7T>hhaMmu`G1t4yawgIcUu{40a=%6@AST0eclWjJdHJ>J zc-3~C?MZT%1>f^X`nTx5RNo4Qp0(*Gn#Za@4EbW|EN4(UiiJw4aNYx;iPEV+fQ@3Y zS}sH&3t+8emLR}J)u^6F8`Mnh6d|w$uvR`%3GzTWRX$-2;?0}A0Bq&W+5`~-gi*uO zazAE;@75!1CuX>gh65pwhR1It?&vzKnKpQt*|u#qSnjH>zE(HcV^79|{c`}F8L(8@ zQ^Qj4`mEvf=}`)uq}Rc{Y+#>4zzvWcL^n;~8;CE-H5-U8*)=GYl-mS=iI?nJ+YcZ5 zJtGO$dm9kpq;{PGa$Gsu*Q1uVC+=qpcrQS0bJNjV4d?FsZ71=Y_PV&Y1?*D^I0N>n z156XW(KmYtS7IxDDLW9gedx--hd)57Fpx@(Ahuj2!9Da0A znTUE4P~GI$<){tU##D5#Bz`I2(NJdfH2@rRc7p5ZUR_8pSs)q6mqie)tR@5YjGBD# z4*GL=uf5+2csJ?w2#7DubqfezW4=}~D@2W&yq_<^Ga1#<{#8}!;IRWeI^TF7NTx~| z5<2)c`g2k*2BOyB@80C+f9IQTd?8suVmWAah?BI)wF9Y3%KoEFeY*XwA5jBU+W!K#rTFF8v4 z?(c^NsFXJkFtbXCwiehHK?T{|Ew)rzkNz^q#a6ln@?oBMBy~RH|I(7jNe zn^H7SS$rMKQxLPz*C?O=8_E5Lg%Vc6IyRH?B2SodizKn@xlKaQNX|S*YTt&jq7nbA zVxDKO_AOMYUDxE{hq@By?`ZZwcx6uNc6j+D3DMGUy;{{4v(@sv2sx7)8`qG|IJ@4n z`#?bkUGgKVWCz>I&w{ScP|sXCU>GM`5NMtn)zkE`j%@4Bm;~N;+8kb}t0NQ9mH8-w zeM_b#LmU-TtdGJ@KoNMJ1!8Ij$n>79E7^DJN6cYDgM7{0_Lz#;!g@rCd_*%(J*T1B zGpRaw#POU^&LaQtoWFmv5#w6JO}c!ILAZ~1-`6T*?NG;ZvW0(5-|7Rpw3w!tJSUf7 zf2!@1bYG@)$uei-oDWr5e)23vGgDaT8h(}Fn08+x%Evlsl z>fsEMe`_U%nm(p9_>ai}`U7lDO^}X4=es0Vv)I?{eH>^=x z7~^KFf`L*4F2)`k4wpg8so7|iGnt-eOt5jR)JG*NaOQ>CQibO1lmlS>SmxRu^K!q~ zZe)M_0^N|B>X~cfGEaCdj2@BrerFM|1je;<;8fO0H1-iK2OVo|?MuC~tKUoB%szM0(VemOcO`VJOPn!4`kA`mv zc8?OKq5D104b#b&RwLAObDTtrc+30KOhH$f<I^jSskK$D2JE^EbKEqaY2v{vt&y zrtg;xt4_{nZsTl0sP6#zjOAj*(C1pNzSbMuw}cIy+pNYAg+Dt@kZWJDy>zfXKL7$- zkKu{vTf21nD=Ri11LGGqNj4}(I}!i>T>-T!X? z+|i!4`K2@D^7(*p%gvv|RZoj@;yMDdi=c1wI)j}CnJoqOc%0ejH#3*Kt7nAKmy_2+ zC+JHr=u0l>%P#n}4f7$0$xW}+#!h4?{tNr<8Atk}csFHUiMJFn`Gb}sUGB~P_E*nH zafS)|xqH2c?ch{NFX0fH&vrv1Xaf6lsA}f%(@;7D5h7j@8_wl1^^8B-4&0L-{W8`g zj7XE<1ZLonb@$(%m@~?iH8rNQ&^XM^^IIXW?%7u26cU4S3T}*Bhv-^6Ps?8HeLJPr zbb6sp#;1RR3V(fFZ=FbywL&zXU&dBW*i8v3q8*v}*~sE+sWZ2vakh?f=?+rtLus&H zw{T*U?MjobM#!NZ2lA?Wd37D};jaw8Z?XOHbS_L3r(uBseWY-+@1=AH+BO%_&;RboM5eRYop%2pWAD_SS=4Up zR#LH@ys>R372CFL+o`x>+qP}nc2aL_JE>%6?lsrJoG0Hp8RHN1tM&e%wY!l4b%Gw3 z>weK3G0XdO>6L|{_j#mn;c;&K9nwrth{nx9q4R`wDIqQRqfmTYQLZr=hE*<0LynV-XKjUL zrBG}nHweb?u-mS56;b&%#;m2|3oIz}&Wf6n?5l&_dw1LiGu`ZlevwNsUMrcy8 zBr)DH{lYpI$3|fE?C;oiW3!&nAv_w-+6u*tinz}?3oFf0^{63HIC*&qzMgbu1rUc0 z4gR&Gu5BRFb1~>AeOhL22B=;REM03+NOt{xF8hQndzxDjwGOk4c7+Uf3Gn^9>$7nd>b>WyAn4`j;`kWD_;cv+0o5eNHr+b|ENf|^j zkPmkX8OyaAb_odaIm5=2)1n$W!DmK`z{Z!Q8l!t4MXunJASxbCr-BW4G&(d6;%I%4 zYH!(VcZ{_o?$L(SPn=EW({{BdbjDztt?8YO+0PD0>2{qM@A=>FZC`#i#$O({gl_wc z`@$Yzi2I9C41X27CYl#tqK@jVutqfk){OhGa21-c-y?n_8sH4-bSILzC$Iq}aD`Ja zg0(%p9_90YN4mapIl9=mVsW9sTbpb+KHT;2SFG9}dM)(>-BOz-_cN|43Mr}hC*HJ> zCJA4e#}2eoEzB<+cbX|YmUG3Sa}LIF57Rs&j1Mho2U#?x9UVw=_B}jv_V+|>bD8@l#e$}>Mz86j3Y$mFXxTFZb!<7nyTc;TtNjw66>M?on%NWk%`yx!64Fb4 zv27eM<1hx@lI1*2b}boiy)j4J!c2HHVmSO!2Uhy<#27Ql-Q;tIV`K&5)H+t>9!>KW z(ybHXh`Pj4KRnJH%TA!^b55*vmNwC$8LP>15A1MGCO}%wp!>|AMvs3e9`*Jo$R}h( z^s=Xa!5{f2l7W2495>>9LZ*2XuI6OrWwHTV+m^$gl@xFi%6E@eK&ThW;kz8_Ike5@ z^Kv&sIT8F04oDwh4NQD8&7TnNZgtmgc(0)My7*Rj@Fi(ANUw+M??n<02^=QFa!b<= zG7cm^|7gRj6e!!9Co+$Rgx@pA&JJ7^);U@~Qkp%F)wg}Q`mn=l#}bv2I~out0^`%3 zJ>@JhIq!Cb>HL`R50g^~J9mETpO;v1F-RmG|Ej>iz>$`zHEfp+CrRnz@7*KpEVA^= zv;K_puF~1jwBf1ntUsmGDE>1zSYA^nex%x5H)PTn^>@aQRWdiKn^(|@KsfnDpFV}U zM{SR@j(XE@QjasRn;kaRw6SaEJBZ+1D;RfVx6YaGz?m;pXolNuV!((wFGt4WcxroC z(U(TEF50PyjUgx?Tq}o}vdgV7FdfF6O071~RA+*}!y(|Qbe8sYFt%q#)JDFgjMVf^ zZbRa7$F}e5v_pEW)okANgh=VokO32@#dQ@V$yWl3rkr2$g`?{aIG@yal%{xmb?Whs zi87F35`s3Hr%h>+jZ&zL?R(Eub7nVFNH5{S2P{`n#m85QhuUnTTRG=1uxVY)tS+ZC zBpkeH?knfy%eF_sua;mLfJl`o;Sj15{Pn^Y*lV?L`kmplqL(JrnPJ>V)F@}XlRNW4 z%znM3<0naAkmz^1O8)R(;kFDI9b_fiP@Iql$qlYtH)N4+BQJ*Y>pGl+QCW~$x^b4H zPZsihc=q%{8LE{c#5?-M*Cl8qS-G5!QckJk4IxcX`9x85xuII!{EtoP+2bq;tTMNF z5}$@mc1}t*L*)4Nydgw=B9lE&wP7DhlDztJDc_JbS*u*K;w~osd25Cf^mGwO?MX6k zrSaOXC1b598trqjlAoCIH{T4b96V?#;{8O7M~0q9kOK&Q)YTDdOf zOl;0NS|9B!7LdYXb+o?L--=ksHSauX0zru^dKN0A9WTyXmZvxKqcvLJVgtBX!&bj< z(16>+1KGQ~x28-KW~c82wiTeWQF0oskDRKj;<%MM^*lJlfjHlt<$&@*z2gksj=L>~ zD?BdMxo(NAZwvOUEJBbi`U1%QE(|?Fc?4NCkHq5(RT!IWn!6KKFR^0gt zcX2%37FLYoph(aw-fK(E`Nl!c^+rgN;Jk+ILRe>>?H*qO-so#x}M<4rP|f@*EXbnHeOtat8*}oAM(jQ zRu)b5&y8FLjh4wRW9NRb|FeQUEfbzRziLek zIP6Rj5%5hEP?TyZ$-ob(y3o)j3=z;Jx5O$*!u7ejrFedUT<(40QNS6KSqkg$40xtrMFtC|EUS64@id}N z3Cja}>fE$1bF~DEz2A)q%jHkZoexHCyraFZ<%|luvsZX$|5Xb~27s|j04MS{9fX{T zgz>>k33Slj4H8sbnM_yOUadjPHb)thVsS%PnxjUoDZ|T|w-$S2uHvnjns8Q?!$bQBt=Z_ugksqQiMRnwyeHFWY-R{zHR(hf#|1Ra%|EgJp={`fTZ6YkoJz)clUjLyGrsil8WkLFSm;Qdj#PQSmJtrG8wU4I&S( z9x3DdMxti<{S9e2N~PTDk=+%Op&1x*<6aCetuw#qd8%~-*6!;x?Ni|bly|S6gldka zqW>kFUhkPaP+Ge1gt{~K;Umi9nYRE-1n^2Bf8x1))1!ua-aXFFjT|;BO=ji zy5Ay#zcbe<7&}T~HV1$!NsW08O)h(T1$L?00 zZ&Ew8vYXP&Z?h@6$;;YcyB)kWGoiQz^HWy*g7km+HyS>UTRpmZo1Rm%=JFx`Do)_N z|MNo@;&{C(z4;wWgMazbhsc)k0?<+wh|U}xf>h1h6xVDnM79~hy~UKm7A@`kN;Q}9nn+s)j&8;3SQsi!wTXHkKzVTJ2)FDlCE;93ev~|qg zHlAORqu05xEGR^1W=@v+5rU&DjX8q7`HjwWt0_9lkjaC+&2c-&@TO<8y|v706U%MY z|NIpEqwif-RsTyh=DhthFqvcFA;K;r$NPRZWuU+=IqH#&Dmm^*7DuYSP9Rv%+@uApXP5Jdl@=bBW%l(d7JlK{;Cpaspz!Gccla`j4xl(`116{!HH+sImjz%D9kH{O!=Pdp zK$c}k=a8bYiW4P9L7Xg08cV<%IVJ3>J)#CZ0vY`TetEjby(81kkEyyCMQq8ot&H^z z1C65`J)letqA#p*E2e&E7f#skaY{0d0o`lj{eSNGn8+;>|72Kljaj^~5O83qj+zz0k`d^NXJVr?JjWmb?X3#$69TRd(B=dtdWd< z&uTt@I%}4cN_CV$Qc8we5^BeWum-Xtza5(2SZqy#w}Z8gsLv^(a#nctszjHoGFav; z*XR_*{NZQB&ni-NEreHm%Ml}(F#u!I5kn+*OzBvaw!Rd`|CcuS<7ywbXVjBtn9+~) z&{?OVDbM%k+7?6+>iP1PqiYymq7v1O2yHswiHyhLbJf4X;BG|j_&Ch8ZhF2#8Mt@m>bhJctPD>^?xB@ka~L7 zz- zz)r+FCkZjaPAV5Lk->K+dI_yYYmi#hl4@n;!xY0-E<{$;zwNx*qN@1ZzPF8+|_BcyM zG7bEllrvGMmvW*s)y zKR-TN3#M*6`=`{?xf&%wQ21>Gjg3zCpJ6EI5ctZKG;qCc$c_kRH+0iFM(>;w@ib6~ zyrMA|mFWA90h)1Zp?s%ub-7XUsy1o1)TEM2PiYvf4M|el#KIdD?)|6vH~2`5LBOiZ z)~g95`#mT9@ws3cBp0H345(9+SHfsHg=c}%+X3Yxsl2lM?EP}*ar&7ge&u&_=lfTa zr0QcV@t17RbZ7gR+mj5ydQ>;)5qv~j5lx{`=)4v;>_w6#nhl&S*eM$;2w*WSG_jj3 zm_L~+SU8!==Z&N;B#Xo@B#ImE2x}_2fpEmsC;2_Nl^=7vREQz_!Cn}$TWukV8Dl^Y zlQ18ohdcN~k?HInwx@Z)oWL~PMz!07j$=zV^zUxQ0W!l5kyhO-)UfWP7qajCTJq zcyBb$iht14s}bKw2Y+7V3%Vk>BYBtv;V7r`iH?&cNpu8!G{T8ZtyPN-%VtA1-P*WY zlCAV#>rYs85X(8kr+n5cfc%bbTQ0h$rqsW+Ky@6-;mW*&)8pZZ6pslfC41l@=u!tH zcv)+D0nc))gzZcD4_AmL+H2vRRnt!X=l+xe z*``#f$~ds5Kzy3std1Te*U;!&fBVdnOD9au^dcKlI?^wZHqNQinW=e*PuR3ClP-w5 z&;OMOFF6P+EAhR2(*14T{7;Jfe_yleo*pX8=wG_biO+W)h5#sSDX6reDj8%6A}m%? zK}cq3Qjm;4eS%rR;h>XYKMnXL--^?q;|0`@N$7n7m~Gv`)0ij$ATd#eJJM4FS2S zj-^qZCR=p-_yGO5+o&i$fVpWG(Y`pdAIZKiG=rpv=D_b@dnrx^AUgDJ!c9f+DrpxL zkPdn``KBe=Eooj+$cbf3F&at;}1|Wl%etkp{Hce z_34>A$G}5y7(B-UU0BMe)f$+gW35V#7 zU6MSE5Mwt|Gxh6+ff4~X#iB+nmY`p?W#`MpGLcwNS7bM}C!KP;#qt=V*%r>Xi@?2_=(lUrgBADaZTK_a!fKiy?5ZPxNiVAJ`_1cL?|6nmgHBN02zYk??oZJ+$YK&Y043lYdDeP*T zcW9WGqW+Go5~-lX=SXj=sT{o&l_ZroJ17w?DFC0!qLjW&g6DG1*zF@YMS$?!Ri#w%L&C#Q->6?<{om7@^O%u5h%zWMETyQ1c14PvIR? zFD|F^pa*n?%g1M|6shYQ0E2a94a64kTe{>d7gltts3lCLud4nYD z?gU5mkp{=ij6-cFf=SX)3T`*SdHd@QY?wDV;wP$`h^%k->8)bbiYW=w$FY42T@=vkI#nnxfptUzY|)V*ACK=N006} z+2j5cas^nwjh9AZ&=vItBw(bQ!x<~H^(bk5ys?#Zpw6#Z|usJiB_WOAuxYN zlI70X5IJ6?!YMel`8h6%P^wv)sz71j3R&e=R4zTvtzG8@#J`?dmVXFoGgb^M>>BYbU@ zI*0azyN)@@E_!^#;>0SX&`t>oOc{S^JE&vWaQgv19ShTY5fd^PlhkD94H9xQj-@R^ zlBdkd9T!P*M%j%&5ce$#GR{l652fhxjLJk=TH>}M?mdzZI*G-ng!3sel8x9TbJxf> zB<(Pvnc}D$V(U_FxbK{JOAH~mbF&ZRNn$yWD1I;mYQSfAxySnlshyOddyQcWfpv5K zKn+70LB`JRv*QV)thQGM!_XVl>k9IH2s-`oPo*Q?j}&jnyA5!?kKyxM`_?|;tKas8 zzz!48CQQjm%EL+P{KF;^o9a!A!f;pL`oEmWMUP<+UZ zhrHvajqx`4`=)S2%|Qus)Y*zf-NTZLQ064d8C@g};G6gWIO5Mna5!$Xv*IxFN??K; zh9Vl)y&Ry$c?oz68uTCfy)2F{6{nD6q^$pMk>sUu)5?UNPn49chlW4$GTx9Ov>RddmfGMA z&B=;517r}|IxRihSQNd)H-b`m$dDYII5FcU&xWQU%X`WsU#&|S zABz(B=Qc4euEKFB;N~T>5wwvesE2rTu8z%I&DG$ml(`7@G&=3fyl-OLt~3uC#=*-9 zD&ETZ6ZA7UxjB)!;9lquT3lLg{^$r3qe*7EV`I7&Dc8DDB=CW+(Oe?3oI7fd+0j!; zWzo`NXC`y8GVxM#rMv`d1``W2ZZv|-BH0oagLFgd9W(`679)jI*d$G}CFaFr+w}Yl zhSn9B(t+j`i@b=&@o~LL8B*Ix#;x&iXlp-Lr$8TUCxy&*0V>p{PWYCrX(io|$0#$b z6`x+o&XgpUnY?6Kxhk~8Ag_)XRVWWaYMNK_qD-Cquq(+k-;5n>iz(ri-Hj*s3GLcK zAa*lYD3tUV=ru}D;116hUdL!U|J)nf1g2xwGztQ}(HBG6?BlWyk@%JNcIm;YZ{;Ih z6|=n{0J!41v@1{uIoJb!cjCBelQ)UiCPlqFNYoX}?em+EPXvk}|0e-SguFvI*85*w zF$VydzaVAJLMrl%HP4Y(Atih09RMi(=fE=cPg9tUvD|um*9Do1uBhqNWtuxOMHj5~ z176-sz^vpZCT9$TBdC767xmwE;p`d=+D^$_8mPBK^4q3XSekCdF|kA9r^gywRgtzs z?E#>n-}tc$w0M|v)fo+qWVJD>#f0nbH#kcVoSvwcD$N= za{SQ)lige_hgN#EaZA3E31{|8-j`@g#O&AG8#{N~*3le(ekBqWIw2tczoNqTB@ zg$O{Q=}-+w7L8b8>dIy*?yUgSjVYu*L(r`SgrM^Meh`GT?Mq$41XFv?w3}ZU`_x|5 z?()Zg@QnDvy3^WdtToLw%{A1i1_oF`d(v98mE|jumsx5w)rVTM+gY|%=LfjrxI2!I z@ah|Ll<_?bk?9-2UmmlAu!gwI@l8 z5^8?z+q)N{^kBA_ufRtj_MmpUB>VKY`r1ox)EzKEk-GT}robxV;amcjPoUksY~Ie9 zRaiT}_PEB1^36aj#8~-!Ge>ZL$;$t{{yicbTK#n$1044h>#wVzxDwHc$=2gZ15dnE z5Ft@7*I-ha&H4unfKsyJQY%!r`_rFwZ$X}5mCZg;x?*spd2pHoT3j1Pk_%qFpjpHkgtbh(edMq|4P%$UTKDk3Tp*lnY-{!3`CV_{ z_uqdi!vCAE7p-Eg{9gxTQ*B}7hMH0hTqM6}mheSDN|3T(O2q{NBJ?(>QMQ$=Nme?6 z`zG__Ac{v!?3=GVaa%*TACyYqG_#$V*?GJ(z5N~E<@1vnp5hYfFgZ#js2y2hLf}ieWa1~I%nBaG66%iGSHabI%fwEBOA<`kT zB32pU)VR1CjX}5tZ058DMw(PuMpoL1xYRj7M?tibTR%OwYvqfdQ@CKb*E@WCwh5F- zW-_gCFaG594dParQ>RUpXN+ko3!EQsiy+fmL{U=CaW!tJW-G6ux0u{rPAb>){>AXE zXQLj=n6Z?3G{=_FutVE9^yptP$0YLuzrr{FkoYQ=%-rS1wWbPDU|d!3=T&U0JdukCPW#OBt!f3A(JE8z9b7gdbp{v++u@dw#7d`Cbo#+DbQIX6f?xLQM$MWu zQ0Cc~6-lH%dYwznUW-h_4P+$5=haC|bqT67wy=%FSxp}i0rM;lg65Kp_N>9WMRlOO zsDYX+;#!5XK zCR{MqcU3Sy&`a=aBNOvB(8>G%uY`!RioCe>Z&eKaR>l8x;+_9{5b$4;sDQ-F5xzgv zR)q8hijo2GCy@_M2((Cz_77UQ>Lhtz;C8e#X1*LQmtC>XPyIQDlMWQHaBzY?%zDt7 zZe}4-%H%k!RS5^w@2Mzv zE=iROY5xwIxW^28a3?+S#KX&L>m3pT9Vyv#bU*d^(Uu~Pq;7>~Q>-Twhpx)S^PR00 zX2yz-9RpSgy*kfdXEY$+(Vb8{|9VG2iwFB9y14;QDj!;5U@IMhxFNtvOKk*I+TEyk zX2oCEhvjGv9rKd7WitY>m>tm8xZ{o)lsog3D7;#P3fcUz0^jJc4r0D`V!lJNH&(qW zMo9{xXz2tXpXtj@Z)T!B=jb#r2dUDhG7fy*%6Ft079WiLkLUiFsAV!)LXAzTfgvZ{}I)MJgHpZdN~+m2a?X=ov=4!&`s`Yg*|#OWQG} zKFoBTgJI|rUWz78m9-;JYBP?;D2o{WoVM5z1)gSRw~Zg1&+#(&Rp!Cl|ANA8`?%e1 zp#Avqllec-*A4$$46C)F|EnYUIXfw%$Lwii7)FR37+NPXq=XK#4hjMaWe5u;mmtX; zHx(>7a1^NBEakY0UAMxkIv+vyQ%bi2txnW>*{WK)TDv*2*-95l_RD$Kgvi8j^11tK z>oVJYw%xol>htP-G#89<;S9~4iO})<{OpWpUpWAbi%T$tVk`oTN;Xa#<)9SW$vRMl zV$2@(fKHozyL^cBt?I%VK^ns#&a!2 zf8*{Cowlv#Qi}e1!*q(4c0r3xt7#Zr?D}0B-7nkMW;*$`yCORI^}8mz-ugrPmM-f_ z@0PCXkau?>Ut{}^w#n6hwiAQfGqD8EI}-Pp{8y2_Z_hp-ZMEB?;U}~|(ILo)0q@XG zM#OLXt1$AEA9_Ia5Pq7j;+vR(P8b48pTZkFK@lRk{z{};0~%6F7nPH$Inn$~A^i|P zn1AR>=n#}eR9Q)X0$vgk@owEiz9@apgeg82!)Dg5gfTB}9QSQphcm&r`oruzvIy~f zPC^jTKZ|d|2aaL%DL>?a(t)Hj4>$P?J*qD|VQ4%hb@D*hkY_YLr5BC-nJ~X^LRu`$ zHH}ZTLthx`P13+OxJ=1I703W%PxBE?s8Hv#wBZa>OVtGwrgnRCAbxs_E4f&_X+jLT z(GJ;$@%G__?p5>jd3VOZY{9Hbz#Qe;=Ar@3hVAMfD_mLb+Dk9Ayjv+B+7Bg%ZfD6G5d5sA+ zDJC)0JRFNo$Y)dm+JxM~prSRPn^8|GY81tl)@kHx5S0n2ah!(PrG&#M$5H1)|7))pda2U5uaP3Sp2B8acO^01RH@u|EiIoFH!){_@!Hqo z5t|+Zs@xBRxBJ7K;z|5dC-Gh-=$#LYRoD1U@=3l_USv`@@7f1esb4v`JM{rRG#s2x z0>EFFezm)0#;buc&b0C6F{Za@Rh;0lQO>jstD3hBEA=*9ll3TVx-{__q;-ddSJkAp zTptht)d(ABdDSruN>~cWseB#@{j@>r5T(#>C5SmdM0Bx%{(-4LhcafQim9wJ7uiFL z{&2b}F;Mh$XHaxtg@j;UptTpPCTh*tR1OjxIs|dn$*xI31+zv57nO#h-kE+TYFQK* z?89;rIgJ|l&q@~Of#iM%i#uw+u*IL8x=8es2j;L3lct|{5d-My$o`_HgbAm!5AVj> zHr9%#hE4Loja)1}aA}-zI6MUuAwNkv9rO+mNR~z^Y9_DV4<;rnnwV zIei7#Q-?&1MiFg_AW4UHw#X?mZVbSfdMAzfK0@tP64ri$6aW`b7LKEqi(m zLSE}Ac%|_;LJp9^$yLCmb;IsU%uU-X8(o_dY*HN@EWF&@-cz^+^|=Nq$15jawNT36 zOS_XE)Ph3fW-WZ*4ES?V%F3!Dz{tU=e}X3ip=KG`7aY7M?CiYGH~74CpQP-mbWAJR z9;EGgam&RvvvPN5cwTeoM|{p%cvO0Rb**=jqnHrzu=Ccn+#3H}+(gI$H=Deyre>{N z*w9Tb&Ba|`X}}Q9WhPkp)K&&HbiNU*qY|&{xx62<%~hTv+IY?im4^w%<!HvlY$io$qPE5^C}bk-oePC|34!qM$C6_Jc~3sbW0P`d zEpKB!%YaMPe0h2O6}H>{EKF!%vN1Sw&MerK5pi~~Y^V;fqyyLJ&LkcW=Jb1dLJf+p zGosX@PO}~e!cmU;8(l9pBb0YpTvg*&<_%UMMMed!v^d!X9ta}_ zwhpJT(VXlQRDkhn$7d6n*0cwifvcV&IMV?9$GA(t4ZScUw&!yRVpL)f!6!e?7OLL= zy+&b5eu7?>C=DnW*V1-Lp|2ICYK_fWrWIBg4IW}EgT^maIN8-CJEayIWUiW>n)0{xdS(cL8_v?fbXrj+5+t%}$R@u>QRpex*w!`^_ zMHREL3=u(ALxoOMQcr>=lK}^&Y;2Fe6Q}tP7}&*@r3B3B?^07Cg+f?!eE7g+@NB`Y z9QKE*3JM~AkR)5A8JI~#Ew^h;!uU>Wt6-~iqVk2qG3>+Y1YOo#-Z@>(9TbG>{1+@w zHGXVhez;OVR8oMgGt0}q zt4Kyq8Hv*Uajo8wb+p#|a_b{zh_1;AhjB?PnCxARiu>=YBG29V`8d9+?9R$I8GeaJyI0L6DAUUMpYvtUL(>HAZ*3NYb=4L zzHAh_0N*?|z7}p5>Gn5*5@x)v3WJ3!p@3wwz6L|ujo5SEjds>CRRsA@0Vjp=3A>4> zbn-9l#O7ufnrG5Gl0BasxVj(sS>Ym4V&YMP>QTZBSS4AlwKsf1|%6z4xF{MNs>>0h6fNBcn zJ2GF6JOsg+VvYOg^cJtrj=bDjxMI>->bM-5cG!@pBJwcF_>M+tL^dV)ppc?blVAM&)R{Zv{9CV$~aCc90xM{ zYJASN-1hn5#ODu2P8L?8W~mB!MC0;UgOI7_30n5m<>__+B!}DJi8lQ8MaxilY_W}!f(7&#vdaC6u-HS41_Wa5-J5=0+bX<4<&cjv!@akop z)Y*+B*+dczQ@s#UJCYqRsG$=b40rXh;kSIk98936J1Y`0X1JdMo;|0sQXvGU<(y zd0?jQq3VeCs86P^5$@ljriVl;MOYt*ZP8~srfx-d9wKj%#O~>>2fQCpEse3fgj@{% zyMw_`TCEfPj0ig*@K}o&WvGtv7~%%euAcW;ni#3AN?$WOELh>jRI~=PXoq+VP!A}t zIPutu-c-2~xoN5!#JaLPX>HzQJz_m+%K!B|2Xq5y?T+SCIX zN4wuM%f^qTD~zLNV6`%C?Y(b-An}gx&v+Q2J@X*P6q=H@ffRk_i*+&l6){ zQCZ0v-($i9?|Q(eFvsxgO{SPgHn%_!dZoZ zI76Y!AlasZ;*d_dCv^*?c8m&m3@nY2S#nB~fv~ol&NeV6O(xeL+e+&oSJVvG`DY-E z+o_|g>1vLaXwE7kII*6NaS}?f@eyIHZtD78Pc#EUh?vzgwaI$%&v zvfbUBW`TX%oTd`Qw6PN!zTF*CXw%AD?(G9C1B2JzzPy4~-10o}CXZkXClK>ZkcmB! z!aNJLTR`>ap!zjEK4O_5|+ z9+=5;r*akV zvdCDNG|kexT|&!ty2PYY95r6mgI0ToWy{_5oD?=#e;M7qY03@Wklngx4DCJ9yV~{O zwUk2SwAIVd;f1;lwo%&E2oB8271g&Ewo#Q_QC=Ay(?2W&WD_g=Rr!?*#S7N9MDmn@ z4zca51)e9Qu=C1yj2amGGMYkzT&bara9jzo!%Dx6sET^g0fLFhyQe=EY>Tq#@ScO1 zJitOe8U&a4;N+-#mPuREf0NOyy+0dP(Qt_R`x;~l51)o#F^T4P>@#=l16)S2Q9HT* zG8hFIR7B&G2Rd6w*;ueZtk!bZ8mgB0srn7h?WNJ1xA>zJ@@(_+L>j`IGts(X)CX0w zlMTTwKigKZp)?cAENsNa&ZY+0d7bpxd1jyCx4bZq0Z-rVlUy>Z!U(hsYm@g&f~Y+VUr> zqu)A)6SUFT+LYm$->&*nW^Uc{)upQD%g3u0=XN%*;6@5imt9zVoM3GqN+lAt%S)^( zELq4WY*m(L<7irqST%X$EPtMtGv z#i-z1uRdq(r<%yACNb9Tki_|lJKOBL1d_`Y=^vx+ig^C+$T_{bu&Ms=5I2HiZskd# zs>qqqSE~ADZG@M*Ij`j;rgO|7TUxn!n=aQ?-*7bZ#<^!gfqny4_%{)YNZz>VBXs7C zHro}mWYTV93ZFLV_@wDQ>MsRRPt0DsqNJ${ZmFE7C0uJ1l$aCSpS@5dD?kwEHt%3O zeEs27R?qTDO(ERcrUw0qYZJtHeZ0P7@VcYp{(N>3m6~4B)90Uy4{1c;2yx1G`H7i#VAX-y+R1kIgJ|U+RvW_tm+A z86NA_^11Y4^;1>PluZPCW+x_Ncbk;@b7ybbuN4XpGvLwdsqVxBe#gZ7R42iW3SW_? z-_YVq8u_a{i8ApX7LoGv`A+#?)A~#JKgqvuJMy`vqc2fQ(!SCjkDHtP-0mN99seDh zb@vuO9<%Cyk*)fFM{1|5ATD2g9A#|VYaF)@dHFf7xZY65>rSnQHRP;DHKUtrU^WeT z>9MS+fof7XnQ%-73Tw{V&TKGMrM3)t**UMkA*eBnKTVv{)y>$>baWc}+DTVAXEt8R zu1q=Kc?p+kjyalUmpq@Y!yHpiDW+A%RWi!whkHf$YyKO%1beCa?4m0!$aE$4(*EfX z$cFT@x@iV_YdLUD{cRMtZ{{R(w9>8-Z1T5(B$*{2iC_gzS6n#JUE+&KmQY8$3+E}s zf?<(*JOWuYA#d`7)&g?TYTT2-)f@I_>XZW5IL4B{#Q~n3B%BRBYyt)hG58821x7=*gZ|9JNG!J+q)e-=jQhQ zpxqA#+3e%}83~aBM~l;DZ!p|9$XSpUWekQ&4y7(D;vgAGMOV_?Wm_tJZ9M zND!tVrwtZUc~Sb4&bcfZmp@L*t9$JAW(=g}ti=|g>bpp_tv_GQXrbUtHiy;jnnd$% zGs3cC<1m2_u5KKGw@y;v6V2HF{W;bKqE=~IziCg?azsh7Mi`Zw7mKv*Vx7R)Qe8o} z>aNmF8`NqSZNRGzw`K#qo61LoCx=IbzQTz~%_Y@y(nPc1O+rma&#Q=`r|hNOKz2?X z7ZQ2`6ZpDu>7n{MHIHN@OdZ8Fu(19`FtGKdeKcSQYwk2am@X=Gwd6hWZ6nKrAj%)F z(-vC3Oid20f(Sl{KUEbk|A|mOPQb!=RxwCsM8-=!<#|GKR*82bixxd(1kY9%Dwe#_VrAByml@#u76Q!K1FS%MF50H09?U%o(Yy_o)sRL67h_bBxq5zU_=9=Sv8!IUt zQXUmN-K&)`5q;eM$JjZxXVz`oIu+Yy#kQ@AZ6_7mwx8IxZB}gCwry5)vd&uPT-ScT zto<9toPG4sdu#0m1Xy5Gk|utq!)>rlQ8}cq#5D*WhV($$AI8H#l%D*sKl3LL!P1ID zY-E9$b{n$Y?)ZcK_3nI!*8^f@He%jVp)b?l1_%J;0~B$g(Vd{xoJw2Di2<*mnDOA% z#CSm>AQdgfKVuU8ndV?;h3fE!)L>hM=AXceQLAaS&Ea3{7C2eF`QrQ7TiqMc{3)|G?v2~Yty-PCl&lyAETYdxticEGxB~P?@4WQg>11MMK2=|m zb}$2H?R0jvy!o)hkow19lVD+FhSA>k1+`uvIyTAA*1lMxisspAZ5a;uQnG!2*knNN z)0Uh&a6W}e+PWKVqdSxDWZ6pC5Pb7mPH{yY8d660c>#w~j|sh4%RDH8L@eA7zvB0F z2=&-EqJJJe5V*FBHDgK+JDP`mK2FrS%^uDS!g~)V7>(fqu$ zLyh}QQ05s}j;n$+=27+z=2&D%!lyK7mtkOsT&mC!VyW~Fm1mfEen{~94F|P+?1+*I z>kxHt(v|^}NiucIJE&ax)1vbWh?VITw6ok~p=PE4#Xt)2&G4_~og3TVz3H>liDJUnwe1ZSSP*yZ2mZsofgxKuV$;*u@I z`n`Su?tvzb;EhOy(mXx&VZitqE3vhd`Y^6CR>ZdPpUC}QY-;>RouyIBN=eBC zZX57aeV4aAml3pS{(@ys>+oUH@sr+!xbzqEw^*vS^7i>x(8s@LEIGH3Y@H?Q+>E)$ zlvG?K$hYjc10X=;mKIJBc-GxdC0m;^GEoWu>JhpbgeI`e<}TLoPSzl)*Z%|sU)30_2$g}Vc)_Mm_;R!E) zclbjTcUU>d#T%`F7mX)DN$yOw!05 ze5Xpp==hEzqQg?JkTvQ06D*r7A%v__WUkwpumPcAdEZzJJRw__B*H8MX12n6?!gI; zEI|n~lv-KJf{`HVM$gbZ0d5v51H9Im>VH}wLbaQ~)V|%kRmlH+7j68XU9|eY7moA| z9qb7yKp-Hn$fYa*LP9JvhQwb>Bgh#*GQj3S>kr0vOjt~5>>chu0%&tp&vnlMe$XmN zNxAhhibSEBWm=RL&zsdQdKV^I1CCop@jp@Grw_(`zgYzvj?*sF-t09Ut{0$wM2vII zQJPrKBQ0t}E?Cc_D};t6-_WY;q}$BMoKZKaA$sF?!65?UcMbH|;MiapbQcZr`dH)L z_+Tw`ta^E)ILZhbs2V9Z;l7M-nAI*fau@ZkCvq44E(Ed<#jY5#56vz;@+Z}%JnUjdbwT%v7zvJ~4>IE5%Z~c??HCI=jPcpIsKtJdy)3LKW;frj2pS zc$8Q6$gl~Z0_)190BD(cqsNZ9Kg$Ny0I&bjWP2*=xQr{cVj1{Ptwv8=n|)OxOhx_RdV+umTKW>8W1O@%7y_ zd$D+WZ%F!)04b>Npb)6lwjSxHelU{Xtw*g0o%K=0o(T% zIhddQH+1-_H+o(wya#*NW~T&V98EhD#KY2P)A4lpnT(W~{Iy_4A#h-qh#@T< zSCEdSuA`z*ELNa71A9KJI3C1`z62wEm!e1U+uoC7t`KV={hGcc2gbD}wvPzr9qm9# z7=axu;DCdzBywHG#9Wj17;ef}A;*lfyh$(ZYtO1bfyq;x5(8T*JHs>1Sa5R&*n}e= zjA~IGu8DI&_54y)zF|rBrUZ`Mav#UY;?lrh>K#Ox(o!MH!rGhr+7{~Z?>vQMYkEd> zHXSZlzrlsvca){iCM4L>;G@}2`B@S*Iu>9}uyQ`cL}#@nnyJwVk$VYNh`fEcC@-a9 z_mtdhu#pAj^ck1z_^0N=ebA=fbUf~7Q$*|Ja}8e4isi#Ymt*cQNW>oA?C&USTT(so z2IvTAQ;aEOJ6)t`z~n11F$P$m<^+v8GTfO=Bh00IF}pc%!C1VhSx=;)!~zQ!D5$$I zWeM`{M3DtI?Fblcu7TAZVAc0src9?wNU=?WwHqvC%Z%j;5yjCEL`rMujM z@x$}nDFAT5s~EJK!jNVQ00T(4!5O9?=*Ip;LW`YPTqDt~n|r^r(+~;lzZ3h^0&rrK z>|kIstA(=^LLkxICYWu4!-DIDVCynRvO1Fk0=i?+=0^@PMQx2Nl_Kf!K|dZ74m3a$ zrhYj8l|(7hyk>AmrgS#fE*doSV5ugZPU3Ck#4S*qF-Wg-llb{fdKb`EdgacGouJn4 z?uw<=%^m8i(uD9P3T2>$7RzwvN+94lJC2Ko@UMOrw5aS!{Y*LfA>TA~dyx9r+Zx z)Ds@}=Z(_fkytIq`nGpA)fnfMrfVTbMjfH8~0!}lE)6j z5a4q~R$) zK1%G&`fzJ$Ykkc_ORWBKs1HWwJ`u%*2)k4zLCSaw)SJi18i(i;{xfI7hs z=IR5i!o6GT{FGZt*A0_Xk-4kDL*!rly2>qYaX#eL?1bBD=za-1T?!hIjKPd-Mq~dn z!VO0%dxUvSJWNyZIQu)hb3R+s^sA?B0+dD96&gRMpP9@52-y^${sUCT14TX}OBcD$ zj-BLSw` zJ#IB>Fy!VIbj(62-SjV$#yw5V`uUxSTNdA7%3>6?`k|B;G)~{9gsy?Eg)_N_PFeNz zxvcZ>TfJfjN{4Lm8aH)STogpJ>`H8yM;#!b6Fp1SQ=qbW4M{Z?IT2U@7mFdxk$6ZS zr8AEE1gQgS-j0=Y09`VwDp6>ig0)%@u37}In%I1~;0OE9$P5Y*8?q~{&~w#|&~-cR zs~(q)U@?34r+s|f9&e6NJPtq>N3f0?$n$)}-H(po%?E>xK-U`vUKj!-whJ`;3zSti z>6hCUiarzrzNZL>xemaCZXme`Z8kDh_E1HkGn)1_(LPO35H6Jau{;!xGoixYJ={Y^ zg1&MBIehSf0^!sc~WSxz;Xk*y*$WkrWc5E3$AuJM6Ny_H1N z{spKLpp&?P7`&)6rm<1`Es@a5K-2MRvUBD>@Gv(#$-7|CM-gU2A!F#w_c65vv9STge9vy$grJK)4b|#2jRh*uZ zz)DoOisv?#tCpg*!&kAe^+YetOCrXkfTp=$^?2rQ?t};^hmxK$uKy7hP{+-*Z2PSd zT={+i{5OrD<-hx~V1;qnK6%tkDHya$MWh=EP!#F17&;akmZ6}aq?lh(IBG@O5`y9W zXQo&(BxH2&K>TAI)-%DP?I+)M)2uW{kEyrea~wbGL>3xzby?xxL_toFX|TvMPME3R zjxr5AnAG{Y&`dvrC2U}{2A6{;PnVzGYJdGV9c@CYs(I}I{5u)l;P1mowc0Y5M-e@U*uAE3(U0%c;k0-S2D#6ob9>F=!4^LgDS$TTG^ge9yN$~zS|zl9?`|tUk~^oggpM*g2YUx= zL@gBheB1y zAEw0p5ik2z#r&~A|1sm6n>FR6S%UJ{a|$1twce$E;+6OMo^SfCYx=VD=1q>T4I~$; z`(ZNf?j=0E4@nx1Sqryh3?n{7ulxUZ?|ZcS6nA*@58-pP`x|oT=I;yqM?w(Dldv&XlM* zQKz)5{8i(hfQc50^ManucEgj+dV>rAH2_Wk)?>GW4+Pd@zVU{IiG<`a+>w#SdLfj> zX$dNU?I67{UIDiH5C^p-w%EZ_2j3DI=<%FuBbs{#s}2X7w}aJ2d1{M%5!fLodZCoX ze8C!m+YlJ*k%^>!IXmOlzEGy9skpA+n>FeS0}zL~twopgTMNmRXrY#06U(fX*~Mf@ zW{QhmpgJ$n&T+=M80@-`vtl(Aw_Q5Tg@ua3u@Z%aF@%U20iZ0I(C`q*tCZJd0adle z?ox+}>G@O5+FWtJ=HMN@xi_q3@JV&#*3Q#c_dM2*_ZY!^bwU_E+hhq}owKs;qxNkI z@@+jk z$yg@|jxWMhE%k^kgFQ5@itnQ%w;|wSWHcg=(G+In!g#Mqjef?zVdwfkl0 zZo3v9Ic~Lz^kW%f?z5j)=MuW&FKzX@HRK@i$7(rD^l zxcB|5LP-DKl#+0Ws61EX(rrw_QG_?WQFgLKD$Ff)8&a6lpyV3PHr5-$%G4;)ooPi^ z83fGeEz2xjLH>?2b4|b8P&RRpRJwdPT3W<_EkzABc#pBhfM)eqM;6&kv61RjnUaf# zEzjje6sIB;n9(|N-LLq?X%jUA5_=NC^Q>Py71X?)NK%0CYBkF7)eA?(saTYPlG3Bj zmH-4`5O;^|x+L;H-+}#;t%>YeQrmYY#wmbZzcJG75w#cvrutkW z^&xbucX_yPiHc0?G8(#qf{uO09J}jw4S6Mt?V~Ubj|aB@(s}xdM@55N z{^_WS`YVUL43%QMN4vH&jb5{-n6=+aBbwpRQ2K>qi8$J$m_D*3bqzHzQdg|Uq zH7;hn@s5nP1u*nYS=L@?^41>}xR@VG+N6F0ryHl*TAJ6dQXpBXn?Lv>n==h5aq@(t~2XW7g!lmv(razde(yx8Jh*k`so z)_0kAzw1mF$sM+biDy}JtW|Y4qj1|r&2yLke@^(xnR6E1!GVC>zf+n1>&0#O?@lX9 z_0<<=5betb*Ig`PgwP<;5CRsiPmE^JB|QKS!eH31$6m;YTqO_A(wx|q=CZsZX@3S? zvXwCNRPZ{Y!4$cNt);LC1J&clM^X1p$&Amoq>G|jSRMc0F2k)3_xr7kRrlw8_9>u~ z!EV$s=y_-{G!xWl%8jBM(qMXOFOglFU{BPpa=V(oWz;LB7QNjc!4PQpif*dA?a=fT z9fdcZ!Tc2O3cGU9zG^S>!_!Xhio-Qd@0!EZT)K<5>CqZ^j$B919o74Ac(&(mV#9h) z9Toe$c)p9be;735;P)lH=prlhp$=fRe+>7iwCLoT?I_iP6@%V^v+er{wok)IV}^#g z!NKF0_2U8SA&x*Afd%+W_!EP#*^dZ7c!6j!(Af#>$o^2uHOhs70OJ9H@>=RqWn2vp z@T0yNgzO3&2F*tN<|<4=`UDV&+$eeR2k7k}`HO*Nqkc0qwU9Cg_JOxUcTl5YcxZ2& z{d2_ZG%sZLhmmL?pK*9-1g>Oury$=|cU<>gr~5vHTYM!kucZVCLSKGFTbhNY4d!Rz zQ5csPxU-AVS-u&=RT!p?{(#F;UjjIepLqNE2sL!@EMR>eGx3n)3 zj6uU|_ziX+QFJPxG^QSHb~fq`pJrEiKrpV=3raQq10`HWOP4`hvtEaM2Jex%(77%R zCt>_L z*<{VXz4cksn)o4Vj;Rg8)}w`>h{Q5mKG7drVZ^FK*EMZ+H2jQRz9e>@TLOb}%U}RY zk<}HKXcymA`-!lQMf$kGwa@LY;)rTFBR7|0xTcHN9ah$dCffeZ+pU*oH`flWz_qy1 z_3vKX=+adg>(b-Mb!1Z0C@n#J&Ys4W!Zuk_Rib|lX}wN#JQ!*mCt=efbZJf1R7B(H zvZIhm>4|5w__Q62J7EPamV`M2h7E14!S(qDa-F&9ZAo}^mJv>LjMfwDTvSW7h2tCuFYWIE%rop+uFIZpo+%&Twy)Oswfbo|4nJMvjBSu&#BWZ+40H!s&R6I(Rp0O zK1`vXl$Fag&Ba^~`x0k*o><$-et?!VAl|&is@39NG4zq=E?F4II-oleFwSg4C>Vof zugMV60gIfiaYsw9Pd0%D2VY~v&=AlInqt;j+k14CXV%8)pf(=u@xJ0mEZ(PgA1#dIg3OONJ}6uGF%zAf_Dt35ViT&Q|OKiR!n z;(3gWmpbDid)lb#(uk*`XY*FGOTs|Uw>hQUdfG-~OV6t69{2r=5kKRBCIPF>>(pW0 z@Ccz@w|DH00(RP{GJl#nL+p8DT~7FooG-ousFkJ*ZIiXf zv}f_X4W!~_+Lnk@xGS{qapoXU>K(sGFv#qO_Tns0$S3@Vj8pM>eoE0?MS)D26Ga9_A<^3?p2IvHdT;tUCDkjk=#=rn>kqrVe%Jf zcX)d;@n&zB`~er6Zjh*x14m03Js};h;eon9`pk^cs5~5$6Tvw8f%ZDM;kqo{YU93| zf)c(CKOa6`mpyk6i=Zb0s{Yc?(}%KCC-ftn<2noP_=$Q^4`aml&rdL?A`C<++sytc z&d4bPdWbUtPx4PR$tc%7Mpp@^?MjDy4)Tq+aqxHkf$5?*HD;qxN+GLLWXz|4Iv%7olDwZfz}_; z+q&gDM>~x`abQ+5%agm!YPFXO^;l6fLkQvpg>^lew?<8SB2Rsey_7z$-T(9ILe4j4 zuKb=6RD90}{@ZfegoNoocb9_BzvK|S4K(f6Iv00@=%_G?x!(3Dp|^qtB%sJdMF^yS zd*&}LAYsoPrY@+1!tib1AM ziX9^(_R%oG2-_`6BHJAuhWDM6Uq=_Ic6bBm`;gOC?e<-jdJR}tFGe`}3}U_OWJv&y zvXO)79G%xvo}^7-XZ;oDF3>w@j7Mwl2=3EETI0p`6{sc|&^TgbQTjX!Mu?)Vh(zSoHH)}`Ew8IBqBo13 zH#pdzJIwE{NtJP#9SP3yf~4K@?s$$1V`4BB>f~EJWV*SV__tH~ z|DHC8^`9lhT-u+_i<)Tb+;<1wPGkii=s+Xq$=P1 z>TL|b0&DoTPj}oz{(g1^=OgiE8SpkDCDDG`rKx_|5gQ8uqLXZ)$`k8jg)%2tvm1?h zYaz^2>%-$0wU-jg32OI=+${!G>9gh^x?PD$8F|UuX@?Wcif zVj)+m!OS16E0~>CDNx>lkJ}i%y3Q>r^YV>`fHa zR<}>688kn>Wfi6w#1ew@a2k25DTz$JJ!zht1eQU^qC2Rnr)o(%E|wo})1j;^jn+ll zP;mZ^oh8r@By>S0lxwGQV3gC+w3CDlBPF~T^DAHL#M(0n@1wwAt``bUCo)e8EYvC? ze9QtY`0`NJZkL$r&@eXQ+2A^VrOyBQcy;~8?apzJQ{DrAu%n#2+racQVZB4hQR|Sd zYZ~4_TmFHk6V!F`%ahO*txq2yRW{j?kFE{!0%N@4@Pn+R zX|F^-{!z6of4|yNPU0_&5MDK(;#{$+ zJ)f#bq0O(vsBROd?MU(csE0TtqxQdl;GM~YH1khHBRl$8Z2M*i{%6&6+)_c#|E`!L z-@nm+o2;7syJi+CpUeJBLRMUK;i6%4sChsH>_VA>rqGHiZ&oFMZ3t{Z@|otcTwlLw zolFb9-5bIfXTWm%!;4}+t;x@UGVDF|Iy232>NzWI^WQ%aLxc?0JX1Xr8_9%}`Zs$= zU!-rI0(+MJw?I#>-#Rq5otPjfFEq&mbPMTkasNo0AND`IfdMKfm?#W+2Jq?OU>j%* zWd=x4KN_f1?ezw+O_U26^NEN%OfgmJqA3BjY}xuJ3qy|AuRoTpuTURpw;M7Is35xx zPL`Q43M|pa*`#CQbuH3xU16u2U^`E4@2XW+mi1ba_f3_!GgC`(V8!r@TxWg7eshjVct8G7{S!LNXpL1GT=YxseXPL%v%Gy@ zc+6~4Bl@*NaV%r2c?C7F{!q0eAgyVDge*u6uVTP^+__jJuu!t#@>k=YR&%yv!~!mT zip+4XTehgbes1?JXey)*p{(_-~nrRE3#T71`pu)pl7pY0mn2eHHUm|y_=V`1 z#7K5r!B^=Y0Ei$)4^uz3U$fEZ>CX9qs*0EuvmK=A46CmP7{4ma^yK2_6DjZoqk_AI zeHLX zNMy31C1z|=aqL3Tkka>C^8zj;=6bxQyKnY`F&gqXN*Vt7s_`fwmDwrN>ZZ-CjA zzTHra&p(z2$$wIg0N;%P-uG?s-x>q=|KAuWu1od{Ao8v+3=OSBqB}CJ|*njLAn7lHAxq46qxtfdm*0 zy8MdTR&$r*@TC3h!P+CAvs$kv{YKeruEG6vG*yHynLDbc)&@L4<|#ztGw!KKh2Pth z&}CZc+9se~j$LsTb2Pn!5EE3&jvJ}tl(Xe;5i<*)w|WDDzU&GnjptiR{{)>fPQWUr z=um#qP|2#zB~q{m!J*tU6xJ?W208*-M`3Cw;if$&HC zqr>AP{Kabu3IsIttJ5RmK@%3y0(zT4@OvTr43=Ek)RICpF2E`gB1CpLrOG}KT!}3scl6#1myxLxxAq$Zg zvuJNgcXncuNqYW~$wqLPEIT2IfoES7xaMUvg1c~`v3XV3WTYqui)pT#zkX33uQO>D zp~+H|HhNNPh+|SuEM}-|HqdO@&Lm0|r=_*t!aQ0G)mP?wDu%@cOm=?*cVW}?XiIlyPHuS4+g31)C)MJ5*()L#_-iQ4~ zCbT_S$iz`qNKRxkenf$1wxtsi+W7Ou@Pc5UP;C??7*~P1*L8{k?wF@{eX;}c&2!Ri zOtN7!_exp|Dqzjlp~YtWw&`Ll_yenaM>v25Ya{X=Qe=!K?Z1Dl7|Z*^+J_v+Tq#>EIHBN?7Po zHpE}P>+%FK+A2Y$x$eRI{=RKgut37bUPxz`X>0Pg|Gv)3&pA5JY8ol`<1Ma;rg-~QsCzSIAA<1oc*o)eXDuJ zt?E@WG%e9=a-O7&;fF^wrs+6UO8e?>c;k=5^CCg7eXw_%^03h0hq`+ee?oD#HE9;z zoDz?TpjiHRMabV%MSH`w$~cJWBd-H5u*~2)Z zsI*EHS3?IU|x;l_L+qs7viG zV~&=W4_QMRI37^&t)%huowQ9V%wFKh!&7H4p6y(-plqs`d!u}pluhj!n%z|wvkO+` z51os|Y~-qT!(z#&8wn$Z-m&NzLNo*hqP<@E$fA?hKK z)~CtZpf=y(LVgSGZ&rHAQG%j59xD#2Hc%eNiFz_25$`4)Fudc zjKv*n4>09E;QnV@WvQ^kY5OfA^!?W6|JT>ae^PClG@-l_7n{CvChjJsyV3??4{?N6 z78#&|CPzSx;QW89gR%q=$&&ROrH)Fcrq!0Ap$Uqhil8FevD1a(UnlM4>_bu^>f4Xu%XF5)EK4-q&?!OJ|xuf-9daTX#R^{!_ zN5k(Y`uo|R`Sb`SLCYwWYUZ6nFH*1w=cPd}Qn5(oNuj0J%m4?YQ#rK?sZl7`%p^h6 zDw@>^sZlyL3H_mJ6wHf)-YotX8dpEN(dSZ(`RP#4H2Z<@f&Xaq2{7ySCKdPJ9P6;qS z$_u^!GnfzE4Ghl2OBfuqF7kJk^9AKYeG%VD0nS^itI` z4BXw&OXuX$L4A`A$LS`%1Lgn0mi*?|HU-LVl6M`MdXj=e8Ix{yn}h@47n(Y^dX-5h76rUfTelIqF{C)saEV)svWO zD6iP4A8yj$xLsjjTbTD8NnyK8|9VjH3YO?G&@mN0g(GQL)ZaBmo;KnzxqX3}8?N-(V!Ai@2%(B!Z!x z)AH}GKpiZh8U)?rC|0bfY#uw4Jgq`5u9(f6!%l0D7B4zCz5*XpJH^T0j;e2y-68YO z0JG^;qpB)VOkxWoyh2@(7EQX!kE7b8?WARLMd(sK)y-R%G*oVrTiK>3_w|FNvc`zx z4ss)hQ$7{^M(0L2D6h$^Qe6_N6omv`>DO00q$2XuHG2r{NUScAF=gk&Kmq3T7rB;B z)TJos@KleX*hPu`hoF5I=I2mvhNz0c_a?KGZ-WFo&Z1b<2E6ra=y7XyR@Dt_iO#|X zy=S522G5vtHO5&CNJmXazq&a_Ro+}@egLw3P2R8tRe75g}r(m~cKQE3?`=(Bp+!Dc#D zg~;wRLk;%mQkpOlXBo-YkihI&3h`x`IEkja&A%vVSPRi-6w_;w*^JtOwO1k2jWzPR z|JB7HVM9;OzBBRY*q6fzx+ltG%@bH*|3iu&8k8W5?||JrJ}i|f%Z;`Og_M2zGAfK% z%?m?!oJxhyZ;13|(RQ}RtdhRCaa*I-FdW6h4kG!hGLa!9n`Pax5+hK`BR(tm!|3bG*Wj!5T6(c=aFnZA z-FC7_jT9!`UFauns2m9eWr{uT!NL?yF(U@>Z35s$uwV($|LwbpB}cy>bW@4vPN`B- zfe;#{lmf~7Dmw?pNSPjtiKc4RNf>)!v4+y?L*5%6jt%G0+9=xDmF`Djt%vyR7TCZ`TPB?9q-F3+)(IlP$?Vs#&`fSFTB^^|y}t01p~pER()YEX zz9#Scw@uWpn&PM#fT;NLu*E780bVa2q6! z+Y1#yO=;RG!h9oFMo8DVGWm_(XTe52Hm0Ceo znc5`_r96S8iaK=%?AtYe*|&=p+T&Oblg?G6_HHzXo7oh2#bP`v#h7SEd`2EJ)T?E38Vz7=1W4I- z4XlE35Db9v`$^rQ_3;n%; z-|Tg!abyeG*VZ8fp-5?!&i9cf=|I0r6vy%kpr+XyoULZE@AHXd#YArD7%vZIIOWE( zD&Q*(0Z^}IM>zcuHR6mcTe+H!KiX55oKs%XXk79TUyGTgXNWv4dqK9T(f?e2I*6!w zM8Q;CDizQAIn4UYps>AdA!?IJb#3~CY&DXj?@|Z8=WYlVe8Hc%{XP z%yx|_^s8-R$-M?xhjNdx)u95h`Oh-RQA*S==~!{Oo(w^4{5Q;%(LMZw(CtB2XZD)P ziIZ|DUY$qC7<`G0S}CKt!kGC`ulVnm$w-O%!F-2)uD*l-y?`X<5WvStL=gU=iIF!{RPfvyY%!l79B&fG zM1i}xw^~tR>`BLqOe(DB;S7{^oL^1#g^WVJbTTsJb&#+}rIir`sv%C~=EC{-hQF=j zkz16?`!`k>yuv-`xVxkx4J6?a(*X_DI}EtrXm(jRxe!_7-aR9!3AV^$#Hw{e?7@=% z2(cN_#cpVCJ=y!q22+m*mK$XIv!s8PEmZH-rh3rKoQRWWu+ z*Xs)frIRWy3A^Z_W>=vK(bp*Sn(r8q&rQu>({3J7&t*tgByNaY04c4i=a`h00&X~8 zpAqALllxuWsGWAiG3k{qm3BRFVeQE86OEq1iG7)mJ2Wa7DV}zJ z;)A$99`d9Z<2}a_Od6}{FNg}8Sf4QbyXE4DVid0Lg$TauE;YVvegNvKHIFC$AGL;4 zVca9aZmnIL*mlA0_43>8++s6HhWLGFQ;bx0i=o_PZ$x&n6;r`$9h^;oPJ9Bj7SO+l&NDDEfMIWy4eFl^>~_q2L^6HQ~v$~1ijHbI@Dx#0dl>L>d!`6Mn{I%Cy`Qr zv83brtz3J4n<#ra3ftK@*%bmriANN;{!chjIJjP9>~O@a7|+!ax%>0ypK$$e2YrlG zCAiqK*l>k;EQ&Eh$e3KQlThltK%cvqZ`j2&XFJMtSJHes;3vA&((cw=p0pvy+ld_U zZg&I&aIY;tQ)A{r*GY~~VQFpo0HR#NvIHZqs3md3)Fen%JA-JCb1+=^D+$t_8cFDr zi7~ysfi1JvGB8L!eJMp%35&AnS^-y9T_3U{<8(Vljw(sKNfs5jvSJ!@(Xt`)TdUM^ zF50rgc9R}JQf(Jp5!6U8@ECV>5#~ISt3o!PW2Hru>e7oh3UEX$-=rJY zl6AU3j+&zp;=iL3YVFgx9lJFywgF(W`$(gsR%WYl4yQer?ef+0INYaELOF3F)#K(1 z4KJy?5Oz)T+QwGrH|-n>jW^4RDRDS0E&*ry#|J056|quk#5u{iLDjuKWs`+DTV+TQ z=nBAT4*qPYG{XAa8G?b;#wVPRLGS*s7{U*)Mblh4VeAmCxCQsM^GT^5)^ZB8dB>J$ zc&bq{cM*UP`{s4>xK*B3@7U%Uw#2r7boDL3``l7wjlZw!J ze%x2`n#`6TpSO`r&hMHdsl9;IB3YICJqEAqG9ekAK_xR9-K|(->^0h-u_@_q9>@cl zd>^~6Fz!C3`Fm}IQ{yU%TWegGbzI(@zLp#e8;76>XB_6DEb^e#;ikvU+9S39$JIe& z$4XYkA$-E~R_Wx$)P=rgwW}(Q%!0#XStz%hZOE%qzn5t=4+JjkIGbf_T;L1%w&l`p zKxlidWmFC|h%t+zDDfZOP@dvFf~uKoXN>0EJ~~BRr)+`rECh`CR+uKQKSREE&DTR+ zQ;uoa1fuYAnw^^Xrl9bjpcZG&q8W1XGB6hINY}~s-pnmYztIapi|bn~WX2^Vr)Te2XwB1hXwsZ5t?}-c*2^wm z)~aK-LYUwI&bV{$P<;p{HE&u$4u{xkX`+c1d-P#sC@gQAks zxa?veUg1A;4IOPMV$-wZjWO`^_YZ8H0@rg94@jNAa&EHe&8YDT4%R&gF2wY&pP;eq zP)RpK@ZMi@vhcA&VZlF&>~Wb-NM~e0OHx>%W%2Q}}h^CSyIr&fUrc>;#63=gYQ;vSxqz|GHk3Z&$%eKh$ zvm~Stuubm=A-q%ysn>`99-ouXJRG>G>?-@?y`-T2QWu;!rJ*h5-%Fz*jI^vlP7Y74 z!?ZdovLH!kW4)2hzdHIT466P9k30!?*`9!o?W>Lb8f|CNH7m*{Cj_A09#|A7_Y_Rtd2tmQw zj=hKJ3e3zPT0ehwLqFBpDG0twfskME4riOttbJfi4=PWEM$wqXm-T6=BRkBU%31C# zad?jb3ZVr}f{GSH8}^KT%KcoU5x<5$qE&PaRbRBUZ}?J0K1|Ul zEB`J_$OWqJPlK2CttL^JZBV#RW3KH)+29cNi7B`F>^ZnnDVk?mF;!mm6Wz!Q6?1`( zI8dQD-rXCGvAXnXh4B3co8ZW)!LR81{LTJ%=l>u1Op@aG_m&Km*U-|yu+sa*M^&q- z>bC#}9jc(0pZq4pRmr6MFdK@D;s;$X#=k5!qKG;X?2k?Iuw)aHt^KXX*=ZXg%kAIK z3X1cQ({Eo*6>&{LtN^(*2y7>~!3i6pm>gz28F(xkW0(R8^9eI!gb#{{k#u6LNhq3B z2<-SEv|97AzE{sYc0VHWhQmq47Tm9rZjjBbpp@P0lX^+E8 zm@PX^OhTfmeMC-mVtz2@-7M3Bv{sTNxFzf0iY~R}s5|HQ1wQ zqCU}tx2_v32Zb#00-~f9OHP$tyc>%I<%aeROGsNK7LhCngWc2|dvL>TYj@Tgs0{7Fk0bswbK~A^u_8hoY>QtaCA~d zeF`KCf|fuZEOo*`#gquHk$3NCjdyTubV6)H6c!I)_>@zGZ@qedcTC4qW^CeqFVAe} z-Rh)T{qYiF&yMSbG44+sK9$iAk_V7*-F`aBPv$1~{KARp{)cXcvYkW4;`^Z6{tshc z6&J_1EuA32-QC^YNpN>}8Qg+91RdPn-GaNrz@Wh`xVu|$0w4Fg=RDm1%Q+7{zv`@Dt$VBmeL%1y?gq780A1>NnlZ7nPd6T4HU>p z%W2Po>dMK0UPy3^N7~@XScn$4Gtwde&KNqk>lq-Yz)C$c^)j>Iig7!%bnFGP)AEZi zY9wgypnM3Ghn@$KYq#*P9RKLvqx)#XWX0)KEXB#16aU)DLa~4erx`tgTA33AI)kM_ zEkSNl<;7}HAQ!IUJ5Ltb`kD8R^O3vwbRuT3`#uV!9B0Q3Xa%vo<+78hchUgu>a=G< z%*l1^lDD3n9}`>588| z&=tedZ8GJ)TyO~5Inr{jp)`C_~wS z_lvm&Y|hiz3v7E||FKjw9H=JwAMYd4hameu?a8Kqe>?nys;~bK-}%07HVQNkq-2`s zoYvH}2gR2(X%etnsnPa9(FV>YUjvf5kye2pW^JXb3W`LojjHJ#` zVKf!q7`wxW_AxM;2h)|TnluOvS|uCJQ4_@X`4Eeiw8+g5CfjiZ5i9UBR4rmmh}(H6ld#w(<2hAR`7dUBt7 z;8HosWVAXZtrW-CXLx)f9P|nQELTXr{Ne_*+vJdbPoG zoyXpmp7lqP3F(LRB0bty)LvRl!x)d9UQovhd)60^GDFj_GZgnN9I5Xd*_Wh8XTOZS zi-H5>#Y+{&{@h~9^>Ooxy;o^`Um=bdTia|x`XYH^li<9Ao!N2d6o;H5AH~wrVzXwj zV5^|2M(;jWeaokY+KpvYyUB1m`L#dLZPgxMoTc*~GRbrTUTcKik8Pb@f0eT-^*eWS z;yP)X>+p7JTl(cLB9=1i*et5* zv%fDoCL;xFxEzSXLB5$Sn);c4yC#Wd*f6IW8Ce!CR7uzdGaUD@^47nKWZJ`0e$PGY5zF`iWSN3(lAn8j|8D6P*w@B|? zXH9WJD#U_l6UJ@MR3~g6RzWwlz?3uqfJMxlEmU%!+ZJ=inNSM-lFn9J1GtI2r_=lQj!ejmX(-4N3p_*M|gwJF><)pMC6^yBaC*!NEkTc=y6-vjxp=sc^oDj?MQ zQiF;=5@7V9y`T++M5pm;*bq5z5h)NC@g(tvPDUqb=pi1ZB~ULp5LwrhkMFU;ZIQaZ zBaTVi0AL6_v=i1{+fUI!7<&B2`2Z0h8E_RJo3+FQ(gRNzkPdhh1#6|7wAF6I5nC?} zbO14lZQ^}bhN^&^shnrVL4o3o^0rHZ#XzC8x%fUJBpu(HK8sv%E1xiywkJsvMBpPR z`kSS%@nn-)4WJ~t7~nH|A1zZl)g1zYU8l~e5;>#XG@H;DZnkW**hs2La8qRmFzVqw zO}pJ!C%ei}`KQXxI+biE1SOEqSfH1Kg!$Msls*}Ft#8Ux16AKHy&@10du>ng4;l5CF&p$|4Y*s` z_n6#uf6P;rZBg$>529~VP03$OWVJU)uGV`ijz-I875W%3wc$B`*3Ow${-V}S5VT;r(^1-W9a3v zruNutng}JIfpsELJs)qX}T8Lc{Z_`N>XTbk9h1#@mgX=^1@+pv>4y$liFz&acvSt z(K(s??(lSBby1qlztKk?<#Q4liy8yarR!DlO=0pxj~8ih-xKumGg{o!XT$T+RJ?6P zXqXFes>6$rD6EDRT#X40(nWa=ro}qa>SQxj!WUi9l*+=t!>FG!=u@qMavCxm3dfNWM0X!F3i-D&B2T4V z^Uv7i3w7b_z2VX{QRwOE4Q?%!!L&}?3^wOIP(m;ozlUMfQhZ}!&}(A7*5aN-bmsFf z>T4ytlYFFRpdhH4-YmcFv_3E|oD=8Jgfp=DMdpo+(SKzW-)wI<+P%sCgYp*9)AtqC zJ219y6D{))HS87Qq5B){Bm1}alopT2>JFvN6_|NZhaZb5B6a!A*o^Zn+G+O3x_Y*VL*-CO)X6y9+uIcnb4hx2MX{ zxP%`eUuA@GFTefugqRECJG{v7v7B7Xd3w7&<@wavR@txYBsUlvxk~S@aaPfWAqJ&I zsh?7ZDTZkcm$qZv#%RKZj8y@3GeTV#cn1}U-V&b>pH!Fe4Q>pbc4Y`3oT*u*W4H+$ zY7581`TWXj^?;ZMQ*edkaFxU!T!@v&ZfAwTu^Ot`zMLHKKuxKe%Mv~99^y0-r?3Oz z1SWV)rNzlY%)GC<56W`{Z#xWIh4h@e{~G*JJe+$7dy!aq&Bp5^A`gXI1yXA2y!$s(V~maG>8RT!z@{Tg zZ=s0o5j2+C8MAmc8_CiA$iZ*#-GC(lr6N4lAGJZtchEGqkzXC1atuRdFQsHk_9S4! zk1oB2aTXzLMxXbdPg-NrOEayXD}uVZ;i0J>YvqicZuyj`B805AJzf?g{dXazss#! z!~P=y4b{IUbO`tf8VVB&?Ux(^Iw~rbxEEFvbRfhoPuxMsH=jUG5Xp5MYj6PnuGH7Z zv}~ufqLOh^bXQ*p^dCHJ@$7hJ9=gj(NF@WV~B1!Z{pIPMhN6bqbVyW2oayn(!uhVj2kydB#C2?hk;3ky$ z=spHNEXSIQuYMCn6`aH=0$44IF)uuUhtA|uL>HSZhzkB9bHf-dn2iF<8r!9hHo&!t zQJ=45?4~h3g+9TT&R_gymYwEIe`&_wNW_)#RD20#i2h`kQgD5PeFLfOA7BqZ%3>!Q zLqfSSHtpVw&puGI7L91Ih(|Lo^Um!@dzj4DB59jLR(N7&(WcLFsL3O~0w@<&V>*-8 zDNiZhXI1BI;0>at!u#pAw@gDFB1L70Q@m)9;N~tN+@Ie`F(Zy)i1f%_CoLXh^(+Ks zbypPC1UbN!RK@Atb&K(9SE_uICc-4#D%>5)BBB(PVe9K`TyWFYHDodgh*#1rp^{JB zKqZ{8@J7Hp@@7IzJ^qA2^b)>FyS}6o>m{1V6T%DJ4Xd_kT2qHnB??OCREV z1%&^iLHz!|4PuO@oC}5&>RW0;_kF_`0N`6d-$6y#IW*+wv2S%|kYAR!V7>q#s*0Pt zv{$eyQ;_zEZbG`G9SBuZ#3I#@DMi{uvG|nti=B58>FI~}lqmTIj&(+F;lbax zgQ8ajLBqb!aFf3tF(KK7!Qs(U?d~vap9usv>TCuW)#B(>=IXe>nxej47OeW0wk{F&@6s>)NT5pO-i2)zsg#&(I|ZVIwixxHmAK={=lLF!2z8ad z5921*ilRmnI-XAbEuZS*u<17YyK3AZmmVHvr<&Ji25?8gokb$r1pZzIT=}_5wbR7O zJi4xab2D~s`6p}8aYhk;m^#vujcb>b!hRYo6zYO@^e|>!i#Rm|zM*Ty0h6J4Wq<;e zpwvRSz3yT}RUsC}7R!28x9j8FPa>i$d)3bijYrYdG|6>%W&XPA!iMY%@Rf@b(LyY{ z5`!fT;^CFy)~gnY)GGX<^YZlEm*V^aCAqON45^tdTyiQ{3%;L8(S6VYW@~>C2dKsa zbdxiw7q`_pezj4g$R4RI{8lIesZ+JOn9f3ICK%GHTQLHn)o>fI-lWPctxo<78YeLEk1CRm0xh(MNSJ3+uPw*$j%S<&A-dfxr6oUa!*!PvzL!nCqpteC zF>(unyz>~MN=vP26?D!z5aKS;Qc*CBUm&Y){|303ZS)P}lSSnS*O+hHQ~TbccV%^5 z5XL53^u#lS;6O0X{k3s50!!FK0^7f*Y5#-!Ur<}(ho<^o0k6)V*?Cj;@`ov*4`5C@2FWd%}T=OoXJf|Rz^eyQzOg2{e58phbVQ;N&uIMe~ ze1hh=m94bi$B&HOp;hH2hPGpDH}Db^`^}U{dm?CQK=i6k@g{cHw8scSU0ibM^6%Wy z9|1d(o!587UNL@4s~V-(!DqAIPAInR{4pn8!-p7FM9l`4YGidjGFzcY3!JqD7KiPi z3twXo;kp<9z)iCG8Id>>J^{rw_o9RxQU|5Nl+cJ(L)ZE_*hXQ*2LGK0L{mH1-7`jq zI+uZSR)@yh$3z2=)){$^N!k@tXY{4^{PtAL4G58~KO98p(`^4k>=~w6U1VLxt#*|Hz8Q6JQ3E zQ?BG`N7QH9qKl#+YZ44t!f~i{F%Hl#q;Y;v>@7ZQ$gY9iPiUDT7V{T=*p}pzp|ZOG zTlN%pxczcJ*`;W2KcUEKb-xNbL3E?2zO<$Aep!qt?c(*U4f)~AMtye!C5Gp`+P@LX zerXls7pU|;-lT9behX7>eaDd2Vcy?hg=wiK44ETEu|rbA?k!>sOZT=tlcinA6SH+r z-{HwagmO+G3&iOs2+}AXhrR8dXR%PjA(K&4FE*q1*No~~?mkKFOlHe=W?}M^=y_3| z#ZSGq>TCLVxY3AFKyS(}M`J0~3}8UZnjDqF*6oXQz`na!1+q?U@Yjyn5#%i5T=5g& zl)LwUzaFA)(*aVLMgV)qo7~;zV=5u~{0mRO6DpgptWVc9l^49h>@> zrL>KwET`a{HgB5COa8IKohyuEXdf&5@NxY|aLDdo;84QE|4=faQ%&{t*R`d(ZoB-; zya;I(HI%5Zw3zy?JPN>gUKz>^Y+o)M;Q$n>jp#lJiGjiKVZH}PW^mV!uAa|rL!mJk z1ZCWlc)(neOaW6zp|8vXl2^@>SaG+SFo?G#2ZD+xiMBda4YOUCQ})jT1T!|vR}G3( zB_XkujBQBrw~2i>qVM%$^Cl-uysjckgbg6d*lcxuL18smkka|GuwPI+cX5*w zd1)113~31`c*Y}=u~O|Y$_-h%`o>O9^G_kU#LmuN@kEI z%lC;V_WKWetPfpIbEx%*zPruRAq7C5B_Y#xQtxxca5E7~es%w$*QOYiLuxDA&kK%MYupSloc#1~<1(EbG;4(*5LGELy&M)cr(2&)s zW%G*7b)qI4OkXe-%V!Z@wZ6>H{Xah=0RtH|0>KUJ7$XZU(EXDj+ULLkxcx>qwqbS!Rfoz-q^PecW3SD2VOx9eI%gt=gE$jOs{ zk32cT^UOn>eyU?fhqbars(kVXa{;>&D$7V3!=8Cs@1=t(`@u?ZS|^u!#n()^7)>KN=^B=pY^`BzveS3 zwCcw*<@a_*^hV0-f{#(Vi5&m2CHU$!i?V~*Sozu5wJ0B>9 z-!pwx0<7iqt==Y35K#kgaVe^WX5Lu+q&2^9{;suAf0k-ZN8`_S|5>PFt2&vlOl$M& z^+~gYwKP}^qH``jf;&(F;t*D!)Uh5^0`V1fiP|v=L zm<8%~uxe8_4g*a=U*LF7PXN9^5u+|00|}}fiYdtJ47bR6TAzDB8W4KW{)~>DAU}sc z!;(B-NEz!ywtO52!{R|t4rbf%JYRO$1IM8KX&p;I7J-$}HCSyTTatlUQ2skZq)^bz zXl;^P{5%a#EueOYG}u>Z<0w$I!`_xRkF!%QftPcYpvfqB!eLL&wk{fJh(FNacm$-u zZ#c*Tm5ce90&?LO9=L=u#C$9Q5%9kSr@8tDNkP4lUNwB85l%r89?WwqxeBUz-cIX~ z?FT^on9+d0Ka~Z8Az)lnA~#QeF;%-VQ@mdGvFwmkX77*>AkQi0*6xAw%9vT_I zeHGI(%wWQ%MWY?ubkzWUJ^o2}d152DF}DC^l1s}fW6YjAyMVduPk(=GgKs#qfH?CL zLh00|^o$(=1~XAm;+CnZ$uXfHRY@fUtsDvZZ}a{gSy6M}B|_TNos@3$Z}`xJ>^o?^ zUlbM~%P-{ngh-3rDPhr$1BfXE`vlLR#t6ZrxLKv<#6zm!mN3VmZ(L|x!!?FA^ zH9E>=HEWfad53nvsE|iNA>G@N2=h{wS+Jvd&~*v$D{2KQofw96h9%T*JQG{*=EHJi zHeal6d>avIyC$<7JR5FqX6u;8;LkpnGu>zF+GLtp&YU&GYfPO}r+zuRmryF5oYF7q zvp)v?HbdFd9x`6E-E*cF4RVZMHEpeq?Ud4B4OQo8$*6XB1*Ih2`;A%7F?QFuf4EfB z@nz(M=RqJ~MAK|FshY>+h}kk`vd@uRNhxkU3KFZ30f+%ircmSzF$diDSaVAChUSFW zN$_4_cZXRM7TsuUIL%G;(MQ%c;?;PuAwl{E(-?9YM^*7Zl7I3Rw*FDY-LPHGezb=- z%@floIMa?Yd8hvY(qH?n3IHl{*koEiRf%8k7!undJdMltI+`)Y;r5i;6fNi!;KD}! z9y{;zjIcQCFNsfT+oIAnwe&8e(mXel$E&Wk$WQ$>e|1v5D3=Pt#;+Mres3 zxR(bww1I0C8C1mf=$)}SJ@!g%7(R?|+*Q^)(G4=4YgJaGO2?JO6Y9b#LPLj1+PNuuUvQ4-%S<~Jk! zd}cKKpubHpnnPWswMEym3Di(c)-eFsKb}(OYDKy!Y1BCCQv3vF_-oReGmf|un1i)d zj3nH+AS`KdXw^&xk9gz{L&R;ih)nH_(h4uZb-g%lgzy71Kj<}rXR5SUti}D0ZMdbj zrLLICP$d^;G_EtF)>3@NJZtyz+6oANK2JfDj+pa8oJWdZF%A2oNyml~cae>WT+*TC zUfpyu26uE=gZKzdxTs+duK)hjH}f8hdjIu!mSmD-lVmoPCrsjLsjhsrz}HH<33MFi zNZb3$bmI0rh|J_fYxEg=Ukp^}i=dr6^?BB0ep}-e_=pcmQ$l|aAm}mW`frAZ;y0id#ZU(sP#B8yps&33-VT#b6 zA{b}qlOOJ{QjE8;E=a6|10Jp9UvPB6PZxuk+GiKO%{Hgu9cyT}d-Xrss45oHrc5>Y zQMT`-lWV=)k@)=)+Si$-e{)$5f+SX!D6TBK+rm-0c+XR64(g-vEQ^ z{8EQIsx9i5dc)*L|FA7KyIdBa?kan*vhyO4TB04yFv3q%%UiV{JMy+cX8M=Hd^xhV zpo(M3aBR>woH|~up(rc6aU>IHN%)&y7L8AgD&VBm#P}L)OuXuT|6QWNR%$jD*>)L* zGXcnNp&=x6*~*w2wI z)BV)RuRgLJ5r|5Jo$!7)J#?B77vsdmjv^yI(z(7YAj_=dMCQS;HZF*c$5v%-%5@&N zOv%|6A55%>4W)E{A#s1wjoY-cJts4E%8kRdunK9Jm~78%_w)O3CbM0?1a%&mvhvr- z$N`0(Ko2&GwK#l({l|FG>Y9&8OO0p*5=3D9HdbWzvAzD`xyCWWo zGvC|+eCjfTO8=jnpi0kV+dBNk8`{Nd+C{y6Hvi<&*s{6uzNNp8=O?aJMAJOe^*qk2 zS&U)SVnn7=bXvp60yzWars2%-2KPE99NfS`jlq|AnV7P2`r5?I(!I8j!t>YCDd+RS zt%Y-|58-V=gk3Ww8|P(Tzd@=Zm3#-GR7M3SpCbbJuO@cu>fXB*qeE-s__|2ix(v>S zM63N_rce8cLu#9kBm6~U@_~q?pV;B7CcZP!@$%i>?BGeUL!lWUz-Jv+?2bq?q->zk zWi(s8bbsN|x(xSC!cVWDy#>5Lg?5hW9Wb;qYUYa?e1(eP%!9!$x!E*_!X}sYCaw5_ z4#{aoBJMsLVfu=4T~!o)oZg`RkyW|N8z}%Fs8p;^kBw+0s&MbLg>G=e9ruMKHdpbC zZt==qT*Byr$SqdLjkVmZ6Kl#3_vI8Z$8T-aQ+aG2#AoUFEY-;_vo@pGVj8c$Df&6C zT1PT1kYb@x;Sb})Euq1Upur=AhJV7tt6W!!;lcVJS^bH=uo0?;Ja@BNkBcp9r)6kW z(jixRw$e^?Ky2y2Y10fr)68eX*zdEF-*26L!{EEdczsxE29APL(eo&~nBY4%u`e;c zDvX>QPd*p8H60RZ{=g~2SyoKL6&Q2!PB8FMJHJnW!5@l;6b8Q1X!YbdR}8ZH4vG0G z4wDG3UEiRrLE&S&dAw@CIF#-9Q}3(Kj^_fozUst?XX1x48XlS^dx|T1 zkk3Z;vct9B5PQ(=F%!3GpnbWCQm-&$Xxv-9G4y81QSWazW4PIQsK$c7@Kh*`bfG$! zZMAFc=@6XVs#CKlN(cQ8@$*!WMoenm_Byoq>F!WEsHm}vrOE}~ca<$k>cXjD?8o9z zy-D%_nDs;{)8J?nEmURHz!6a;6`6H)&Di{wS6WASu!*A4s%#u`R%5ccGjQ)Eq8XPS zJE0LCJz3QD7*zN0mu(RMW<1f=;99Uv#u;g3SMHY%v5K8AUdA7b(v-h8y(Z(9CIWOV z>lW)ugGkQB7N9W8WpFE~0g0JGqc->!w*dQ!%)mJf=t)(Mrx{L!ta(EHD(o$bW>l04 zHOFrnyO7PeBo$PT@=Sv`HW{+2V;UX06*u$rT1t7~Bz;CzuBVwfZi?;6lL<<%~GY$;b3 z!6Z^P5m%|)z+>j+9iMIwHYNF(YHa>%mBekG)x=$z$vLD>VP#{Q>Hj#>^!2aR`?K`( zl0R7^5KDuFf6^E&U|5E_r6)2;@Oq06ot&&GIgY=@wHpKKt0U^7HB1Pgo> zMmdfZ<`QY0O1_M-3$d>@dEI=ljP|7nF}~mx>0X~1r_WK(ir5AMge?@eSA5(cvHT!= z;64NclqOu&eg3Bf{(B0>Iz1^C}AfXjI9YNc3qT-9bj=xucO)P?(xm4+{mHkqtH}@eSZ1C52Kf4K zk~)|#S;WNYO+gc-=6LI(?oMGL`ak9z?&>Gs9|6IV)2uc_5pu99{5b;kN%u6S=b7nP z8aWWYwU zbb7^en~6?oNx{|3iNl`9ntVNKBX!NfO_}}eyfULn%by3yarLF}0X(OTqn0mIBT@i) z?$V}`m?IGXh7ntVkxnprVtq^WuSV7= z#P4B4ct0f3wpo6f96UnyL&PbiYY8Qw5TkqEe6iAg=3F;r&#{v!%cwIwrao4}z;PiIls@eu}J2ze9-cR+L^zH+LioJX$rRAF@rm3Z_#+E%dnd20n zw1(u|hg~Ww*0$&5O2%LIfmxoy%3JuNCZs;F5`m}bTp>FFN?=qAsB#uG+LQ_QC;GHn z_`r<7)sf45KV#TANDZ;_y@w!M*PmpP`eUt-+TdW{cp5YMQWJi7l|a++KE!cLX@vHl zl2oYxY@4m&FS?=1QPt&Ya3NCt3pZ`QN?UJR3p~~a8VmHw@rSZa#*sAEK}}ry8-Y<* zGQJXl5HX|rlErIb2!-P+zZgsGN^e+H4(QEWRBIR?tle<7k&aZMc|OF&#BRN?^`uhC zNy*MO`J`H!hV>r@4#tR4;VG_p}mxjR$Q|J=O42-tG zLWZK0DUDy<17JaC#^$S^!T4mztcmsWJ1m6r%vd19EdDU6c(z|DZ#ZAix}~gr;=z=h z)G2gZc#{E1zwRd4YQ}gY6c@1#$}0GVI%2NUR9FnV(C^&Fd!SlR+4YyTBwsk4f0<}# z@ibge^eU=JT{Ie~uSz}djj%swT;LCNnF!uq{qf}j1`Ga$@^Mj3@iZz8m&-=$70dF_ z$l zO*1o>OLHtwToG2!0NFh28jJ=g1fn6T6%2>CTs%K2n(+6RXF97Umoeh$iI&U=|)R;e~ z3u*R+gnfZVMx&QRApDfwHW!g6;ItG`OX#@}xJc-^9>_!Z*bVu^aZ3RPneU1QX2Weu z2@#VAxQ0{zuA8et2!|7B04>Sdl z1;vc>SO7|a_=>*7=-3S6f>?ytr*Z5CAwjev*tztD-9g}V#D|e|vSKPgq`|#@`~PrN z3+x(w-9jkDHWHW~2S`Eg*a%``#w?r&MYBSahOa_INYb>L708F_c)?cQd^)R^c%NafttL2h#kNrhooO)%#dls-k{ChV zwFPk_LgMdt^J(LKEH^!X!rz~c@fhZuG+0Cg4{!Ymiv)T1kljZwaXwBg6hABDi0YTp zPgEmbozZOAJph`N*fNs^HSEOjYQtw*9|A3YYy=wmB5ystHU$&)cNIq3SUp83u??3tR7n&WXHJXsqgq>ojcW}W+78Cmu)ZvOxwG=5 zBf>#Y=+hwht^@_vK*P(@%bE|Kusp6VWy-2o4z0pMj3pQ7jjK|}^|n(I#8>+B+ax5M zZ^OtjgRXl>sc(+Ly8->+*-0YVWLi%TT#ve_I%O2U4J!%uE+hb`zb~$Q3)%V<@*Lhj z;?FYp`FRm(x;OW9=Q+C|q(@T~Y{$Gk*iS6H0_7T@_Zz>XvK? z^Alu<`{|<)PLJ!`9uQ*g8pim}csFqG=o>Vr5iV}#_glA@F?0u6)d zsI&wpxyz;Vy*Bmy9=8Lcg52M8BvV z`-CPHfcAqiA5v(-#E#*YMakb`p&9cSqYl<(Rtp)?9+J|{jrn+^nQ&E24aM9hV+0n5jxcz3H$MXz-8PZ}_#aLKUQaH;Ht7~@fG*q5_L2D^CIttjLX6Jy#nttS~-KKKPwu&8*NYQ3@sIM z)=$eTTs+UY+!Sl8ODF9gbR&>!Ly!Jgpfw6TcVjXuU6Vx;D)}>n9*i!_C7jlGOR$Xq z@D$jVifRfReH;V&cahP$FDeE;tTn{*R>j6$=Bj&trM%uzo59xr93A1KpN)pT zwez%=1>O`PB`fQg;?o{yyG3|7F4i?lGn0CexfC%_I1KRaFdl@W=%vGWu%cX8RiMc z^Z|48`q?$u1-eYb8T8T6KcOuvkhIHdBw{+SEGvELw1q-+n_=YUKQn678sl;NfxS=9 zXd`fcG99PCa#0wh^A!k9IsQG1*^|`oMVHOtGk~q_p&~GNswlDvfwM}J#Sb@$8TAeR z4zsM-u_I5)qJ0%_g*Gdr-x^6v*4u16m&L1rAgOv)nR11%r5v|OLM%~#9g88uN+4Z= za<#=IduG^3N4kTGsoE|$ZtD4U8rOdS>0k!>Hf#8KmgzXNyDmidYpj+`0 zkiWVBo>_CKJgEl)75(@udmxiy;~2-*%-6~iCn_ID5vsNx&f8z@gyJ4vp1O`TZ%PqN zKle}11n`<_%XJY}FGVga#X_lCfnBT)c~0>y?)d#p3`f3qMa`S(SEX*FyFvF<*7SX8 zCQ17l=cJ=4%zcd+u#pWw2ETB5`b*xx`b7ZYdRS5pS(Rc``5r60lu$S0Iqq_>s6At-a^@`7)1Rz;$sL7}eT5zH zhbvXf&AKzeu=Oc?4i*5I7(U*PQs z7X-nnmd#u#x*mjHEOVRS-wLfop!}gw`tIuq(XU4=b@m5YvjS$N6jLWoT}?#6bQzc> znzbIKMJ~O!Z6{Z(Fg)u^=X63h0X;<->epi!NuwPcjZ{%&?+N#aa?zG-xl|KSsT^wB z_zISIF8FfQ_zjbNQG&iKCPF-x7`x4Qwd{UIfak7BtucbOu&`^ouEF1{zB63_yKT=U zYQh2y0i|p^C?iA~OcIkfK84WiLAD{zT#nNcU&O)7Utu!|Rz|P?pvJE|btKw8XmQOC z^y5E?4E~jVmZC1Fh9QFb1{B0j+(%Lgypp^jt)eYN1xcYQXn@2Rnf`FXskMz-@HBT8 zbUg_?LK_Mir{r5%d)*(^UQ^yP&IEl6y!h?EzB+g7rZn}(_xJob46};XGvBxwTA_`+z(|x63OI)TOo1uj8_2oK3Ori`{gl*L6Zf)=AMb%U02My$ZwuQlAp|F+ips6DEXbX-_V?-Uw`exaF;c0Ce4o#%( zIF@wTXm)dn8c+CokXcEf`x}efgGt~#LFn#^PwYEmme4`U91#zb)S==kj*CQPVS7I# z{M-V4*NI&!SC)Wym6L)Jiw}kr;IJd*ZLlIcwPM2X=+91-`7j{nlw{@rU7PU$KLme&Ms}k-34z!Nu4?fKMCMb zdlyc08ZK~>h$OE)pkO?|Yj3i{bDy2_^zK%Y%3832MqcVg66X4m8t+T{ajMMSCBI(? z-io4T^8M7G!e^o}cQ(-pynKuMgkoljYMJ|VnhJ2a)}i2E>epf=3ds)1RKmY6GRQQ- z`5ZI7Vale)DBI#TC^jb?z655MkKr{Qd*Gv=pPo@E&+>J0=64OO#CW=ea7BLzNoETk zvPsZVbk#^{%XWo%2N(jIDo?CH5H8E+^pp;tfacAm>XK z4qlEWFVH261E6u(8O&GC!;#Mr!~sRyeQ^`DwmmWn8jAKPuR@*M(xlxwyas5pWxpsa zUbwE*OehQ1x!Zyd$}6l?HQjD@dv{C>Csi-{%SP);YryQqMP~) zg`Ajuk6Ms0s!hK{WNZer;ie&%h=?rCoDsb?-aC#{BH$Lw#d0$$&%}4uXd7W%{vDG2 zd)W>8=$ZV1%z;IN^lbXCIL$R4V{xNH$k7Esg@liZoAH_rUAEa6K zl>Y*ZLseEC=DuNOyAgEqDkd4yLP^V#1?~=)gC8d_1TCg2?JFjIjyQi} z^SCG1`RsteB*ZdYMGkd)dE;D@z9Gs<*6d~#PUIQZNi@>UGrDr8ek~kH_eon4t>lYKLK@YRCk4y&xEEx8foe8V_P8nMx z;Z%tGb1T%32$(pkAZ+oljc@txXKYZ|!-Ov5PzuZjf!4yIn`zHIy$o|O5GlO~J~@6^ z#jaBYzWqycn1LcrfzBMfG$)9Pbd?+BEe$rJj-??u;r40=K_`h1(2W~{rN|~~Y$z&( z?3N?4Br=qa5sqXW{G^qZv^#tj*AN{Zq5O_*uRLRxA47k%#;>dj2g$1I zpl8r$oF(PtbI5W`4pH7cdqnYSRfY+wwwQij*RV_EMo~=R^WD^9dj5L(n)eX_`B^5b zT~$EoWM5X!YgV(S=`k;vn?T*(RMK5bLx0q?{gvSV5)2p$?$J>n1ylFm2w=_rz1yTD zOfW-+3~#iUUT8?=i~pmE=UFej4jC+t&7V*8jMVU*b+myLe%C+h*&U}UdZN$ zxIFtx2KKBVPbN7A9aeucy!xpKQO&KVN@aUHjL1|5F6y_{Q zGh_m!wk!RAjgPpb}%^@3y1~Gj&#e_J4_&-tZ0jAq`z={f{>#(+$jX5a~seK zxUKV?H(0-TuP_a-@bHIc1yPxP=Gsq_CB`^wn3vZdR^ zj+vR6nVFfH8QaXvjvX^IGcz+Y#Eh|HW@d)iukV}ty{DN!-?Vg&)M|B0eRl0yRkf?u zVyRS}?qb@+xqqck%>JIyYP+CUgOy|M1=0;R!Tt;TA>m|`MVbv;@sb;^)#i|v{u`2* z6rsK`g%j-`H&j5t&PIZr=>3-1{YF?1#@rLhYjoJhTi6FgK>GBiYk>3T;{oFFo_X0X z*v^XD)Xg+NM|+Tcn_8lLkwT2hD5kB6cYkho(?!(|>{6ww+#EgmahVO#%`;4hU5S7S znc}wf;@*p0*^t&JiUj$z15Ifx=bwNXpRsnqUnVZRbztF~5cYu4OwOcii(Ln|Og=#! z3P#EEA1k3Ess!+=^g-0z<#m2n=p9mkqBx@D!gSk!oIcaAZy{2Kq+x$Dd67rtqax+X z*0Mw$TzMI_EuwKK3QZB8B-s~4E66TU+wmwkqEAl*0rhNlQL6B$%qQgFI=eZ90a(bh zptnnSmFtb+N(J$sE98$CQG7TKDI)URthkU|O z-7DX_o5ONQUYT8A&d$I**b|29sJatJ8V~rZ8ttgP z;ob}8B-vZcY>N1y|1eeTa?)p*2vwD0@*e)Ws(OXzg~LL$Ge z5@X>u9GE>dXDMMZVIg59VQHUgoQ8u^KyhAPpSq%|!#Dzh*PrX%I09&6zh?)*xWPbN z6w_G*fsSt{==)kiUf(?BJ# zV)GUn<5GZOsX3z8mU+OCP$vwejL1;Cbd~IO#hC@$!c(YX3U@0KL809VcSI4P!3b*) zIilIa+`@;bbww^vZw^jS*F>y5F_9a2w~;ssbruaXYumB2XLRM2p7%&hnX~}*%`DwQ zdB}0O>4f0jCt)SaC@R~q&CZMB=T4SUH|t={CIf58EYaihArL~GUJ9m$I#Mp2kuRV% zx*Z+l8%ORV#rRT3y6TK*dNBm+4+P><$EOFnM5BdxL#pW{9Aq zJt?Vjf*0 z@^K`^VTqkC`CD^`E7ThMvi1Ftu=LDYNP1<Wv*U;DJ zPCKsLtT%$+GO`^6+-}C@$!+>stG~AWB>i4AyEXoK`sW=0?lFE;G(_#A(mI<|hOo=A z3%6;hOEgN`gHWx`)V#^TUkLN{hp+(fd6YkgZ=EG}MwLz3+LjMfN2 z3+ke^-dFjVRwUXR*L>z`Uan^**zTS?*u4>1F~{LqE6drVINxtE{<5Sc6z<|6pbMee zLLzNT-i5IRhHt++j97l++k@p$T7Kl{rBLY&yT>I_Szl?N9yup{!8xcr61YCogM0ZR z|0jq4M&5q zqalbwVGE=y9W(G;$et3(iG$vhInC^!8aoG3T@7Egk$EH+Y*frCoXd`q7bYi4lHKKa zn1d)}W}P^pQGSe>d_x~m?1PPX*B?OBmms(!ehvEVY9-U<-LtcF$5*o>;S-j79S?fW zx`QVtO;uC zOZ*&wf^_EJWJUZ@4k@G{iZ{Dd2AUzEUw-UrszArJ!YSBXO}b7aKhJI_^}TcP>>64Z z$qs#`Dp29%hAZ+V5XU`R-@xfd&w$Z--qWvR63BuJMAMe;LS=?o!VkXbUg|!t(kv?3 ze=_t<&Z(j41EXC$V6^+c4g-1o_i$A4uYrrql4`jHg=%OyFa+U?eq3IUczo2M?-8>V z8m;5=BPCK&3%jv5m&F(e#2(iW&xKWuGS`HVmpd1e=Up83M|Wp`K>LVVZZ&623crM8 zeTCCP5vxisE1Zn8yyAhj$GUGJskK>iG-Yx>5A~Y|tnlx!IHExK3LyS+Y`W${BH+CS zqxfmL4+SoMkqje%s&O|iIONL@S!Q)#;CUXwVnAN3Kd^B_mRk}VwZdb^T91O%K`eU? zl{?*4k9VgdzfD|M?> zva}7dJu^W&rDT&Po8vh9oQ64@yg#x)74l5Y z(L(EKW>!b0!b*Bjk;E!Oqp<9&ZE!^alOdQVCLLtvSZM>gsl1&v>;wS|ms%qf&gUsF zaTPVrA;;h0GNb2>*bT_k6$Ae-*2nC>>!YFLtO8{6kH+SWeLq$$nSwefcwxt0n5DyX1@nWQa^(eUBhy58Nu>#5YP3w zXLvULvwRuweczC~vA20f`>pC~&D=o!bwR+uAI6YQ9&5$Qa7=KduP&e}AS(a~lmc!a zE()6x6LVp%uux;v2v5T0{-n+|t4tVg0HhLZ8G4gj#>yG&Q2VXfZU2>XZ$W`>+M@2iyX@!8*QOKJ6i1A{jD-ynS2Yp>~iZq<7FI zB#ImQ;a61jD;DA%6H&5oG*;-|;(N%?7=Sk`?WN{&@=v%>7&mr+In2(^(3r)RB4;ip z-O7stan|`(S$@C|aFkNy9a-Wvf*ADMld87#dI4Mjhh~=T$--y_Mvrsd)Ny; zTe5C-KU<{6m>ALSrdwqQirjq*q(iZ= z$?oflGk@h<6zysvx+=cItuBPB_9;Y*Os?+xx(o6eAiwLhXb8qolbjaGcxZ%XH)`d= z@;fL3t7jLGx@VPtlEzcG`D4CmZO$cy3+}hto+fJKv*?146||BH3L9G}FN!AOt$ZHc zzRIb~@3_k{oj|vqHF>;?UyF1AKSP#6oiaO`CELP|3)NOox|Q*zwoGkzs${x?hK+bN z0YU8jWQ=!t|mp_X^G>KvU(yj-VX{ zr;JkW?BP*+Y~c+MOwgK~O{*W}qYL{pKFTICF1w1_tj55B9SI|9rQh&PS*7h;ccBC` zcYe4fhv0^;a|HsNaE)2T?Q3x)CbJ9cWn)aDMu@;BgZIjKM!T4~UNM_b_;yAdt58RY zhmoigP2%Q=yjbjT9o=JI08UYiUJ09BIHSOKCCps%OkNqAz|Wv^XfR?@n7Qzc?v=a< zocBB+y=8JG^l|78az{t8d;^beq;f_}?OgE_FSn}OC%O1WkMHh#w%JQjugHMX#MZA1 zPMrFt_heoMZhOb>xf0gtcbpT)mG?b|BTRjrYK|8Ew_-2*{yyQ4-6<#8LCxdLe5{#t zje%y70QLE*r!wLFY^!n)JedqA+v=c_yikv3W;RIxbOSVNNLR&|XA6-YnUr!V=vsh! zi66Koc8M)ofY@_ zvA4B9>Klo3jVtVtsdkKK=8@`p3c6f^pcTt+T>X-^b%lc4@2M}h*Tqb(*k{g*p6gsG zzpLfbU;L3EbB)&M6a91px7F4ckAd})(k=6hzqP}BV=lYnE=vP|*v>XG&Yk`w&0-G4 zN-^7#Q&Uh8F&onkJ^Qq)i8`?^{exwe0N3E^CgC{M$$j<^$!L;Xf*$QTSz$40tuA50 zzd#UuVkXCGmgdE(e#H`fOq$~OdC}-$vGlR_9a2T?S&R6St1%VpPk{NOgt#BwW&fC~ z_pD*O>m#9lesXWOGxg^#Iriu-R6C8`9zXUdvR%33`m~tF+$?8`(*;fYy$zjBH8w_W zb@eTX`>=3u%UaOJ@eVET_fTXMgzY|H&BW(w<_^p-I6t&+uunwN;jnZ#0MV|= z4CP>6yCulbU^9BxHG##*hgQyS^(Qs;16z0@PG!^-b25Td-m>|CXmW6w7R_=qr73_R zopFBICI}VI^z|v1ElCLmwSBREC0j+kS>`w|QhguMhg0q>@0aQKN0NIzf=l~{p1=R! z!N;s<24EZo{cqwZ+rMx+Sh4>$%hXInl>GR~WZ49Pi~8}qvu#tSpat!7&NLoQ3uLh!I*ahd$k=Z= z${8++vZtnl*jOTE5O|G{>EDMR@U%3n0w~If zt0dQRl7eW~GV=J+DI3>4gKs0h1i7C033-{Etku2JZ6s5}ZyTh?_cZI81=ozLXXC`n z{()XR+Kp!T`vWf{BUdB_KI||chuHthQ{YI-{?{X~R@DP?I-&Aq`VEDkMo>aS2dYZy zSSTi?a`S5fz)PDE01iIuC^(M=nnf3}1K1d93ujaYo-E3S#OdstoHyV%Z zrY|?_1^9ix)&OQxFS{hUu5d5A+L*=-Bn5n{!IIpq2w)|LGmXO;M3c=- z86L*A2wgL3hF~s7K3i!1Dg$e;f+$mMJL!&(X$Ees~d)zY_t* zwROsv@D5a?^A^a`YSATDk3|>)Mw055VMe>{F7Jf5rk(V=903!C zb~3NS6*GmBqOdT9%YwLU3K6Li8!3?P9upMH<@zJ$0~ogWk+=K;he6h3FwD%8?`p>2 zg;==3F)O#IMlD#*r6QU03VmUAPJ&(`!vUIpgeUI~I}%^vr4o0(zmpH%_Fg~@o_^v= zg;Y;)^%rg9v&9mXK8`%L+pI+|_c$1X^BqfxBSZKj8wNl#fr7))rmDD#7gs73{w_S` z_1z#d5Q{QC!Aoa}%1s!hgs;#RzXn+iO*`4kRGo#kN81{B{&L4R(qnwtdWUuL>nD%M zBMCWcR*t!<&7KQ^ppJ+-jft4fDD<$h;noRB0M9<@Nw>TVxEWP~@Kt^>N$&LQaQ+_t z!^Ba2aqi!(4CuYS0FCVbz6gPL6MI_*7l54!z|Mui*2uxx)SAJ`$Qc+sG1%Ih0&EyS z|1nbCt;}l~19S^zz#rlG7vER?>$l~M926W}EbZ<7E8>^@e@EO=v)EeZv;|Hjn$^LO zil_30zA;2VH2)TM75f3f09d0(mTMuCdriFmp zP&t;a3e!apbb+y`pRwM;*b|kB6gkXWtB@e()d*di(P@y7uH-510xztUcpFTeAgNpmT>L`N%)hlH@qH^DIw067? zi7l30QkRuSNDsd~qX?oW-+|=v+l5qW-OCk>p`=vtXi|_BF8FQ^X$V&9#%N?k=V%hX zskgA+T9+Hi8Id|w3TH8@2>60zfR~Gdiy7m>XlU5XgX5298v=roP~_-&b8f={DPx?u z&hJ4F5l9mr0WU?L@I|iCtcF2dG^*pqT}N7xhhIyQi~Y`SQjM}xHu8QVC-4n2XM0Ib zdWF1PZ{Wv9fDOD@j0XS15n=6Bbq)ia5D{>4p7viXv7C{UHNfe=2#~C!2rO)l&L9(F zphMf1rx-_qu#q-f+iymwX-iAt&?i8mF#x1eOo>+EI%VoME2@7jcPg9~_Kb6Kt7j>V z-Z1Y)`Q9mQ-769JI*H?bnkRxkj|~idxb@!s`P|~#T3u`Y?0F9fgP+s!Q~twxQJRz+ zA#^)ek0{lY>PSN}d2A$#sWierVjJ}bHrSD8@5>(H9^xM39^@YUNOn{wraQ}}5ia1K z`4X@`+Lk*v$~n#1e~h3+=Q`n%GCk%JBhM6qIT(dBLTM5eZ%B%@7X_7Gvcf(bL$xe- zGlZ&8bRv|_8Zp5-$Y?28;)%|{h! z)F|vs2{++ysi97iGjah23epR0AH}WqyTMr_EYAq>OZU~jZIIAhkWj}dR zB}yZDO)6W#qw%%ZpdC$b1)W*&Rctb@t9a{@kWodI7lZpJX`0t^CgqQ=D&Mjq@bY**O7jLn+v5ZJbq{R!z zjb)kc%;Ykyu5rkjow1!U5}8f9Zi5L+tR*9aHebd zlka+#;&BYos>?yzBM%kCS_CpTmut@z%2$Lf8lKieQk#<%{N|y|gJycjMSYG`e(jbnKxBZGcVB8@fK= zD|I7e-Bs+9*Cz}bPFE(lIbP_`UIPahmi`d>Nh~dK&_h{m8U#!yE$LY=+0t;Z>~Gc} z-7ZiPqYqcs_KN8GgEVz7a)g~a=j|15(p9i*H|jTYL^k7;ZHVq8!zJTw9E38C#Y_XN zkm$sqw>9YJ?pSqO&W96^opaq=Tbv`w9zWx|e?o}TdvV#J;|cUT!Xe=iR94KGbUz>df$a%& zFM93yVH{{s7jA&$Iqq9rq16(RvSs*!7oW;UM>KZ}LF-SPP^$T0>k_f{4C51>fDeT| z{Oyylzc-9m`n}z6-~aE38T3FP_aAQ8T%b#2{}=91#K;!lWTa^CZ22F&`+vvjDt}3U zh_rSB^okYpEx_I>>wg)mrQs{u_VPjsKoMH8nC*&_cdbLJIy)=(SloMWOD-h%7?9>Mm~Xt^ zeb+sYsPHL-J-f?DglosWg>MEa;S&fG;6j2~FOvMX^~V6eygi+$--GBM*V$9?(7^B* zBDzIte300w6Je?h434meE8b>KZF8Cct#k8mnK}Wm3ASFNl^JY$8T}T@;6IjB11aK- z(^eDxBym^y5XaZb2Di^;s8m_@9chh;n?R}b@4YF6yLTyw$lmtYM>FRZZxsR7^G~ZK zJ*BaMHTzNq@ddu959Jm#v$u^V+OT)OPFZOGEMbV)GMm6Yj3fV4z+C>gdScr5wUud7 zU3^>8@VhU@a#HqLSBmg2pdj`uMHA;0$`&6kI2oUH0h|;{-or%*Ecb};o#%`_Q$ zNLrMHf(d675V;bxvwFJTfwc3%(ZS6`%V3VCGR97rSDJ%zikW;rx!Wo}v@i@HE~XzS zG4@<9#>tovz?HRxD6VCkmcXsrcMt2}ETTtIQkjaL2eXTEf*GnV8Lo92FX9^^Q+cAo zE^mh@pDJ(SQB1|su1#B@T(EnPfLdU<5 zNRemDigsST^<2Ffry?{F5YrtsZT)tBC3zKj&42W?M}`Cv@{NzbO?N+a&%AX_WINv- z3G}{0Z)3kJBGlrWyYd$88R5kqd#H|@aO3~F35ua`<*nS~!kans5E_->=3l-Ek5O>- zDcN(zGdO-$9@T&=8>9za3d1SuuM5z=$C<6y7~%(gI7VTj+(k!%5W_`wtPB9hWjEaR zLh2NQ#cYG+z+#-U&O_qBY{PvM!$o8=&4c0tPuUSi@`h!Nv=Ex?gVr@S1PHCu8V`wr zw??*U1ko7_i~b(+nFGWVzk_K zjmq$V7?taaBq85Kx#3SB=kH@eAs{x|wO%*b#aRdJ>a5%D@~m6#dS}fl;+^6y)^RUl zHO@nAIio18$w0_+hdoB}`;$g)i5JZcl0eK}A(_*<*DTN0P4Xfm4S_vYgJ+!yxv zBJP;rctn1re)CE`S1GH(z>_t1`Wk>oGhF<8b~~>~#Ij?y97e%fIPy>;#XT4urss#5 z$)(54g-kI;&+%i947B4EvWMv!U$4(k*OG!!O0SgN*52C?8N-$a;(4ZK#R@6^`3df2 zi+LrOsXG`@J4ZX6GUKnQ&_>qByYkvU{qhR_kcqBqA(c6Os*!u{Eaqfo%5nz!ijjFA zmhxKx8s+1nt;*I8N;dK|L`1f(Klq+>XAs`@gmXYsi?QWbzYcOq-Q&QmMBWVrjO)NXFuX0!5UpQj4HzjMO78qlQdjSbfi&X zU6K@PMTRTBTVnPxmdgr9f%Z&u}?1 zM~KdGIXCQA-Dy_5^}De){dyV?wUtSoHPB&N&yuOUT-11dU!vOF!4ga%=gWyp`}Lt%U6&wyW(kZp}+P0(J@I+2VdOs~?Ozs@$hATCI~{ zEPAF8CH@Oubv&e(k|mZs zMOBoTJ8{9i+qq(gG}7q-8$wgr0J*WvVYdU!Q%GAYj&=DjlF21IAWF@OVePcytf6Xi zTx!&-=a%M2?DAd}sJ*j^EY!b$uQB$;k!M;C_4KVS*&L8G(d#X=MIQ;Tab7`<4Z2&I zY-<%Yt4k(QuwG!Y&Co;^g5a_xjD<%_z2217G{j&S;JEQylkx97V2@D0pKHiX@y43t zAFlnX=5HcG@WRNui5;n%Lu|0)WZTx^1&$}ZUms7RtTnUM!OO1LY|ZquSs9b%7Nw?Q z+QhZW+KWEer~t%q9&bJK6_Y#}spJw8#XZSVpyrrWm}e%yv|PR38zoUp z8ls$RcjOv&S@MR28Y+XCd9pHq$qP?otb`B-Yn;!$iyZz-3OgU zA!{%Ooh~*z%Gwo2_TlaukjAQati&rE z@0FQO-^jg-`^syh>rBHzXU?^AU~k77NOVB0`(nf^qw_IG`TH@UL^Y4=9m1;lM2i)A z)xonHW_3m-hh%7mSFo27WNCIE^)N{aP3g=L`?jsfRDsu;g#}pzMc{sJZDd#AKNX&AiPZTna{ZQINM!r z{yEwb`1t04^mLat1EiPYA2(_LPCF8LJQxY8$VtUW?I68P7LW?2kHksmAik{@&+`VYHZ zID~xAI(zWKXUObGPPtWQW%+4$81k}#T?P>AFHS9=jq+saFCkBS>tQj4@M;BfL*RkIaFtM zE4yYcw=U|j{Aj+6LAa!KAA)wPvw?7H5|K!x2wdx3we_2Js!E{>^2?p1vt(IWG9&V+ z=_Xv&kF%&9>r>Iock>=z#!t)+XA~{xCPHaAaX*TAV2$)JYh#M56K`dN6%IuX;&m$+i>j9S^p$KR6@ z)norjOb|%nv>ld>xW>ET-i(3zWinuKVsA=7l0GU1!?;%bzjp@||KALh0t|1N85S(DPnVx*f3eCksr5sQ<-QR<*SG zZ@ZgqoPi9865{a8lG;KG^VEl?x_AKnA~K&DI$9v&L!798j(T_4;blmTl5Ytu2suwOIC=dlI?iL=$6;+lk8*gH@9~8@9uMPifhc$ zWx>8P@Y$t#p_23_5gFSwA{f-xK7!r=LPiO=w{cWg04+AQm>LrcI$Ugl&LXSXNM3&{ zl1nCc=Lajrm$xp7uS&Rv*kbxSaU7h) z@y2xDU;Z&<)z;Niy9`{l7oZbn{1>Yx0kBuJx3qKle~D|NEpX}t*ayBw>OSt-T(6yL zOb~^Xh}uEdBU`>`Sd7>_t4z5YIkkbzuz8Wv9l6_Twbhijf-s9fHa!BF@GTsIrxBqy z`*WSq`_J7P+V>-mQ{&;`ibyt$SUujGxIs7s&*$YyZ_2(qM+lDU_KU&@9eyiK!?7hC z;HbvKpOH8DJd_+MG|A)}(X5gk3OmsZsX-LHpJ}}*uYwZP)=cYo`p1zofuq6?&z*J# z;E&s4-6X0OE~rk~x1dHKSgqKfD6gyckSb03@+9Ud6}HXiwLEL_5e;}DKAACC>n-ub z3n4~3$QX|mqT zfXHR>inT@!t59l1?kF#5Q&17@&3t^tw(c=#201k&&5u%U5npxBki+v}GfD_`p-Zgn z_mtx5n|VgmasOJbdt2GeJ!?JD|)-qSiX3<8#?c^mpgA#Ws)SyViv_qppikEkg zI#n3lwy(scX|~<~7tWqZ!#(T=G#_f!yPzE|AKewQHhw%jgv#Wm!ifI1w>+S{GM>PHmd| z{0F3MEbacgyZ=8*lag+r+rWTDfK&@-2$Kjb8cU05M+PLRgV3pqag38~G)P&wsa#~* zzaBdWEDHz<2*x*h=q?k&$VL!cylN*GCAN*)@<$sTYINqPuiBR()~hF3 z2W>9$;8}_7#?=XKuFYkYb{)nwT*cle9VcxaIW>zwg{6{Al0DTC6y19Vt$Z3Tn#3AY z^-0NFFkZ9Yx>J(Vc1mvIZI2YK4=e_nOJct!E)`lhNarxtx<3mG%|IuN3li0roJu)! z&0uGS?2@U^r?k|3yOpSpU*#GNS<21x&Fok1V`QYDZ@ScKGVBVcn?-w;%P=0Q4!{oe z8a?c%b?;Eney9Z)#2?)b4?vG^yiQElo^{yTy@$@K_b1Wc6h@!U;FMfYVovqL>6N$N zUr|}RcbNS;g+_vJgpFOGU#zM)V@*x1O6Z(-VKA>G`$M)tQ_?uUKDW7CH*BFfEj#7v zN_B)5SC>VTF%dH?7p5~^aG<$)cy28K=TiORI%A=eDrXeAEY(RL%&imr=+LHDka=f| zJ>7VVf@=>2EmDb5x&#w*hj+3IK)5+etQ?mp&E1n3L)+J`cS zUKr9h1N~vj8O8}eH{pG8l%1!hzc~|Tvzs^2*cCMDk;FB6yd$%71S^osl6UPvLvdOS zNs|kADDy7W+hP|^uoi>_9hOysH|mWW%s7nJBkAXqxzdxj;wf+iH!YoZ9qA+QVu}); zXA$C-kfX!d=xpv7EMaS$8lJm5AWtlkc?=(6YFRt)3~KI?OeBav`y!`dokyhj07Q9#PR z13ZPqaX+BeQ*1I&^FkmJbsP)*knqQoxCW~o1h1LJ33$y!2|kb~djOMpjd<1??ePxu z^_P2t<0EiG_N1b`rE~1((M9&3!r^4^FXQ@RIRw~ilac|-k#GTJ zo%`M*fxL~nJQg-1<^}oAshU3=8!lcoRe~2CD)VY1h0a&L+*g}-m)>{#9R58YSbcD& zuB5J2rz^|xb2plUK$>Jr&AIFP5IVRM!oW6i2R%Y^M2s}#GhhR*)Tn zh$bL=!2PcjAoZ0c2vHnvaxbJW6dZrIr7x=w4>Wf>C4lr2OA}3VFe)IakJ}8+CajgJ zE?NvUcdsTO>KcD92gJaIxx6n*zQie6d7yrRtMi;xdO7m<<(=qK1(zF}QpNf2VbPyX z$_MX(f$1!XsWfi~8`!1y&OcesaA=g8e!htQE=OONrOi>g_Ga~5-o4_Q(W#|9Z9Vp` zdGN2YBz$d^TVMAyJIV?kr+_{z_*`FSpLC-zWPAnSkSpwqF2KZYv5Rfn!a{n%ngRp1AW(@RbX%Zmuv~tSs4DmySi`y8wDK8a1GiU5fE&o_sdEcDiBBp_@Uv z>39svl1c$z7st%+x6ZV~v-!aG%uz}RKj>)`86OPp$%k#~{yg-k?TcQNtI4e@;DK>> zR}1^a+ELo`(Abai-~>EXgeo~(diEOi0&w*A=Q^>>&aI-waCpkEw3@p^*4DfvGeWS< z1E3=1mZFrMJ8q>83}2e6E>*Gbm?kFJha&mE*R3bt4>;*{q@)&Gv*hSK*vvO)D;}7I z1cHex%=TyEVR9Jk6maQE#A4MJ{>rK-oQW!P#WWi-kVwUXTAcd>nht%5QhTlP<(^rC zAUS9*+WGx~B=BpL5wM3gXVP>1{#3R>`g_ZSs>w}x81_x?z{`RQ(a$d-MutHoxkNj1 zIwoI(*-Jiy6qn8MjX1N_EXC)w1g3&r*acCf%-J&X@0q6YvPdsNVmZadQW=FRcNY?e zFf7UHx89NXN>xBEx7mmVRPi6;ev`%nMtXi2@P++}*lxXkgE#IaY@<)u^@(A;Mt%~* zDn#PQKnsYXZ<|w_8>ieA2PICOn?(XQ5LW38Jw?I7tBJC_L`DqWy2u<)9$Go$)L<5K zTzLL|ra1uHo7(ssVS+FQFT8XwP*+b1^A?yC;uR`oDi^!bKV8K@JB7n9o@NUx10kWi zMW8NPbp|njN4)gVTzBsy`EGJgkaKUj$j8c|b&oE#F#?!W8o~QGq>^RN&b?)?zT~s9 zd?0pgq-(BC?vT~BmSNK_rx{Y!vC^P%O&#!el4L@;Z54c^-ux!VE(7)%+@R=csvM>aR&iZ}*lX1y#dTO2%hFB5OE zUoMT+wnO>~`V#u+0y6q+0{{Ubf(v5s3-q^b`@(tq1z}VO8cHo@%Y$;dH;SWx0nP54 zK*Q4ux6Zv$P)nEnv$3%NZppVdW~K7EZ~_YL48q0RaPAc|1Cw4f0`eX^S03+E$#F%o z&RZ>eg}0KWXJ-nous80c7Kup3rlt+oN<%IfhSOxBcy=fA#zD4&*DJ}wPI(9XZ%T&v z$hSD_x!cW!k`y@k(kj`=B|Jh!x%lv2+^g!{aVR7Hu!0Vu{d;}LMi!<5Z z);_b4L$iNUYn;Xp?L0MOsr^NIhmQP`2ki(2+U5Ogdn&riW2u9cz2~W*y z8=j9^i^;@Z#SqpP$_F}0cbo)qP@4-UsRq~SlIv(UBo!Z;z<Ze6sr~tNm$ua>l@*2V`X^B_txGA|xYZ z3U;?GKDZB6B)}+RhZ{JxX@d^6k7ajCX(TjCo#L{-x9S_hHhJdpy&=XG)itfHc#r7t z+pc)A5V3f%C*|n8OVJvOPJnr5x7V>vs0U%44QusIA8e8}6$c~4?aCE?dd@xQLHc}B zA@}Gs_L0jYcj!;((@A+uh;#YwIz1i_v9k*!4XC8r`J#->mP-9taJ++yi5QV08*9#6 z+GdkG;$P53u1z$tB<4oBlinr=T(=k8rNo3DE*6>~o)b#*dug_o4^%z(pWnVkO@M-{ z{xD%L*!X6p5u7s-J%0jSG+yDwoG1D%I?0PAA%-FDygaY}qv!t3y!z*g-`e9vBQb@y ztf~TBh{Y2=ZPSR{PoX(S`OTI|B6;x7i`hkppf zshb)Vza2$Rg|#p*f0l-vUhEiyrZA z+;{eIb~~%;&?|IJk~PbeN%0gHkdw@yb;fq6O0Hp9JYoR1q=+&%j$& z4xOe~33_{dAQ&SH0<(bf$w1N-)5)K0G{A9UPc-CdCZ@5WxR7rlY}#;)Ocg?AG+2As zs8NheB_<$^+_1X8;ziU$$A@sIffgx+=czk;1DWcI>X7_{xBa!~-l~4msBbKZy&7-g zp0?MjMwK0pC(Ax`!f5cJ@*9k}S@K|1yr*8n85@g>&)SVhqnRxPj*i(Nv~a1>@+nS? zd5?#kZ7L;aLj}ATJhluTRxb7ilPhUDi}ozo40Pa2qg{1;q@QYJbRl?he)5^ppj%FRRY{JM#j4J}pK{^q!^6%p7pYC{rOLev zM?LOy+e!t>M{tY;UFS#0o!6NDbJ|hT~KG-mp zS2lCEO+M$(O#(sgQ5UNyK84>>g2N`dAfd2Y8j_6)Yd?Mm`GpP9YvGniO5fxNet_xn zJRF&*%E+wFNa6`|pUpJ-e~~)$kGBbE%F52*6x=FhnQoQ5-7neo(}jg;fHLoFKSv4y zQeop04XbKf6y$zFQqf&9zoDXRvBqykr(?Qf6H9?{*T)DBawfFNNg}^1M7@JBsCa>K zP+m9=9B_U|_6u%GISdB9KPSP$$->0Z-o?=xz)v_}bBwK7=3n%mx*y?-IL<$b8Ajo> zv&Lqr?|J#hK>VYOdRQXRwdw*XFiwil!cwOCLH z5(*$ht)91%K#mOuM}`Dvct)-@Alx9sk?0kp@JjGpp}>CvGinlx&gu02aO%Gw>1Ez{ zFVQE>im(M#{yLoIc-owryz>8eX8De#%I7~f^EOfXogjrkcc3E(4k{D*QmTz%hXg7k zC@Ux-sNoyS_b=jLvQTO9JA;+XboeNU3FD6u-z!1L0b`gcbIL!Eu%Ji4M8C<7S%_)& zHAS%tS^lWlrkjLnqcW5d0;z;7wC z3kSHptiey(E zoqB3;4q9i^a;qfh4!#*g{?Xl{kwmlju?^A9IeaTCDV9j9jI|IGax81uO-0?ZlafO$ zbdUdJvG(}p?8qxG{RmUrp0pTa$+Y2XH?7Wxi62{`(v zVj3o`%;jn!HAf0uRJuxZq9?4d)k+gp4paNq+T|6IfR-A^NZh8;6bs-I55zIsy_^NSqIPk-#oCyXE1z1VgmKY*Tm&Zxk>m-y)2grRGX1qf42;M zDvwB~`HXMJ^tb$MPCiRfGqa#N%^Cr(jnGyb8e@*UWE32XGDA_;g|e1;U(*J3s;^zR zets`1`M~j+R()%bBy{h7ZFe69t+#d9a9uftWnPxj^AI3HN-LSDfZK=E zzu$pZFUu{0X$b$F*QS`ozd^dFkF0^b`U_VlgPxh(j(Wg--06o6zLobtC?+&SCO!#f z46nGkN03*nMc@wK0E~+*NMVy6g0^b*(63UllPT^%sY(geB(1%zwg zp^;v3Tyr~GI=#mxAS%vCq^DeeU6Me@TM9EZb!-e{cZdvK(rh z8mBL0uJ~hXS;^L`a+v8zIdmhb30I^fN%s{WFZLAO1?iwhMG)U>4D6bH>AUU(30NuC z#MIZWtDwv5f8zHqQgv5Tpp#1gHsx~v3nwSxWbbNc`rjz>Z>`ta>T)(~rkH-~how^M z2JFH*BjC0~uD?oLaAu43v|8JzQktV4Vx^M%-DAvvh` zC4wY?gn&gsVxnC)eK-G>h2cOHL(hwLbgYX@#7ks?j>62GmRL_{sMN=%o8pKU5tWrz zW28S~-A25Jub)sKV2PD!Y@*W#e@N<5O0EW#s*>0qs3yhJp*1Tf4YpRsosu1&*F-d7DL+jc&%4I%xysEL*&LO*o)X!Ke5i7|_dwGU zS3_{>rp2RO%N+uM7SK?!I@%pnWiL$^TVsx}tW24v$1ziCWw}7FsVJ?~R&!S~o9MVI ziP=lBsqQdGwTc!Qb8*prD_^MOzRY-hHk<-?#Unzm zHfA3CO0CfajYpmIhleeq+=Aw^8`)g`rzF^U+;LhY=W_y}=$@Ry9+shcIxRD|KC0x}6JY_8d0T%~G$q!=$7mAoz~msgHCAJg`*Z z++N9wc#Z(c3X*eU(fFQGK|H>nE_hI6;}`s7ST!Uiuo9jJsZarxo573p{ z2BWTojObMU4`uHd9{INJi*~1zbl95+qQ45z1BW=&-t8t z&paQh>eHxto>Alfju$_;BcUBfHT&guHo%iLuXWDk~QB&Fd*YpvKa{`E`(Y45J#jd z`{tzY`gbOL9>{Z$9Hq!Mim$#^QQs821u$G2KY`&XULmNt27tZO1jJB01yN~@b__HZBvQU2Jw>@QO_OizkFxF5+*YCA-#8=dHfSlJz}mwZ7{9pxLG1c#f<`Rp zVqyKiI!J{|I{zhtH%p3Dud}+O$!B@0R%Xk}5Q*v?{-lpDABLx|aAy+_V_@Z~=E}y4 zJbm)3>o}cHC|5>6VDnvJC)I>O98WqSn2E{lAj8Y_VFQn^+xuIMzvsm(tvpa1{0yW_ zWXw>Z-vNm!Ww9nF*O<{&x<5V~J6cn{p8~cVm6F|}x3?}BbHbclt0iI%JU079{8xAy=>j=<2mFJz5n!aU8a(LIz z!EE1Fogk54DVO6B;^_Fj5ktE8CG?hY{^VS4oLZODvPBVdC9ZBGXdC$-E}=2KsSh0k zRK^(Ka;37|v&t!V19mf38#a4*(&urf~nPvXwS)mbNt${MYsPA2L#-+Nl%LBFbl_TFiZ&?<#%(LkPQR z9QNpejjjVgV#konLKt6GFs-p85$p!4fJMSQJ+^5|c9omAfM#l_nOQHzg7MeyEJmAI zI_Dxk;ZL|p=E80#HyVuPv9PhZ-S>5;i7YSO$2Bjt&zDQR4{&`vU)!xVe=G-WKtBAC zAhs?xU&L-E`$klhZY%h+l`t|HXcj6uQ?3#JmW00m62ch*JF&gG{_g@^MSPMPy{(@; z0{;0RL!i;=VZEs6i0G(GR5fy2Vd3mEAaam^G(XXkOL>^Y31rN}*A9^oV(3o8Hx8kc zi+1rC$<1LIc6u5yBpsCVYOB~sFz8@^QAk^CrU9v1ps8z;y36&CYc z9VzQDNftH3ahb--9H^|GqdqJDxMFUeI_7n8x6@al#ko6%delFLj3%Y=nA$-vgRwcR zo8d?sOvj?Rn5pr?l4-p_ll&SI5>hsHrD=MpX}YOt`l)&Flm2>nUfK&6x9wL}=Hir| zo-HOgZXpiy*(Ymeaqk~gp3PyehN(75MW#!-k$^@OVG%mC5yOjpkz)RL8IHy3GR;1f z#-L2vq&JUb22g6W!EC=-l%~`(jb`Nuw9XtRfJZSmUhH*8G7ULa)Yrsh%UDxN6IUWB zy<7|tr^au^*x6vVl{TB-g$0r=k7z3fIkV_qe~dn4oQ9PvQEr5G@fPniqvD3?>e+7~ zj(Ne%m7A`sR~1=54fL?N-ZU}0qnw(@QiUrAY71F*R1M1VcEIOuqbMeO7>IIYNzxiT z>ijlMnqs;_!S#!uj1#}1C1lbf8eJloY7cs#o7P6SKwc^gk{Pzq>wC!vVfK!BLa#Q- zNmTRZYMb&WUgr%SM;}79yrTTE{-_{yXiiL2>Q7=_rAd!LUlX!q_JO8KdP_^LrBda|m$+=W+>={r zIm9yw84``f2@>nhU{`|nq^l*G-$dDjd7BESM64?s@cLnE^qMuvRUzB*h+_RvZDK4Y z+(?+&#cAl9g?MuBNYfWw!^lRTP~lqUD0LEX(|@in$^voIKz_t?{r(A8uMv&!pPztd z)GJGFR%!kO2XoGgCKW0v*$+phE9X>&+@$4wa@QJU(_Bk2@MEQkH`f$p8-12j!ml{t zT~yeR%6vLiHqcuPETl10neqAMbdKjN_Ue*=0CHVOOVOc-I?54~coC&wHBkoKnik`# zHC(=CB=lrio{tR?k~q^phlzO#1M_Gs>bKx<8U7p`jeKuS@^o_8+8fUb5(5EjeB&^l zFp@(+aOQ7X>D@1{27u0ML^gg@y1G}!H*M~~O~o6?i5;hm{!I?aI8JyCflIcj7J=vP zfX&kRZb_tG&bM@z26kOoBk5}mQNI+gKfDZxkXE^h@n>Rygq&3A6zksABN=o^CyZ4j z28_1UkW_jxfE>ahe0$^(z}lV5z`htdF^t%dIJsuOUNSFmN!UAz#tWCreQYV=$1dzc zN}z(TRkrGJTgvt!P-IahfXBQ=?yDS?4qVpjSz=0TUk%EWLFYk6Y?Q(MYO8FD2Jb%K zqICzMnYI>R|ApTXO!o9GQTNOu(D@o^!Rc|FFUQDDU1kQ$?P1k?H_iI+sfX1j7Vk&y zc6#pivHjORu-xIyT;s~}sjj)gg+>u4s~JS@`Q%x zvfVeG{(v9eWYH$l>gQ@aS`Q!|o|{#}B|CH8s*>*sGBvW3wv?{Vv9TX*oHx$m zvV6QTebH*k(@C~bH8XO8eWrW{n=?UCA44)r&y$<>zhFzdKtsIF)IFn$c5)xysH&^d zf~GgK%@OIw@vD&tsvm)pnI|6{nZ1kSry0}VbSScT%f6Z%DMc7|WfElwO5R^sz53=Te=QaOsXGW>4 zE3GLbe+Iw*K?GT!5eeF#Rc&kc4r*$m%+^vjw?H%3;V;Fr`4d7CE7P>x9tJnTz8kq~ z<#XhGH{V5{UkL>mV}CmFD}Xy`mH62<6`eYKnUUdj@%)s@#pd_+eropx=-CqR3~?cB z&lV6$h#RJkWDur~R!h)_tbl9~UL%sw_q|;2C*OA9KtpjsOhSL*T~YBIVNf%B$M|-p zCbPagVP$qd%8!0T!j=&OVZui@4j75pDYD#&Kq+imC-g*oqo4gOkoWS&d-THwA^p^$ z92j`JSpYfvKq1vZp8}H-^`zPW3JeeFQTrP5{4xLSA^=pVj4}IK(lrGsC@A7EAd(40 zG2B?SJ`!q{My5GMQCVvLEo7&}q=-v$dg8PwUPWVp5(YXf?zXM1l(NVYCE+>IMaPJ2 zjN<^kij71a5nkHZot4%W(wxvC&2H7=Aw0t1z$G+EC>($_kSN7HHq06SSa#-X-&Os| z{7QAB!!xj1Pwx{+fuX|`QO04zC6c($OI5XG>hUztMmdJRVlBhsvPesOe2xTPbQ82nM29}lywbxHR+Y9 zo4S>f#KB)E3U?Vg4$M9)TkWS#((|mQ^YM6V8y{KmuG98$JG>B6;s%u?b3f6Axtp}1q2OH&=^MiX z>!k7o$)^6hHv}1w36)llb>WywjAqiWutP-}iIwj|LtN4zX?l+AKh$I$X>xYw$@b_c zq4RSjQYe+A%jxG5bF#*XSS`nmC_zMABJ%}g77~?x#k990_Chn-6hwULjOw zh>Y_Y!^q?Kf4M@Vk$S7Tf##O0oQtjSicZSHDR`KA|Kd5=`PQVx3>zrERoHDugW^Xtaj}b1xo&3dS+K-=#Z>%AY$+5 zK2EV9*lC?!M7#QY?5n}G(CFG&t@1*x2<(0h2@5oUVix=iQpmFhXyS@>uhxZV`PNm3 z8xq3rmTp`kK-oTiL{A|Ry0kxj$<^TV$R_LZ2teg?0TKWS!Ltd`mw3~(Bf!663PUI< z4>G^6+Tur~o9E5Widc9#U?s;DI-0IYED(~5ehBNO(b9dyT%SrRsnBk}mS}AZq(}AQ zXz%TxA&muf&1kP8Q}$f zjC>)aYYTIh@B7TL;yT?PxhH4tp^8$JbtRM>^7wb6hmVw3EIn|zcnq|${3rO3|HhF1 zr8n8Ax(+0K07dg5C1$NxV|}Lr{)l~@wITQ!CP}FYRT(^!7fc8iv1$ytTC^OyJ`*5! za+PPt$;-~!^#lZzvNH;SPhs3k-~c7wmb-h@d}^}VmwnGK!lHJaJufykH=KO&9^ITC z54*cQPAhKKFgc&df_Q|V+8PG%+pqL^Qk=gRehn^f`f;thi z;$!2dXmZ5_tApMVe@L}C1kf`(`u7V@E>E2M4ZsnMx(s^S%ivcKrLz}93`beMG%!(VmA zv_VU=EeGZHxb_%>$7*)1%Q~w$O3*U}QPai8aXk{DKfe6cd$4P0kTGwWXu$ixeNaNb zuU8^Oyg-@b%9zU$9ts|lH!S`rDxBp)H6eCqINsjs8 z;D7Zc5fl`zb_;=5d-SUS!aNB^ zUSDZ}I>p345UVo0r^_!ngWogIYpmd2TNkfH^nhEB+3^9EG+|Mq22jDzUA_8Fb<9FH zsmi#gxT+%m(4R(6-MbC?+**l1_iICq#Erizzyxk=hfNnj%ao#1Fv_?T?F z^yuUyqLVSxb{5m^nPA_asBSwY&F~;=B%KoTPOU#Quijl+LiyZ6nk&~qVJ_9<7!?bX zfk1F04A6nGVbk5WM*5wd0rA3dQHJfJvctnCpI;ncnk@>~cVrUrs>WhyY~?;Uzciun zNA1LiS*po?31P@RjQw6tfXwFyQ^5nn1lq#)%w4mDO@kY$n10_K6~}U^cI{9F7cH># z`S~ME>|2YG>|ByaqOU9I-B;!@2zqcZ`NLR)>~Wjw7c=eBW00~wKV?~z1tNn~S+oVx z(~wb!=ZImo=G?(>5aTWDfN*J;QJZ&g*koLNE3orN)ivw`G@KnnTWT zuBiwfb1}9i{HPxnb0QtT>9~67y3p2R+mf3DrkfwR`+hWKSMw@Wys>mhtWYE`oX#Nr zI45Z0>6^emZ~;#!-Uq>1dj(+KoA4Ce>YO z0jR8?l;2ZeisKKzO<#&+RD1(Tl$i-=Bk6(>A^22J;ahr{cOrW=Fev=0_L?h|w2F0) z^U#mgpbcf46BKiW3TZc6hklmZFXkQ^_S*6j*oW3$InjBcx<)B>H}d-%LFbuf=hrDPW1NEiXV_gK3r8a$ z(&&Hc@?@%RDq#T`cdU@q60BeQVknXQ1qrAHtxNez&HY7{l=yR$;cb$Q{ex?;+}Q5E zPaL%aBX1yG7e^QS{DgSQbSm!&fR6XY@9DexWUB@UaVmwg>jBqehF6zYH_xFd5YT_w zO!j5)s`Zm%xu+2~=c^X%Qj&wzU_2nkn0k~xAa=TcYIJJSKF;7L!36#997Y%>?H{>6 z)?oq(=5|d&5JD6}K>Mj+k_8*K!9u#=1CCU$csJy00x-bJTS~Wn3?i?YEcJv!vDTL0 zhiZUviBr;F`-4Q@-f$ZbRrU-N1b}QP)DK-0_-hi(mMQ_?3YPu zDLvdSO5wuuGc}m#a($i7OZt^UowA(4JJFuW#lTR!jKRZ3>r6c)r}a`lY7tr7+@M1f zHw$b61Xy8pjKs%kpggA4IzH%}RAUxx%Zi6(reN&Tl&mQU$Ky};CLF0tI+J_JIS|X~ zpg=}h^v{_=aapx>mQ?PW*Q?*3Nv(mois(#YpO6|sew_cSz*qhN=n;a1;p zAvrR3@<{Ropaz368@7j0I4R2C7^|`g2Ycg?!SD9c*dws1abNNKzZ2#Gx%qyh5$K zLGU2oz)e0HftZ0s4v679WWKo`(pG=jgO=L#G)AFT&F!WhuQP_6zg&oTv!=0YM@E)m*v%)m*`XwCv>(!PMN8?JmU~@c=?) z29g{CUou~md3rX))EPg-wjl?v51_^cbv8Z-Lnq)+rYhb;a1|r3}0|Zo3T|~5pwEG=>a327DG83LZnrM{a%6>sJ@lv|3M5x zfG?DEe2{c(JET-rF$paW`bM`iMW!W(2jdM;>wLWYNnCb$`>9-I(iv6~)XZ?ce;=ob zr=fv!!1|^r`y>1c{oFg4kaTbql#fRmeeZ`VB5Byw4-xAQokk%%w(j^?!ampt^#IrS zsbRCC_!{vbEo6;K83;9m3;1nXkq1jD%ThvX1cP+K9~_k)SF9fd7(I8w{hJQHp2T6E5O zDccr31)Ii)|$kllOP%095Bp1d>@l2Q|F^nn*Ks4%`i164Q2 zY53){$4RHwW1bNa0jF*#<60}IBwkmcVKcR9*lq@i2wNqW%b&4bAsPevn&$)123-fQfnFe(#S%OyjS8c#9}Rr@6aW~7S@oy%Lqr(UXY*wc z-@Tegs&witm+o1*ARC3Altot0~TA z&NZ$fT^IyF>J;JT7Bl(7T)-<~lPw=;J~F)j%?`RS-`%Gkcx=Of8ZrNbvh#1fw!d8a zg=#$ZK=_-lnN*T-wv9%UgReM#Eo7Y_p?#m7V1SXBEH)WyoDmtRes)29Lz8oHYx~kS z92}rVB#w^0J~%8BjF3<-3@iytC4+@;Bu-<8Rts8%o)N+NO2 zA4SNb%9zh(;f`A{r{HEXRKy!aD!K}#q%VW@fJKQKcN>JKZ9}e(MB7F2bHQm&SDEn4 zQl=#(S7Nv{H)OfMEHY(UkJF~kpP_8`@>sNqh|Te=`cpf7Sq5y6tDD4r=htOo1z6A5 zj4UtrrD@y=UUVEnWJlGZdTY;^Q)jOFWv7SK+j7>sRQ(b8>2$nCR6;r%!PkfN!}Z7!84-nS?Z!NBw_%087~?KSz%SMeQ{4^ zw=o>J)?O>t>hk@A7xR7sVzlEvN0mO)BVS&mk76E2y3|(RQtsR=HCMrG!*>gLJY!28 z^TKqlWPwWkh`z#bz?C_I<-1#xSj*sWfO4>?ndV7{Xn4F)!ss~Wj>#;Ro$cyyeBJMiXa}k5YGa2~t^Giay1FDCEssUSS)?d4Hl?rGF zPEAy4<=pKyUSFH>n368X18&E(@^smFn1B58$X~0l)OFX^w-b@&CVZ<{6_&^+xYqNy z)QpS2K)l$K{g&UCS>~h^+>Wok{ThGM%5SOiiA}J*QsudOe{Q%t;aW(cHhtl%rs6vT z+iG~B%C*9CAu?yhO4u|l9h23swGy4o2^Q&wl+Wr*<)Z~-O;F=*;KPNpRNA8o68SjS z>@MyTDYnp@#1}KA<&OtfXP5k~9e3%~e*g={D}dQ|-5-sfX=_nmj7e`wzo=6{CsjPK z&7;6fQ8O?Pqf-C}CQe!{Fh1MAVw(L5nM6GdG#>q40WRXa_$#M$pmRoudCCt3%u~$7 z<6!-E1M9^>K7Gbwthry$&RpunmlKK!S;2=gp1LGq!Ju>kSB%_?=G5@qNX)vEFitl_ z8E?^LLwe~!CzOPHTbX^u@y(bAhWnL81Z`jCL}Rsi^b&%)ZI_mT zmB#901faOvzVIwjv5#acq9y>%CydI$)(QM!1#q%3J4+->`H0=I0^GJVdP2>iqI+*3 zBTadWvv52^FTK&8z%y0kzZ;);^>|5IN)~m&b;uN>%%w=be_@X_!YmTyiz~qcIZT-Q zk@|vQuOJ~aG8g0DoG=$AZSw{8)A!F@RVd;;mA-<+c~a@-7ih^cTBUBVjcdCG>GQzD^=$D*V1k zHnj5TDgRCPXRrIO*LV0w5G)Na2EGED<^Kd8_dh`Ze+8Iis;>X50{YZp9Tu#!5sWY& zP}PDL{25YRMiT~MfdVTa16HcpPQ6;gyzE?uRb=;pRoE1bSII7GrfD{kj8h)X#QPNU zbdt|ap5;^@oNz!u!t|UO<2Aw4?e%aW@$q(99Qp;krer500!~G`yd`Ic2?b5%i1Gkr z)lbM5B>R&5Ga(V2oV_nq3C0qAh$3VWV`J)yH-yEzhdz)17H_*CL?h&uy>i81a z6lrT)LW4VlDp7cDvC%54YMtXPY5ku$?L1RT;Wy>V_KWTQP`Lrh74lb>WTr>Ioyb^$UX{ovuRiJQdPWgl(!$8pTLE2EQZV z!rdAtv^qa3*$B%$$v9=t3FtRN{7p@s&S>{>?>I%1kGZcJesGaJ!fq4%YeFLKuqvu_XBT5j~3NCab^d=mw~LMay1RGY}&GrQePmv@Fpym!V#72niGV>lWZ zX*=6>d=4w~FGuMuwJ_%nGuX+=3hPf5fzq|g*Mu&~goUXP7iWE?B%Yu)8_Qhk@|kM1 zrl|lo;}dkBg1gXi^^Y%EhzM{bTExwHPfsYcZe z1=K-z)lEARG$`@9pac`EDwK@6<)$ z=xA!{tkXp&6Az!S@2jlvr1@}x$1haU@ack}h#)M)3aCW$zC4RE&AFU55t+0`bA<~{ z=6><||)fXtTfhx^e*c6F*G4Tx%mC8-uh%zLEZ+wYC}&GtOhHyOk-ElPY-7rR|FN(mcd|W-dh7& z#ITZs0yAmg{`G+1!qLK9KaozswJY{R&6eB|=_$-MIu`Sg!vgCGU5!?9)Qsc!$5pR* zX;L!om%}-|j!)>nUSlgKfeHw~(=+%F+4p}zdH-kh`>zh32~ZIJ3jrTFvcF|HDszf4a5S*us~WfsrlnswLJQ#Ky%SN2dvm|2Fg0ehklHbeTIupMg<%q+Q_E)Y*d zgbd^(WOsqB1pZ|H=AKBP{>B7E0hlMKC)f+9F5(dyIy^eEyT(>V4;6*G;8n**+KFQO@4qNILbs7sg^f_u zl+^pfLd@I9c8yep?ApvY&5~W@G&oE=JeSqoZmrskTCyDP>N3?xd{(ZCD*I|e>gBY# zZSB-Ok`q`JRik8t=rB|TvLCT${SXJxe6$zjlPAO#vnQTvseFEha_gTnYGIBT9l{s$M4;<84vjI|)j&)3Z6TM+8 ze?{9LvL-4q@}k3+g-rB|=Hz;;G|ZiedWdj94@!p1Nsg^z$;z5YOQap}5H+(JReVp! z%=TQXxrw$pa9N$VE2}#%wR&{4TxYV01f%M3d;`I*sL1`S2|r^fAn;N5aV=IJy)~?d zJ$Z-C-(zf*(gNF$q7u@@hINp5(@?u8PS7Ct^!9MiCgB=(?{^)KC^j{Pjy7mL4e19j znfjAR!gPs3b+=!UsP@>R&Aeu~e|tp#c*mD3S*Gv47M6aIcbxXYto7j6cecDO%vLy| zvXPQVwerKu&Fy~Uw{age)u@TnS$CXAlQr@miMIAt+s#B1?Dn_pZBw^y9FGrKB|>e6 zAOT#nd+zZQcac5(tz0+2BT|cW$6!VBDZ-%er4aMOgHLEkb*e=QAufSd&5!Z0{NQqK zevl0d(eXo{$Pk;1sVhFZZNAz-?CBi~WP923eeTNb-XF!in;a5j+lunpMP1IZ@h?>u zHVvXelse*h={TtLm^Bli(eZsJtAlakVRMu0{4L zM8~vMb4L{v(w>>uZPm(75T#e}s2o8gbsN3%E_^hY7niqAq4#$4Wqy>}dd5C+A!S+? zKeQasb>frkYum)V-2dPq-m-*xGgIFn><(#bRO}ZJo$Vp*Xv)ML_7P??`VJnv7elt-M4N<`eUAJ{2=>#wC2Xm3EF~alqcs&R|vgz>t^o2B7=yPF$`%f2(}@ zRn3ti_95!cc)-@3Vg;|1h8aEzwh%;7L~ET`sxJ1ds2y4f z?|xX#=d8T?$*Ks4EPD3{0H=xf7K7bwh6FN9ngjRB;dRM#=snrm>UDdUo$dRTKK#D~ zz9P0dAr|r=w&&4b96aHnCLprVI`G-4(2+8bI>_1S(9wQ_Aq52CQ@Bf9)olgvBXtnA zkf$Jbkh<$!g+x$qC_8+o=!NY~(ATtAqNj4#8fb4JPC+$RrrxTHXm82e@#%#!RrU@$ zrR42XLBZQigA&q~tkV>g4W=kR%{vh1MN@)$*+F9BW#X+rW8saPt;{n@7pdGkYOK?+ zZ^T%q*_`gYIXfv+xKgxE)&*-X^9WI)raV{^Q@r*u}Q?gq=j0pI60>HfNriKhhaG-5ABRXJ3UMfUX9q)hcH73P##(Q}* zHj;3BhO#-~MP050Kfk5vb#J~#5M#BNY8JWa^y;rTL!s;jusgAgb92YN-j{6YPc#5l zvF1CrsgIwb0u3V{LX_wki(o=fc{*!&ix<-(p?*<$@PdIAKgv!Jb?aqEr9F$B9j0V% zGG|15lm>hQTfK3fb<_}wgUkO8_>ScnjAXfM(p$2UHP<#$T!631*ul(%^+V@rVuI45 z-OvgBfL_bGh5AUuDNrNid1BYJ8cU`)cOfW)2rS=bH`A$+>#j=UZX~LMN~7GI+j!r^ zlg&4I`+V_S(a6+@$`k+ zfqpc$DK`3I3{jY2P<@9@n!}+53f~1opG$^f4HDWdQ#7M!gS!ih(L~b_fbyveg=wog zgMcc<<|T&B3Jdwu7{`(vKR!ps@c>tGU4&2|PGY7nDoH$hvxtsScgVl%r+9>_=M!kM zCSmS6VLw#YDSX_!&(BiZOu#$>tZRIJ=B_kCa=Y6NAi$1GI7u99c3oI@9sxRHEx&UT z14peb5?i%qo}f-r)hhxUCSs|9Wn%4;#F3c%Cf3=@cF{>7Zql6Z5HM}k9{s)f6gu87 zk%!ZRmHdX}TrFdp&&Dn8SFbE?+~^;chPjW=^@@n(>u<|{0{a0nyrv{DR5l^LL zp={WHOUwNyQTdk#t_r$uk~ffY3!hU+lU=CaPCOM>`GoKr6$%{^?Ca?i727ZaHEg>> zed%t=XCYfOoAy#|9}t_i!LiGCGkDF>t`&i0oHE9Hxc+$RvFWtI^L(1U>HFOtPOspq zDI$~-RfW1#U9~pPP-wsu6B0%eJ&wLC_Zu6@+RT%uP9H3+g!XI>IDHWTNg;9wF^m-Y z;`NUU@jsG(j*Y30+(Cr|b%)5F_{9|ZFgIqdF-V=ywwj_R84B@DrBP6%v6KoUoMIn? zbP$@7`RK96PwG3YSb4S&;4;ce4%LF|kJX#h$TfThc)=#Rd%JLu=afvuA!9VP{z>DGj-;o87uKw^h$w6GYz@;L})-;L*tvhnNcJx zUEHP~=B8vPmGqys2%GA6*FY!G64mwlBYy|KulO*N2hTcyHdfl5VkO1h&@jK-4n7~e}Zhv zjqimVv0-Q{(VfZj+fnzM|8LI+lm-i4I&=46*@#TKoIyW9Zr3BU=a6&KdR?PLZ$Vc>CJe;wuW=!zpOEPO7e|AK=2g+GOzdlN_K4 ztuaWb)L*}_FICet9?j0grDyPk1z;G1TV9;`BP7%Hcb*L|8E>!i5gXQox*aWhS(UcE zw2mElyHDulQ}GKA;}gNR1wN#Zn2_yZ>kD)qIwECGBU1;myUZ&tFiyGHJ!@lM0Zz=C zN#o0BS-hKLBmNmbsoG8SgLn(?v&s9{zbg)M@UV*<0z=0Xu+aG@oc;gE0{^8fzFQyJ`?mY|*?BL`r zgq*oaYCX4P(>;gh7tqc#mk=1(;~Rsl|&>iZ1rUaNDn{* zG#O8aGkP>=QvGuH=4O*@)n=)*-~e^$23yj7NBN zo9K)zqZrBYw^p-34dRB2jSZ$P(|3N6OZPoBI6QuXQjdAKVJsBeSFc#S7pt`Xz1k2Z z6iSAP&5=b-S{-yA2X*0)5*cr!e;Av`gNsdSE;La-VDMKT)Hr8OPZ1(?dZ{%IuU}IAr^`yx5!ZD zw^BEM>n&(F>5Fd;j~DYkyB?~3P{za+g#>;y0n9C1gcEvx2LQUEBV6rmHr^OvYbp5! z!6*6gTKmgs>E)*b+CA$KLO*C1;Ta1a>wf+*HD~P#w9oufflwnmP6pFD3TgR$i}q`_;w`V$)X1Ai)!qOn$*q?$?nA=k z8~3mw&2GHkpu?XYH=9^Y6I?nshI79)(-)3?FC7`9^CGW=;409abI`5=?Ez;rrN;Hs z#e_)RpKKrCf6Y07ZMFa9UxxO#9@~F>%zy?Mbbq%k`=85j|G$?3m;TEE?f-8z;s0^< z|L*sF&|Entfh&1{?Lo1B^bP;7aT>9lt&)+WiHWU}xt+7L1<;($_P_Pi66I=TK?LA^ z0^P}qg`uRRpv3`N>Y5ag;gCT)fcG{w{{f?iy7m_bRNpUnB1?hrm{??~9=}rAJnUFk zv-Q5j9339*lRIi7+J-98B)T;zLRY63vIul8wJeO!9%b6!Q}+34pTe`l+a4%lPEzmB z43xsg%_hkwT#RC6Eu}#&+EIs)OgP`x%xtFF+pTF1^xuU^@E5|&n?avA3%P&5yS4{mJrn-F-7^VWQ#&;aTVp#n0b>Jupr74;O4t}4S>WI#cr!>JNeGd=%aj)uey&jybW zCt`+5X%f(WMO>F{)y+Wfx7_R~8#L}&_Sq8HvZL2ePnc@bFlm%pm<#m{bl+O-1X674 z8)uyfnKtO?SkejsYS*Hk7{NKgn`>*;6{)2Yz}KR;gQf<|XK=u+)((6-FLqxF(J zZ5aLCkzS`U+b*QNiI5(wU=r(7OIL?l3$pCZWp-OoFFAZraS$|@1a&H1pAc>E$8ejh zz#NVsE#U|vIG3Ikxw8Mdt-?vn+ttABdU zfI@8|pTaV8f@hsS30s1r^r=*-paS08Fa!#x4xN=ge0^jaJ+yggrjv}}AC zn~s4OIYKNlDzzct#u^`t6iig{MwC^_$|ScQYmFU|`bAClUC?i!(5RAoC}?`YTA89! z!Zo^Fvgkg>fNgY6WPZAnhim+l*{pA8^?IZ6B;V@F55r(-E?hfR*g6KoN)CM~+gcnS z)I4M*2v?H@%)Fa+JCaN8uUnxJ$rM=uJY8qNOyuuohW{g&{3j~>>$wJQgpi%Bv!k80 zwTa_@OJrv%Ny)A9!+(%MvN~uZBIeNee5v#ZE}@k#4b3Z4oRdrh;rQ8NcZR~i-cHW? ztS2s9!jtfg=U$A!lmbOCLK#q)iQ&hz$*s!eSLOQwQWI{1Rc+nT#9(H$F&GfVCbCCw zAiV4!tO)7RLTg#l;%*fbS{5n7?NS?L7W6i9!kgPZ1LZs^R|r)g`FWhh{_sq^9jEZo z#BOVu_~3#)`ceEHexVA9}<)dj-=poIZ*vt_(Wf; zNCyXT?J^=Ty;dAC6@GyUPUPt-<)S57wP0^TqMGQ{D-X%ZZQd(&6DPtSe{LmW`_($2 zzFh9b{|yx*E4$VVmx-ufi_F?MJAUek&jQGGy@$}N3-TheD>AGaj|t|yTFn%~C~*%0(A2V)DDm|_!LbLmyB`+ykVHI;4TfdwiUBhzab5X#mquu7C6_C@8tu+uJ!h0}q0zqk)+X z&^PnnktI{rMhQs`*_Rd{D+vsRDp3q7w`08jwPDSuiR9ENXj*R4Hh;7M0K{FqAMst%Jq&FE}bpiJPbvCLOI zq_EZz*GWA}Yiw82S=9bE{(ux?hEjVLOeqc9g~yDF)a$h#*Kbam3)z7Mefvn7)#kj^ zt;-oQ9sxIiWHyT|1ksj*%7Ecd!-rt%gFF>=r!$@vxsJs5UFTBytGAyW8k;M_vjJ-d z=GHQ~WSUaHDUruYrMJ#Fdwmt1oy?9bXB4;g#!B(8GS3zDi_h_wb11JHuzBh+?Dp_T z&$R}69>zP88=Vd;RfhJGq5XGT2O@?pjxcgrV^G?y<5TM%Iu&cSK2qwBn4XIiSJ)4| z3I+Rr%dOVgH0PHdE>xKuP`eFD*E_qBd1w-*0>s!1FBLKcPkn}5Ky34pELO;2x@NQ3 zvmLd)N)tAl-c_u)#C-h%VW$pTXS>FeAj;*oCBLN`P)G^Ld6DoLO>*v(6XB?*qA^4H z=yA`p1)qx58O|5BdKK6CN59>iK4l{~G)0*eUi1p(txApQweh? zZ{{REm)@vnQu<_L*9fK`PAm=dJU(#ruQ@mq{?l5n9wo+Cd?tG{BEl2kiv95$@ zcNeTSB4j?#hklO47S!YGiPAf*@CvhfI!oByoYu9Yl*HZ7J^q3ddAjhl^_4UF*A&&v z*9}@W@@)pZl}%$2MI~Zh_5}8x0Z-8cH3b0T22vEE^TH|_xHVf zJdElJcUyjXh1IL%XY_-<*6`b~rRgdy=LsyP#DA!`g*+8vWMoWoM`NV`O8lnPae$OpOw7p}#JWQNOd`BXw&}uJ6bt6d&melXN3u zp2uIj=)~{KTT32LDP_L?4XyY1|8Vw?!Ii$--Y6V&Fk{=c&5muO)3I$^9ox2TCo|}{ zV>=z&>g44A?7g42R=?|1t+T7QSvBgu#u)b)Ka3QQEqtaL&Cj|c`yZv8f9VAO ze|?RJwS|$@zZTJI!0MSCBGOaS9}gzIea{6!;AWy{V&VsnkS?H9OkkB7l&qzdepV|u?G!Pt{1_;y z8j|hE+L+r&uxDou-H?>ITtW48Vr6D@O-`S`5a&^OW`iC0O8hBUe1I0qIvIR=nEQvd z-Dmx$o0NN-GykH#FHc^e8N9(8q31_zqb-eBez6Do?R}`4R9kcJF>-z=Peq>i6Hc_h zrFm#pUIubOS@hE{8=t>2c546$`tWDi=s&|J{Qo_CVvde>j(-QO-gbZq$wz|N0<28y zDF{KV;v^v67MhGq5t7DriCrnMKK}e+kLL>18?6F0n1$)SsMD?E@#6Tx`ssuQ-}kBJLltZ_gJ!RX(&I zRRiS6`9Vtpp}w{Y)fMO{od8WgN17Qetv?CmAKxsCfPkt8tU*kz@?oGvy z^68e%2myMgZy3!Ox5&GyS+K=i@)oMDYvx~Lgn^!B2 zxi7mtSUqIZ09WH5-Cmc^TV5C3hdExGj2=6$l&+wCvY)yR+vAMAb@;EdGK_06g#?rg z&buU(IopHi^4>yya}cUubSbwzL4&|tVX;s?`vcKFR){DVEL0|jZHiB{-IX=yH1d@M zSPt#B2Urf{HUyX+)pjgImt>?$2M!hjHX3&+UXHE=}()PcKX^*#$#vS$U-!>wWG z*o$DVkJ@trN#SCdt&Q9x3^;+TaJ?o^tiV!REOI~haL*PCyw_QTd;N2nO>`Vu zZ=Z`xqaTY)W55bj4|T&5FnijB-`hsu#6$422f9Cv!J}%X{+P&y=Ecr2c2C*i4(#quE8tZP)_Vk(rs+h&`7Gy$HStKQJC{B*GnXJUc)QE)m-s zu2J-jn1FQG67q)uygcSiEUPHowh~Fr&H8o79hw6; zqP6i8b;=KSh~95MO2ggJ89mtL(XVmtBHZaCNc6%Gko`h!Nc3VEknQ>aB%9%|qHo-* zVqE}4R0q~o(XRB&)|)jOxYk0VUHms!OpHi(#@>w)dqELKAovm5H74H+lD61-;K+|Q zbcr8N(6ItzS6CR~Ph1Qb*Qs1`gEm}Y0Tc5hJd|3mzM=SVy!8qB8Tm?sl=b3+rC6@@ zS98lWyS7zG4v5o_a8u~l8hlrD@+jA8)=1avwmmU2V&34fnAh}K)Vph43tPM9$bMl) zV%}kyug~Y-)c5$aNOlR^FTq0*J+?`GUs-`8%M82U9iqZ>w^@({f4c|*6UE-}6vXS) z6>OC2u??*6=ZBQ3kl<-Sa|Q7t#`D{1<8yKMoRBRWqgvdgl(>IkBrlCAaqp)ZC1OA% zxpPVHs;~@tp?L(^arXme>`7QG>YJ#u!ds=3%6U25t{OtgqG!R_c;dzX?AU(KIxHpc zES99J+r&&Zbl^To^iD{MjT0oy2LZ_aByM6xOqcWcnI*=u88qe`2JZN)RWpJS!6o5J zHnHxVOg>_ymR>oS9|ImLh{el5Td%6c+&%j&mUc&RGs#4ou{xFWw`%dXn2}^fN?so{ zr9~MFMV|B#vfrciOJ8tdkNE z%2YK@Gr&Z9l_sl|MXjxRE*O7vYs3lhG$JA)`&}J#TsW=J)*IJ~ksJv_V!x{CsZd(G zYwCllr4^r%jOXxF8QQV(8}k-e$Ttqo)_%7B5XT8ZHIh|_UXP>ao9Jur-=W8f3yGnQ z2Fj7cfen@+p(p(awt&VEjC=c&be=mT;otq?<4#d3)(RB@Obryxq4Fu5^y=oM#5`Sm za#|S7F8bCj0S5;q6zm9y;{qMh___%;Ouh33mfTccx4{cq6cY(YT1^!^8lQ@wW4WpG zJZhF3{Y9bS2O?8g`0bchss-(smzb!7N)}722ET2k?86Kr4sVz7hjBGvj_6g!h zR|ll2HbpC24*6v^E8}ggZnIrL*YuYcaZ*loijF+FGkU+Xd1QF0U9_(a^vh-MD87Gk zCNuury_q7?Q6IO-gTAePKixR`*KxklvLoq-o0So!$V(a-6*}Y zHoShAFlY&0w$36KHPXY2(Hq_r~kW4Z!}ERDDQn1tY6E4*2>#+uzu? zo?BGoyOCnVknwJK`nwQTZs+hc@c{b!od{LoX_$`ap$L|$@IPN)F&Rttn#pFm#bX!} z7r%@)nPA7r=%kB6@avD}z3A}EB*a3h;X(hFLCtTQrDxPIgpuPGM1vV2zyF%Bw+j4G z_T5(5y?o%IZU4JM;<1d5di-sisk4l4MD22s#au}-?i?#FYuio&80fjF2vz>0kdzwk zVgunV*fFT>Q95k?S3CQhe9Z*mcZQha84=a7JGqoweMRQP%biippU&yTQP>p^B3KSz z%Y*IRW0d1`GrRi=NT_1RXhl@!4%yWr%H!ds^HgG9Gs20i_Te%Fe!iIF?BTpzCtm&x zQg-%bD)S0oq?zpymTtx2hTcQ)HFp9iW|Z-z`3sIb4dd-)I!5J+ZP@^;i89Fqi6{9^ z6)OP2t2^^_Ni(57y~^>a8Yo!`&s7pX=H$JBvKi1Sw>^^O;#^I%ytQIc`%1i7csZ%= zt2G`!N^d!fX;CiKkK)j0Wr79o|5$TLJG{f;ra&fXiblM4ri7rrGw_FSf$z)%Tp$MM z8_;A#sX)dw13pTP%qKH?*^qB`5>K zoG4dQTQWvB!RK@++Lfd*NVTd|Vpe{`)d&S{L|VKWk0P%ZYEj0`R+1Ikg`kAH9gC7D z3GGK0p%f)JzEd|c4RA&2htu@T-C7N zeLZn>KF(O9&UbByZ0{ja@?{Gtv`iNBQZw9_?O;84l$2KNOp>5sMhFN|vH)MPRFXWU zS2R3V#rzT^ouyrjO)nRCW24j&V;--`D8Ynow;Fju()v*I9eQJaCVPiCpBFu~#kTtD z6yfowcC-BM+38hATTvY-)k{Ic;7Qv6@mRsW%Bphybq&3cVR;>6-qKYlM!Sw&!w`1$ z^~{$^s$dZtWs(xPwj_%90tXi`PX*^ji-COCatT|68Km~`3T(X%q3&xYn`$muMva$Phb^IJPWQyTt8jHB(tNPZI`SN=wq&#PvBaQdFEc2 z@14y}Y4bzNGq!6uLdM7++NwIT4kw@^(iM-9Py|pOd3fGC`G{tNWMa?1D0-wPOI)d!4>UZ`Z>(%k3fR0wq1+yUB?4uo2T2HW743vICqWkTtXh~)N`y~k+ySMp z288qTXCWj6=uNJOcCNZ5Q-q~PhYk$!Mrde-{UR|WRTco^ex$E6o*#qOAFSozWJW4r#z8ya$ z16u;wh~xfjyc#AqpSNBWvvOXoK9QzJLaqR|?4Bs*CyBNlhE2&Lkc%bqh^_HR+45UR zqKlH2+pugcJHX8GYRNh*lq^d)f7N6SlvB%J;W#jJA+Cnpt=Sf`e-W1B6oWKahT0ue z!yjKE2<6NlXkUzzB46hV?y|Ud+%ovxsIbSFoqAVM;d(hjI(E|NGAwT;uQDHm{A9%f z%ekRMpsic|Jv9Us1asE)33Hz3(DB4=rZI*C)!bea_e<=y!#aGJ7r!vdn^V^BDWC15 z&t}Js!r+e>*aJdWu0T3k7@G|ymtww6br5qK0Sz&ei6OPJ0j<2U&&v)hA ziFa=pV_&G=5tpH;5-qZM>$R6EHKvW^^coJ=Uw7O+CpN*=G7V6A&qFIxR&AK}O!;SA z8bjYuP9Ub`%TDz3eZ!m0vn@i*{3T(Bj-Ced(NLLCynbTh8h~wp>+#{1?6fnXP6w^H z3*d!e_K|c+ZuFVg`M~OdR`fu=y6NZp#9eIlL1#Qr-=EdZ+9YXNX9b@tbfo?oThpib zBU}2`I;^8&R$be;uw)zdH1q`!n&TTc%P=dvj{*}cBh@^f2RX|9X7=UfjMu`IL-jDA zQH5u-4s*2$*b%NH#pM!Hz21Uo9halZT#BotdEIm`wNRVZ7ApUS!+t^Y z7-XuF>iJ!siiEmg(&9XX86Bfq4tZV5hO%3|N&Q5bBY`KQn1-DiSE_oU$U3?Dm_J8U z8+=n(>O>u8f2}X570A^EUb4N>G~%@_*@bwp`{!41w>^sh$oRF8W(ZRiB`(1o|Oi7u2!hTO>wa=8u?Fkfbtx{iaB@))H-w4LyxL)eSv{26f_l za_L~me6rc?J1*&9CtTgT@T|4%hqf#?;T?0Gp&=_Xl|}0NHfy&)NgJ;?FTRTe4uVz< zJh{W=D zqD&%fI!_*~yjQNqSQRY*?g+Ew6{C1ZW?|_Si{r5+{hfm3082HG1#504r{pDPKJ*sJ zQjZ*|2G;HT$!)l5=ETynj4V0o1?59$lKocUW@lX*-N3{(c54wM05knEKDG%g{>8Q* zB|FjMdOi)1iyQ29L;5yO)Ft&g1C0tNj52V5yREbO(+$#s7oAbwj6?o@sj`OQ?XYJJ;!NNI&THI2?7-JI%)N-a=}J2hje zoSo|tVd(is`kcPKXV|W;^#Pupz3uo|xx#>!>68@YVN5=kStj>5TxWL(Ya{oMgdKEK z%4!NqDM*JPWbs5uyOR-9Jxpkfq3uyFg+umJ*qHJaDA&^zoQQ$w)nmT+6uZ`9s{)oO zuN2mP(;tCAlrS(EurWG*%Y-^Go~Ti9RsIq~uPfUr&anRH&=sERBVtL+45?JyB6igk zQ_5^Bif?vti^>L>+0Fs!&YeOD$2jwnGUic$^DhhZekY%}%BX(E1+1-FO3=W=ck zSEX$}8zjO4ySgeR&nfje!&kVeS1pxMHfi#uG)%8#46jL|cWS>~UeR?sBtJp2Yctbb zDABiHM80ff*F3D(tRy9<&tZ4WY1!`8=}+Xyy)5CcVPtwX6bSxvFg!D%ZgWeQ0fgKx z6uCMp-+YG2+p+?~gMN*Ff0s&YZY!A=QgSnvIY(#%HIVvN-ksFr;%gg%?!vn*9*k~5 zj<9DrCB4wS08hRMhGm0pP|%E2q8(`-jj=ub1=j~mc92|kH{3ZoXWw3lSt$ztj;((Si>bI;=FR`Q5KC zgoGyYC1PP=g=JvryGPD}B^NzOWG{PsPvCD#hKA^Ck@^VfOwW3zKVL^qas7#3xIMWe z@J51n7Rp+xVd&Up6stF%ekVGvLb+Bn%h;-x>$raE2LOi0HtqxM9T^8|teYOs0GO!Q zr;{nP8rlRN#=GFi#AvLqXO=axz~IJb4$9e9t3L$*&d%d49GN#XsgW&g;d{cjn^^52 zwAu{wicw(3>DMEj6%)YWtGLPFlbZO^Hi(5w$2H|Ih=Lr7XwEPP#yG5h@CAPD5`Qhi zBhtpj7(NH2W1kDaum90d@9!b${}GW^wEJ%v>0%WdyIIB04Irb<@d*d=Ax9~yD3o=~ z&Ms#EsJN-Hus)z87)ubXEn%uBZ8qVkRyl>MaOSL0aLnD-AY!eD%H}1@OFq{t$Laf2 zZ0`3S@a5r_z@osUz^W*C>`ay$mKMV}CPpHL?F|3m2t zZMDSYM6}zW80={Fi9+&(7mIploY*Mo*5{IhM;TO@HgIiLCzrEcF?Mc%@PbKuS<3>4Ke!IbKdGy_(j-BKYWK0iJE?h%Nc$WeV7Jm8d}# z`g%lWNS0hgCZ&qjf*2swIBIJ7qx<>qjy1`n6F5dng z@dQ!zb`Ta=hLh@;%j^boOd?2@k*av5fn0(a=X6R-nfAv$Ad3{v003i)8Y8Nw6u-Oj z2c{eyF-*b!Hx_FEkR$*VHcOGsUiBE)V~5x@qxxsuR4+RI>?ongGihl8G}SYXRA@W` zNt0LjuDpkXt|;VbK=p4y4^pY#s3Wwf#tsk&56?rs6uEXy>kN$^pVvI zU^Fx*G$t~-{Xxtqh#U!NP5LC)+cq89eX}dr4Xjrh9?bDrd{0nM8t!p^z$c6rNQ7v* z%(JdmyUoKtY1xmr(~pE8Ii&UuTSEnrPz(ee?)w9^dBIjI%9R8CcWh%2^xOFl;?EhiyU~t)59mIv1jyQMB_(@~zXZd|0tUsX5h)3<{uxL-}(M#9k`$9w|fj z3)~n0I05Oad$0J_))mEMXDEFsJTlh;=)=xN($zO7i;RhOd>2(CG%dB*6g=|)k@M<^ zB98jiV?bvm6x=4S*cAR~G;*jxv%MD_W34U;`h0ZqGN0rN$;N??6gdY&uwTarBDaXs zpqnusyab=feUN}8X+5%;v1Xm~Nej_VEpu0!VIv&v2W9JYRZ`N99I~6=1n5HJEiAbP z?~b~kf@q3?c&=OV_q^#;+9UZ1T!WE8r!!mYH#28Dg!VfV+YyrJGVoBTq?3DV4A2C& zG`3}O&&)QV&c-788Mky}dUL{lc=Z@2bZ?R0u<2MAzcNBVeP>>pAo|J@ylZTW?HDqX&q1;kk-J7=@N5RH!9AA_l zh(l=*1v_f1;A%wZJ-2&$0hxc(x_F%u( z&+j8Be3P6#JOJwp5CljBL;|Km+lU_}LZg#3aSD?*;T1RDQ2@b!VxeN8tym1qbj)3o z_USt?Kwdbh&`LP!P%EW~SzP805n5)?ubf!6%IQ9xX$P#=nj|qgtdQ zm44(;Tw%XHc({HggvF87o9xtda8UTA$TBjl$TAJIXX(9^Pe};rSeV5#Sxi1Qr+*$4 z;F?{Xbyd|#%t)%NRrRW|oMeJG!*?C#Q4AbrNwMIab*5=p381e#@D|#duUzw_{yud& zWJ#ezXXaLc>)Bpq2grbrO1ZZYa{7}m%%LF=PYz~Sb0qAiPucsNSD68T>1Y`Gu+moS z(od^cwpdW@q_dK9Zq*zsf?bgo=)_&!6b31-jgJHkelI8_ubiu?%<7kkNygI>Tuo5u zLfMUtN^ryjS})Uv-RMx8>l1o0Fd?&hyChw0WdpP?$lXcZYuowGYXY;No}R3GhnKzr z;D4i4g*Mx)gc@m<iKp@V$*OFK71(aW^mbi&qtkF7rs{?nL*!_e8Lu<8!;bRs-7Ah3eNPBA z2IsxPyDJH{;^h0FQs*|XJm>r1)NHE@vGX z|FRAJ8AfsX4^Z#&^ZZRG|MwUD{{ZzQE&c+Dev6ia8DK&S-l|-%)UfReBEkAqEF-3? z+JUq_a;G$#TU0ayZ2vzHJ!uFB4pwj=XYJ!200cLjG@JyBlZegODfXFV-kohkgI<jMN|^d(4g)H;YN;Y$ofBpam{w_D^lo(gLbC_9KeD*7X}L_0Y)TpPz+gDlqgQuQ)uYVuon56 z?P7BGxfih#aoaYiJJq0dW{aw7!El1vV&m=PTj$N&+x;IXe>G>Yb$~r*pP|1O=mnI! zVpv$@6r0GCIh&#gngM7vG&6&kd-yYStUdhzN)4)I_DC*tw|vI$#6jsqDWk+6%hX|O zQpD1S*D$~D^k5WzzOLK8`_O-_i&++;~4feAe%6Dr*v6oJU zJhZc=UKo>=9?%U+re6S)oD_2&&4{SX-W;u%L(bfJI7*gp>K%~`D5W@vqvt$R=d2?HDunt8Eu_CJRm!#J~A);iFh$XK(?)OG5JcMlhZ3m zq){^SC$N2!Gnhc$|CddCY#dmPcL*tKmlLRl$3jlvMf&e2`reo|s0`b`QQ!(jVSLq} zV#EK=^X1=PjZYtHOA{mK|7%h|r1AO>T<<+a0wYB%2?pmHf+~~@>AM=NIW3ViE)v|r zi{%E{QXPt`L!(ktbMwMWS+!5^Ryqu6-4exL6{t=D#m<+!-wHJGH}-ph#J9m zWjZr<56sue*Lq;SqgJd7GY|xVLZ~fIUPXbSuVH(lXFO7WuDbugr07>hkj1cO8Dgn8 zfKp<~vvl<#8A&olv1BP-qaaka1sBrj4Li~3^*7SkUiazzQe77p9a_Uux<*jh93n>l z+|Y-U(g>J7eHl^p9!r|et9$~ZM*j{}zs9G)nyP36HuG}P=Fcy!p6cfY{XxO;soqKB zCTIvjMh(TsS)x$Bu8%7&wl)Z9`V}%Y#Eto5?|U4p?XVaN+TvMVJkd=};OK_wYIrG! zbLqXYuBLHEyQB)sin9Nx0e`VX;%=PeQOV5lm&3YX$M1HGVHFcgBVwJky?zeme+KYa zT!0kG`a+QHbxEw*CFc(z?4-8oo_tAlO+S?QQ(z{gF^Ct>bgt4Z>g97RjfvHB1jS^1 z3!qn?eX`BI4#XSo!#>t70ek}F8S1)nKImqbw0;$imZQZdmJ;Nj@p-W+U!g%Th7e5V z#_Hbt?Y2Xq+6gM8+8#X+02*-ld8|CcX@ri^QB%S#TEb=Gj;`X5>eOH1MKt-P=#x>X z0jHR2J1C3vp7u+@E+TLxBZUJvGe^)xImF|9q=p>X!RKa8PB`=wh9%W$M{^!+Jcd^F z^`JHb#WJF0e(pFjn#>BmiCRerT~uCjn-YziGRy!g%m+*6K+Rwz{Ny^*evM6%JxuZ^ zm<@XrZ5SCCPc5`Wew3Dv%t`9}>M~A)&5HGeiG~v0Y#Ge4?6#Z+c0(7~*Dj>_!mO5w zYhoW|GK-n!_3%MD96)B$dQ7zFlmq`-`=0$mq zu@+>y1GBH0PEkU04H6K~JmcYmO+{EJDUB^!kj3r%o_faE9{FW?HKd;FC2#RAq$ye1 zk#3Sy<=8)d^;3lf@Rj7jJJ8i8rnP#eUpvW}*SwS$_?O{@1ZhtRs zdH&i*aqI^g?R>2(?6!yUGSfU=J~J6RX4wHliA>H`)(kWNX@0k`zJ@AMJVZ3!&KCZ| zI8RGFY2>T}sg6`r1Y3tWUKb&Lgm7Z{bR<2ABlE{iiLfowey5e| zT>G4?TbTwIuM#c;>f)2N))hHoi%i$c9-Zt27Qre+Dz_!d?_BL7R&r#kC-j>frF>jp z4f3?ZaiO{M51p2_v@&)uWVU+H+6h%AzV124xS2$w+%z1A$2cprJO39OU24*weOts^ zL7wwE7xzsb<6SpwfllMr`4BAX2B;@95%5=YoN^!=(1uv&Tro&PzO41fIF}uDDY|=H z?qL1cY;Q@JjpxDNcZS-Rau%OcA%h*pG_zruLV zN@oxw;_MuL>ku#qO1j7Ghe`UT?IX?{NrboEoR%Bs(k!pRaqPc(P5?UdKv=v;A+mvb z=ZF*f>><7`kmt`cO9nSk6boB}w}@D?Z1BblY(ebL<-QDNPw=}n`QqeuMfz86styfu zMnnFIZ&Uk|LH!)^@6>dAV~!Q`JmqS;M>QlS+c4C+#R?NvP3W~MJnMO%R8A=z>X4$2 z#FReA7P#!_;JqfJY2NO`zmtFbn;Y@&XHOLJ*%nCuM{^rh6I-KCp!VnR>l4@ZU-E~d zpWtmX6XSnHwk5~*%7Zh*4GYdWE)n>_pfdJ>fW-&I$14NM)xtDc=$3Syx>~)pPA!SCwmmD-Rst?yA?#gbU zDW?NEliR{hH3qI5n|BFlAN2Tk3@tfxMMg}hhurf`V2~QLZVw!>>1l}J^f)#syLxnP zcu{TFa&**AvwgZQte}A(+o^sCE*O(?LoIA`&&oG>u zh;rmLc=KS(a;)#!Dp103SVdFf$b5==S2q8`qV}v5z)yWfQ1&yDlKdMN> zpFgiF;Atd3enlfmxRXVNI;kZWm=-S27bNkvQU@p3n9`0}0=4Oi=$CtXypeJ?qYW}G zkMVd1h*&9E7TReJ+A%#ckQgf&E8SD9DDKotH(=W{t$(+YMcLs`FW`Qkz;$0h+PuK_ zdp|7lHKK1~%O%mV(^?2F>cEEwfNGluuD+`@@xxqgJ4J<(1{+|`)UR>>)sU_d3rA-IKd9*7=&BcJYwsnVe13;ar43&X5avxCMPa^J;pMum zu+b&}?gJ0`r&k{LJf?H_!*V~~uPH%jmmOxlenqwixPPJe5(wrHfF97*rz2qOv;07O zD6&b}v<=Kw`r;t9-Ov}T17`!PV9Dt)Yp_&n$R*s9l!DIwqy-?nRX=R14VmE>_S)mte!p3TJ zHnV~%Uy3OMv)e=|ZgVo}-DsKypf!Fz7WQ;W2?aDPz%!mP zq>j@{kSjE@4Aq)F`R4f1v1xgVJ~>|rgNA`n1TSJod8%Dn=!TUdWrN0jiuTiu`K=(@ z%rdlR!{+Sdyr4zLY&725mS1hE<~MqjHc*+zC6)ZFS<_R)E6)KIb2d|_>a2I}tcCVP zTu%7g5MH5p`0pHskR0DnKW^Ua5O+Rb(Hh>-hB&2ay){-Gv?_haD|uymk8t`D{g+>- z2Gt#0X8i^#;3IU9r2It5Ml@by> z3OQ7lw~x@bd;`P#RfA}YasGiCKjmlScUppSNqUdB8E#yl+!F1$+G4$j`Xxr~?tXiX z_Ve#E^0cLT&-F|E{BCbAD8Z*y?J(TJXH4%keeg*C3dipujQTyLFn8=XOqzz-6ydhk zLU(NA$>5m4RN3b#uki`~LeZP}`lS}tYz6KLl>D4YD;-vSh|DrAAb{K3yx4D3p0K1g zjHB;PDV26#pl?EnLQo8pkae6=U3EU@B|M>McrsBGkfl}_>!1hUZo;x3zY>>PBVm$) zOyuhswLNVQkt;HU8NMgelUQ39QA^KF^BaF|(Af_)HvJi-c5KpWNc?P>%BVOwZ}8o} zJdSrC-~m-Nz_{+%y9!u$G+VWbZ{>huDiue#TEDtHg!7vwkG;E!Bvp zzi;@Sr?&qQ@WMak^GX)7l<^kylXum%+Zgt`0vY2X^@DQ!4?A-pTMeQl{!0nty;?^P z^Dh_2xYJDVZ_{rh$;#>$rR{!!XRjE7jUeBnmYK6!tjAu^5C@-o z|BsUD|J3n+OG)hhhmsgI}Ds(GaM=f zXmS%Ca!LMs7D8wxP53G1q-pxk%&NqZT}!mf-6+5*!)~Y5Z0zFC-fzKDa}+G)j3j)N zRdfcr&V_jJ&|jb?<7BY%HE5x1PvNvT{;r2_DCjGe5ijRs)`qP(9 zSjI2q{>Io4H^z%Dzp}TE5y?`ZWQoD4J&u7@Gg3`a`c8q1^TvutRZC92lK$MKf%$>o;&%giTCD7b#aoA^Q%CEQ z`HYZ3yCtB|-+0kG;Q8LjR$&xYufxCa{?~Nv>&a31)Mu2BK5N$BentO2(*JFy{?8Kd zf0&=i33i`u#7M)rHVK{kd^S}r??0+r#AUVbl6tH}>P2A#%tIoGdREuzuTM-A9vG58 zWs2tl3kdrV$pvsplgOaCm(w>^wx(E}CTh2~e8HB7!7;5EE;`x{4L62-5FvDL6oc(1 zO%Tc51#0#p*q6Mmw<}_KFd$%}4|D>~#Y>-ia7%)SG8OYKofHf}ewm>%$h{Gg5Q9vnPJ#EwJl$7eFy0i-wejto+629(97bMWl|c*%SXS>A=A|J0QIk& z4{mri6*edk5DeV^^a1&2x&D92!T)s^o71(tQPt3fdu1|ZaYL(3;>C)T*=_0#9PG5D zrSnnfW?=$htt+cz`z$waR+*L_%D_Ix) z4nE*g+FfDb6-6NK>PK(keV>o9zqV|jV+uPcbQ6?fh!t3wxDJSbF0Mb}5(H6xkO}*E z35aD~pb7anO$w6?r3~h{c8Uw#2HjF)mD!IvYyI|s;xH4^@o2hkIv+aDdTY~_0Y@hg zmp1KT-}M2Op9%U>4M!|FV!cs^S5Z-i$Y$93E7W@;)`{21En}ZFU9F4wYifj_PjG8m zu0OdZ29b+QyaNodCF*5{na@(L(I0+t#dNcX*C`CQw#f_w)*1H5H1>E?F7tnK4M~(f zA3?1T7XauGIK&FXS(4Q6%PLAGjFhoqX6$GUjrf3IqYc4 zn=C^U#AW4z7b}LvMds#gaB z0b;RX9Pp<+OS3oT+?`m!RfNix;O zYPdX!SS)GTXfd{mAMz8=vSL4Z=)c8D3;LClgc59-SCp#?4eWc!m?Kn}I`k~E+}bS8 zZ(!KFaDN>gQK!(_rKV%dq}wPz|9w;ZN~MdCvqq28dCwa~pFzOt>Nc2^-*n#4Bb-XW ze~2n?KGPq_qjoVIBra7^f8f_NfXl9?c8SjfV>WDaI6zf!#60)QFu$!F4&Ho5)f}~(X62G%jq7QR z{hLf}-YwHP1XzH)%TLupY3*o$EG^C@m}6^=6D3V~QbvJKQ=pi*zO?Av0&ZyHpNf@{ z*T}Em`XiRcbmID~r?Cx_J)+!LXbHN(?#YJ>`X**cW%R{I9Y~nQ_sU^q85i#76T64& zu+=)*Y)kS|WrXMx(Z9(kAJ&Yv^ehUTvwk`7vYV4G^ZQDqy7NF>S0r5EFp8B{Y^0wO z9ndbESAJGcQCF6*LRx3&{R$%Y=F|wGYP-*ks~+RDgQ>~B$)4-F>{Pc7TSf38t)R2h zuDO3)8|%P0-gGj&a8{Qo3e_&C-+0LVRlgzSgi4dSjfJ%E}_tWTu5N?S`YaL985!)M+M`#-W@&n^2WAZGVZ{!|t~kFh0)(enWftzE*l^9}P2IU0kpJQ^$`YRXK|WHjrhSW=#btqS|4Wv(H6Nijk2_*sx{$9-;uFAdHc1tBDDHy>ZU8 zwpAdg(*R=zN-r) z>^cH1GkoO@9%L4zF@6?g(lF_~KRm)acFUT3;)cHzM^7DdkT_=-HcQKXKX2CJ>v5vh zpMl}fl^!?-hg+EDo~<3k+~QkCmp$I{iy#DFu+}yAU&AK2xtT&gCrg-+EyDgFv@V~S zI8#u`H?6>7bk1~AZJy_CsnANht>^}(w(W$Kk0bD0m9y@DI}y(Ro zg?BMKE?rCzs?41HrGo3QT+3wK7->=F^z59;|D&RMlAg4UC5kW`j_J|7mEXh^d3y6a1S558yne{M@Tg+hKvR9sgGZfbi(y7b zuZjFO_?VHU<WugBQO~52m)SaFG+#tp--QKRMNamDYFqM1a*Drd=FJ4DP;35eCF?1H1^LiXD7y$Swn z8Qy|?SxEVOB^dZT|LGR=-%VJ)$@U`zGNGM!-OZ>HGLl9Ux%FL zn*}A<7t4YWg_+4_vs&`c3RFLgO(;QM8d~F&m3YHxtv(@!-5@=4LVA*i)@vlRQ;z&{ zHdg*&ky;>$9kpeQW1ux6`qhF|XJ_T~lxX)Ov<@pqlwOYbMrLRX`Ct*xMWeSUO5;=27F3S{I4mGA^SIxW_bt-C#F(C1In zDl8|g36oy~+scqd=4k4e25ddk+m7h1Bt!az5m5DFL-KEmLn6x+yUYUaC`*;@Fqx`+ z(Fo|%MAZd|kLB(uTD}og5r;?`^-!5=Z&6wgEX!fdG>)331%#(+XA;6gGDpe|AWP-$ z*luO+A^k$80>K36wIt=c&|7a#&K2&sxT;-1j5m~}iYN5j?nqp z@3-`Xy9j`WUJ8=_!&-}(gnDNh0@#+)=9(CHHdNgziN-ndEVU!Ll*Lc?UQ|!}m=Gi* zd}eW#?Eb2psFP9aI+fG0!9|EUZHmg$pzQLr9O$VzmFjZ$gi9N&VcTjlcA`;pE1u?* zv+&XcGG%cRt7dp@rhM|Xph)#vc6vP4uNPCpsQu6ua}DKp&cOC!NL}jwgV?%K6?1Mt zb0o*naqyyun+pyMi3Dv7S)*s?6in9$0i5b4X_gfbWVAWO@x?5b?PR}158G#K0ekfpB+fT`! z6ErEpN>uZd`6?Zm(uX-J$an_zv0dCHSy5^uW#L&7NY7iW%K4WSG6#}n*O*u!5RzwE zOMY*%+XXzGAl)El#*&%LzqEJLK?RHic^6iS(@A3rcW+wZLz@={dPPQT-jlr>jl}t| zr#a?)IoMNzm2Rb|@>`1%&Z{l>6N!0cr85`Fg-8JG39={0D**b$nd3HVO#^wuFfue& zZdTsp2}=jVRHl10%d80t;^UBw?8~tm#ub^sy_gag`pQhqPOklUW7#dyKgG3|iztKC zt*3*BBwUfAhN9SFPjBuiCUgge1z1OPsUx%l9)7J6-tob#AtClLxkx0BDU z()YaLC5NM|V4YDFcsABbv-%WWGd-s$v!?H}#mtNOCKxA~%lQa%4crbbYyx>M97ExZ zjGw}O_(a@N3(E8}a-cL3W|}Ekb4K3!-R)9XKDxX!YQR^mPjB3gNa^<@4h1sVQx7n7 zOFuyINH32v4^K2qp+hR$dQ)k_us-dDvk;_RuoEdMS8KbONrxuk+ z^Oy{cTtketL>5mfS3~*Y6Ge7omGw3>owi6}!VUHPw)2brwSQO9G-1EpU9jL+LM5=Z zqb;}jci+G}YJG3R?g1+)K=0;UO`5yy(83ox@S@2(sbZvi#XMI+8t^|{oc16?v@gsy zgfyYQZv49t1t9mpyp$ZUZ1o(?i;CCRljr1Z6EdxwxOj~dMO%w)3Sial^GRuO`hnD>Q@(CCOYTJcJJ)9=LS&#RZkm$x}HhZp63qt zaN13uFB`udmk(lpGnT{=TiYO7(vR{qqN#pS2L?+~QXEmNxj{I#NQwz`CnkjnG0_Pi z2{R$B=ohO&G06ywyKsnQ8jKx;f-PDMqfX7h5mDTiL1jM16k1%z=Uvdcd}tT-`HE{`Hrb`b?xk(0E?n5yMj>sVi)Q{iIqWHB|6 z-XN4Q9?3D>7C23esHlv}^oZ0&kd@FP*{>p8RU?{1!4blD8KWx-E|pGSVx^|0`uDx4 z^HrRndto?#TM(<9#FPZv+=uPlt;F;(JT9n6`*47D8eocaeydw^*O=@)`L>wezBXy* zxRqB;+yFuHLpgpRy#O|G&{J9$gH@E1+!mYx1$TzTvrbp{N3tO+`8kbqIDIH1>h=>} z;>|vUPOUuwUJ?o-`H)dlVDO;>JhdTZZRxC83v~f?oQRy$xxv%#xJj$Z)eu1QS!wDS z>><)BLh91uJnWJ>Zt`!+WRc+0%7ao?M;6Y2U4{SIaLSFJ!=P8uqHdCR@~ui z$Y(1w6=c5;2OcrOz+zxrbDE-lfjTZbu3 zJ2@X36F(}j;yUCGRQYQpzFmVTlvtb!W68p!F-(U@muo>O{|W-;@pOD$#$siaa&r#q zIUq;wx!A9@Jy$kX*Pbso4Aze;?Gt$DYf6K2J9m0CoZ6Kl5gO&6TrUla8=53G;S8@^ zDB4OxV5J4;`YxcXAa&yZ;p`oQYYDft(b%@LV%xUO72CFL+g$OAZD+1HS+Q-~zBzlJ zug*TZzFW2L?W(Ton$>@1*XXz3@r(!FNz`XlvKR_`yf<+47`|6wx{3jEa|M?^f6Nf`w-c^YROLcn2P(VPM6czWz#t8F>u z{K1j^sqnJK`Cml?6FyB#3lUj#{RyG zFLK}!!AotpS5VStI>8t^$-?0>M_@zXle5eeWr3KOCk1Ut%-e$2iQBic6d(*-O}j~41V>eQFLb~V03T%on7;@3!)N&3=(t8(x4iFzu|lb>Y)T8rm}$YpI{{Iq*{ z&sNc{FCp13XjUxY00n;`<2!_TM7$-$2ZqoM4{PL>aoRH|A18mm(T#+~uEO+S{tVS; zP}MU{4T^tJ_|TSP_A}%qY3AFXvSo690KyFeNlc}|l*-HRq4S@L#e!)jqd9wcTYCs- zZLvjC*LVyfbgyJXH$NOTf@6KT1J0_j8N%9dDHEWhScq<_#m(+^)2HKA(Ab594j?dm|!n7z_T@g3TZOYQX5BG^(olc;cJal zC1u`2b@ekJ$rjd?=Lyoqc5xe@zk~~RaQ{@gEz!{VSd>ZfNXc@8tPUD6b?{TV+lWEp&-$dREyk>Zf2yKvX8RKp){jn>#LcpCICNxT`$-o3?i@OUcW}(J%whoCh92 z7%meF!?-OyK#*{pEA5UJQ-i)i$EbZ`c8a-=dBlk<5b7`abQFt}6Q0pbQU*XR4Q(81 z+%=6U%`r`zmV4X;PhsFwdZ5 z(f^`LH`R15wU$QgBonOJ!q^^6S*xY}>%O171Q?*D-tT?bOHXzOPM4kTHse}V*mE#8 z208xw^eoQQJM)kwzkEPiNm(m7&}WJv&Wf5xtPyRwhDU9@5l?#uD^$gcI+uRQM^ewr z(_4n<`VhK1C5T^*{pYiKk3e~*^1Q3s6MC5$W@V<%UEi%snsmKBfxEaoQJbTdO3Cqz z*mz6V+x=Yk6QZW2N8FpKk+xqFNOdKv+%F#cmBTx&c7qPw2E{_@-BcB4coyrM;9v4e zzw%#;5Y&+~IQ7H>SN4E~+yV*YYtxInOKQS&dZK{EP zH^xf$QovU$!_HEqY4!;}q*FKK;;M|gG%G!YECKzbTF0)#`J~-IC%F>bG77;>Fj{M~ zJjWmMxPd&yGhX$uj=X=Gf4OGRKF{5tCc5*lx=r6*08LBu6#)WjkbdO{pvOS;QHsS( zuZ{{@ElbdXNg*eZT|qDlv$SPZk?R1agYQwte>PP57s3qF zKdV1gdFxwQg7jHh&F7V)L-%8s0g2jxEJu9n2g;nFk&^{+?A6*?Dc|xMiM#eE11j_k zXWMzfZwP64v`dOZuGVHc zs@w8=IJ}7P&jgphE)5sN<<{@7ky@b+VkNGiI&lqC$O99(lUBhZIY+&Rg~**q8h=Q6 zD}xs>7F^ngOYEwGNgw-NyZvrHrf#>zeym~E@gjefGXwmE;zOeN+AqKS!_CeBmCD{q z_Uz5AY)NqT8OR#kByp{0N!Qqd;z{p3uxR3&$rRJIW8Wdc%p5Y5 zUxZSs%$M{tcB*~qFk6>+|Us7l?M19|8l+7aj?3h$=zn! zJIif|tx2b*IOV|S>S6QWE$ma83V zmwNaI$Nc|=^8+FThj-T&3<|c3s|*&n9F!CU0u6nF1Wx&3RzKapNzkGD+=liN;Dcrq zPbw%B47+ywO|Z|uTjB^n)*?D3Dnx=8{^C>Dq{hP?9EwyWI5%T(vcx|ko@B2Qqt&%( z+1rFH;Nl3oD^FW&AahAKBSKWk{q39c3?GkNsOC0-K7}$F^7#5xR|fBXO9~w<(cXKi z_LUm_*dvnBCG78gSf+9eLpP~TE8t$0)0(m20bCHm9Q7;89|?UcRq=sKI1oALSKKvs zweG)9r~mXFqd(ZoCbI2a_0(@tpKP>pwoV^Z{%TTOp|T>ql|) zK^|l63YD#QBZc5#G zoDq$7HE#jldh1JltfLw40hn-*hm?2*F*wNh$aUr)ycOL44Ywu#iRhU7=Gx1{{-;i7 z|2-D{=O3(A*Zxi)`wsO0BQ}IalZK_c7nK1Fxm7>N+S*bn+E6b4P;A<5&@?1kk#py; zEZ>U_hqa%FwbvTPwZAXiTUIi1#p`w%64j>1I^v_(|9pK~ z+5*lQnmi^v+`2jDvdbILfMa3Oi8f>pYc=xV2`j-$!}Xk_`K2E~{)24W5}0ByVmBec z*pYSnR{#Jc?hmpEvwUh1NE|FDvIGeN)NwRPTo3vDURzYOhx{O^9xCJSUAdf}Ok{s+ zj8zBm^ptPt^VAHtb6`-*)JzX##-{fj$(uIbr<;nh_nhEE&x152M^p5?fDhCT(TmQV=jQ^G)tg44=m{Hc*-A5 z@R|L(WfzLMu;d3Fo=OG}al;vQU*Bm5=`evGH4+5=ABso?CbVZa5eFGc84cChNhivo z<$qXwC*W9={_!LR&hTi=)}0J8iRWIxoAuQ*lYE{jl6^=K`>d6y2FTY z6dBA;VwdQCh~X_?2ncp>=*4b|K;U$iYxOl~cXw$VmJ>%i4%Ib=LnU6bB9sBPZ@g>@o$d;Zdl1bvyqz%8C(g|Ga z=!rJw3DJkHaAX@d1@?@Uo={e6a(m^ zB{$irn$Hnao5e)62$;UL&^n$Sp77!2$sH8(l!mC&b@hrf40{5Q;`b}S%(o~}6xgHCNI zPmPrIf`W9+LR(BFv?f+mFsb;%A}mb4*kfb6+C4eIcnTGL%m9iKVZ^lq2Oep}&MZt5H`MBd3-%CX_c>9%IHeYnr$y@K<> zES_%oLO#rRHz>HOL2vFLZ5_<}4(j>Q(JTgZ_)k;i^n{yNyjIPh-*Nom>cTpG2+bU7 zMg!PV8QYVMwspOvefAWYe@a*3G)q=1y(K>XeMEf;;Otha8J2j(y@AjCNd0%F61cO8 ztvBnJ8agHZSXI7O?uSlaw^ot#WxaYp+uUH~~!vL!ccbilT-#(;?=^N$9o2*Dp% zvXTxcDL*XC51B2GPY61_LD~X#L3SZ_he{P*O*9Lc(^N-`)L-@+r#^vCJJXI_+_{t8 z!d!fq)m|=NJCD|#?YG*Wj(Y7kAnGvkha8B*l9_lh0e4JYNPuXjoT!~#POG}$l4#Rf zIB0xkGlN{&L0j5R4KI`V!sPGKKTaB?#$p5SNJE|}=(u=VxCZ<8fZsF2lxAE$%?_KT zUQ8TcnKr)8#@tg?9IjLIv5t3Wc6^qih~NUo$wOHPSOSeVS_Fm`Pu*Y-8yo?Fno?Me zF$@`exP8m=T;&=C0=+8+7~EV#uip>6mbiMGjkji-HViFCq&JA;Iwa_B{XouaYX}(p zO8BP(umrk}sCYk_od=-;%`*@HhCfWvA@cxcT&<>asQrvKe>)>2OH{kHk`D!gV%1BH z#5z-pJ+*Ou;CEWR3J)tqEe5-chIBPH%Xhp^B63)Ap%#xft!a4+NmWXgGRr)b=dipd z3(fs^+kcP4b=t)~zoHO{eZ;v|hS4DlsF&5n#8ARlD*wphl>hiCaVl`U@Yt>r8wO`- zxx<;2*vQd|ync0B7qTjfh*?8gAu6w3P3|#rd!dTI$Dajxz)K1dQ{c*firhnK2X2ru(SGyk%9#kV5ik8#=>e&v*4cSjIy6wXb=gPIVP>aRvld7 z+%c?*W-v>%FfU`craci4Wvz%mGrHmVoel5A+I{z%yL6Uz)@)`h!Y=krQWg1Uqvn-N z;rBrK;8)jXT_#KE|$-PL_xN!N`&{DRiimq!1Z|>?SgJ^&xzx@~!s-rya_r&c<_H-rLy%}IMOna;BQXt- z1Fk{^70et*X_%k_M{9nh?;0z5(IMcexKNoKn*(zh*9HaJlRKMqHf54M3d{rb?>~dj z!Lp(0TnuZWLiyZ z7@8^c<pV;0(L=V*qJUT0)PWYTJwk|qKx=%tpx zyezIA3~75!?y3M^U5FCqs@2cCFuhjnM0@$cyl>3J=-OTw?|AEIx;#O3d*cG+r-3dT z*53%02is?@*5AVD5!e?Ee7sFXXj5XVEn`Wd5Z@CN_85n97{;;q5KxSnr$C>Nm+@j4 zoj>z-a~Dwbqz(RaWjBe@BUtBy8;AiMf`o4SsVSfp)(;w?4G3TACP6ToH2Q|U(=V8ct8Nkdt+4eEpg)<#da3f&47FcxZf_l1(@m?Ef z#(E=MIpvmUWnaYkm69~}0@b2u?VV@$85I7R1uIDJS?zoiz2)sE&`fgo7=|r;sA^P! zUIk)brCPrzR*u{@9%0T-S!p)Mzw-@u^?B=Nz8fyZ|DQru)_;CDa+CkjhkrXf2*>Lw zXi*pb0y(8BAksWh}QOYN&jmA?L& zkvrvX#?JF!xzGsP(CmCwUK)3GmpgIcodlO^N&{WEr~K5v7Zk;j43J}ip6ZddfomX^ z`(lCUXi>+iC*wopX{7FiOiJWST4n_CGB*uXp^QzD;cxR)m56N$-`4(WD|p45g$@1E zzKkg1TxuCfO&WXz573>IOgj5~6UIq4!P90r0qOZR6867N#mxMBPBS1o(TsFj>ssNI zeDWFB^yV3l)U|MqM`IYn8ZxYcDe2+&g2z=vI(NHq^NS{$Z$>T0*je~%Cy*04q+|=E zery&{57hsaK!{oHlg!1M#q3$*E=}ws?cuiK1g-rg@$|Q90(IAN9nh<*1kg1s4!M-* z+yKqg8t~!Y@!n*d$f&a^#)m<8G9F~O)G69-e zcU-S0`^22tpR?{--S*8q^6GSksqJ=+YJbF36{wG_8z@Q!uD-@H+QHj5vAUSbIP(eB zA0X^=muP~?U)1o7q+{`M0$=i6zze+0Hhrs>MsE%0+IR>5-|d%v^1k@ycZHyRw_hy( zQEUD$tki#2Na}wFQD6wC(MCfBMX4Xi!Nax{E^;KOD^kJ)g;+H&c1YDYlC8vcMys!V z#>N5C{Vu}&DAnrb{<^$QW_}jRo3EZYbHIj#P@9k+t@9nN+}-AQJKr7k_I@I4v-YUn zWJd8&UsgQp4Dz8Ps%lWrQZrNEQo}$~9w!o0g;EWUf}PG#iM672D`P3&OU=|4Kn%0a z8wp0CD#J-TN{is>;;7;+BnXB>zz?&r{t_AHq(9E+gU3(itlWcLUvwl~a`lNM!Ur*T z;r+vfAJ^2Lv8eQ?Dvly!ZbxcouPY8H-IZ2)#Fx65r|M`` zljTTrP{M79<4BYoOWDDOMt`v}PxGXUu~rloBg2b;PWl~hvY!r) zr*^|Cb&*X&x>!8fm9&~b&gfbkehg&_P z-&w~H%tbPvyow9C3rV)U**Vlua-+wMh#fgmi7cO5NBVRYh0yfYJOzkCM%ICZA^As- zxs;0t-00Az>qAo`a60Xavkg-zdCA@&(Xqc=>UGCA_;d&K4fl@P5EioF>Sl(k)Z)PC zd7&+IQ#C;~PjkP2wMP{;1Y}#NI2`A?G|V=Q_qC&N=D7v;(J_jw>bf)-@5^`;CDOI) zVxYtI_)8{nzJ-p6^WIKeSk%2gY$ErVC$Nme2<)v`G95NBP;9rz?Ta!}Yae)FE}0%x z?dP;~fw$Kjaa+mnF&``s7D7osdh#UfTekG}o2U$~m_Cl(jRvP;B9_k&Xr*}&jVbAC zOd&B;4IYg&l)#Uy?gQv(dL<=t&5sC>SGJ=Kih@G))w_H3d~LTepnVTl0ySV4vG^xD zt-YmS^8v@l`*h2F-poU9^yCcGdd=0hSuhXDic2HfG2G-=+^24yZ#TIw(;UI#HN!Vd z2NX@~#dP8umRVnioG=;{Qh2CvTcqhCuj`ysk^jbbF zhJYS-!4L*SA?0WJ<7AYc-@0(rh zh5AQ)o70E=O^R?n9`qz`yiak$|D|q{+$>Nt91)&YnWAq@I-qML)|`~VzsL4iwHq*R zTUm0Xej1CSC2U8oIl@-j6Zer(ctlkrTF`+d-Ga$6qH#Cmt!0rbgildy0E|iUUhw-5 zx0zK<6|-2Tas0w`T0Zr!C(3+7&Y+$coGivyPRdCC=;em_%4MF7FN_YIuOLJ_hNoWf zJrwTWZgd5?6_(I+s;?+Gi$Xi%iKB4rAiM^+7%s(JfwZg7`Q^F(ncSMzm^KX^eV&*O z(Ie#ZpRq&!ZRl#0{sq|&doYc%x$${_GIpnZCwFao^mYra9NE8F5TZD0irwcSs*o;CqSM(c%qM z5FuCj`Zp3kp%16CDk2cjukW?;Kl8%*A0+dit7Y@IH9y(`y1%`%EOTZ;NC=4zN<`fX z7_k#2SYQqk9GD~!aJ{@+_+-MQ{PG4^P;;}MZS&*xP-m1Dotn~$=#7=_&H2VEAaAvE zLC;G2Z05<#EPmqB%p4WR@4fe>=jvn2d+VWx<8BR8z~h|?NF#>9T)-DukboY;p)=qJ zmJ)WE?3cD+d_YuyH`qPQGTkrgZ9U-cOX%fq6iZO9k01C68ViY$(m=A$4;T_`onado z7!sV9^4pN#Pqhyg{5>Op5c8TCSb%7I5JZo7y97j!eER^zPq|M4+QS^-*k99sMAw*C zh+j6?8oS20jh~R(AY*3@Zp-{R5K8kJ8@XYJ4B2VhEUcE1x9|D~Kq)L7JC2EW$RTG( zDy$4E&&(t5+x)YfC~D;ftrVG zh~X2y(+Rg_{EQ5!gcC4+<^nK?X21&|Tdsy<_58iY12BkXfG$PU0o70j7VZ zy9`~S{$TtO9845VluZ;~pg!>6krslBwTjK&Z~YxM;1RuJ`<)BG|D#U_B9JJ*AjJ>` zfEMNymI>#KO^toXG-2+*+=f+wZH0xwNNd6wYlsXuLAeYOK;EW8xeVeU<;DCQ5wtrW zf`Jx@bw$ww_Ba34LbHPi=bv`Xa@`T~vp*ZG>a_9N8(JWKj_e)eU3#DryC$$#(gPGg z^xPc6apPehwk7ES`>r;it(0_4PjGK|$qCn+d~Fxz?GPHGKOhW!1z?808YYJBjj1H% z4Wc1?hhZVuhW3W~q}xH&AlqsD-V?j~fPT{KKtE@POtEx9eI;F!(F%3j!l>fi!l>941muR z!exe(I=ojh^$QjbXv>Ujn{MxQ?|x`lvL@W(fmw4St~5)H4+|7jllo5mDl8QEw`+k{t| zIFqVc(<)Y`p1*#ef@7LrE93Sw&-7tqE|Y!!1jf3cat1%*yHUZT(J7_!QP9D}nR;Pk zTEg{Ly?er~=E$hV`F`%Srjca9Rz|v+Y{6J&%v{DQpRU|b*Xr-Fau$7)Co2&P#BbnM z1HCqSv{{_Q zLosfF?k;R+mgv@0_>YRIB8j|QV^+hnV)eD3@j$j=KYvRnA84Hii zL-dJsAASOFW!4%dKZ899??Oq;M=bFHh077bxch?fD0QAWPb<;FkFG=G$(M8|uJ*G& z!FrSSb31w5+Hd@zB_vR;EiK;}JgU7Lic?${m&ui`q`~(b#Y?@J%2Z?2T^|kU?4Awx zqeC@>lGi|VuEGMR<7=Q5heI2U*^*le@Tm3T?+zcmL0y&N+o&Bls@KV=I` z7n!WAU`F(6O#|q#&rTg6(FV6>szb#oSACh$$a;|Nl-3LCt1QNv%#&Ddv>5fU-Er&_ zcpj8BnjCHh$Y3#v_G?r>tSr#kGO?LQ*_AWIkg`*H0(MIic7-UVIBTJlE4QX#DItTU zkqq5BT9ranX8mrkb%S~jXmPdMB)<9o3K(LxE-LotR~O14xx712FG?Tt)YF}B}8uX?(D72&2H>-ag0N&g}2MF zJi=&io`tdPNZi>R?CkdE#hDS4yTY3>O&2Y#_LkPdf?j{q`3Uy#F$*&CB)XVzHp0S9 z;`1h(5DNOL96CZ61FalAfhI+7Yw7mO&VPDaqT)JFLd1BLiGR8z+Us^*ovg_5tX4CK zi8f{Aq<}u~=Uaxde|u@Mja}L~87&^?>&`*9%|Uz2Lc{%-z@1z;v^(K@=!Z5j~1L?PX5($APj9C&4$&%f~L{5u2NDhT}Cx$fZnM^0eO-AOi zvK+?x5)V|&6?%=^ZXleH$nH@h77#AUtv!GI^Qgh@^6G+TXlWLLv4TGf5}Y=(Iys13 zVdFp2N^9GJJF_^wN3SSNuO54q3S@ZTQDY}kl6;>hR4+RqEFc{Er@>@W23GjXnGv7*3uWk^!a9Qk0G$9E*K zEJ)hNPf@wV5ew1KT63^ZCL!5O!aJp)D%t z>=Ah(AAoNFPaausqp|)DAtrz3Y9JWw4*{nyDkZ%en3O8i6k=?_A6YXPxP_=5=Lyyl zhn5j{A2VQ~TIEY(=bE*HhdZc`3)$meIG1sXC>wMo!<$q-m0c$#o448^6J~4>gAFFC zuGO2Gi%l)^P4rIa@bJ73SGP)y3CDN{7<&`hw(=Gzdp}eumN0kdVZcGe_iZ4gKHdTW z8i9cPQV!0;dnZBe{{9q|qrEKQsM16JA-g8pVXj~c2>t|?b%yUR(^(ic$gJdsiybzg zO1F;d&y*;~bY$Bx*(Q|UkYc|K^5KLdbKpn;@XdE(-^u#QKL(8L?lBsMpDAfbYq=o= zzACE9(Er#0Rb2~flvQsYrRGCW$!w;Dn-s;v3i6|IjIh#Hlx6*i#?)#J^{AyerC1G0 zLD4WqT;&{Yke~VhvcTnw4$)w zOueAe3kxBwUl=b)#)yXKG`BVotoE!avT00K8_Y97?4TIxf^%YJrvf`jfxO@gdTbk? zSLCZ3mxe0NE2oH|shB2HH!pXDEF3nWg)a}%KC?>9Bx6`C{&T>k0P@kwj41-qgtao;`ZMKOy8 z+Rk7IEnCw5d%(!1$PF0pD##fgpYwAv+0ueO(@+F_e>>CgI;7uP6Na{IRgSe2qF|O( zQc3tJRf0AK=GFvilLfmh%bYqNdk!#dn#)JAZ;0NkgUe=gBMl8uuZ-1dV9J>dTeC7| zTG0@uTPkU&r-+P2Zz|>(5Re;iNlsv!G0ZLWLg}LG@L-YcKR48{S8I=3=Z`8WH4*Dt zb3rkwd^S_|kx;#1cK(@y#ZUTruRd92Kl%ATyeu#gHK+ST zKy1njWzL6x92*LAvPg4&I0|!@4eVDjEBK6_zgyb}=Dd6TbUj}lo|^O<83b*rN0@!- z7JSM=;0yl@-xesPPq*|BvbH;5)X5mQlCgMBKkahgBi5@SxN*@F^OQ$fRqGS56!qc6 zp|qZ$qIOg39B^1U09?-=TF6`G=@j4 zGPLv}v~+E>a(A;L*eCemlM}B-(?ye$KVSrZD^d1fBqaC)&Yu1A?B3u^oIBPs9zqu9L-%IFV5Vtu7hBcD6o5nWbLQ zto9)K6Vkl~`1%dVx55K(z_d4{{sBBOOejo}O7{%&fCm^mHsPKKT?(&D6JIdPjn1Dl z`3%y^8_JrmqElbAk9^><@)VB0l+t+k!@V`;6|7;eJZ{X%&|D3#zPR>hx7-J&Ql*hy zTk{I_4AjaK@2Jeowy6$}OL6-bXY}yNq4cO#YXeN=;PAbaONp6nLjyT-^j(vAQMSL| zdbe0r7^992*(BIZfBXJJ+mF$YwwUv(CT00=%M;$*21XpN#)*+pwACYXO)l6UTm7?$ zMuC|QY)R&?5f%Bt=S2(g{bk6sLUZ+K4fx|fh8@XcZQ2P~VSxqai{gO>P5LGK@!rSn z=2Cq{_ZyYW;o7O-Xb^;Y2y$VcD|TeU#+^F)TJ8Ynj5g7>_5FXMhwD+K@y+{PhOK_P zR0ZNl@Krgm9&al8X^s6{`&sm})HHWd$tX(O@Ys~keV@A;7T`C2ak(tp z%=kA#275&o`XIBwP@`mPWF?ZS$e0Ey&Q|e!S)OBw#KVd;o$>sjjUbSv>hhvkYD;W4 zKiK~d8P$9G2V;(*lsVp!(#6d2_1VM@W}^s2%*`}f)1T6Lhsx-6Cy_*v$c-(r;@!vN zm?}oT`MLC?9~5U1Ol;2kIsj~7dHJ3Wh#7w-%|e(r1?KR`akTN{t-R>e`Or~Gwt#_{5;%8^%DdZK7@{z zj)90tQ<$h;KYjGTz&?Gw=93fFFF+uwE*$Guox}f0yS(aY0m_?}nUP8?IYtpjRPK}p zYss=jN?mw=8L9^Vg)4TmYgAoi$2U94s%oN;4_5%RV<_ z$E774RG41Mt!G@o9{%aOb5yq_gfHRqmmE0Mg*-Qx&-;q+DQC<1a?{)Y?Wjy2h;|zm zpN3oAb$zzJ)L3K~A3vK()IoD1l@rZuPzT*vZUWLs*=W{?+0kNm;ZJ4cPt;m+J-M#n z4E!OaP1L(jMi(74XQ_#tz_SrtjUfpLJLxm_L-;BZ^KJSxxOG5bAe{-k55ioZZ>BPu z3W`cvz3o1FQn|}beY1Hc+qkcZ-4%ZejgXLG1tD!}2s+8Dx z^=qCATX(5v=YhJlo6!1QxzS){cHo7&4ac$HnL1#9t%^S}UbEqQL-Y2=Xu#~M9)c8> zhQ9=@j^5;2Yege_4@4bavHL~XpB3yy48bgI}*%z&{N|o7Iuw%n9<47HN&P+ms zpkZ6PMZfj6?8;O;HlJX$%lYZD!cP<@1uxrI(%E~sY)4WZ`2kdy7_ug#j0uj zHgF$(^_yF5tkkw+siO>$L8)V&v?bwl-)IFSW*pfqPxd|i)_+=uRIjuQN9}3KuI_ku znc6TcRf!Da#PNWy@tH&57PEBb^^6*J4nT|tUds>b#`Wz1~=~bm7SYGX-!8aZGFl zVg#%=W*A>l(-TdqBcz}727z=#5c`u97+btDh+8@VyQs2qQ{SpG&BjMTS8xU@+=+wK zjE0JtWL?AA#wqZF#gjPwQN#KrE}!$sQk?EJi~2F0%y&%4eBe5ZDXCBD8+ngwUuyqU z9RDDae=779Lj_yRklZ8uDmQE2ovFva$yr^8n9<-U9)DA!1L;q+G?;!@i!^DD$oO)8 z{51FOYF7jQdCKz+o4p?U#5i@pI48r&n(a=I3Z7W$R(CX4x43n} zcIs+Y)~%`0(85uwX|)d2Tr6JnoG)G&cQRY94_ zE9dbNe540dm-M)LxjW;x_*OCA6K0Ox#1{;qHl|J`QF20kP?1um+#}7RO08&FDt)I$ ztz;P}T|!N#S}t26Mop(~87X~0O{X?mJ&TdL%90qE3}Te&K$I0pdye@XG8zZNnHTAE zj$WtGmkWXb{cH@Zk8(``LV)g|(U)R)Fp0WQj{6u`%Xq z4eWnnWY^2E9RiC3LN5y#245%JP6qK)=qm&B5$n@$ONjLb=Ox~TrQhEUfSqI77pDK5 z4&^;}tQQ1;@RM(&f?Q%;cY<7^UIzqx!>UBvQost(&lS<81V|3y0d)ae$PT>$3a}oM zeMjKDmjkrC=L0t97}puFq0cb^Q!t#A+m@Jz+XTSFIvLRh7-qZUIGcSOU|qD^JRp9Q z+XAfbcvqIsp#l1PZ1BB?f-nrDf$pqh1HIO)und;0**ZArFd4xdY+2F%)4#Fw=PU?R z$PwkORU_TmDh6n9)b=`Y=l}wiO*)q~eOney%8E7p&NvI(;ITD;UP~9gp7I%ZCq){A z)E`UG8qq8`)qp!3HYjP5zgA5IQ&vsDUnMi*IkOhY0p#tAv>>(^4n-rgL6~e-07#q- zQg7{>9&vo;GqjV|(JEL>*44mh9M?T>oQ)VlYnRUTg_|jyhmi>y4}K#1?ON8;!B*B& zKr7qr9tF_=V+BvuO>QLV|oR)^V;cCZ6TX_$7a|ge~IjhgicMCr0!SvkZw!rD~)m z(5)e#@VWRadZg>M2NI>o(PPWdulb$oiI=}IBElE!P}jsSW<;|3n=Hh>1(nZLM2GA9 zE^zi&l;KTs(fKsnTKpP@a*slVVwszzKo>+guQpTVS`*#@=Ie`OFOYtxYH+2*dO*a| z{fx+`s)2GXj%{UYb-Z?cehcz)p`>+OHDoWx{TT4ml2CoR+!_9ZGMqWW zw(B0s38dSRj=L(k(qKxX9DOjJhHR!=C?d~;J-1cYg4#P8QaCQk26>ullsCz;bA(m! zKAVYDYZ&RXJ>TIpi)5x>L1>`;SV#2~Ho!lpkh8-_)V?%R`zGuSt;tu=;eVbo=5b`7x!JkF0BcliYqHWG#Sv zkImb9X?EAdbRN;d~yI!FwF`) z;CvAYY!ekufFEnbzcHj(3i6YQ#S@U(jz@Tj39&4FD=~{%b$V$}gLvnE%%CN;OR3@y@2~m*r)_zjX~6=#0$H+d2O*xIYPW-RUU+K1>TULB#4t zp#rshN#>g7L~D6x_Z93)uCw43g-8-l3+2!7A@m?htHObMgiaM?j%N<`$!qI(bv0n@ z*s{rJ5IKn)t}ywg+zrkn!(>_D#1|0R_o^kZK!^m30ME%=WmNx?_+#WV2qWUmg91NV zc?>nIYY=}7Xo&G}tv4_uMQ>Q)B~%N%^Dxd?#ZEL~Jdz-XXj^rkGuO1oOIk7Nb zCDDmAStcAxPsU@J@aqlf2ri4ZS2Z7B{WlfP3(q{eBG8z;1U_fdIKfLJ? zg%mCFb^)6ZzXHTuFcNR*SvnFQJ?TiZ37M#J_)J&pzFpYf3vZug9M0CV6AVTGohuyu z*T$I^dnT4^|lX571jmTzR>pu`x5-fo1I%MsckRK}8 z;;^QSC7E@xj40)@q19}l)D4@1!YVJl%_;s^2#1iYa>_5f-qwSbHdfC0fh}{WfUz+Z z4bv5p0{G0;c>^54UmAdU*ao>h;)zHprztz4^W5^QE_$Fi2Sj41gQ3X79Jf zstS`a*wR3Glx?I2erGQAwK6ls-xVpp@xD837u+60s+CE3qy^0S^f65ZY@@bRUyZut zk4-WJg;#F$cxTyh-Z4Yx4A*DoTEbx;-auwNCbGuBhRi!4KdT$6=Jf*?Ovm4NxO)|4 z%kv5>el&Vb*U_G6?Rd0`E6K+1XvXu_H(jBtCgqI!CISrn+`(PB4V-}oH->{$tYs5< zwukqc7@uc&ehlPbe?xTrl1-F!O`&tlmDKW5q?F(~^YBEDd1Q~#$?rGN3UprZ(MaS( zBSa|Wj}PlnK4?&1fl*(Tk`xDAtL*tY>B+E5kef1-R*c(Bt4wNH`tzClIh2!-tJ^_{ z*1$qGjfCx43fyO*FAM{Rxzo?|53r7s2DtCgPxCpk){Sr2hVqBVb#l>I`LKA6g92fe zZ95(Ph-dTai;q}NP%ug$7&JC#=-$Dlt`uPv(y8N#C0b1W)>z#X=a>%hr;3!6=;-o} z?6Qs@nOpFyWgm`)C2e@ZQVCgKQJgRuZZLrt#%y(Le@{%wA#3mn__S3ly4_@N=Q=|?&j2Q0N8L(L;3b|&C zLogg3JIra(mbv~e60a(Hu=o{gQ6zUQNEz+%8iH3vI*#lcBretRJ5de z%da|@e{U^0cjlEwa~-mtX!3|%@f;Zgk9WdiksJNqasbFz3~i;PZt+5?#}~vPUtDv% zVQeMZBktO`4$_qCM4NI!%^^FBaK&6$FlOm#3$>L7O}hiVWHV_J9D&=-W+uv>61)?e zr|gQ6E$T*{N0``*dc0#4El%#ZpCB8Pus4jj?B$uwq7caLRxfc=S6JE`0=-toZqZ(t zVvX6tK}t#85YQx;2hm^1S_ciY2MrCQf=yXFuNP=mOw`>OE1}Gk(Hbo|N2z(L zv(|%_szS;ewQ}B-#QFg7D{)L}0hcDT?o210bCrS|JsdqSIYIpF50~ckga+@r&pn|6 zeWd4><>rnxF@|q$mX!NaT22V;+R||zr+j~$cqg2E^6;ObDxbmSyBV^WCj*%WOvnEE zskR#{Gs)y=0=p^fZ!mpp9o`dcCH+1E?_>uyHrkbzmig3G(^AHvEye~@VJ z%jiaZQjs}-7^I?GE2b(cOO(?ebm0!;a>;4D13P3g!_E~(<%`BWfoqvvs!Pt3VCW7& z@H4Y=Q|Zyfjx}7 zqw@uQhx5-UmHQLubnsRx z_H%VStX*%&6u9+jlU>Ct{mvL)6VWD{MJFp?3m(i6SZjd3DIipynu z>ZszySiaap=N;$$(J*KGZAukZ&7FnkJL`NK*Qk19_NlU%83AetGbnorP!==l%NXs1 zl9_RjazrT168OuMsAYUDwWjunoQgtq7|Fv>79lsxcv}1CL%TrVO8b8t-oy!1YEOL# zAfTY{6X$+; z9-QnaB!ZJEVyDmMx-tF>8eGhChyl(oa52OFK)UOzuvZ4Ygpxh~!x#?dX{7{ANx~3N zp-+8feK#fzrPTOvYlqWo;b)~Wd4{5Uf$+v;0#VCUGC(7X{q7bnd)TWdNj0DINf2X% zIbH7W82tVd)<5HKqx%L`Wy$&)yQV5K46k%Uqqc4G5pQz-`%F1q@3Vm^KeV%)9XYG_ zg4!-sJm(wdG5^M6%wfI=ls3uQ(ue?5iB8X3#8rEas5Jh_FtMNJz}tC*8*IeRm9j3G z9Z-`UhdNR>W#4&r-v2ld4xm-z2)YW1ciOrJ1yLYf+dMAMH1*N(ewnq{=C$&3oblbh z>1LdjQkK&He>yu8c&OU%fscwx(IU}mNee=oJu18GJ0ZpxV=OZaV=1LcLdmOLS`^b} z2}LQ=zW0_^>U}A1B}t1mr1C$vY|qTxJM;VBxBHIznD05yIp;a&d7gXkbH8%c6g_V} zxLwFHXu4OhCpR~D%f2J4n%8PBcbM2v(^837iqPMjmuB2-Bt&{By-dFGKFf9sWFWr&`ymu5yn^X~W5@9yZAgFGw|YzkbOh#lq}` zed8ILwCaqRPvphTyuDX;%n4P#|Hg3dU-8$Y*2?~l?H7sY*xocNgU1p&TXB=&uPJBujkzJ#9p`gU!-LzY$X1i3# zt3K3`?S4JVb(fc)Vq>!E(=q#kXXS}ah)Cw#&OULv@WP<4FW~*SL7Q!IVoVE4$8SGX zum7WP?T-Yt_V4nBO41QwyZr0Vu;0o%%z50cV{OmQc~MJ;DxRS#d(BmD zywF-$_$*cym5>l=Hzj_KrjO`I6fD zm2&4nk}lgtlnT(W&FWsStKh!|rNlnYx_gE)LF{YLho2{$kt0R$Kv(|sZp`?>9-QzxXjESxd-ovh`4x_Ci{a!ra&X zt*Qmy_2WKhG$&uamn&K7xzNBialvB0IojIg&Auk_3=ea|=QmQW-Mf(-A zH?B$5m;6^+<<7b6hFR}Yz3x#MI~#O&tg>lYUD>KnTjpN%xM+XM7w1PmKiZ_t_V`ge zKkSrYJ0)gQ)dTk}i5cS@&aIvsFlJ-N%;K>rS<0OfuId!U+;uvYfgb9h{n3NVYmk&F+*)-#YzpZW>yF)ZQ*N@EUAw*J5YtDc%k94pITWpi#<1}6tf$OeYWa}mlQgFymsnJ;bQ?7q)9xF@1tZ_w4;c}Zf zobYI8Z}kc%vqGsXtQv`#4?goF&C%XcN^&A>(MXcAwlZ^uPi#XCi(&9BQkku#416#h zZC$Zl6}lHG_x~|g>0UGq{xs`owCL%uPb}#elwy|ky>+W8>xZByO+up9*z@XdAtbM8VXG6nICx_>=XTN>?-`5?xyCS1L zmY*Fd*(9et( z^Q|b86;}^c`K)-uKk0F^y36CG#fEb8iqf5~)I@mZ-1_7*bb)+Yshaft@LTo4Pa>*q z$oGd&Hw}+1(3q&Ysv=Wb)9t3#2d3xbvXPA=HA@zZ-g@A1q0<(UvSQ7kqK2z^n_Hw@ z-J=uCmTAa1SV(5B{&$B_K)AyLn(5%j?p@{!e2hxC3I3`LS@YF2rKThXg^b%|?0Gir zTlNTFZ{IhUUcS9%o40SVfz$-`?U!azxJsTY>}GXsR+^Do9hq6GyoWkxPitrg?a}gU z)>Olx$=s&k_()8aix$Yzgi?b?)8lRlRv#%ZaWbZGF^tS?E zT+B(&XV}mmGQlx3W5O*#!0ErX#cgUi@V74{0$~I?3b!N5brjNn?ET@Vg z<%@RwW0F1BAuOhC9;@-bSml`XGq)qY{S&2QG0W$si9?s_;|a*X)+qTU(gB zxN6#2@Di{u^p05JnX8@y6C49SQ<&j=GO=Ij{l>_i-zSl2aw9xXA_5uiwr~Yg2-f@XvkN-{AyB?USYbQH^d4N!IS5zL=_(+_ zg~?`7aOC)={Zh>b_-i;(`>dQSk{ojHn=E+kb64?|_$R1pN5Mv@N10PZA_ob!%;`OL zR~6vR)$-5@Q0`GBk+@{R+=5*a>=-EAf5WwPlsg*!DuTrW1#=U1?W8bIx`QWC3*Rvm zi5sMXqp`&9E0O2G5|pvL8YdWwM8=5;^}Hz$RY2p%;5}61BukOF0eCU-e0$QCXV9O^ z_{eS6B9X~>w(xbHIj;`LW_;v{wjz-O@pS&g&MO}x2`>tSEw$0OSZFU2IY4k+q}^OH zt`szG0ZU^~p7kDFPO7I!+@Ab_r}z8TjEWL~js+R07t@xB#HZrf8q*Y%{(WEzFn
      nqkA(0~md#9k~JR=?&c@TQ- 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 Rq$}{BrWxGhR}E>A^nc8))~^5n literal 0 HcmV?d00001 From 592dafd8217c98b662de9054f5393fa3037d29c7 Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Fri, 9 Oct 2020 18:49:54 +0800 Subject: [PATCH 011/804] =?UTF-8?q?[=E8=85=BE=E8=AE=AF=E8=BF=9E=E8=BF=9EAp?= =?UTF-8?q?p]=E5=9F=BA=E4=BA=8E=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=9A=84?= =?UTF-8?q?=E8=A7=86=E8=A7=89=E9=87=8D=E6=9E=84-=E9=A6=96=E9=A1=B5?= =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=88=E5=B0=81=E8=A3=85=E5=8D=95=E6=AC=A1?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=A4=A9=E6=B0=94=E7=9A=84=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E5=8C=85=E6=8B=AC=E5=AE=9A=E4=BD=8D=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit http://tapd.oa.com/NEW_IOT/prong/stories/view/1020393192859911107 Change-Id: I52cf5c905b7a8042b677831400071faa74c8f18d --- app/build.gradle | 3 + .../kitlink/activity/FamilyAddressActivity.kt | 2 +- .../link/kitlink/entity/WeatherInfo.kt | 15 ++++ .../link/kitlink/util/OnWeatherListener.kt | 17 ++++ .../link/kitlink/util/WeatherUtils.kt | 81 +++++++++++++++++++ .../link/util/check/LocationUtil.java | 28 +++++++ 6 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/WeatherInfo.kt create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/OnWeatherListener.kt create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeatherUtils.kt diff --git a/app/build.gradle b/app/build.gradle index 8eb8e8b50..a1601e03a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -48,6 +48,7 @@ android { buildConfigField 'String', 'XgAccessKey', "\"${getValueById('XgAccessKey')}\"" buildConfigField 'String', 'XgUSAAccessId', "\"${getValueById('XgUSAAccessId')}\"" buildConfigField 'String', 'XgUSAAccessKey', "\"${getValueById('XgUSAAccessKey')}\"" + buildConfigField 'String', 'WeatherKey', "\"${getValueById('WeatherKey')}\"" multiDexEnabled true } @@ -173,5 +174,7 @@ dependencies { implementation "com.github.skydoves:progressview:1.0.9" implementation project(path: ':sdk') implementation 'com.belerweb:pinyin4j:2.5.0' + implementation 'com.tencent.map.geolocation:TencentLocationSdk-openplatform:7.2.6' + } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyAddressActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyAddressActivity.kt index 69c85b2a9..b41c10167 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyAddressActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyAddressActivity.kt @@ -80,7 +80,7 @@ class FamilyAddressActivity : BaseActivity(), TencentLocationListener { L.e("开始定位") val request = TencentLocationRequest.create() request.requestLevel = TencentLocationRequest.REQUEST_LEVEL_POI - request.isAllowCache = true +// request.isAllowCache = false//.isAllowCache = true when (locationManager.requestLocationUpdates(request, this)) { TencentLocation.ERROR_OK -> { L.e("定位成功") diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/WeatherInfo.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/WeatherInfo.kt new file mode 100644 index 000000000..3e7ac4873 --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/WeatherInfo.kt @@ -0,0 +1,15 @@ +package com.tencent.iot.explorer.link.kitlink.entity + +class WeatherInfo { + var obsTime = "" + var temp = "" + var feelsLike = "" + var text = "" + var wind360 = "" + var windDir = "" + var windScale = "" + var windSpeed = "" + var humidity = "" // 湿度 + var precip = "" + var pressure = "" +} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/OnWeatherListener.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/OnWeatherListener.kt new file mode 100644 index 000000000..02171decf --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/OnWeatherListener.kt @@ -0,0 +1,17 @@ +package com.tencent.iot.explorer.link.kitlink.util + +import com.tencent.iot.explorer.link.kitlink.entity.WeatherInfo + +interface OnWeatherListener { + fun onWeatherSuccess(weatherInfo: WeatherInfo) + // 0 定位成功 + // 1 网络问题引起的定位失败 + // 2 GPS, Wi-Fi 或基站错误引起的定位失败: + // 2.1、用户的手机确实采集不到定位凭据,比如偏远地区比如地下车库电梯内等; + // 2.2、开关跟权限问题,比如用户关闭了位置信息,关闭了Wi-Fi,未授予app定位权限等。 + // 4 无法将WGS84坐标转换成GCJ-02坐标时的定位失败 + // 5 获取天气信息失败 + // 6 未知错误 + // 404 未知原因引起的定位失败 + fun onWeatherFailed(reason: Int) +} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeatherUtils.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeatherUtils.kt new file mode 100644 index 000000000..5cad1e713 --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeatherUtils.kt @@ -0,0 +1,81 @@ +package com.tencent.iot.explorer.link.kitlink.util + +import android.content.Context +import com.alibaba.fastjson.JSON +import com.tencent.iot.explorer.link.BuildConfig +import com.tencent.iot.explorer.link.kitlink.entity.WeatherInfo +import com.tencent.iot.explorer.link.util.check.LocationUtil +import com.tencent.map.geolocation.TencentLocation +import com.tencent.map.geolocation.TencentLocationListener +import okhttp3.* +import java.io.IOException + +object WeatherUtils { + + private var key = BuildConfig.WeatherKey + private val okHttpClient = OkHttpClient() + private var defaultLang = "zh" + + // 默认中文获取天气 + fun getWeatherInfo(lat: Double, lon: Double, callback: Callback) { + getWeatherInfo(lat, lon, defaultLang, callback) + } + + // 根据语言获取天气 + fun getWeatherInfo(lat: Double, lon: Double, lang: String, callback: Callback) { + + var url = "https://api.heweather.net/v7/weather/now?location=${lon},${lat}&key=$key&lang=$lang" + val request = Request.Builder().url(url).get().build() //添加头部信息 + okHttpClient.newCall(request).enqueue(callback) + } + + fun getLocalCurrentWeatherInfo(context: Context, lang: String, listener: OnWeatherListener) { + LocationUtil.getCurrentLocation(context, object : TencentLocationListener { + override fun onStatusUpdate(p0: String?, p1: Int, p2: String?) {} + + override fun onLocationChanged(p0: TencentLocation?, p1: Int, p2: String?) { + if (p0 == null || p1 != 0) { + if (listener != null) { + listener.onWeatherFailed(p1) + } + return + } + getWeatherInfo(p0!!.latitude, p0!!.longitude, lang, object : Callback{ + override fun onFailure(call: Call, e: IOException) { + if (listener != null) { + listener.onWeatherFailed(5) + } + } + + override fun onResponse(call: Call, response: Response) { + if (response.body() != null) { + var respStr = response.body()!!.string() + var json = JSON.parseObject(respStr) + if (json.containsKey("now")) { + var nowWeatherInfo = json.getString("now") + var weatherInfo = JSON.parseObject(nowWeatherInfo, WeatherInfo::class.java) + if (weatherInfo != null && listener != null) { + listener.onWeatherSuccess(weatherInfo) + return + } + } + } + + + if (listener != null) { + listener.onWeatherFailed(6) + } + } + + }) + } + + }) + } + + + fun getLocalCurrentWeatherInfo(context: Context, listener: OnWeatherListener) { + getLocalCurrentWeatherInfo(context, defaultLang, listener) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/check/LocationUtil.java b/app/src/main/java/com/tencent/iot/explorer/link/util/check/LocationUtil.java index bef250f53..e131bc9e8 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/check/LocationUtil.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/util/check/LocationUtil.java @@ -2,6 +2,13 @@ import android.content.Context; import android.location.LocationManager; +import android.os.Looper; +import android.util.Log; + +import com.alibaba.fastjson.JSON; +import com.tencent.map.geolocation.TencentLocation; +import com.tencent.map.geolocation.TencentLocationListener; +import com.tencent.map.geolocation.TencentLocationManager; /** * 位置相关的工具类 @@ -20,4 +27,25 @@ public static boolean isLocationServiceEnable(Context context) { } return false; } + + public static void getCurrentLocation(Context context, final TencentLocationListener lisetener) { + TencentLocationManager tencentLocationManager = TencentLocationManager.getInstance(context); + tencentLocationManager.requestSingleFreshLocation(null, new TencentLocationListener() { + + @Override + public void onLocationChanged(TencentLocation tencentLocation, int error, String reason) { + if (lisetener != null) { + lisetener.onLocationChanged(tencentLocation, error, reason); + } + } + + @Override + public void onStatusUpdate(String s, int i, String s1) { + if (lisetener != null) { + lisetener.onStatusUpdate(s, i, s1); + } + } + }, Looper.getMainLooper()); + + } } From e12110fd24518cfb6087149d8b7310b4ada6c0ed Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Sat, 10 Oct 2020 18:58:08 +0800 Subject: [PATCH 012/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E9=A1=B5=E9=9D=A2=EF=BC=8C=E7=BD=91=E6=A0=BC?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E6=95=B0=E6=8D=AE=E4=B8=8D=E5=85=A8=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=E5=93=81=E7=B1=BB=E5=90=8D=E4=B8=8D?= =?UTF-8?q?=E5=B1=85=E4=B8=AD=E6=98=BE=E7=A4=BA=EF=BC=8C=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E7=BD=91=E6=A0=BC=E6=95=B0=E6=8D=AE=E8=B7=B3=E8=B7=83=E9=97=AA?= =?UTF-8?q?=E7=83=81=EF=BC=8C=E5=90=B8=E9=A1=B6=E6=95=88=E6=9E=9C=E9=80=A0?= =?UTF-8?q?=E6=88=90=E5=8F=B3=E4=BE=A7=E7=BD=91=E6=A0=BC=E5=AE=BD=E5=BA=A6?= =?UTF-8?q?=E5=8F=98=E5=8C=96=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I5bda0d2ebeb97a98bd72636abc73bf140a67a3d8 --- app/build.gradle | 3 ++ .../link/customview/FullGridView.java | 17 +++++++++ .../link/kitlink/fragment/DeviceFragment.kt | 33 ++++++++--------- .../res/layout/activity_device_category.xml | 2 +- app/src/main/res/layout/device_item.xml | 36 ++++++++++++------- app/src/main/res/layout/fragment_devices.xml | 15 ++++---- 6 files changed, 70 insertions(+), 36 deletions(-) create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/customview/FullGridView.java diff --git a/app/build.gradle b/app/build.gradle index a1601e03a..d70d22eda 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -66,6 +66,9 @@ android { //-} } + kotlinOptions { jvmTarget = 1.8} + + buildTypes { debug { signingConfig signingConfigs.config diff --git a/app/src/main/java/com/tencent/iot/explorer/link/customview/FullGridView.java b/app/src/main/java/com/tencent/iot/explorer/link/customview/FullGridView.java new file mode 100644 index 000000000..adedec10c --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/customview/FullGridView.java @@ -0,0 +1,17 @@ +package com.tencent.iot.explorer.link.customview; + +import android.widget.GridView; + +public class FullGridView extends GridView { + + public FullGridView(android.content.Context context, android.util.AttributeSet attrs) { + super(context, attrs); + } + + + public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); + super.onMeasure(widthMeasureSpec, expandSpec); + } +} + diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt index 7b54352dd..b38a6acc0 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt @@ -16,6 +16,7 @@ import com.squareup.picasso.Picasso import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L +import com.tencent.iot.explorer.link.customview.FullGridView import com.tencent.iot.explorer.link.kitlink.activity.SmartConnectActivity import com.tencent.iot.explorer.link.kitlink.activity.SoftApActivity import com.tencent.iot.explorer.link.kitlink.consts.CommonField @@ -38,8 +39,8 @@ import kotlin.math.ceil class DeviceFragment : BaseFragment(), MyCallback, AdapterView.OnItemClickListener{ - private var devicesGridView : GridView? = null - private var recommendDevicesGridView : GridView? = null + private var devicesGridView : FullGridView? = null + private var recommendDevicesGridView : FullGridView? = null private var categoryList = arrayListOf() private var productList = arrayListOf() private var isRecommDeviceClicked = false @@ -82,7 +83,7 @@ class DeviceFragment : BaseFragment(), MyCallback, AdapterView.OnItemClickListen if (ProductList.size > 0) { productList = ProductList recommendDevicesGridView!!.adapter = GridAdapter(activity!!, ProductList, true) - setGridViewHeightByChildren(recommendDevicesGridView!!) +// setGridViewHeightByChildren(recommendDevicesGridView!!) } else { if (tv_recommend != null) tv_recommend.visibility = View.GONE if (split_line != null) split_line.visibility = View.GONE @@ -91,7 +92,7 @@ class DeviceFragment : BaseFragment(), MyCallback, AdapterView.OnItemClickListen categoryList = CategoryList if (devicesGridView != null && activity != null) { devicesGridView!!.adapter = GridAdapter(activity!!, CategoryList, false) - setGridViewHeightByChildren(devicesGridView!!) +// setGridViewHeightByChildren(devicesGridView!!) } } } @@ -190,18 +191,18 @@ class DeviceFragment : BaseFragment(), MyCallback, AdapterView.OnItemClickListen recommendDevicesGridView?.onItemClickListener = this } - private fun setGridViewHeightByChildren(gridView : GridView) { - val adaper: ListAdapter? = gridView.adapter ?: return - var totalHeight = 0 - val lineNum = ceil((adaper?.count?.toDouble() ?: 0.0) / 3.0) - val item: View? = adaper?.getView(0,null, gridView) - if (item != null) { - totalHeight = ((App.data.screenWith/5 + if (lineNum > 1) 120 else 50) * lineNum).toInt() - } - val params = gridView.layoutParams - params.height = totalHeight - gridView.layoutParams = params - } +// private fun setGridViewHeightByChildren(gridView : GridView) { +// val adaper: ListAdapter? = gridView.adapter ?: return +// var totalHeight = 0 +// val lineNum = ceil((adaper?.count?.toDouble() ?: 0.0) / 3.0) +// val item: View? = adaper?.getView(0,null, gridView) +// if (item != null) { +// totalHeight = ((App.data.screenWith/5 + if (lineNum > 1) 120 else 50) * lineNum).toInt() +// } +// val params = gridView.layoutParams +// params.height = totalHeight +// gridView.layoutParams = params +// } class GridAdapter : BaseAdapter { var deviceList : List? = null diff --git a/app/src/main/res/layout/activity_device_category.xml b/app/src/main/res/layout/activity_device_category.xml index 3556d75f8..6f9375c32 100644 --- a/app/src/main/res/layout/activity_device_category.xml +++ b/app/src/main/res/layout/activity_device_category.xml @@ -22,7 +22,7 @@ diff --git a/app/src/main/res/layout/device_item.xml b/app/src/main/res/layout/device_item.xml index 4af84b727..f5a7bbb1c 100644 --- a/app/src/main/res/layout/device_item.xml +++ b/app/src/main/res/layout/device_item.xml @@ -1,22 +1,32 @@ - + + android:clickable="false" + android:padding="15dp" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintDimensionRatio="h,1:1" + /> - + android:clickable="false" + android:gravity="center_horizontal" + android:paddingLeft="3dp" + android:paddingRight="3dp" + app:layout_constraintTop_toBottomOf="@id/iv_device_icon" + /> + diff --git a/app/src/main/res/layout/fragment_devices.xml b/app/src/main/res/layout/fragment_devices.xml index a5809e615..f4caf578f 100644 --- a/app/src/main/res/layout/fragment_devices.xml +++ b/app/src/main/res/layout/fragment_devices.xml @@ -5,23 +5,26 @@ android:background="@color/white" android:layout_width="match_parent" android:layout_height="match_parent"> - + android:layout_height="wrap_content" + android:paddingBottom="10dp" + > - - - + From 125503919db5f78555c493b0083262d889a7dddb Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Mon, 12 Oct 2020 18:35:39 +0800 Subject: [PATCH 013/804] =?UTF-8?q?[=E8=85=BE=E8=AE=AF=E8=BF=9E=E8=BF=9EAP?= =?UTF-8?q?P]=E6=89=AB=E7=A0=81=E6=8E=A7=E5=88=B6=E5=8F=B0=E7=9A=84?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E6=8A=95=E4=BA=A7=E4=BA=8C=E7=BB=B4=E7=A0=81?= =?UTF-8?q?=E8=BF=9B=E5=85=A5=E9=85=8D=E7=BD=91=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit http://tapd.oa.com/NEW_IOT/prong/stories/view/1020393192860351903 Change-Id: I5a194e1e268cff2813249bd2c3845ddda1899a37 --- .../activity/DeviceCategoryActivity.kt | 62 ++++++++++++++++++- .../link/kitlink/fragment/DeviceFragment.kt | 18 +++--- .../iot/explorer/link/kitlink/util/Utils.kt | 16 ++++- 3 files changed, 81 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt index 393adbb68..0043e1e44 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt @@ -5,10 +5,12 @@ import android.app.Activity import android.bluetooth.BluetoothAdapter import android.content.Context import android.content.Intent +import android.net.Uri import android.os.Bundle import android.os.Handler import android.text.TextUtils import android.util.DisplayMetrics +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -18,6 +20,7 @@ import android.view.animation.AnimationUtils import android.view.animation.LinearInterpolator import android.widget.Toast import androidx.fragment.app.Fragment +import com.alibaba.fastjson.JSON import com.example.qrcode.Constant import com.example.qrcode.ScannerActivity import com.tencent.iot.explorer.link.App @@ -28,14 +31,15 @@ import com.tencent.iot.explorer.link.kitlink.fragment.DeviceFragment import com.tencent.iot.explorer.link.kitlink.holder.DeviceListViewHolder import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.DeviceCategoryListResponse -import com.tencent.iot.explorer.link.kitlink.util.HttpRequest -import com.tencent.iot.explorer.link.kitlink.util.MyCallback -import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.kitlink.customview.MyScrollView import com.tencent.iot.explorer.link.util.T import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType +import com.tencent.iot.explorer.link.kitlink.entity.ProdConfigDetailEntity +import com.tencent.iot.explorer.link.kitlink.response.ProductsConfigResponse +import com.tencent.iot.explorer.link.kitlink.util.* import kotlinx.android.synthetic.main.activity_device_category.* import kotlinx.android.synthetic.main.bluetooth_adapter_invalid.* import kotlinx.android.synthetic.main.menu_back_layout.* @@ -46,6 +50,7 @@ import q.rorbin.verticaltablayout.VerticalTabLayout import q.rorbin.verticaltablayout.adapter.TabAdapter import q.rorbin.verticaltablayout.widget.ITabView import q.rorbin.verticaltablayout.widget.TabView +import java.net.URI class DeviceCategoryActivity : PActivity(), MyCallback, CRecyclerView.RecyclerItemView, View.OnClickListener, VerticalTabLayout.OnTabSelectedListener{ @@ -204,6 +209,7 @@ class DeviceCategoryActivity : PActivity(), MyCallback, CRecyclerView.RecyclerI val type = it.getStringExtra(Constant.EXTRA_RESULT_CODE_TYPE) it.getStringExtra(Constant.EXTRA_RESULT_CONTENT)?.run { L.d("type=$type,content=$this") + when { contains("signature=") -> {//虚拟设备 bindDevice(this.substringAfterLast("signature=")) @@ -220,6 +226,12 @@ class DeviceCategoryActivity : PActivity(), MyCallback, CRecyclerView.RecyclerI contains("page=smartconfig") -> { jumpActivity(SmartConnectActivity::class.java) } + contains("page=adddevice") && contains("productId") -> { + var productid = Utils.getUrlParamValue(this, "productId") + val productsList = arrayListOf() + productsList.add(productid!!) + HttpRequest.instance.getProductsConfig(productsList, patchProductListener) + } else -> {//之前旧版本虚拟设备二维码只有签名 bindDevice(this) } @@ -229,6 +241,50 @@ class DeviceCategoryActivity : PActivity(), MyCallback, CRecyclerView.RecyclerI } } + private var patchProductListener = object :MyCallback{ + override fun fail(msg: String?, reqCode: Int) { + T.show(msg) + } + + override fun success(response: BaseResponse, reqCode: Int) { + if (response.isSuccess() && reqCode == RequestCode.get_products_config) { + response.parse(ProductsConfigResponse::class.java)?.run { + val config = JsonManager.parseJson(Data[0].Config, ProdConfigDetailEntity::class.java) + val wifiConfigTypeList = config.WifiConfTypeList + var productId = "" + if (!TextUtils.isEmpty(config.profile)) { + var jsonProFile = JSON.parseObject(config.profile) + if (jsonProFile != null && jsonProFile.containsKey("ProductId") && + !TextUtils.isEmpty(jsonProFile.getString("ProductId"))) { + productId = jsonProFile.getString("ProductId") + } + } + + if (wifiConfigTypeList.equals("{}") || TextUtils.isEmpty(wifiConfigTypeList)) { + startActivityWithExtra(SmartConnectActivity::class.java, productId) + + } else if (wifiConfigTypeList.contains("[")) { + val typeList = JsonManager.parseArray(wifiConfigTypeList) + if (typeList.size > 0 && typeList[0] == "softap") { + startActivityWithExtra(SoftApActivity::class.java, productId) + } else { + startActivityWithExtra(SmartConnectActivity::class.java, productId) + } + } + } + } + } + } + + private fun startActivityWithExtra(cls: Class<*>?, productId: String) { + var intent = Intent(this, cls) + if (!TextUtils.isEmpty(productId)) { + intent.putExtra(CommonField.LOAD_VIEW_TXT_TYPE, LoadViewTxtType.LoadRemoteViewTxt.ordinal) + intent.putExtra(CommonField.PRODUCT_ID, productId) + } + startActivity(intent) + } + /** * 绑定虚拟设备 */ diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt index b38a6acc0..894f5262f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt @@ -103,19 +103,15 @@ class DeviceFragment : BaseFragment(), MyCallback, AdapterView.OnItemClickListen val config = JsonManager.parseJson(Data[0].Config, ProdConfigDetailEntity::class.java) val wifiConfigTypeList = config.WifiConfTypeList var productId = "" - if (TextUtils.isEmpty(config.profile)) { - return - } else { + if (!TextUtils.isEmpty(config.profile)) { var jsonProFile = JSON.parseObject(config.profile) - if (jsonProFile == null || !jsonProFile.containsKey("ProductId") || - TextUtils.isEmpty(jsonProFile.getString("ProductId"))) { - return - } else { + if (jsonProFile != null && jsonProFile.containsKey("ProductId") && + !TextUtils.isEmpty(jsonProFile.getString("ProductId"))) { productId = jsonProFile.getString("ProductId") } } - if (wifiConfigTypeList == "{}") { + if (wifiConfigTypeList.equals("{}") || TextUtils.isEmpty(wifiConfigTypeList)) { startActivityWithExtra(SmartConnectActivity::class.java, productId) } else if (wifiConfigTypeList.contains("[")) { @@ -134,8 +130,10 @@ class DeviceFragment : BaseFragment(), MyCallback, AdapterView.OnItemClickListen private fun startActivityWithExtra(cls: Class<*>?, productId: String) { var intent = Intent(context, cls) - intent.putExtra(CommonField.LOAD_VIEW_TXT_TYPE, LoadViewTxtType.LoadRemoteViewTxt.ordinal) - intent.putExtra(CommonField.PRODUCT_ID, productId) + if (!TextUtils.isEmpty(productId)) { + intent.putExtra(CommonField.LOAD_VIEW_TXT_TYPE, LoadViewTxtType.LoadRemoteViewTxt.ordinal) + intent.putExtra(CommonField.PRODUCT_ID, productId) + } startActivity(intent) } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Utils.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Utils.kt index abc3f5ba6..6eb11e6c9 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Utils.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Utils.kt @@ -4,7 +4,6 @@ import android.text.TextUtils import com.tencent.iot.explorer.link.core.log.L import java.util.* - object Utils { fun isEmpty(src: String): Boolean { @@ -74,8 +73,21 @@ object Utils { return ret } + // 获取 url 字符串参数对应的 value + fun getUrlParamValue(url: String, name: String?): String? { + val paramsStr = url.substring(url.indexOf("?") + 1, url.length) + val split: MutableMap = hashMapOf() + var params = paramsStr.split("&") + for (paramKV in params) { + var kv = paramKV.split("=") + if (kv.size == 2) { + split[kv.get(0)] = kv.get(1) + } + } + return split.get(name) + } + // @JvmStatic // fun main(args: Array) { -// System.out.println(getFirstSeriesNumFromStr("XX0000XX")) // } } \ No newline at end of file From 4b71f811d005c63875abb5a1cc346356929de75a Mon Sep 17 00:00:00 2001 From: archurtan Date: Tue, 13 Oct 2020 15:11:12 +0800 Subject: [PATCH 014/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dcrash=EF=BC=88IndexOu?= =?UTF-8?q?tOfBoundsException=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://console.firebase.google.com/project/tencent-iot/crashlytics/app/android:com.tencent.iot.explorer.link/issues/b6d4d1794fdfc338d48a1d026beba1b9?time=last-thirty-days&sessionEventKey=5F71E37800AD00016055C13AFD452D8C_1455974612949122555 Change-Id: I91e2c539cd6c72508bfec45dfb09cb7a7deeef8e --- .../iot/explorer/link/kitlink/activity/FamilyActivity.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyActivity.kt index c40ddf68b..732ffde6d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyActivity.kt @@ -163,8 +163,10 @@ class FamilyActivity : MActivity(), FamilyView, CRecyclerView.RecyclerItemView { clickView: View, position: Int ) { - put("member",model.memberList[position]) - jumpActivity(MemberActivity::class.java) + if (model.memberList.size > position) { + put("member", model.memberList[position]) + jumpActivity(MemberActivity::class.java) + } } override fun getViewHolder(parent: ViewGroup, viewType: Int): CRecyclerView.CViewHolder<*> { From 6c85daa0a9e2651b336e854da901f565e951d149 Mon Sep 17 00:00:00 2001 From: archurtan Date: Tue, 13 Oct 2020 15:54:54 +0800 Subject: [PATCH 015/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dcrash=EF=BC=88KotlinN?= =?UTF-8?q?ullPointerException=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://console.firebase.google.com/project/tencent-iot/crashlytics/app/android:com.tencent.iot.explorer.link/issues/5f9988e4cf440a903b1244ee524b1865?time=last-thirty-days&sessionEventKey=5F6F25E200AF00012762B34C32345FE6_1454460328634152665 Change-Id: I2fd6c39ff5b0e99e543e90fe28f405ef03750878 --- .../link/kitlink/activity/SelectRoomActivity.kt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt index 615dd33c1..c5aa5d212 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt @@ -24,8 +24,7 @@ import kotlinx.android.synthetic.main.menu_back_layout.* class SelectRoomActivity : BaseActivity(), CRecyclerView.RecyclerItemView { private var deviceEntity: DeviceEntity? = null - - private lateinit var selectedRoom: RoomEntity + private var selectedRoom: RoomEntity? = null private val roomList = arrayListOf() override fun getContentView(): Int { @@ -36,9 +35,9 @@ class SelectRoomActivity : BaseActivity(), CRecyclerView.RecyclerItemView { tv_title.text = T.getContext().getString(R.string.select_room)//"选择房间" deviceEntity = get("device") - selectedRoom = get("select_room")!! + selectedRoom = get("select_room") roomList.addAll(App.data.roomList.subList(1, App.data.roomList.size)) - if (TextUtils.isEmpty(selectedRoom.RoomId) && !TextUtils.isEmpty(deviceEntity!!.RoomId)) { + if (TextUtils.isEmpty(selectedRoom?.RoomId) && !TextUtils.isEmpty(deviceEntity!!.RoomId)) { roomList.forEach { if (it.RoomId == deviceEntity!!.RoomId){ selectedRoom = it @@ -85,7 +84,7 @@ class SelectRoomActivity : BaseActivity(), CRecyclerView.RecyclerItemView { private fun save() { if (deviceEntity == null) return App.data.getCurrentFamily().run { - selectedRoom.let { + selectedRoom?.let { HttpRequest.instance.changeRoom(FamilyId, it.RoomId, deviceEntity!!.ProductId, deviceEntity!!.DeviceName, object : MyCallback { override fun fail(msg: String?, reqCode: Int) { @@ -115,7 +114,7 @@ class SelectRoomActivity : BaseActivity(), CRecyclerView.RecyclerItemView { entity?.run { itemView.tv_week_repeat_title.text = this.RoomName itemView.iv_week_repeat_selected.setImageResource( - if (selectedRoom.RoomId == this.RoomId) R.mipmap.icon_checked + if (selectedRoom?.RoomId == this.RoomId) R.mipmap.icon_checked else R.mipmap.icon_unchecked ) itemView.tv_week_repeat_commit.visibility = From c10a07ad4a796919b4d38f973cefa28914e185ad Mon Sep 17 00:00:00 2001 From: archurtan Date: Tue, 13 Oct 2020 16:23:45 +0800 Subject: [PATCH 016/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dcrash=EF=BC=88could?= =?UTF-8?q?=20not=20find=20Fragment=20constructor=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://console.firebase.google.com/project/tencent-iot/crashlytics/app/android:com.tencent.iot.explorer.link/issues/78898c2e9051f10f00ef9e0a5912652b?hl=zh-cn&time=last-thirty-days&sessionEventKey=5F7B041903BD00014FC23BC1A8954C3F_1458543656195428550 Change-Id: I6d114c997e25c59f71e0b242f4a254c18e5603f3 --- .../iot/explorer/link/kitlink/fragment/WifiFragment.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/WifiFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/WifiFragment.kt index 9793f81c2..269248178 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/WifiFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/WifiFragment.kt @@ -20,7 +20,7 @@ import kotlinx.android.synthetic.main.smart_config_second.* /** * 输入wifi密码 */ -class WifiFragment(type: Int) : BaseFragment() { +class WifiFragment(): BaseFragment() { private var type = 0 private var wifiInfo: WifiInfo? = null @@ -30,13 +30,16 @@ class WifiFragment(type: Int) : BaseFragment() { var openWifiDialog: WifiHelperDialog? = null var openLocationServiceDialog: WifiHelperDialog? = null + constructor(type: Int):this(){ + this.type = type + } + companion object { const val smart_config = 0 const val soft_ap = 1 } init { - this.type = type showWifiInfo() } From df412f79ae473403b580af2c3e9dec116af18992 Mon Sep 17 00:00:00 2001 From: archurtan Date: Tue, 13 Oct 2020 15:22:31 +0800 Subject: [PATCH 017/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dcrash=EF=BC=88KotlinN?= =?UTF-8?q?ullPointerException=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://console.firebase.google.com/project/tencent-iot/crashlytics/app/android:com.tencent.iot.explorer.link/issues/6ec702947a770609a12de4dbe6f4621f?time=last-thirty-days&sessionEventKey=5F6E1D8401EA00012CAEBA5C1227D798_1454918167900440326 Change-Id: I4a2685a7977f5c3dec98fb334e17d7a5dba7e04e --- .../activity/DeviceCategoryActivity.kt | 2 +- .../link/kitlink/fragment/DeviceFragment.kt | 30 +++++++------------ 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt index 0043e1e44..1571b3308 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt @@ -295,7 +295,7 @@ class DeviceCategoryActivity : PActivity(), MyCallback, CRecyclerView.RecyclerI private fun generateFragments() : List{ val fragmentList = arrayListOf() for (item in App.data.recommendDeviceCategoryList) { - val fragment = DeviceFragment() + val fragment = DeviceFragment(this) val bundle = Bundle() bundle.putString("CategoryKey", item.CategoryKey) fragment.arguments = bundle diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt index 894f5262f..80ea53e8a 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt @@ -37,8 +37,9 @@ import kotlinx.android.synthetic.main.fragment_devices.* import kotlin.math.ceil -class DeviceFragment : BaseFragment(), MyCallback, AdapterView.OnItemClickListener{ +class DeviceFragment() : BaseFragment(), MyCallback, AdapterView.OnItemClickListener{ + private var mContext : Context? = null private var devicesGridView : FullGridView? = null private var recommendDevicesGridView : FullGridView? = null private var categoryList = arrayListOf() @@ -54,6 +55,10 @@ class DeviceFragment : BaseFragment(), MyCallback, AdapterView.OnItemClickListen Manifest.permission.ACCESS_FINE_LOCATION ) + constructor(c: Context):this() { + mContext = c + } + override fun getPresenter(): IPresenter? { return null } @@ -82,17 +87,15 @@ class DeviceFragment : BaseFragment(), MyCallback, AdapterView.OnItemClickListen response.parse(RecommDeviceListResponse::class.java)?.run { if (ProductList.size > 0) { productList = ProductList - recommendDevicesGridView!!.adapter = GridAdapter(activity!!, ProductList, true) -// setGridViewHeightByChildren(recommendDevicesGridView!!) + recommendDevicesGridView?.adapter = GridAdapter(mContext!!, ProductList, true) } else { if (tv_recommend != null) tv_recommend.visibility = View.GONE if (split_line != null) split_line.visibility = View.GONE if (gv_recommend_devices != null) gv_recommend_devices.visibility = View.GONE } categoryList = CategoryList - if (devicesGridView != null && activity != null) { - devicesGridView!!.adapter = GridAdapter(activity!!, CategoryList, false) -// setGridViewHeightByChildren(devicesGridView!!) + if (devicesGridView != null && mContext != null) { + devicesGridView!!.adapter = GridAdapter(mContext!!, CategoryList, false) } } } @@ -140,7 +143,7 @@ class DeviceFragment : BaseFragment(), MyCallback, AdapterView.OnItemClickListen override fun onItemClick(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { if (view != null && parent != null) { - if(ContextCompat.checkSelfPermission(activity!!, Manifest.permission.ACCESS_FINE_LOCATION) + if(ContextCompat.checkSelfPermission(mContext!!, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){ when (parent.id) { R.id.gv_recommend_devices->{ @@ -189,19 +192,6 @@ class DeviceFragment : BaseFragment(), MyCallback, AdapterView.OnItemClickListen recommendDevicesGridView?.onItemClickListener = this } -// private fun setGridViewHeightByChildren(gridView : GridView) { -// val adaper: ListAdapter? = gridView.adapter ?: return -// var totalHeight = 0 -// val lineNum = ceil((adaper?.count?.toDouble() ?: 0.0) / 3.0) -// val item: View? = adaper?.getView(0,null, gridView) -// if (item != null) { -// totalHeight = ((App.data.screenWith/5 + if (lineNum > 1) 120 else 50) * lineNum).toInt() -// } -// val params = gridView.layoutParams -// params.height = totalHeight -// gridView.layoutParams = params -// } - class GridAdapter : BaseAdapter { var deviceList : List? = null var context : Context? = null From 4f1a9b5ae60ac2f055a27a4846bc42bc489ad807 Mon Sep 17 00:00:00 2001 From: archurtan Date: Tue, 13 Oct 2020 17:13:49 +0800 Subject: [PATCH 018/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dcrash=EF=BC=88must=20?= =?UTF-8?q?not=20be=20null=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https: //console.firebase.google.com/project/tencent-iot/crashlytics/app/android:com.tencent.iot.explorer.link/issues/eb0a7bf48309aa15ccdb2c4b870a66c0?hl=zh-cn&time=last-thirty-days&sessionEventKey=5F6E1A9B00990001267ABA5C1227D798_1454911735137492252 Change-Id: Iad8a8dfc6541ea57ed773f7421a0d7490b57d832 --- .../link/kitlink/fragment/MessageFragment.kt | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MessageFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MessageFragment.kt index cbd8a73fa..42317fda8 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MessageFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MessageFragment.kt @@ -199,16 +199,18 @@ class MessageFragment(category: Int) : BaseFragment(), CRecyclerView.RecyclerIte * 显示列表 */ private fun showList() { - if (messageList.isEmpty()) { - iv_empty_message.visibility = View.VISIBLE - tv_empty_message.visibility = View.VISIBLE - crv_message_list.visibility = View.GONE - } else { - iv_empty_message.visibility = View.GONE - tv_empty_message.visibility = View.GONE - crv_message_list.visibility = View.VISIBLE + view?.let { + if (messageList.isEmpty()) { + iv_empty_message.visibility = View.VISIBLE + tv_empty_message.visibility = View.VISIBLE + crv_message_list.visibility = View.GONE + } else { + iv_empty_message.visibility = View.GONE + tv_empty_message.visibility = View.GONE + crv_message_list.visibility = View.VISIBLE + } + crv_message_list.notifyDataChanged() } - crv_message_list.notifyDataChanged() } private fun joinFamilyResponse(msg: String?, isSuccess: Boolean) { From cb28cd1a76c08e206bc1cd4d7a1abd3ae93246d3 Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Tue, 13 Oct 2020 16:40:59 +0800 Subject: [PATCH 019/804] =?UTF-8?q?[=E8=85=BE=E8=AE=AF=E8=BF=9E=E8=BF=9EAP?= =?UTF-8?q?P]=E7=99=BB=E5=BD=95=E4=B8=8E=E6=B6=88=E6=81=AF=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E7=82=B9=E8=A7=A6=E4=BC=98=E5=8C=96=20=20=201?= =?UTF-8?q?=E3=80=81=E9=9C=80=E6=B1=82=E5=88=86=E6=94=AF=203=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E4=B8=89=E4=B8=AA=20fragment=20=E6=A8=AA=E5=90=91?= =?UTF-8?q?=E6=BB=91=E5=8A=A8=EF=BC=8C=E5=90=8C=E6=97=B6=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E7=BA=B5=E5=90=91=E7=9A=84=E4=B8=8B=E6=8B=89=E5=88=B7=E6=96=B0?= =?UTF-8?q?=EF=BC=89=20=20=202=E3=80=81=E9=9C=80=E6=B1=82=E5=88=86?= =?UTF-8?q?=E6=94=AF=201.1=E3=80=811.2.1=E3=80=811.2.2=E3=80=811.3?= =?UTF-8?q?=E3=80=812=20=20=203=E3=80=81=E4=BF=AE=E5=A4=8D=E6=9C=AA?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E4=B8=A4=E6=AC=A1=E8=BE=93=E5=85=A5=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E6=98=AF=E5=90=A6=E4=B8=80=E8=87=B4=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=20=20=204=E3=80=81=E8=8E=B7=E5=8F=96=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E7=A0=81=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=80=92=E8=AE=A1?= =?UTF-8?q?=E6=97=B6=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit http://tapd.oa.com/NEW_IOT/prong/stories/view/1020393192860120143 Change-Id: Ibb7c6a8e4f55d42d9b4b18de510ee13edecebd81 --- .../link/customview/FragmentViewPager.java | 50 +++++++ .../explorer/link/customview/PageAdapter.java | 35 +++++ .../link/customview/check/ClickButton.kt | 35 ++++- .../activity/ForgotPasswordActivity.kt | 2 + .../link/kitlink/activity/GetCodeActivity.kt | 7 + .../link/kitlink/activity/LoginActivity.kt | 133 +++++++++++++++++- .../link/kitlink/activity/MessageActivity.kt | 51 ++++--- .../link/kitlink/activity/RegisterActivity.kt | 13 ++ .../link/kitlink/consts/CommonField.kt | 2 + .../iot/explorer/link/kitlink/util/Utils.kt | 51 +++++++ .../link/mvp/model/ForgotPasswordModel.kt | 4 + .../explorer/link/mvp/model/RegisterModel.kt | 4 + .../link/mvp/model/SetPasswordModel.kt | 18 +++ app/src/main/res/layout/activity_message.xml | 10 ++ app/src/main/res/values/strings.xml | 1 + 15 files changed, 393 insertions(+), 23 deletions(-) create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/customview/FragmentViewPager.java create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/customview/PageAdapter.java diff --git a/app/src/main/java/com/tencent/iot/explorer/link/customview/FragmentViewPager.java b/app/src/main/java/com/tencent/iot/explorer/link/customview/FragmentViewPager.java new file mode 100644 index 000000000..a620d2d31 --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/customview/FragmentViewPager.java @@ -0,0 +1,50 @@ +package com.tencent.iot.explorer.link.customview; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.MotionEvent; + +import androidx.viewpager.widget.ViewPager; + +public class FragmentViewPager extends ViewPager { + private boolean enabled = false; + + public FragmentViewPager(Context context) { + super(context); + } + + public FragmentViewPager(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + // 触摸事件不触发 + if (this.enabled) { + return super.onTouchEvent(event); + } + return false; + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent event) { + // 不处理触摸拦截事件 + if (this.enabled) { + return super.onInterceptTouchEvent(event); + } + return false; + } + + @Override + public boolean dispatchTouchEvent(MotionEvent event) { + // 分发事件,这个是必须要的,如果把这个方法覆盖了,那么ViewPager的子View就接收不到事件了 +// if (this.enabled) { +// return super.dispatchTouchEvent(event); +// } + return super.dispatchTouchEvent(event); + } + + public void setPagingEnabled(boolean enabled) { + this.enabled = enabled; + } +} diff --git a/app/src/main/java/com/tencent/iot/explorer/link/customview/PageAdapter.java b/app/src/main/java/com/tencent/iot/explorer/link/customview/PageAdapter.java new file mode 100644 index 000000000..b94e34b6f --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/customview/PageAdapter.java @@ -0,0 +1,35 @@ +package com.tencent.iot.explorer.link.customview; + +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentPagerAdapter; + +import com.tencent.iot.explorer.link.kitlink.fragment.MessageFragment; + +import java.util.List; + +public class PageAdapter extends FragmentPagerAdapter { + List mPages; + + public PageAdapter(FragmentManager fm, List pages) { + super(fm); + mPages = pages; + } + + @Override + public MessageFragment getItem(int arg0) { + try { + return mPages.get(arg0); + } catch (Exception e) { + return null; + } + } + + @Override + public int getCount() { + if (mPages == null) { + return 0; + } + return mPages.size(); + } + +} diff --git a/app/src/main/java/com/tencent/iot/explorer/link/customview/check/ClickButton.kt b/app/src/main/java/com/tencent/iot/explorer/link/customview/check/ClickButton.kt index 15ea44942..d1ec00d71 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/customview/check/ClickButton.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/customview/check/ClickButton.kt @@ -9,12 +9,18 @@ import android.view.View import android.widget.EditText import android.widget.TextView import androidx.appcompat.widget.AppCompatTextView +import androidx.core.text.isDigitsOnly import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.mvp.presenter.ForgotPasswordPresenter +import com.tencent.iot.explorer.link.mvp.presenter.RegisterPresenter class ClickButton : AppCompatTextView { private val list = arrayListOf() + private var registerPresenter: RegisterPresenter? = null + private var forgotPasswordPresenter: ForgotPasswordPresenter? = null + constructor(context: Context?) : super(context!!) { this.isEnabled = false } @@ -31,6 +37,14 @@ class ClickButton : AppCompatTextView { this.isEnabled = false } + fun setRegisterPresenter(registerPresenter: RegisterPresenter) { + this.registerPresenter = registerPresenter + } + + fun setForgotPasswordPresenter(forgotPasswordPresenter: ForgotPasswordPresenter) { + this.forgotPasswordPresenter = forgotPasswordPresenter + } + fun addEditText(editText: EditText, type: String) { if (!isContain(editText)) { list.add(EditTextHolder(editText, null, type)) @@ -76,11 +90,25 @@ class ClickButton : AppCompatTextView { checkStatus() } - private fun checkStatus() { + fun checkStatus() { var able = true list.forEach { if (able) { - able = it.check() + if (registerPresenter != null) { + if (registerPresenter!!.model == null) { + able = false + } else { + able = it.check() && registerPresenter!!.model!!.getAgreementStatus() + } + } else if (forgotPasswordPresenter != null) { + if (forgotPasswordPresenter!!.model == null) { + able = false + } else { + able = it.check() && forgotPasswordPresenter!!.model!!.getAgreementStatus() + } + } else { + able = it.check() + } } } this.isEnabled = able @@ -128,7 +156,8 @@ class ClickButton : AppCompatTextView { } "86" -> { // editText.filters = arrayOf(InputFilter.LengthFilter(11)) - return if (it.length == 11) { + // 长度为 11 位且仅包含数字的字符串认为是电话号码 + return if (it.length == 11 && it.isDigitsOnly()) { textView?.visibility = View.INVISIBLE textView?.text = "" true diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ForgotPasswordActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ForgotPasswordActivity.kt index 5527d559d..d5de8b40b 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ForgotPasswordActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ForgotPasswordActivity.kt @@ -40,6 +40,7 @@ class ForgotPasswordActivity : PActivity(), ForgotPasswordView, View.OnClickList override fun initView() { presenter = ForgotPasswordPresenter(this) + btn_forgot_get_code.setForgotPasswordPresenter(presenter) iv_back.setColorFilter(resources.getColor(R.color.black_333333)) tv_title.text = getString(R.string.find_bank_the_password) @@ -151,6 +152,7 @@ class ForgotPasswordActivity : PActivity(), ForgotPasswordView, View.OnClickList R.mipmap.icon_unselected } ) + btn_forgot_get_code.checkStatus() } override fun unselectedAgreement() { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/GetCodeActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/GetCodeActivity.kt index bc8391761..29c06dbdf 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/GetCodeActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/GetCodeActivity.kt @@ -5,8 +5,11 @@ import android.content.ClipboardManager import android.content.Context import android.content.Intent import android.os.Handler +import android.util.Log import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L +import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.util.Utils import com.tencent.iot.explorer.link.kitlink.util.Weak import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.GetCodePresenter @@ -153,6 +156,8 @@ class GetCodeActivity : PActivity(), GetCodeView, ClipboardManager.OnPrimaryClip intent.putExtra(EMAIL, email) intent.putExtra(SetPasswordActivity.VERIFICATION_CODE, verificationCode) startActivity(intent) + T.show(getString(R.string.registe_success)) + Utils.clearXmlStringValue(T.getContext(), CommonField.REG_COUNTRY_INFO, CommonField.REG_COUNTRY_INFO) finish() } @@ -163,6 +168,8 @@ class GetCodeActivity : PActivity(), GetCodeView, ClipboardManager.OnPrimaryClip intent.putExtra(PHONE, phoneNumber) intent.putExtra(SetPasswordActivity.VERIFICATION_CODE, verificationCode) startActivity(intent) + T.show(getString(R.string.registe_success)) + Utils.clearXmlStringValue(T.getContext(), CommonField.REG_COUNTRY_INFO, CommonField.REG_COUNTRY_INFO) finish() } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt index a5cffc34a..4dabfba37 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt @@ -2,9 +2,17 @@ package com.tencent.iot.explorer.link.kitlink.activity import android.Manifest import android.content.Intent +import android.os.Handler +import android.text.Editable import android.text.TextUtils +import android.text.TextWatcher +import android.util.Log import android.view.LayoutInflater import android.view.View +import android.widget.TextView +import androidx.core.text.isDigitsOnly +import androidx.core.widget.doOnTextChanged +import com.alibaba.fastjson.JSON import com.google.firebase.analytics.FirebaseAnalytics import com.google.firebase.crashlytics.FirebaseCrashlytics import com.tencent.iot.explorer.link.App @@ -12,6 +20,7 @@ import com.tencent.iot.explorer.link.ErrorCode import com.tencent.iot.explorer.link.ErrorMessage import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L +import com.tencent.iot.explorer.link.customview.check.VerifyEdit import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.entity.User import com.tencent.iot.explorer.link.kitlink.response.BaseResponse @@ -44,6 +53,9 @@ class LoginActivity : PActivity(), LoginView, View.OnClickListener, WeChatLogin private var fromTag = "" private var accountType = false //true为手机号,false为邮箱 private var accountForAutoFill = "" + @Volatile + private var canGetCode = true + private var handler: Handler = Handler() private val permissions = arrayOf( Manifest.permission.RECEIVE_SMS, @@ -97,6 +109,15 @@ class LoginActivity : PActivity(), LoginView, View.OnClickListener, WeChatLogin accoutPasswdLoginView.tv_login_to_country_bypsswd.text = getString(R.string.country_china_en) verifyCodeLoginView.tv_login_to_country_byverifycode.text = getString(R.string.country_china_en) } + + loadLastCountryInfo() + } + + private fun loadLastCountryInfo() { + var countryInfo = Utils.getStringValueFromXml(T.getContext(), CommonField.COUNTRY_INFO, CommonField.COUNTRY_INFO) + if (TextUtils.isEmpty(countryInfo)) return + + presenter.setCountry(countryInfo!!) } private fun initViewPager() { @@ -134,15 +155,98 @@ class LoginActivity : PActivity(), LoginView, View.OnClickListener, WeChatLogin accoutPasswdLoginView.btn_account_passwd_login.setOnClickListener(this) accoutPasswdLoginView.tv_account_passwd_forget_passwd.setOnClickListener(this) accoutPasswdLoginView.iv_login_to_country_bypsswd.setOnClickListener(this) + accoutPasswdLoginView.et_login_phone_or_email.addTextChangedListener(accountPwdTextWatcher) + accoutPasswdLoginView.et_login_phone_or_email_passwd.addTextChangedListener(accountPwdTextWatcher) + accoutPasswdLoginView.et_login_phone_or_email.setText("") + accoutPasswdLoginView.et_login_phone_or_email_passwd.setText("") verifyCodeLoginView.tv_use_passwd_to_login.setOnClickListener(this) verifyCodeLoginView.btn_account_verifycode_login.setOnClickListener(this) verifyCodeLoginView.tv_get_verify_code.setOnClickListener(this) verifyCodeLoginView.iv_login_to_country_byverifycode.setOnClickListener(this) - + verifyCodeLoginView.et_login_phone_or_email_byverifycode.addTextChangedListener(accountCodeTextWatcher) + verifyCodeLoginView.et_login_phone_or_email_verifycode.addTextChangedListener(accountCodeTextWatcher) + verifyCodeLoginView.et_login_phone_or_email_byverifycode.setText("") + verifyCodeLoginView.et_login_phone_or_email_verifycode.setText("") iv_wechat_login.setOnClickListener(this) } + private var accountPwdTextWatcher = object : TextWatcher { + override fun afterTextChanged(s: Editable?) { + accoutPasswdLoginView.btn_account_passwd_login.isEnabled = + isAccountOk(accoutPasswdLoginView.et_login_phone_or_email) && + isPwdOk(accoutPasswdLoginView.et_login_phone_or_email_passwd) + } + + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {} + } + + private var accountCodeTextWatcher = object : TextWatcher { + override fun afterTextChanged(s: Editable?) { + verifyCodeLoginView.btn_account_verifycode_login.isEnabled = + isAccountOk(verifyCodeLoginView.et_login_phone_or_email_byverifycode) && + isVerifyCodeOk(verifyCodeLoginView.et_login_phone_or_email_verifycode) + + //verifyCodeLoginView.tv_get_verify_code.isEnabled = isAccountOk(verifyCodeLoginView.et_login_phone_or_email_byverifycode) + enableTextView(verifyCodeLoginView.tv_get_verify_code, + isAccountOk(verifyCodeLoginView.et_login_phone_or_email_byverifycode)) + } + + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {} + } + + private fun enableTextView(textView: TextView, enable: Boolean) { + if (textView == null) return + if (!canGetCode) { // 当前处于无法获取验证码的状态时,不能设置状态 + textView.setTextColor(resources.getColor(R.color.gray_bbbbbb)) + textView.isEnabled = false + return + } + + if (enable) { + textView.setTextColor(resources.getColor(R.color.blue_0052d9)) + } else { + textView.setTextColor(resources.getColor(R.color.gray_bbbbbb)) + } + textView.isEnabled = enable + } + + // 匹配手机号码的规则 11 位且只有数字 + // 匹配邮箱的规则包含 @ 和 . + private fun isAccountOk(accountVerifyEdit : VerifyEdit): Boolean { + if (accountVerifyEdit == null) return false + + var accountTxt = accountVerifyEdit.text.toString() + if ((accountTxt.length == 11 && accountTxt.isDigitsOnly()) || + accountTxt.matches(Regex("^\\w+@(\\w+\\.)+\\w+$"))) { + return true + } + return false + } + + // 只包含数字且只有6位 + private fun isVerifyCodeOk(verifyCodeVerifyEdit : VerifyEdit): Boolean { + if (verifyCodeVerifyEdit == null) return false + + var accountTxt = verifyCodeVerifyEdit.text.toString() + if ((accountTxt.length == 6 && accountTxt.isDigitsOnly())) { + return true + } + return false + } + + private fun isPwdOk(pwdVerifyEdit : VerifyEdit): Boolean { + if (pwdVerifyEdit == null) return false + + var pwdTxt = pwdVerifyEdit.text.toString() + if (pwdTxt.matches(Regex("^(?![0-9]+\$)(?![a-z]+\$)(?![A-Z]+\$).{8,}\$"))) { + return true + } + return false + } + override fun onClick(v: View?) { when (v) { verifyCodeLoginView.tv_use_passwd_to_login -> {// 显示密码登录界面 @@ -198,6 +302,14 @@ class LoginActivity : PActivity(), LoginView, View.OnClickListener, WeChatLogin } } verifyCodeLoginView.tv_get_verify_code -> {// 获取验证码 + if (!canGetCode) { + return + } + Utils.startCountBySeconds(60, secondsCountDownCallback) + canGetCode = false + enableTextView(verifyCodeLoginView.tv_get_verify_code, + isAccountOk(verifyCodeLoginView.et_login_phone_or_email_byverifycode)) + val account = verifyCodeLoginView.et_login_phone_or_email_byverifycode.text.trim().toString() accountForAutoFill = account if (!account.contains("@")) { @@ -219,6 +331,24 @@ class LoginActivity : PActivity(), LoginView, View.OnClickListener, WeChatLogin } } + var secondsCountDownCallback = object: Utils.SecondsCountDownCallback { + override fun currentSeconds(seconds: Int) { + handler.post(Runnable { + verifyCodeLoginView.tv_get_verify_code.setText(getString(R.string.resend) + "(${seconds}s)") + }) + } + + override fun countDownFinished() { + canGetCode = true + handler.post(Runnable { + verifyCodeLoginView.tv_get_verify_code.setText(getString(R.string.resend)) + enableTextView(verifyCodeLoginView.tv_get_verify_code, // 根据实际情况设置获取验证码按钮的状态 + isAccountOk(verifyCodeLoginView.et_login_phone_or_email_byverifycode)) + }) + } + + } + private fun showVerifyCodeLogin() { tv_title.text = getString(R.string.verify_code_login) vp_login2.setCurrentItem(0, true) @@ -318,6 +448,7 @@ class LoginActivity : PActivity(), LoginView, View.OnClickListener, WeChatLogin data?.let { it.getStringExtra(CommonField.REGION_ID)?.run { presenter.setCountry(this) + Utils.setXmlStringValue(T.getContext(), CommonField.COUNTRY_INFO, CommonField.COUNTRY_INFO, this) } } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MessageActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MessageActivity.kt index 11f3b2d87..314c58c08 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MessageActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MessageActivity.kt @@ -1,11 +1,14 @@ package com.tencent.iot.explorer.link.kitlink.activity import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager import com.google.android.material.tabs.TabLayout import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.customview.PageAdapter import com.tencent.iot.explorer.link.kitlink.fragment.MessageFragment import kotlinx.android.synthetic.main.activity_message.* import kotlinx.android.synthetic.main.menu_back_layout.* +import java.util.* /** @@ -15,24 +18,29 @@ class MessageActivity : BaseActivity() { private var previousPosition = 0 private val fragments = arrayListOf() + private val page1 = MessageFragment(1) + private val page2 = MessageFragment(2) + private val page3 = MessageFragment(3) + private val mPageList: MutableList = ArrayList() + private lateinit var mAdapter :PageAdapter + override fun getContentView(): Int { return R.layout.activity_message } - override fun initView() { iv_back.setColorFilter(resources.getColor(R.color.black_333333)) tv_title.text = getString(R.string.message_notification) - fragments.clear() - fragments.add(MessageFragment(1)) - fragments.add(MessageFragment(2)) - fragments.add(MessageFragment(3)) - this.supportFragmentManager.beginTransaction() - .add(R.id.message_container, fragments[0]) - .show(fragments[0]) - .commit() + mPageList.add(page1) + mPageList.add(page2) + mPageList.add(page3) + mAdapter = PageAdapter(this.supportFragmentManager, mPageList) + fragment_pager.setAdapter(mAdapter) + fragment_pager.setPagingEnabled(true) + fragment_pager.setOffscreenPageLimit(3) + fragment_pager.setCurrentItem(0) } override fun setListener() { @@ -45,21 +53,26 @@ class MessageActivity : BaseActivity() { } override fun onTabSelected(tab: TabLayout.Tab) { - showFragment(tab.position) + if (fragment_pager != null) { + fragment_pager.setCurrentItem(tab.position) + } } }) + + fragment_pager.setOnPageChangeListener(pageSelectListener) } - private fun showFragment(position: Int) { - val transaction = this.supportFragmentManager.beginTransaction() - if (fragments[position].isAdded) { - transaction.show(fragments[position]).hide(fragments[previousPosition]).commit() - } else { - transaction.add(R.id.message_container, fragments[position]) - .show(fragments[position]).hide(fragments[previousPosition]) - .commit() + private var pageSelectListener = object :ViewPager.OnPageChangeListener{ + override fun onPageScrollStateChanged(state: Int) {} + + override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) { + if (tab_message != null) { + tab_message.setScrollPosition(position, positionOffset, true) + } } - previousPosition = position + + override fun onPageSelected(position: Int) {} + } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RegisterActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RegisterActivity.kt index 978281496..fc2eb2b71 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RegisterActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RegisterActivity.kt @@ -9,6 +9,7 @@ import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants import com.tencent.iot.explorer.link.kitlink.util.CommonUtils +import com.tencent.iot.explorer.link.kitlink.util.Utils import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.RegisterPresenter import com.tencent.iot.explorer.link.mvp.view.RegisterView @@ -50,6 +51,7 @@ class RegisterActivity : PActivity(), RegisterView, View.OnClickListener { App.data.regionId = "1" App.data.region = "ap-guangzhou" presenter = RegisterPresenter(this) + btn_register_get_code.setRegisterPresenter(presenter) iv_back.setColorFilter(resources.getColor(R.color.black_333333)) tv_title.text = getString(R.string.mobile_phone_register) initViewPager() @@ -78,6 +80,8 @@ class RegisterActivity : PActivity(), RegisterView, View.OnClickListener { phoneView.tv_register_to_country.text = getString(R.string.country_china_en) emailView.tv_register_to_country_email.text = getString(R.string.country_china_en) } + + loadLastCountryInfo() } private fun initViewPager() { @@ -220,6 +224,7 @@ class RegisterActivity : PActivity(), RegisterView, View.OnClickListener { R.mipmap.icon_unselected } ) + btn_register_get_code.checkStatus() } override fun unselectedAgreement() { @@ -238,9 +243,17 @@ class RegisterActivity : PActivity(), RegisterView, View.OnClickListener { data?.let { it.getStringExtra(CommonField.REGION_ID)?.run { presenter.setCountry(this) + Utils.setXmlStringValue(T.getContext(), CommonField.REG_COUNTRY_INFO, CommonField.REG_COUNTRY_INFO, this) } } } } + private fun loadLastCountryInfo() { + var countryInfo = Utils.getStringValueFromXml(T.getContext(), CommonField.REG_COUNTRY_INFO, CommonField.REG_COUNTRY_INFO) + if (TextUtils.isEmpty(countryInfo)) return + + presenter.setCountry(countryInfo!!) + } + } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt index 395e4b6bd..32e53e72b 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt @@ -53,6 +53,8 @@ object CommonField { /*************** 注册 ****************/ const val TYPE = "Type" + const val REG_COUNTRY_INFO = "RegCountryInfo" + const val COUNTRY_INFO = "CountryInfo" const val COUNTRY_CODE = "CountryCode" const val REGION_ID = "RegionID" const val PHONE_NUMBER = "PhoneNumber" diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Utils.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Utils.kt index 6eb11e6c9..ae0b2ba1d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Utils.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Utils.kt @@ -1,5 +1,6 @@ package com.tencent.iot.explorer.link.kitlink.util +import android.content.Context import android.text.TextUtils import com.tencent.iot.explorer.link.core.log.L import java.util.* @@ -87,6 +88,56 @@ object Utils { return split.get(name) } + interface SecondsCountDownCallback { + fun currentSeconds(seconds: Int) + fun countDownFinished() + } + + fun startCountBySeconds(max: Int, secondsCountDownCallback: SecondsCountDownCallback) { + startCountBySeconds(max, 1, secondsCountDownCallback) + } + + // 非单例线程,允许多处使用倒计时功能 + fun startCountBySeconds(max: Int, step: Int, secondsCountDownCallback: SecondsCountDownCallback) { + if (max <= 0) return // 上线为负数或者 0 的时候不进行倒计时的功能 + + var countDown = 0; + Thread { // 倒计时线程 + if (secondsCountDownCallback != null) { + secondsCountDownCallback.currentSeconds(max - countDown) + } + while(countDown < max) { + countDown += step + Thread.sleep(step.toLong() * 1000) + if (secondsCountDownCallback != null) { + secondsCountDownCallback.currentSeconds(max - countDown) + } + } + if (secondsCountDownCallback != null) { + secondsCountDownCallback.countDownFinished() + } + }.start() + } + + fun getStringValueFromXml(context: Context, xmlName: String, keyName: String): String? { + val dataSp = context.getSharedPreferences(xmlName, Context.MODE_PRIVATE) + return dataSp.getString(keyName, null) + } + + fun setXmlStringValue(context: Context, xmlName: String, keyName: String, value: String) { + val dataSp = context.getSharedPreferences(xmlName, Context.MODE_PRIVATE) + val editor = dataSp.edit() + if (!TextUtils.isEmpty(value)) { + editor.putString(keyName, value) + } else { + editor.remove(keyName) + } + editor.commit() + } + + fun clearXmlStringValue(context: Context, xmlName: String, keyName: String) { + setXmlStringValue(context, xmlName, keyName, "") + } // @JvmStatic // fun main(args: Array) { // } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ForgotPasswordModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ForgotPasswordModel.kt index 129bca6a8..49edcb50b 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ForgotPasswordModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ForgotPasswordModel.kt @@ -37,6 +37,10 @@ class ForgotPasswordModel(view: ForgotPasswordView) : ParentModel(view), MyCal return isAgree } + fun getAgreementStatus(): Boolean { + return isAgree + } + /** * 获取手机验证码 */ diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/SetPasswordModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/SetPasswordModel.kt index 925328b16..3c040fd2f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/SetPasswordModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/SetPasswordModel.kt @@ -1,5 +1,7 @@ package com.tencent.iot.explorer.link.mvp.model +import android.text.TextUtils +import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest @@ -7,6 +9,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.SetPasswordView +import com.tencent.iot.explorer.link.util.T /** * 设置密码 @@ -42,6 +45,7 @@ class SetPasswordModel(view: SetPasswordView) : ParentModel(vie * 邮箱注册 */ fun registerEmailPassword() { + if (!ifPwdSame()) return if (isCommit) return HttpRequest.instance.emailRegister(email, verificationCode, password, this) isCommit = true @@ -51,6 +55,7 @@ class SetPasswordModel(view: SetPasswordView) : ParentModel(vie * 手机号注册 */ fun registerPhonePassword() { + if (!ifPwdSame()) return if (isCommit) return HttpRequest.instance.phoneRegister( countryCode, @@ -66,6 +71,7 @@ class SetPasswordModel(view: SetPasswordView) : ParentModel(vie * 邮箱重置密码 */ fun resetEmailPassword() { + if (!ifPwdSame()) return if (isCommit) return HttpRequest.instance.resetEmailPassword(email, verificationCode, password, this) isCommit = true @@ -75,6 +81,7 @@ class SetPasswordModel(view: SetPasswordView) : ParentModel(vie * 手机号重置密码 */ fun resetPhonePassword() { + if (!ifPwdSame()) return if (isCommit) return HttpRequest.instance.resetPhonePassword( countryCode, @@ -86,6 +93,17 @@ class SetPasswordModel(view: SetPasswordView) : ParentModel(vie isCommit = true } + private fun ifPwdSame() : Boolean{ + if (!TextUtils.isEmpty(verifyPassword) && + !TextUtils.isEmpty(password) && + verifyPassword.equals(password)) { + return true + } else { + view?.fail(T.getContext().getString(R.string.toast_password_not_verify)) + return false + } + } + override fun fail(msg: String?, reqCode: Int) { L.e(msg ?: "") isCommit = false diff --git a/app/src/main/res/layout/activity_message.xml b/app/src/main/res/layout/activity_message.xml index 32a710975..81e941f1b 100644 --- a/app/src/main/res/layout/activity_message.xml +++ b/app/src/main/res/layout/activity_message.xml @@ -50,7 +50,17 @@ android:layout_width="match_parent" android:layout_height="0dp" android:layout_marginTop="1dp" + android:visibility="gone" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@+id/tab_message"/> + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cc91b83d0..992ca2d10 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -409,6 +409,7 @@ 反注册失败 收到消息: 注册成功1. token: + 注册成功 注册失败,错误码: 通知被打开 : 通知被清除 : From 6db7e98ab22faec6cdbc64e25a596ec87e45159e Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Thu, 15 Oct 2020 14:39:33 +0800 Subject: [PATCH 020/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E3=80=90=E4=BA=A7?= =?UTF-8?q?=E5=93=81=E4=BD=93=E9=AA=8C=E3=80=91=E6=89=AB=E7=A0=81=E6=89=B9?= =?UTF-8?q?=E9=87=8F=E6=8A=95=E4=BA=A7=E8=BF=9B=E5=85=A5=E9=85=8D=E7=BD=91?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://docs.qq.com/doc/DYWlScEd4WkpiZW1G Change-Id: I268a79a06f01b627a7cbd2d193c71ad725b9f24c --- .../activity/DeviceCategoryActivity.kt | 6 +++- .../link/kitlink/fragment/SCStepFragment.kt | 29 ++++++++++++++--- .../kitlink/fragment/SoftAppStepFragment.kt | 32 +++++++++++++++---- 3 files changed, 55 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt index 1571b3308..a2db7ed30 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt @@ -58,7 +58,11 @@ class DeviceCategoryActivity : PActivity(), MyCallback, CRecyclerView.RecyclerI private val handler = Handler() private var permissions = arrayOf( - Manifest.permission.CAMERA + Manifest.permission.CAMERA, + Manifest.permission.ACCESS_WIFI_STATE, + Manifest.permission.CHANGE_WIFI_STATE, + Manifest.permission.CHANGE_WIFI_MULTICAST_STATE, + Manifest.permission.ACCESS_FINE_LOCATION ) override fun getPresenter(): IPresenter? { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt index 8e7441ee6..f8bfc1027 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt @@ -83,17 +83,36 @@ class SCStepFragment(type: Int, productId: String) : BaseFragment() { val config = JsonManager.parseJson(Data[0].Config, ProdConfigDetailEntity::class.java) if (TextUtils.isEmpty(config.WifiSmartConfig)) { + loadViewStandradInfo() return } var json = JSONObject.parseObject(config.WifiSmartConfig) if (json.containsKey(CommonField.HARD_WARE_GUIDE)) { var hardwareGuide = JSONObject.parseObject(json.getString(CommonField.HARD_WARE_GUIDE), HardwareGuide::class.java) - nextBtn?.setText(hardwareGuide.btnText) - tipContent?.setText(hardwareGuide.message) - Picasso.get().load(hardwareGuide.bgImg).placeholder(R.drawable.imageselector_default_error) - .resize(App.data.screenWith / 5, App.data.screenWith / 5).centerCrop() - .into(pic) + if (!TextUtils.isEmpty(hardwareGuide.btnText)) { + nextBtn?.setText(hardwareGuide.btnText) + } else { + nextBtn?.setText(R.string.smart_config_first_title) + } + + if (!TextUtils.isEmpty(hardwareGuide.message)) { + tipContent?.setText(hardwareGuide.message) + } else { + tipContent?.setText(R.string.smart_config_first_hint2) + } + + if (TextUtils.isEmpty(hardwareGuide.bgImg)) { + pic?.setImageResource(R.mipmap.image_smart_config) + } else { + Picasso.get().load(hardwareGuide.bgImg) + .placeholder(R.drawable.imageselector_default_error) + .resize(App.data.screenWith / 5, App.data.screenWith / 5) + .centerCrop() + .into(pic) + } + } else { + loadViewStandradInfo() } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftAppStepFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftAppStepFragment.kt index cdc848110..f30f375d2 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftAppStepFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftAppStepFragment.kt @@ -1,6 +1,7 @@ package com.tencent.iot.explorer.link.kitlink.fragment import android.text.TextUtils +import android.util.Log import android.view.View import android.widget.ImageView import android.widget.TextView @@ -79,17 +80,36 @@ class SoftAppStepFragment(type: Int, productId: String) : BaseFragment() { val config = JsonManager.parseJson(Data[0].Config, ProdConfigDetailEntity::class.java) if (TextUtils.isEmpty(config.WifiSoftAP)) { + loadViewStandradInfo() return } - var json = JSONObject.parseObject(config.WifiSoftAP) if (json.containsKey(CommonField.HARD_WARE_GUIDE)) { + var hardwareGuide = JSONObject.parseObject(json.getString(CommonField.HARD_WARE_GUIDE), HardwareGuide::class.java) - nextBtn?.setText(hardwareGuide.btnText) - tipContent?.setText(hardwareGuide.message) - Picasso.get().load(hardwareGuide.bgImg).placeholder(R.drawable.imageselector_default_error) - .resize(App.data.screenWith / 5, App.data.screenWith / 5).centerCrop() - .into(pic) + if (TextUtils.isEmpty(hardwareGuide.btnText)) { + nextBtn?.setText(R.string.soft_ap_first_button) + } else { + nextBtn?.setText(hardwareGuide.btnText) + } + + if (TextUtils.isEmpty(hardwareGuide.message)) { + tipContent?.setText(R.string.soft_ap_first_toast) + } else { + tipContent?.setText(hardwareGuide.message) + } + + if (TextUtils.isEmpty(hardwareGuide.bgImg)) { + pic?.setImageResource(R.mipmap.image_soft_ap) + } else { + Picasso.get().load(hardwareGuide.bgImg) + .placeholder(R.drawable.imageselector_default_error) + .resize(App.data.screenWith / 5, App.data.screenWith / 5) + .centerCrop() + .into(pic) + } + } else { + loadViewStandradInfo() } } } From d7a60eb1bd057d1230fb407e8ac4d00d087492e1 Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Thu, 15 Oct 2020 17:25:14 +0800 Subject: [PATCH 021/804] =?UTF-8?q?oem=20=E7=89=88=E6=9C=AC=E7=9A=84=20htt?= =?UTF-8?q?p=20=E8=AF=B7=E6=B1=82=E5=8F=96=E6=B6=88=E5=8C=85=E5=90=8D?= =?UTF-8?q?=E7=9A=84=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ia36cb5722221243d21b890d5d230160fbe4ffe9a --- .../iot/explorer/link/kitlink/util/HttpRequest.kt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpRequest.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpRequest.kt index e284cd003..8c22f8b7d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpRequest.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpRequest.kt @@ -60,7 +60,7 @@ class HttpRequest private constructor() { val param = HashMap() param["lang"] = Utils.getLang() param["Platform"] = "android" - param["AppID"] = T.getContext().applicationInfo.packageName +// param["AppID"] = T.getContext().applicationInfo.packageName return param } @@ -160,7 +160,6 @@ class HttpRequest private constructor() { * 登录后请求 */ private fun tokenPost(param: HashMap, callback: MyCallback, reqCode: Int) { - val json = JsonManager.toJson(param) if (TextUtils.isEmpty(App.data.getToken())) {//登录过期或未登录 App.toLogin() return @@ -168,12 +167,15 @@ class HttpRequest private constructor() { val api:String val host:String if (!App.isOEMApp()) {// 公版&开源版 + param["AppID"] = T.getContext().applicationInfo.packageName host = STUDIO_BASE_URL_FOR_LOGINED api = "?uin=$ANDROID_ID" } else {// OEM版 host = OEM_TOKEN_API api = "" } + val json = JsonManager.toJson(param) + StringRequest.instance.postJson(host, api, json, object : Callback { override fun fail(msg: String?, reqCode: Int) { callback.fail(msg, reqCode) @@ -208,6 +210,9 @@ class HttpRequest private constructor() { * 登录后请求 */ private fun tokenAppCosAuth(param: HashMap, callback: MyCallback, reqCode: Int) { + if (!App.isOEMApp()) {// 公版&开源版 + param["AppID"] = T.getContext().applicationInfo.packageName + } val json = JsonManager.toJson(param) if (TextUtils.isEmpty(App.data.getToken())) {//登录过期或未登录 App.toLogin() @@ -233,7 +238,6 @@ class HttpRequest private constructor() { * 登录后请求 */ private fun getH5tokenPost(param: HashMap, callback: MyCallback, reqCode: Int) { - val json = JsonManager.toJson(param) if (TextUtils.isEmpty(App.data.getToken())) {//登录过期或未登录 App.toLogin() return @@ -242,12 +246,14 @@ class HttpRequest private constructor() { val api: String val host: String if (!App.isOEMApp()) {// 公版&开源版 + param["AppID"] = T.getContext().applicationInfo.packageName host = STUDIO_BASE_URL_FOR_LOGINED api = "?uin=$ANDROID_ID" } else {// OEM版 host = OEM_TOKEN_API api = "" } + val json = JsonManager.toJson(param) StringRequest.instance.postJson(host, api, json, object : Callback { override fun fail(msg: String?, reqCode: Int) { From de13f7151aa474e7d691785d5017d7e1d216f054 Mon Sep 17 00:00:00 2001 From: archurtan Date: Fri, 16 Oct 2020 17:15:13 +0800 Subject: [PATCH 022/804] =?UTF-8?q?=E5=A2=9E=E5=8A=A0sdk=20demo=20config?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=B9=B6=E8=B0=83=E6=95=B4=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E7=9A=84=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ibbd04818e8ca4bf6102733cd3784df166a558f47 --- app-config.json | 3 +-- app/build.gradle | 4 +++- config.gradle | 2 ++ parse_json.gradle | 4 ++-- sdkdemo-config.json | 4 ++++ sdkdemo/build.gradle | 2 ++ 6 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 sdkdemo-config.json diff --git a/app-config.json b/app-config.json index f44192252..b62539d85 100644 --- a/app-config.json +++ b/app-config.json @@ -7,6 +7,5 @@ "XgUSAAccessId": "1530001537", "XgUSAAccessKey": "A1S4XT4V7XSM", "TencentMapSDKValue": "ZV6BZ-3ATCP-5BZDE-VFIJI-I7NO6-TIBAG", - "TencentIotLinkSDKDemoAppkey": " ", - "TencentIotLinkSDKDemoAppSecret": " " + "HEweatherKey": "" } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index d70d22eda..f15d05904 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,6 +10,8 @@ apply plugin: 'com.google.firebase.crashlytics' apply plugin: 'com.google.firebase.firebase-perf' +rootProject.ext.configPath = "../app-config.json" + apply from: "../parse_json.gradle" android { @@ -48,7 +50,7 @@ android { buildConfigField 'String', 'XgAccessKey', "\"${getValueById('XgAccessKey')}\"" buildConfigField 'String', 'XgUSAAccessId', "\"${getValueById('XgUSAAccessId')}\"" buildConfigField 'String', 'XgUSAAccessKey', "\"${getValueById('XgUSAAccessKey')}\"" - buildConfigField 'String', 'WeatherKey', "\"${getValueById('WeatherKey')}\"" + buildConfigField 'String', 'WeatherKey', "\"${getValueById('HEweatherKey')}\"" multiDexEnabled true } diff --git a/config.gradle b/config.gradle index 95d907120..5d3116cde 100644 --- a/config.gradle +++ b/config.gradle @@ -8,4 +8,6 @@ ext { versionName: versionAppName, versionCode: 2 ] + + configPath = "" } diff --git a/parse_json.gradle b/parse_json.gradle index 8b1263f90..48d874d7f 100644 --- a/parse_json.gradle +++ b/parse_json.gradle @@ -1,7 +1,7 @@ import groovy.json.JsonSlurper -def jsonFile = file('../app-config.json') +def jsonFile = file(rootProject.ext.configPath) def parsedJson = new JsonSlurper().parseText(jsonFile.text) ext.getValueById = { key -> return parsedJson[key] -} +} \ No newline at end of file diff --git a/sdkdemo-config.json b/sdkdemo-config.json new file mode 100644 index 000000000..ca3b9306f --- /dev/null +++ b/sdkdemo-config.json @@ -0,0 +1,4 @@ +{ + "TencentIotLinkSDKDemoAppkey": " ", + "TencentIotLinkSDKDemoAppSecret": " " +} \ No newline at end of file diff --git a/sdkdemo/build.gradle b/sdkdemo/build.gradle index fd56ce752..50fb675e1 100644 --- a/sdkdemo/build.gradle +++ b/sdkdemo/build.gradle @@ -8,6 +8,8 @@ apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.crashlytics' +rootProject.ext.configPath = "../sdkdemo-config.json" + apply from: "../parse_json.gradle" android { From a8122fbb411ffc5bd4904a5c671c39fa91f59335 Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Mon, 19 Oct 2020 17:31:36 +0800 Subject: [PATCH 023/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86?= =?UTF-8?q?=E7=AA=97=E5=8F=A3=EF=BC=8C=E8=8E=B7=E5=8F=96=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E4=B8=B2=E8=B5=84=E6=BA=90=20crash=20=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=88=E7=94=B1=E5=9B=BD=E9=99=85=E5=8C=96=E5=B0=86=E7=A1=AC?= =?UTF-8?q?=E7=BC=96=E7=A0=81=E5=AD=97=E4=B8=B2=E6=94=B9=E4=B8=BA=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=E8=B5=84=E6=BA=90=E5=BC=95=E5=85=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I57f320201a5979e5ae12f61f29c993d76e1f1e7f --- .../explorer/link/kitlink/activity/BindMobilePhoneActivity.kt | 3 ++- .../iot/explorer/link/kitlink/activity/InviteMemberActivity.kt | 3 ++- .../iot/explorer/link/kitlink/activity/ShareActivity.kt | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindMobilePhoneActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindMobilePhoneActivity.kt index 99c238557..c4eb6a1d1 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindMobilePhoneActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindMobilePhoneActivity.kt @@ -10,6 +10,7 @@ import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter +import com.tencent.iot.explorer.link.util.T import kotlinx.android.synthetic.main.activity_bind_mobile_phone.* import kotlinx.android.synthetic.main.menu_back_layout.* @@ -18,7 +19,7 @@ import kotlinx.android.synthetic.main.menu_back_layout.* */ class BindMobilePhoneActivity : PActivity(), MyCallback { - private var countryName = getString(R.string.china_main_land)//"中国大陆" + private var countryName = T.getContext().getString(R.string.china_main_land)//"中国大陆" private var countryCode = "86" private var phone = "" private var isSend = false diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt index ca61885af..4591daddd 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt @@ -12,6 +12,7 @@ import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.kitlink.response.UserInfoResponse +import com.tencent.iot.explorer.link.util.T import kotlinx.android.synthetic.main.activity_invite_member.* import kotlinx.android.synthetic.main.layout_email_register.view.* import kotlinx.android.synthetic.main.layout_phone_register.view.* @@ -26,7 +27,7 @@ class InviteMemberActivity : BaseActivity(), View.OnClickListener, MyCallback { private var inviteType = true private var countryCode = "86" - private var countryName = getString(R.string.china_main_land)//"中国大陆" + private var countryName = T.getContext().getString(R.string.china_main_land)//"中国大陆" private var account = "" private lateinit var phoneView: View diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt index 3a91446a8..fb9fcee14 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt @@ -12,6 +12,7 @@ import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.kitlink.response.UserInfoResponse +import com.tencent.iot.explorer.link.util.T import kotlinx.android.synthetic.main.activity_share.* import kotlinx.android.synthetic.main.layout_email_register.view.* import kotlinx.android.synthetic.main.layout_phone_register.view.* @@ -26,7 +27,7 @@ class ShareActivity : BaseActivity(), MyCallback, View.OnClickListener { private var shareType = true private var countryCode = "86" - private var countryName = getString(R.string.china_main_land)//"中国大陆" + private var countryName = T.getContext().getString(R.string.china_main_land)//"中国大陆" private var account = "" private lateinit var phoneView: View From 093a32876037976064d6e278a75680afc71eeaac Mon Sep 17 00:00:00 2001 From: archurtan Date: Mon, 19 Oct 2020 16:48:52 +0800 Subject: [PATCH 024/804] =?UTF-8?q?Link=20auth=E6=A8=A1=E5=9D=97=E5=8E=BB?= =?UTF-8?q?=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I8a18835080885711f4fcea59253627cb7280e3dc --- .../java/com/tencent/iot/explorer/link/App.kt | 4 +- .../tencent/iot/explorer/link/auth/IoTAuth.kt | 72 ---- .../link/auth/message/payload/Payload.kt | 47 --- .../auth/message/payload/PayloadMessage.kt | 19 - .../link/auth/message/resp/HeartMessage.kt | 15 - .../link/auth/message/resp/RespFailMessage.kt | 20 - .../auth/message/resp/RespSuccessMessage.kt | 21 - .../link/auth/message/resp/ResponseMessage.kt | 16 - .../auth/message/upload/ActivePushMessage.kt | 15 - .../link/auth/message/upload/ArrayString.kt | 68 ---- .../link/auth/message/upload/HeartMessage.kt | 22 - .../link/auth/message/upload/IotMsg.kt | 32 -- .../link/auth/message/upload/ParamMap.kt | 26 -- .../link/auth/message/upload/UploadMessage.kt | 12 - .../link/auth/message/upload/YunMessage.kt | 49 --- .../link/auth/socket/DispatchMsgHandler.kt | 156 ------- .../link/auth/socket/JWebSocketClient.kt | 44 -- .../link/auth/socket/WSClientManager.kt | 380 ------------------ .../socket/callback/ActivePushCallback.kt | 16 - .../socket/callback/ConnectionCallback.kt | 7 - .../auth/socket/callback/DispatchCallback.kt | 19 - .../auth/socket/callback/HeartCallback.kt | 9 - .../auth/socket/callback/MessageCallback.kt | 16 - .../link/auth/socket/entity/RequestEntity.kt | 12 - .../link/auth/socket/entity/UserEntity.kt | 9 - .../iot/explorer/link/auth/util/Weak.kt | 21 - .../iot/explorer/link/auth/util/WifiUtil.kt | 162 -------- .../iot/explorer/link/kitlink/util/AppData.kt | 3 + .../link/mvp/model/ControlPanelModel.kt | 11 +- .../iot/explorer/link/mvp/model/LoginModel.kt | 3 + .../iot/explorer/link/core/auth/IoTAuth.kt | 1 - .../link/core}/auth/consts/SocketField.kt | 2 +- .../link/core}/auth/message/MessageConst.kt | 2 +- .../link/core/auth/message/payload/Payload.kt | 28 +- .../auth/message/payload/PayloadMessage.kt | 36 +- .../auth/message/upload/ActivePushMessage.kt | 4 + .../core/auth/message/upload/HeartMessage.kt | 4 +- .../core/auth/socket/DispatchMsgHandler.kt | 9 +- .../link/core/auth/socket/WSClientManager.kt | 3 +- 39 files changed, 74 insertions(+), 1321 deletions(-) delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/IoTAuth.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/message/payload/Payload.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/message/payload/PayloadMessage.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/message/resp/HeartMessage.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/message/resp/RespFailMessage.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/message/resp/RespSuccessMessage.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/message/resp/ResponseMessage.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/ActivePushMessage.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/ArrayString.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/HeartMessage.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/IotMsg.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/ParamMap.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/UploadMessage.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/YunMessage.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/socket/DispatchMsgHandler.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/socket/JWebSocketClient.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/socket/WSClientManager.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/ActivePushCallback.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/ConnectionCallback.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/DispatchCallback.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/HeartCallback.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/MessageCallback.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/socket/entity/RequestEntity.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/socket/entity/UserEntity.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/util/Weak.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/auth/util/WifiUtil.kt rename {app/src/main/java/com/tencent/iot/explorer/link => sdk/src/main/java/com/tencent/iot/explorer/link/core}/auth/consts/SocketField.kt (94%) rename {app/src/main/java/com/tencent/iot/explorer/link => sdk/src/main/java/com/tencent/iot/explorer/link/core}/auth/message/MessageConst.kt (91%) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/App.kt b/app/src/main/java/com/tencent/iot/explorer/link/App.kt index 46272c590..f9ebca32f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/App.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/App.kt @@ -5,7 +5,7 @@ import android.content.Intent import android.text.TextUtils import androidx.multidex.MultiDex import com.tencent.android.tpush.XGPushConfig -import com.tencent.iot.explorer.link.auth.IoTAuth +import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.activity.BaseActivity import com.tencent.iot.explorer.link.kitlink.consts.CommonField @@ -80,7 +80,7 @@ class App : Application() { override fun onCreate() { super.onCreate() MultiDex.install(this) - IoTAuth.init() + IoTAuth.init(BuildConfig.TencentIotLinkAppkey, BuildConfig.TencentIotLinkAppSecret) //初始化弹框 T.setContext(this.applicationContext) //日志开关 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/IoTAuth.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/IoTAuth.kt deleted file mode 100644 index a10024f25..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/IoTAuth.kt +++ /dev/null @@ -1,72 +0,0 @@ -package com.tencent.iot.explorer.link.auth - -import com.tencent.iot.explorer.link.auth.message.upload.ActivePushMessage -import com.tencent.iot.explorer.link.auth.message.upload.ArrayString -import com.tencent.iot.explorer.link.auth.socket.WSClientManager -import com.tencent.iot.explorer.link.auth.socket.callback.ActivePushCallback -import com.tencent.iot.explorer.link.auth.socket.callback.MessageCallback -import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.util.HttpRequest - -/** - * 长连接管理 - */ -object IoTAuth { - - private var expireAt = 0L - - // var accessToken = "" -// var appKey = "***REMOVED***" - var appKey = HttpRequest.APP_KEY - - /** - * 初始化WebSocket - */ - fun init() { - WSClientManager.instance.init() - } - - fun isConnected(): Boolean { - return WSClientManager.instance.isConnected() - } - - /** - * 注册监听 - * @param deviceIds 多个设备的deviceId - * @param callback MessageCallback注册监听请求回调,可为null - */ - fun registerActivePush(deviceIds: ArrayString, callback: MessageCallback?) { - val msg = ActivePushMessage(deviceIds) - L.e("registerActivePush", msg.toString()) - if (callback == null) - WSClientManager.instance.sendMessage(msg.toString()) - else - WSClientManager.instance.sendRequestMessage(msg, callback) - WSClientManager.instance.addDeviceIds(deviceIds) - WSClientManager.instance.sendHeartMessage() - } - - /** - * 添加监听器 - * @param callback ActivePushCallback,设备数据推送到客户端的回调。在调用registerActivePush成功后, - * 添加有监听器的页面可以收到推送数据,最多30个页面,超出时会移除最先添加的监听器,即先进先出(FIFO) - */ - fun addActivePushCallback(callback: ActivePushCallback) { - WSClientManager.instance.addActivePushCallback(callback) - } - - /** - * 移除监听器 - */ - fun removeActivePushCallback(deviceIds: ArrayString, callback: ActivePushCallback) { - WSClientManager.instance.removeActivePushCallback(callback) - WSClientManager.instance.removeDeviceIds(deviceIds) - } - - /** - * 销毁 - */ - fun destroy() { - WSClientManager.instance.destroy() - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/payload/Payload.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/message/payload/Payload.kt deleted file mode 100644 index 53efb7a0e..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/payload/Payload.kt +++ /dev/null @@ -1,47 +0,0 @@ -package com.tencent.iot.explorer.link.auth.message.payload - -import com.alibaba.fastjson.JSON -import com.alibaba.fastjson.JSONObject - -class Payload { - - //设备监听到下发的数据字符串 - var json = "" - - // {"type":"delta", "payload":{"state":{"power_switch":0},"version":0}} - // {"type":"update","state":{"reported":{"brightness":23}},"version":0,"clientToken":"API-ControlDeviceData-1571981804"} - //json中返回的“Payload”字段base64转码后得到的json数据 - var payload = "" - - //在payload中得到的设备更新字段json字符串 - var data = "" - - //json中返回的“DeviceId”字段 - var deviceId = "" - - fun keySet(): Set? { - try { - return JSON.parseObject(data)?.keys - } catch (e: Exception) { - e.printStackTrace() - } - return null - } - - fun getValue(id: String): String { - try { - JSON.parseObject(data)?.run { - return when (getString(id)) { - "true" -> "1" - "false" -> "0" - else -> getString(id) - - } - } - } catch (e: Exception) { - e.printStackTrace() - } - return "0" - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/payload/PayloadMessage.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/message/payload/PayloadMessage.kt deleted file mode 100644 index 5b0f70bee..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/payload/PayloadMessage.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.tencent.iot.explorer.link.auth.message.payload - -class PayloadMessage { - - var action = "" - var params: Param? = null - var push = false - - class Param { - var Time = "" - var Type = "" - var SubType = "" - var Topic = "" - var Payload = "" - var Seq = 0L - var DeviceId = "" - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/resp/HeartMessage.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/message/resp/HeartMessage.kt deleted file mode 100644 index 840ce516a..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/resp/HeartMessage.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.tencent.iot.explorer.link.auth.message.resp - -import com.tencent.iot.explorer.link.auth.message.upload.IotMsg - -class HeartMessage : IotMsg() { - - var error = "" - var error_message = "" - var data: Data? = null - - inner class Data { - var result = "" - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/resp/RespFailMessage.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/message/resp/RespFailMessage.kt deleted file mode 100644 index f75ea82ef..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/resp/RespFailMessage.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.tencent.iot.explorer.link.auth.message.resp - -class RespFailMessage { - - var Error: ErrorData? = null - - var RequestId = "" - - inner class ErrorData { - var Code = "" - var Message = "" - } - - fun setErrorMessage(message: String) { - if (Error == null) - Error = ErrorData() - Error?.Message = message - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/resp/RespSuccessMessage.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/message/resp/RespSuccessMessage.kt deleted file mode 100644 index e661e4c14..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/resp/RespSuccessMessage.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.tencent.iot.explorer.link.auth.message.resp - -import com.alibaba.fastjson.JSON -import java.lang.Exception - -class RespSuccessMessage { - - var response = "" - //response中的RequestId - var RequestId = "" - - fun parse(clazz: Class): T? { - try { - return JSON.parseObject(response, clazz) - } catch (e: Exception) { - e.printStackTrace() - } - return null - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/resp/ResponseMessage.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/message/resp/ResponseMessage.kt deleted file mode 100644 index 1a58c71d2..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/resp/ResponseMessage.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.tencent.iot.explorer.link.auth.message.resp - -import com.alibaba.fastjson.JSONObject - -class ResponseMessage { - - var error = "" - var error_message = "" - var data: Data? = null - var reqId = -1 - - inner class Data { - var Response: JSONObject? = null - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/ActivePushMessage.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/ActivePushMessage.kt deleted file mode 100644 index 98842f322..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/ActivePushMessage.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.tencent.iot.explorer.link.auth.message.upload - -class ActivePushMessage(deviceIds: ArrayString) : UploadMessage() { - - init { - action = "ActivePush" - commonParams["DeviceIds"] = deviceIds - } - - override fun toString(): String { - reqId = 1 - return super.toString() - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/ArrayString.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/ArrayString.kt deleted file mode 100644 index 6c389acb0..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/ArrayString.kt +++ /dev/null @@ -1,68 +0,0 @@ -package com.tencent.iot.explorer.link.auth.message.upload - -class ArrayString { - - private var array = ArrayList() - - constructor() - - constructor(string: String) { - array.add(string) - } - - fun addValue(value: String) { - if (!contains(value)) - array.add(value) - } - - fun contains(value: String): Boolean { - array.forEach { - if (value == it) { - return true - } - } - return false - } - - fun getValue(position: Int): String { - return array[position] - } - - fun size(): Int { - return array.size - } - - fun isNotEmpty(): Boolean { - return array.size > 0 - } - - fun clear() { - array.clear() - } - - override fun toString(): String { - val sb = StringBuilder("[\"") - array.forEachIndexed { index, s -> - sb.append(s).append("\"") - if (index < array.size - 1) - sb.append(",\"") - } - sb.append("]") - return sb.toString() - } - - fun toJson(): String { - val sb = StringBuilder("[\"") - array.forEachIndexed { index, s -> - sb.append(s).append("\"") - if (index < array.size - 1) - sb.append(",\"") - } - sb.append("]") - return sb.toString() - } - - fun remove(value: String) { - array.remove(value) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/HeartMessage.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/HeartMessage.kt deleted file mode 100644 index 18c6cda21..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/HeartMessage.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.tencent.iot.explorer.link.auth.message.upload - -import com.tencent.iot.explorer.link.auth.message.MessageConst - -/** - * 解绑设备 - */ -class HeartMessage(deviceIds: ArrayString) : YunMessage() { - - var deviceIds = deviceIds - - init { - Action = "AppDeviceTraceHeartBeat" - } - - override fun toString(): String { - reqId = 2 - addValue(MessageConst.DEVICE_IDS, deviceIds) - return super.toString() - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/IotMsg.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/IotMsg.kt deleted file mode 100644 index 6cb3799a9..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/IotMsg.kt +++ /dev/null @@ -1,32 +0,0 @@ -package com.tencent.iot.explorer.link.auth.message.upload - -import com.tencent.iot.explorer.link.auth.IoTAuth -import com.tencent.iot.explorer.link.auth.consts.SocketField - -open class IotMsg { - - var reqId = -1 - - internal var action = "" - - internal var commonParams = ParamMap() - - private val params = ParamMap() - - init { - params["params"] = commonParams - commonParams[SocketField.APP_KEY] = IoTAuth.appKey - } - - override fun toString(): String { - params["action"] = action - params["reqId"] = reqId - commonParams.toString() - return params.toString() - } - - open fun getMyAction():String{ - return action - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/ParamMap.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/ParamMap.kt deleted file mode 100644 index 06dc5a247..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/ParamMap.kt +++ /dev/null @@ -1,26 +0,0 @@ -package com.tencent.iot.explorer.link.auth.message.upload - -open class ParamMap : HashMap() { - - /** - * 转化为String - */ - override fun toString(): String { - val sb = StringBuilder("{") - this.keys.forEachIndexed { index, key -> - sb.append("\"$key").append("\":") - when (this[key]) { - is String -> { - sb.append("\"${this[key]}\"") - } - else -> { - sb.append("${this[key]}") - } - } - if (index < this.keys.size - 1) sb.append(",") - } - sb.append("}") - return sb.toString() - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/UploadMessage.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/UploadMessage.kt deleted file mode 100644 index 70464bfbe..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/UploadMessage.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tencent.iot.explorer.link.auth.message.upload - -import com.tencent.iot.explorer.link.auth.consts.SocketField -import com.tencent.iot.explorer.link.App - -open class UploadMessage : IotMsg() { - - init { - commonParams[SocketField.ACCESS_TOKEN] = App.data.getToken() - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/YunMessage.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/YunMessage.kt deleted file mode 100644 index 17fa65bd6..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/upload/YunMessage.kt +++ /dev/null @@ -1,49 +0,0 @@ -package com.tencent.iot.explorer.link.auth.message.upload - -import com.tencent.iot.explorer.link.auth.consts.SocketField -import com.tencent.iot.explorer.link.App -import java.util.* - -open class YunMessage : IotMsg() { - - var Action = "" - val RequestId = UUID.randomUUID().toString() - - private val actionParams = ParamMap() - - init { - action = "YunApi" - commonParams[SocketField.ACTION_PARAM] = actionParams - - actionParams[SocketField.PLATFORM] = "Android" - actionParams[SocketField.REQUEST_ID] = RequestId - actionParams[SocketField.ACCESS_TOKEN] = App.data.getToken() - } - - /** - * 把数据添加到actionParams中 - */ - fun addValue(key: String, value: Any): YunMessage { - actionParams[key] = value - return this - } - - /** - * 把数据添加到commonParams中 - */ - fun addCommonValue(key: String, value: Any?): YunMessage { - commonParams[key] = value - return this - } - - override fun toString(): String { - commonParams[SocketField.ACTION] = Action - actionParams.toString() - return super.toString() - } - - override fun getMyAction(): String { - return Action - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/DispatchMsgHandler.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/DispatchMsgHandler.kt deleted file mode 100644 index c81af0b2b..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/DispatchMsgHandler.kt +++ /dev/null @@ -1,156 +0,0 @@ -package com.tencent.iot.explorer.link.auth.socket - -import com.alibaba.fastjson.JSON -import com.alibaba.fastjson.util.Base64 -import com.tencent.iot.explorer.link.App -import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.auth.message.resp.HeartMessage -import com.tencent.iot.explorer.link.auth.message.MessageConst -import com.tencent.iot.explorer.link.auth.message.payload.Payload -import com.tencent.iot.explorer.link.auth.message.payload.PayloadMessage -import com.tencent.iot.explorer.link.auth.message.resp.RespFailMessage -import com.tencent.iot.explorer.link.auth.message.resp.RespSuccessMessage -import com.tencent.iot.explorer.link.auth.message.resp.ResponseMessage -import com.tencent.iot.explorer.link.auth.socket.callback.DispatchCallback -import com.tencent.iot.explorer.link.auth.socket.callback.HeartCallback -import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.util.T -import java.lang.Exception - -open class DispatchMsgHandler { - - var heartCallback: HeartCallback? = null - var dispatchCallback: DispatchCallback? = null - - /** - * 消息分发处理 - */ - @Synchronized - fun dispatch(message: String) { - try { - JSON.parseObject(message).run { - when { - getString("action") == "DeviceChange" -> { - parsePayloadMessage(message) - } - (containsKey("data")) -> { - parseYunMessage(getIntValue("reqId"), message) - } - else -> { - dispatchCallback?.unknownMessage(getIntValue("reqId"), message) - } - } - } - } catch (e: Exception) { - e.printStackTrace() - dispatchCallback?.unknownMessage(0, message) - } - } - - fun parseYunMessage(reqId: Int, message: String) { - when (reqId) { - MessageConst.HEART_ID -> { - try { - heartCallback?.response( - reqId, - JSON.parseObject(message, HeartMessage::class.java) - ) - } catch (e: Exception) { - e.printStackTrace() - } - } - else -> { - parseRspMessage(reqId, message) - } - } - } - - /** - * 解析请求响应 - */ - private fun parseRspMessage(reqId: Int, message: String) { - var failMessage = RespFailMessage() - try { - JSON.parseObject(message, ResponseMessage::class.java)?.run { - data?.let { - if (it.Response == null) { - failMessage.setErrorMessage(T.getContext().getString(R.string.paser_data_error_resp_null)) //"解析响应数据时,Response为空" - dispatchCallback?.yunMessageFail(reqId, message, failMessage) - return - } - if (it.Response!!.getJSONObject(MessageConst.ERROR) == null) { - val success = RespSuccessMessage() - success.response = it.Response!!.toJSONString() - success.RequestId = - it.Response!!.getString(MessageConst.REQUEST_ID) - dispatchCallback?.yunMessage(reqId, message, success) - return - } else { - try { - failMessage = JSON.parseObject( - it.Response!!.toJSONString(), - RespFailMessage::class.java - ) - } catch (e: Exception) { - e.printStackTrace() - failMessage.setErrorMessage(T.getContext().getString(R.string.paser_data_error_with_respfailmessage)) - } - dispatchCallback?.yunMessageFail(reqId, message, failMessage) - } - } - } - } catch (e: Exception) { - e.printStackTrace() - failMessage.setErrorMessage(T.getContext().getString(R.string.paser_data_error)) //解析响应数据时发生错误 - dispatchCallback?.yunMessageFail(reqId, message, failMessage) - } - } - - /** - * 解析监听到的设备更新数据 - */ - fun parsePayloadMessage(message: String) { - try { - JSON.parseObject(message, PayloadMessage::class.java)?.run { - params?.let { - val payload = Payload() - payload.json = message - payload.deviceId = it.DeviceId - val p = String(Base64.decodeFast(it.Payload)) - payload.payload = p - payload.data = getPayload(p) - dispatchCallback?.payloadMessage(payload) - } - } - } catch (e: Exception) { - e.printStackTrace() - dispatchCallback?.payloadUnknownMessage(message, e.message ?: "") - } - } - - // {"type":"delta", "payload":{"state":{"power_switch":0},"version":0}} -// {"type":"update","state":{"reported":{"brightness":23}},"version":0,"clientToken":"API-ControlDeviceData-1571981804"} - //{ "method": "report", "params": { "brightness": 14, "color": 0, "power_switch": 0, "name": "test-light-position-3556"}, "timestamp": 1581585022, "clientToken": "22"} - private fun getPayload(p: String): String { - L.e("Payload转码", "$p") - JSON.parseObject(p)?.run { - when (getString("type")) { - "update" -> { - val state = this.getJSONObject("state") - state?.let { - return it.getString("reported") - } - } - "delta" -> { - val payload = this.getJSONObject("payload") - payload?.let { - return it.getString("state") - } - } - else -> return getString("params") - } - } - return "" - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/JWebSocketClient.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/JWebSocketClient.kt deleted file mode 100644 index ad0e747b9..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/JWebSocketClient.kt +++ /dev/null @@ -1,44 +0,0 @@ -package com.tencent.iot.explorer.link.auth.socket - -import com.tencent.iot.explorer.link.auth.socket.callback.ConnectionCallback -import com.tencent.iot.explorer.link.core.log.L -import org.java_websocket.client.WebSocketClient -import org.java_websocket.handshake.ServerHandshake -import java.net.URI - -class JWebSocketClient(serverUri: URI, handler: DispatchMsgHandler, connectionCallback: ConnectionCallback) : WebSocketClient(serverUri) { - - private val dispatchMsgHandler = handler - var isConnected = false - private val connectListener = connectionCallback - - override fun onOpen(handshakedata: ServerHandshake) { - } - - override fun onClose(code: Int, reason: String, remote: Boolean) { - disconnect() - } - - override fun onMessage(message: String) { - isConnected = true - connectListener.connected() - L.e("JWebSocketClient", message) - dispatchMsgHandler.dispatch(message) - } - - override fun onError(ex: Exception?) { - isConnected = true - disconnect() - } - - fun destroy() { - isConnected = false - this.close() - } - - private fun disconnect() { - isConnected = false - connectListener.disconnected() - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/WSClientManager.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/WSClientManager.kt deleted file mode 100644 index a96d9aedd..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/WSClientManager.kt +++ /dev/null @@ -1,380 +0,0 @@ -package com.tencent.iot.explorer.link.auth.socket - -import android.text.TextUtils -import com.tencent.iot.explorer.link.auth.message.MessageConst -import com.tencent.iot.explorer.link.auth.message.payload.Payload -import com.tencent.iot.explorer.link.auth.message.resp.RespFailMessage -import com.tencent.iot.explorer.link.auth.message.resp.RespSuccessMessage -import com.tencent.iot.explorer.link.auth.message.upload.ArrayString -import com.tencent.iot.explorer.link.auth.message.upload.HeartMessage -import com.tencent.iot.explorer.link.auth.message.upload.IotMsg -import com.tencent.iot.explorer.link.auth.socket.callback.ActivePushCallback -import com.tencent.iot.explorer.link.auth.socket.callback.ConnectionCallback -import com.tencent.iot.explorer.link.auth.socket.callback.DispatchCallback -import com.tencent.iot.explorer.link.auth.socket.callback.MessageCallback -import com.tencent.iot.explorer.link.auth.socket.entity.RequestEntity -import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants -import com.util.WifiUtil -import kotlinx.coroutines.* -import java.net.URI -import java.util.* - -/** - * JWebsocketClient管理 - */ -internal class WSClientManager private constructor() { - - private var hasListener = false - private var job: Job? = null - private lateinit var heartJob: Job - - private var heartMessageList = ArrayString() - private var heartCount = 0 - - //标记是否可以重新创建 - private var client: JWebSocketClient? = null - - @Volatile - private var requestSuq = 0 //请求序号 - - //消息响应分发 - private val handler = DispatchMsgHandler() - - private val host = SocketConstants.host - private val messageList = LinkedList() - private val requestQueue = LinkedList() - private val confirmQueue = LinkedList() - - //设备监听器 - private val activePushCallbacks = LinkedList() - - //保活相关参数 - private var isKeep = false - private val delayMills = 10 * 1000L - private var param = "{\"action\":\"Hello\",\"reqId\":${MessageConst.HEART_ID}}" - - - /** - * 单例 - */ - companion object { - - private var debugTag = "" - - val instance: WSClientManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { - WSClientManager() - } - - /** - * 设置日志tag - */ - fun setDebugTag(tag: String) { - debugTag = if (TextUtils.isEmpty(tag)) { - tag - } else { - "?uin=$tag" - } - } - } - - /** - * 初始化 - */ - fun init() { - isKeep = true - createSocketClient() - startHeartJob() - } - - /** - * 添加设备id - */ - fun addDeviceIds(ids: ArrayString) { - for (i in 0 until ids.size()) { - heartMessageList.addValue(ids.getValue(i)) - } - } - - /** - * 发送设备订阅心跳 - */ - fun sendHeartMessage() { - sendMessage(HeartMessage(heartMessageList)) - } - - /** - * 移除 - */ - fun removeDeviceIds(ids: ArrayString) { - for (i in 0 until ids.size()) - heartMessageList.remove(ids.getValue(i)) - } - - /** - * 响应数据解析回调 - */ - private val callback = object : DispatchCallback { - override fun yunMessage(reqId: Int, message: String, response: RespSuccessMessage) { - getRequestEntity(reqId)?.run { - confirmQueue.remove(this) - messageCallback?.success(reqId, message, response) - } - } - - override fun yunMessageFail(reqId: Int, message: String, response: RespFailMessage) { - getRequestEntity(reqId)?.run { - confirmQueue.remove(this) - messageCallback?.fail(reqId, message, response) - } - } - - override fun payloadMessage(payload: Payload) { - activePushCallbacks.forEach { - it.success(payload) - } - } - - override fun payloadUnknownMessage(json: String, errorMessage: String) { - activePushCallbacks.forEach { - it.unknown(json, errorMessage) - } - } - - override fun unknownMessage(reqId: Int, json: String) { - getRequestEntity(reqId)?.run { - confirmQueue.remove(this) - messageCallback?.unknownMessage(reqId, json) - } - } - } - - init { - handler.dispatchCallback = callback - } - - /** - * 创建JWebSocketClient - */ - @Synchronized - private fun createSocketClient() { - val myHost = if (debugTag.isNotEmpty()) - host + debugTag - else - host - //创建WebSocket - client = JWebSocketClient(URI(myHost), handler, connectListener) - client!!.connect() - } - - /** - * 发送心跳包 - */ - private fun startHeartJob() { - heartJob = CoroutineScope(Dispatchers.IO).launch { - while (isKeep) { - sendMessage(param) - if (heartMessageList.isNotEmpty() && heartCount == 5) { - sendHeartMessage() - heartCount = 0 - } - heartCount++ - delay(delayMills) - } - } - } - - /** - * 停止发送心跳包 - */ - private fun stopHeartJob() { - isKeep = false - heartJob.cancel() - } - - /** - * 开始重连 - */ - private fun startJob() { - hasListener = true - L.e("开始重连") - if (job == null) { - job = CoroutineScope(Dispatchers.IO).launch { - while (hasListener) { - try { - if (WifiUtil.ping("www.baidu.com") || WifiUtil.ping("iot.cloud.tencent.com")) { - if (client != null) { - client?.destroy() - client = null - } - createSocketClient() - L.d("正在尝试重新连接wss://iot.cloud.tencent.com") - } else { - L.d("无法连接wss://iot.cloud.tencent.com") - } - delay(2000) - } catch (e: Exception) { - e.printStackTrace() - } - } - } - } else { - if (!job!!.isActive) - job?.start() - } - } - - /** - * 停止重连 - */ - private fun stopJob() { - if (job != null) { - hasListener = false - job?.cancel() - job = null - } - } - - /** - * 连接监听 - */ - private val connectListener = object : ConnectionCallback { - - override fun connected() { - resend() - if (job != null) - activePushCallbacks.forEach { - it.reconnected() - } - stopJob() - } - - override fun disconnected() { - L.d("连接断开") - client?.destroy() - client = null - startJob() - } - } - - /** - * 添加监听器 - */ - fun addActivePushCallback(callback: ActivePushCallback) { - if (activePushCallbacks.size > 30) {//最多30个 - activePushCallbacks.removeFirst() - } - activePushCallbacks.addLast(callback) - } - - /** - * 移除监听器 - */ - fun removeActivePushCallback(callback: ActivePushCallback) { - activePushCallbacks.remove(callback) - } - - /** - * 判断连接是否正常 - */ - fun isConnected(): Boolean { - return client?.isConnected ?: false - } - - /** - * 发送消息,不做消息回复确认 - */ - fun sendMessage(message: String) { - try { - client?.run { - if (isConnected) { - send(message) - return - } - } - } catch (e: Exception) { - e.printStackTrace() - connectListener.disconnected() - } - messageList.addLast(message) - } - - /** - * 发送消息,不做消息回复确认 - */ - fun sendMessage(message: IotMsg) { - L.e("${message.getMyAction()}:${message}") - sendMessage(message.toString()) - } - - /** - * 发送请求消息 - */ - @Synchronized - fun sendRequestMessage(iotMsg: IotMsg, messageCallback: MessageCallback?) { - if (requestSuq >= Int.MAX_VALUE - 1000) - requestSuq = 0 - val entity = RequestEntity(requestSuq++, iotMsg) - entity.messageCallback = messageCallback - client?.run { - if (isConnected) { - confirmQueue.addLast(entity) - sendMessage(iotMsg) - return - } - } - requestQueue.addLast(entity) - } - - /** - * 只重发一次 - */ - @Synchronized - private fun resend() { - client?.run { - confirmQueue.forEach { - send(it.iotMsg.toString()) - } - while (requestQueue.isNotEmpty()) { - send(requestQueue.poll()?.iotMsg.toString()) - } - while (messageList.isNotEmpty()) { - send(messageList.poll()) - } - } - } - - /** - * 获得请求对象 - */ - @Synchronized - private fun getRequestEntity(reqId: Int): RequestEntity? { - val iterator = confirmQueue.iterator() - while (iterator.hasNext()) { - if (iterator.next().reqId == reqId) { - return iterator.next() - } - } - return null - } - - /** - * 重连 - */ - fun reconnect() { - connectListener.disconnected() - } - - /** - * 销毁 - */ - fun destroy() { - hasListener = false - isKeep = false - client?.destroy() - client = null - stopHeartJob() - stopJob() - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/ActivePushCallback.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/ActivePushCallback.kt deleted file mode 100644 index e8a48f4a8..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/ActivePushCallback.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.tencent.iot.explorer.link.auth.socket.callback - -import com.tencent.iot.explorer.link.auth.message.payload.Payload - -interface ActivePushCallback { - - /** - * 网络断开后重连 - */ - fun reconnected() - - fun success(payload: Payload) - - fun unknown(json: String, errorMessage: String) - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/ConnectionCallback.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/ConnectionCallback.kt deleted file mode 100644 index ef249a25e..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/ConnectionCallback.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.tencent.iot.explorer.link.auth.socket.callback - -interface ConnectionCallback { - fun connected() - - fun disconnected() -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/DispatchCallback.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/DispatchCallback.kt deleted file mode 100644 index 73f064511..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/DispatchCallback.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.tencent.iot.explorer.link.auth.socket.callback - -import com.tencent.iot.explorer.link.auth.message.payload.Payload -import com.tencent.iot.explorer.link.auth.message.resp.RespFailMessage -import com.tencent.iot.explorer.link.auth.message.resp.RespSuccessMessage - -interface DispatchCallback { - - fun yunMessage(reqId: Int, message: String, response: RespSuccessMessage) - - fun yunMessageFail(reqId: Int, message: String, response: RespFailMessage) - - fun payloadMessage(payload: Payload) - - fun payloadUnknownMessage(json: String, errorMessage: String) - - fun unknownMessage(reqId: Int,json: String) - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/HeartCallback.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/HeartCallback.kt deleted file mode 100644 index 5b11b0c64..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/HeartCallback.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.tencent.iot.explorer.link.auth.socket.callback - -import com.tencent.iot.explorer.link.auth.message.resp.HeartMessage - -interface HeartCallback { - - fun response(reqId: Int, message: HeartMessage) - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/MessageCallback.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/MessageCallback.kt deleted file mode 100644 index ca7c61c94..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/callback/MessageCallback.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.tencent.iot.explorer.link.auth.socket.callback - -import com.tencent.iot.explorer.link.auth.message.resp.RespFailMessage -import com.tencent.iot.explorer.link.auth.message.resp.RespSuccessMessage - -/** - * JWebSocketClient消息发送回调 - */ -interface MessageCallback { - - fun success(reqId: Int, message: String, response: RespSuccessMessage) - - fun fail(reqId: Int, message: String, response: RespFailMessage) - - fun unknownMessage(reqId: Int, message: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/entity/RequestEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/entity/RequestEntity.kt deleted file mode 100644 index ed4be357a..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/entity/RequestEntity.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tencent.iot.explorer.link.auth.socket.entity - -import com.tencent.iot.explorer.link.auth.message.upload.IotMsg -import com.tencent.iot.explorer.link.auth.socket.callback.MessageCallback - -class RequestEntity(requestId: Int, msg: IotMsg) { - - var reqId = requestId - var iotMsg: IotMsg = msg - var messageCallback: MessageCallback? = null - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/entity/UserEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/entity/UserEntity.kt deleted file mode 100644 index 502abaf01..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/socket/entity/UserEntity.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.tencent.iot.explorer.link.auth.socket.entity - -class UserEntity { - - var ExpireAt = 0L - - var Token = "" - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/util/Weak.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/util/Weak.kt deleted file mode 100644 index 353c84932..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/util/Weak.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.util - -import java.lang.ref.WeakReference -import kotlin.reflect.KProperty - -class Weak(initializer: () -> T?) { - var weakReference = WeakReference(initializer()) - - constructor() : this({ - null - }) - - operator fun getValue(thisRef: Any?, property: KProperty<*>): T? { - return weakReference.get() - } - - operator fun setValue(thisRef: Any?, property: KProperty<*>, value: T?) { - weakReference = WeakReference(value) - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/util/WifiUtil.kt b/app/src/main/java/com/tencent/iot/explorer/link/auth/util/WifiUtil.kt deleted file mode 100644 index 9729f579a..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/util/WifiUtil.kt +++ /dev/null @@ -1,162 +0,0 @@ -package com.util - -import android.annotation.TargetApi -import android.content.Context -import android.net.MacAddress -import android.net.wifi.WifiConfiguration -import android.net.wifi.WifiManager -import android.net.wifi.WifiNetworkSuggestion -import android.os.Build -import java.io.BufferedReader -import java.io.InputStreamReader - - -object WifiUtil { - - const val OPEN_NETWORD = 0 - const val WPA_WAP2 = 1 - const val WEP = 2 - - fun ping(host: String): Boolean { - var isSuccess: Boolean - var process: Process? = null - try { - process = Runtime.getRuntime() - .exec("/system/bin/ping -c 1 $host") - isSuccess = (process.waitFor() == 0) - } catch (e: Exception) { - isSuccess = false - e.printStackTrace() - process?.destroy() - } finally { - process?.destroy() - } - return isSuccess - } - - fun pingAndRead(host: String): String { - var process: Process? = null - var buf: BufferedReader? = null - try { - process = Runtime.getRuntime() - .exec("/system/bin/ping -c 4 $host") - buf = BufferedReader(InputStreamReader(process.inputStream)) - var result = "" - var str = buf.readLine() - //读出所有信息并显示 - while (str != null) { - result += "\r\n" - str = buf.readLine() - } - return result - } catch (e: Exception) { - e.printStackTrace() - process?.destroy() - buf?.close() - } finally { - process?.destroy() - buf?.close() - } - return "" - } - - private fun append(stringBuffer: StringBuffer, text: String) { - stringBuffer.append(text + "\n") - } - - fun connect(context: Context, ssid: String, bssid: String, password: String): Boolean { - (context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager).run { - //判断wifi曾经是不是连接过 - val tempConfig = isExists(this, ssid) - return if (tempConfig != null) { - disconnect() - enableNetwork(tempConfig.networkId, true) - } else { - val wifiConfiguration = getWifiConfiguration(WPA_WAP2, password) - wifiConfiguration.SSID = "\"$ssid\"" - wifiConfiguration.BSSID = bssid - enableNetwork(addNetwork(wifiConfiguration), true) - } - } - } - - private fun getWifiConfiguration(type: Int, password: String): WifiConfiguration { - val wifiConfig = WifiConfiguration() - when (type) { - OPEN_NETWORD -> { - // No security - wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE) - wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN) - wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA) - wifiConfig.allowedAuthAlgorithms.clear() - wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP) - wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP) - wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40) - wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104) - wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP) - wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP) - } - WPA_WAP2 -> { - //WPA/WPA2 Security - wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN) - wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA) - wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK) - wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP) - wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP) - wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40) - wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104) - wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP) - wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP) - wifiConfig.preSharedKey = "\"$password\"" - } - WEP -> { - // WEP Security - wifiConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE) - wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN) - wifiConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA) - wifiConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN) - wifiConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED) - wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP) - wifiConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP) - wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40) - wifiConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104) - wifiConfig.wepKeys[0] = "\"$password\"" - wifiConfig.wepTxKeyIndex = 0 - } - } - return wifiConfig - } - - @TargetApi(Build.VERSION_CODES.Q) - fun connecttion(context: Context, ssid: String, bssid: String, password: String): Boolean { - val networkSuggestion = WifiNetworkSuggestion.Builder() - .setBssid(MacAddress.fromString(bssid)) - .setSsid(ssid) - .setWpa2Passphrase(password) - .build() - (context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager).run { - val result = addNetworkSuggestions(listOf(networkSuggestion)) - } - - return true - } - - private fun isExists(wifiManager: WifiManager, ssid: String): WifiConfiguration? { - for (existingConfig in wifiManager.getConfiguredNetworks()) { - if (existingConfig.SSID == "\"$ssid\"") { - return existingConfig - } - } - return null - } - - private fun isExist(wifiManager: WifiManager, ssid: String): WifiConfiguration? { - for (existingConfig in wifiManager.getConfiguredNetworks()) { - if (existingConfig.SSID == "\"$ssid\"") { - return existingConfig - } - } - return null - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/AppData.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/AppData.kt index ef8436626..32fb45c7b 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/AppData.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/AppData.kt @@ -3,6 +3,7 @@ package com.tencent.iot.explorer.link.kitlink.util import android.content.Context import android.text.TextUtils import com.tencent.iot.explorer.link.App +import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.activity.BaseActivity import com.tencent.iot.explorer.link.kitlink.consts.CommonField @@ -163,6 +164,8 @@ class AppData private constructor() { user = User() user?.Token = token user?.ExpireAt = expireAt + IoTAuth.user.Token = token + IoTAuth.user.ExpireAt = expireAt } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ControlPanelModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ControlPanelModel.kt index a5ac05d10..3ad4477a1 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ControlPanelModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ControlPanelModel.kt @@ -3,10 +3,10 @@ package com.tencent.iot.explorer.link.mvp.model import android.os.Handler import android.text.TextUtils import com.tencent.iot.explorer.link.App -import com.tencent.iot.explorer.link.auth.IoTAuth -import com.tencent.iot.explorer.link.auth.message.payload.Payload -import com.tencent.iot.explorer.link.auth.message.upload.ArrayString -import com.tencent.iot.explorer.link.auth.socket.callback.ActivePushCallback +import com.tencent.iot.explorer.link.core.auth.IoTAuth +import com.tencent.iot.explorer.link.core.auth.message.payload.Payload +import com.tencent.iot.explorer.link.core.auth.message.upload.ArrayString +import com.tencent.iot.explorer.link.core.auth.socket.callback.ActivePushCallback import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.entity.* import com.tencent.iot.explorer.link.kitlink.response.* @@ -16,7 +16,6 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.ControlPanelView -import com.tencent.iot.explorer.link.util.T import java.util.* import kotlin.collections.ArrayList @@ -24,7 +23,7 @@ import kotlin.collections.ArrayList * 控制面板业务 */ class ControlPanelModel(view: ControlPanelView) : ParentModel(view), MyCallback, - ActivePushCallback { + ActivePushCallback { init { IoTAuth.addActivePushCallback(this) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LoginModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LoginModel.kt index 0297a82fe..c0e708301 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LoginModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LoginModel.kt @@ -3,6 +3,7 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.ErrorMessage import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants import com.tencent.iot.explorer.link.kitlink.entity.ParentRespEntity import com.tencent.iot.explorer.link.kitlink.response.BaseResponse @@ -91,6 +92,8 @@ class LoginModel(view: LoginView) : ParentModel(view), MyCallback { response.parse(LoginResponse::class.java)?.Data?.let { //登录成功 App.data.setAppUser(it) + IoTAuth.user.Token = it.Token + IoTAuth.user.ExpireAt = it.ExpireAt view?.loginSuccess(it) return } diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/IoTAuth.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/IoTAuth.kt index be614d230..63e03fd58 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/IoTAuth.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/IoTAuth.kt @@ -140,7 +140,6 @@ object IoTAuth { VerifyService() } - /** * 初始化WebSocket */ diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/consts/SocketField.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/consts/SocketField.kt similarity index 94% rename from app/src/main/java/com/tencent/iot/explorer/link/auth/consts/SocketField.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/consts/SocketField.kt index 21f4c1a98..1aeefac67 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/consts/SocketField.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/consts/SocketField.kt @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.auth.consts +package com.tencent.iot.explorer.link.core.auth.consts object SocketField { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/MessageConst.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/MessageConst.kt similarity index 91% rename from app/src/main/java/com/tencent/iot/explorer/link/auth/message/MessageConst.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/MessageConst.kt index 4b03eade5..47d2c9faa 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/auth/message/MessageConst.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/MessageConst.kt @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.auth.message +package com.tencent.iot.explorer.link.core.auth.message object MessageConst { diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/payload/Payload.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/payload/Payload.kt index 8416db5f1..1099397af 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/payload/Payload.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/payload/Payload.kt @@ -1,5 +1,7 @@ package com.tencent.iot.explorer.link.core.auth.message.payload +import com.alibaba.fastjson.JSON + class Payload { //设备监听到下发的数据字符串 @@ -16,6 +18,31 @@ class Payload { //json中返回的“DeviceId”字段 var deviceId = "" + fun keySet(): Set? { + try { + return JSON.parseObject(data)?.keys + } catch (e: Exception) { + e.printStackTrace() + } + return null + } + + fun getValue(id: String): String { + try { + JSON.parseObject(data)?.run { + return when (getString(id)) { + "true" -> "1" + "false" -> "0" + else -> getString(id) + + } + } + } catch (e: Exception) { + e.printStackTrace() + } + return "0" + } + override fun toString(): String { val sb = StringBuilder() sb.append("收到下发原数据:").append(json).append("\n") @@ -23,5 +50,4 @@ class Payload { .append("payload中有效数据:").append(data) return sb.toString() } - } \ No newline at end of file diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/payload/PayloadMessage.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/payload/PayloadMessage.kt index 41f450147..df188f4b7 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/payload/PayloadMessage.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/payload/PayloadMessage.kt @@ -1,19 +1,19 @@ -package com.tencent.iot.explorer.link.core.auth.message.payload - -internal class PayloadMessage { - - var action = "" - var params: Param? = null - var push = false - - inner class Param { - var Time = "" - var Type = "Template" - var SubType = "Report" - var Topic = "" - var Payload = "" - var Seq = 0L - var DeviceId = "" - } - +package com.tencent.iot.explorer.link.core.auth.message.payload + +class PayloadMessage { + + var action = "" + var params: Param? = null + var push = false + + class Param { + var Time = "" + var Type = "" + var SubType = "" + var Topic = "" + var Payload = "" + var Seq = 0L + var DeviceId = "" + } + } \ No newline at end of file diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/upload/ActivePushMessage.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/upload/ActivePushMessage.kt index 9f138f37f..b15e6ecfd 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/upload/ActivePushMessage.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/upload/ActivePushMessage.kt @@ -7,4 +7,8 @@ class ActivePushMessage(deviceIds: ArrayString) : UploadMessage() { commonParams["DeviceIds"] = deviceIds } + override fun toString(): String { + reqId = 1 + return super.toString() + } } \ No newline at end of file diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/upload/HeartMessage.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/upload/HeartMessage.kt index b6865788a..d6f9de934 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/upload/HeartMessage.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/message/upload/HeartMessage.kt @@ -1,5 +1,7 @@ package com.tencent.iot.explorer.link.core.auth.message.upload +import com.tencent.iot.explorer.link.core.auth.message.MessageConst + /** * 解绑设备 @@ -14,7 +16,7 @@ class HeartMessage(deviceIds: ArrayString) : YunMessage() { override fun toString(): String { reqId = 2 - addValue("DeviceIds", deviceIds) + addValue(MessageConst.DEVICE_IDS, deviceIds) return super.toString() } diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/socket/DispatchMsgHandler.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/socket/DispatchMsgHandler.kt index 10baa7fc9..a3f200327 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/socket/DispatchMsgHandler.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/socket/DispatchMsgHandler.kt @@ -2,6 +2,7 @@ package com.tencent.iot.explorer.link.core.auth.socket import com.alibaba.fastjson.JSON import com.alibaba.fastjson.util.Base64 +import com.tencent.iot.explorer.link.core.auth.message.MessageConst import com.tencent.iot.explorer.link.core.auth.message.resp.HeartMessage import com.tencent.iot.explorer.link.core.auth.message.payload.Payload import com.tencent.iot.explorer.link.core.auth.message.payload.PayloadMessage @@ -45,7 +46,7 @@ open class DispatchMsgHandler { private fun parseYunMessage(reqId: Int, message: String) { when (reqId) { - -1 -> { + MessageConst.HEART_ID -> { try { heartCallback?.response( reqId, JSON.parseObject(message, HeartMessage::class.java) @@ -123,9 +124,9 @@ open class DispatchMsgHandler { } } - // {"type":"delta", "payload":{"state":{"power_switch":0},"version":0}} -// {"type":"update","state":{"reported":{"brightness":23}},"version":0,"clientToken":"API-ControlDeviceData-1571981804"} - //{ "method": "report", "params": { "brightness": 14, "color": 0, "power_switch": 0, "name": "test-light-position-3556"}, "timestamp": 1581585022, "clientToken": "22"} + // {"type":"delta", "payload":{"state":{"power_switch":0},"version":0}} + // {"type":"update","state":{"reported":{"brightness":23}},"version":0,"clientToken":"API-ControlDeviceData-1571981804"} + // { "method": "report", "params": { "brightness": 14, "color": 0, "power_switch": 0, "name": "test-light-position-3556"}, "timestamp": 1581585022, "clientToken": "22"} private fun getPayload(p: String): String { L.e("Payload转码", "$p") JSON.parseObject(p)?.run { diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/socket/WSClientManager.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/socket/WSClientManager.kt index 5b98078a8..06de826ad 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/socket/WSClientManager.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/socket/WSClientManager.kt @@ -1,6 +1,7 @@ package com.tencent.iot.explorer.link.core.auth.socket import android.text.TextUtils +import com.tencent.iot.explorer.link.core.auth.message.MessageConst import com.tencent.iot.explorer.link.core.auth.message.payload.Payload import com.tencent.iot.explorer.link.core.auth.message.resp.RespFailMessage import com.tencent.iot.explorer.link.core.auth.message.resp.RespSuccessMessage @@ -50,7 +51,7 @@ internal class WSClientManager private constructor() { //保活相关参数 private var isKeep = false private val delayMills = 10 * 1000L - private var param = "{\"action\":\"Hello\",\"reqId\":0}" + private var param = "{\"action\":\"Hello\",\"reqId\":${MessageConst.HEART_ID}}" /** From 826311c70d09f4facbb1518a800e0ec76b0a12bd Mon Sep 17 00:00:00 2001 From: archurtan Date: Mon, 19 Oct 2020 11:47:46 +0800 Subject: [PATCH 025/804] =?UTF-8?q?Link=20util=E6=A8=A1=E5=9D=97=E5=8E=BB?= =?UTF-8?q?=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I7fc150887d36f1b598b9ac5af3f46b1ad8855b43 --- app/src/main/AndroidManifest.xml | 8 +- .../java/com/tencent/iot/explorer/link/App.kt | 9 +- .../link/{kitlink/util => }/AppData.kt | 5 +- .../link/{kitlink/util => }/DataHolder.kt | 2 +- .../tencent/iot/explorer/link/ErrorMessage.kt | 13 +- .../iot/explorer/link/{util => }/T.java | 2 +- .../customview/dialog/ProgressDialog.java | 3 +- .../link/customview/dialog/UpgradeInfo.kt | 3 +- .../link/kitlink/activity/AboutUsActivity.kt | 9 +- .../activity/AccountAndSafetyActivity.kt | 6 +- .../kitlink/activity/AddDeviceActivity.kt | 2 +- .../kitlink/activity/AddFamilyActivity.kt | 2 +- .../link/kitlink/activity/AddRoomActivity.kt | 2 +- .../link/kitlink/activity/AddTimerActivity.kt | 2 +- .../link/kitlink/activity/BaseActivity.kt | 6 +- .../kitlink/activity/BindEmailActivity.kt | 3 +- .../activity/BindMobilePhoneActivity.kt | 2 +- .../kitlink/activity/BindPhoneActivity.kt | 2 +- .../activity/DeviceCategoryActivity.kt | 8 +- .../kitlink/activity/DeviceDetailsActivity.kt | 2 +- .../kitlink/activity/FamilyAddressActivity.kt | 6 +- .../kitlink/activity/FamilyListActivity.kt | 2 +- .../link/kitlink/activity/FeedbackActivity.kt | 4 +- .../activity/ForgotPasswordActivity.kt | 4 +- .../link/kitlink/activity/GetCodeActivity.kt | 9 +- .../link/kitlink/activity/GuideActivity.kt | 11 +- .../kitlink/activity/HelpWebViewActivity.kt | 6 +- .../kitlink/activity/InviteMemberActivity.kt | 2 +- .../link/kitlink/activity/LoginActivity.kt | 24 +- .../link/kitlink/activity/LogoutActivity.kt | 9 +- .../link/kitlink/activity/MainActivity.kt | 5 +- .../link/kitlink/activity/MemberActivity.kt | 2 +- .../kitlink/activity/ModifyEmailActivity.kt | 5 +- .../activity/ModifyPasswordActivity.kt | 2 +- .../kitlink/activity/ModifyPhoneActivity.kt | 4 +- .../link/kitlink/activity/RegionActivity.kt | 12 +- .../link/kitlink/activity/RegisterActivity.kt | 11 +- .../link/kitlink/activity/RoomActivity.kt | 2 +- .../kitlink/activity/SelectRoomActivity.kt | 2 +- .../kitlink/activity/SetPasswordActivity.kt | 4 +- .../link/kitlink/activity/ShareActivity.kt | 2 +- .../kitlink/activity/SmartConnectActivity.kt | 4 +- .../link/kitlink/activity/SoftApActivity.kt | 4 +- .../link/kitlink/activity/TimeZoneActivity.kt | 12 +- .../link/kitlink/activity/UserInfoActivity.kt | 20 +- .../link/kitlink/entity/ControlPanelEntity.kt | 2 +- .../kitlink/entity/DeviceProductEntity.kt | 2 +- .../kitlink/entity/DevicePropertyEntity.kt | 8 +- .../link/kitlink/entity/PropertyEntity.kt | 2 +- .../link/kitlink/entity/RegionEntity.kt | 7 +- .../link/kitlink/entity/TimerListEntity.kt | 3 +- .../link/kitlink/entity/WeatherEntity.kt | 2 +- .../link/kitlink/fragment/BaseFragment.kt | 4 +- .../fragment/ConnectProgressFragment.kt | 3 +- .../link/kitlink/fragment/DeviceFragment.kt | 6 +- .../link/kitlink/fragment/MeFragment.kt | 4 +- .../link/kitlink/fragment/SCStepFragment.kt | 7 +- .../kitlink/fragment/SoftAppStepFragment.kt | 5 +- .../kitlink/fragment/SoftHotspotFragment.kt | 7 +- .../link/kitlink/fragment/WifiFragment.kt | 6 +- .../holder/ControlDarkEnumBigItemHolder.kt | 2 +- .../holder/ControlDarkNumberBigHolder.kt | 2 +- .../holder/ControlDarkSwitchBigHolder.kt | 2 +- .../holder/ControlDarkSwitchLongHolder.kt | 2 +- .../holder/ControlSimpleEnumBigItemHolder.kt | 2 +- .../holder/ControlSimpleNumberBigHolder.kt | 2 +- .../holder/ControlSimpleSwitchBigHolder.kt | 2 +- .../holder/ControlSimpleSwitchLongHolder.kt | 2 +- .../ControlStandardEnumBigItemHolder.kt | 2 +- .../holder/ControlStandardNumberBigHolder.kt | 2 +- .../holder/ControlStandardSwitchBigHolder.kt | 2 +- .../holder/ControlStandardSwitchLongHolder.kt | 2 +- .../link/kitlink/holder/DeviceViewHolder.kt | 5 +- .../link/kitlink/holder/FeedbackViewHolder.kt | 2 +- .../kitlink/holder/MemberListViewHolder.kt | 2 +- .../kitlink/holder/MsgDeviceViewHolder.kt | 4 +- .../kitlink/holder/MsgFamilyViewHolder.kt | 4 +- .../kitlink/holder/MsgNotifyViewHolder.kt | 4 +- .../link/kitlink/holder/RoomListViewHolder.kt | 3 +- .../kitlink/holder/ShareDeviceViewHolder.kt | 2 +- .../link/kitlink/holder/ShareUserHolder.kt | 6 +- .../kitlink/holder/TimerListViewHolder.kt | 2 +- .../link/kitlink/popup/CameraPopupWindow.kt | 4 +- .../link/kitlink/popup/EditPopupWindow.kt | 5 +- .../link/kitlink/response/BaseResponse.kt | 2 +- .../explorer/link/kitlink/util/CommonUtils.kt | 17 - .../explorer/link/kitlink/util/DateUtils.java | 30 +- .../explorer/link/kitlink/util/HttpRequest.kt | 8 +- .../explorer/link/kitlink/util/HttpUtil.kt | 161 ---------- .../link/kitlink/util/JsonManager.java | 80 ----- .../kitlink/util/OnCameraEventListener.kt | 22 -- .../link/kitlink/util/SignatureUtil.kt | 32 -- .../link/kitlink/util/StatusBarUtil.java | 2 + .../explorer/link/kitlink/util/WeChatLogin.kt | 2 +- .../iot/explorer/link/kitlink/util/Weak.kt | 21 -- .../link/kitlink/util/WeatherUtils.kt | 2 +- .../clipimage/ClipPictureActivity.java | 10 +- .../util/picture/clipimage/ClipView.java | 2 +- .../clipimage/ImageSimpleBrowseActivity.java | 2 +- .../imageselectorbrowser/HackyViewPager.java | 2 +- .../ImageSelectorActivity.java | 4 +- .../ImageSelectorBrowseActivity.java | 6 +- .../ImageSelectorConstant.java | 2 +- .../ImageSelectorFolderBean.java | 2 +- .../ImageSelectorFragment.java | 10 +- .../ImageSelectorGridAdapter.java | 4 +- .../ImageSelectorImageBean.java | 2 +- .../ImageSelectorPopupFolderAdapter.java | 4 +- .../util/picture/imp/ImageManager.java | 2 +- .../util/picture/imp/ImageSelectorUtils.java | 8 +- .../util/picture/utils/BitmapUtils.java | 2 +- .../util/picture/utils/FileUtils.java | 2 +- .../util/picture/utils/ImageShowUtils.java | 5 +- .../util/picture/utils/ImageUtils.java | 2 +- .../util/picture/utils/TimeUtils.java | 2 +- .../util/picture/utils/WindowManage.java | 2 +- .../link/kitlink/webview/BridgeImpl.kt | 4 +- .../explorer/link/mvp/model/BindEmailModel.kt | 2 +- .../explorer/link/mvp/model/BindPhoneModel.kt | 2 +- .../explorer/link/mvp/model/ConnectModel.kt | 6 +- .../link/mvp/model/ControlPanelModel.kt | 2 +- .../explorer/link/mvp/model/FamilyModel.kt | 2 +- .../link/mvp/model/ForgotPasswordModel.kt | 2 +- .../link/mvp/model/HomeFragmentModel.kt | 2 +- .../iot/explorer/link/mvp/model/LoginModel.kt | 3 +- .../explorer/link/mvp/model/LogoutModel.kt | 2 +- .../link/mvp/model/ModifyEmailModel.kt | 2 +- .../link/mvp/model/ModifyPasswordModel.kt | 2 +- .../link/mvp/model/ModifyPhoneModel.kt | 3 +- .../explorer/link/mvp/model/RegisterModel.kt | 3 +- .../link/mvp/model/SetPasswordModel.kt | 2 +- .../explorer/link/mvp/model/TimerListModel.kt | 5 +- .../explorer/link/mvp/model/UserInfoModel.kt | 2 - .../iot/explorer/link/util/AppInfoUtils.java | 302 ------------------ .../link/util/date/DateFormatUtil.java | 102 ------ .../util/keyboard/OnSoftKeyBoardListener.java | 21 -- .../link/util/keyboard/SoftKeyBoard.java | 132 -------- .../imageselector_browse_image_layout.xml | 4 +- sdk/build.gradle | 2 + .../link/core/auth/util/JsonManager.java | 4 - .../link/core/auth/util/SignatureUtil.kt | 3 + .../link/core/link/service/ConfigService.kt | 2 +- .../core/link/service/SmartConfigService.kt | 2 +- .../link/core/link/service/SoftAPService.kt | 3 +- .../explorer/link/core/utils}/FileUtils.kt | 51 ++- .../link/core/utils}/KeyBoardUtils.java | 2 +- .../link/core/utils}/LocationUtil.java | 11 +- .../explorer/link/core/utils}/OSUtils.java | 2 +- .../explorer/link/core/utils}/PhotoUtils.kt | 10 +- .../link/core/utils}/SharePreferenceUtil.java | 8 +- .../link/core/utils}/TemperatureUtils.kt | 3 +- .../iot/explorer/link/core/utils}/Utils.kt | 67 ++-- .../demo/activity/ConnectDeviceActivity.kt | 13 +- 153 files changed, 365 insertions(+), 1273 deletions(-) rename app/src/main/java/com/tencent/iot/explorer/link/{kitlink/util => }/AppData.kt (93%) rename app/src/main/java/com/tencent/iot/explorer/link/{kitlink/util => }/DataHolder.kt (93%) rename app/src/main/java/com/tencent/iot/explorer/link/{util => }/T.java (89%) delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/CommonUtils.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpUtil.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/JsonManager.java delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/OnCameraEventListener.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/SignatureUtil.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Weak.kt rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/clipimage/ClipPictureActivity.java (96%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/clipimage/ClipView.java (96%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/clipimage/ImageSimpleBrowseActivity.java (96%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/imageselectorbrowser/HackyViewPager.java (88%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/imageselectorbrowser/ImageSelectorActivity.java (98%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/imageselectorbrowser/ImageSelectorBrowseActivity.java (94%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/imageselectorbrowser/ImageSelectorConstant.java (91%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/imageselectorbrowser/ImageSelectorFolderBean.java (94%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/imageselectorbrowser/ImageSelectorFragment.java (98%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/imageselectorbrowser/ImageSelectorGridAdapter.java (97%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/imageselectorbrowser/ImageSelectorImageBean.java (93%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/imageselectorbrowser/ImageSelectorPopupFolderAdapter.java (97%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/imp/ImageManager.java (98%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/imp/ImageSelectorUtils.java (89%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/utils/BitmapUtils.java (99%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/utils/FileUtils.java (99%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/utils/ImageShowUtils.java (95%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/utils/ImageUtils.java (96%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/utils/TimeUtils.java (93%) rename app/src/main/java/com/tencent/iot/explorer/link/{ => kitlink}/util/picture/utils/WindowManage.java (90%) delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/util/AppInfoUtils.java delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/util/date/DateFormatUtil.java delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/util/keyboard/OnSoftKeyBoardListener.java delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/util/keyboard/SoftKeyBoard.java rename {app/src/main/java/com/tencent/iot/explorer/link/kitlink/util => sdk/src/main/java/com/tencent/iot/explorer/link/core/utils}/FileUtils.kt (87%) rename {app/src/main/java/com/tencent/iot/explorer/link/util/keyboard => sdk/src/main/java/com/tencent/iot/explorer/link/core/utils}/KeyBoardUtils.java (92%) rename {app/src/main/java/com/tencent/iot/explorer/link/util/check => sdk/src/main/java/com/tencent/iot/explorer/link/core/utils}/LocationUtil.java (77%) rename {app/src/main/java/com/tencent/iot/explorer/link/kitlink/util => sdk/src/main/java/com/tencent/iot/explorer/link/core/utils}/OSUtils.java (95%) rename {app/src/main/java/com/tencent/iot/explorer/link/kitlink/util => sdk/src/main/java/com/tencent/iot/explorer/link/core/utils}/PhotoUtils.kt (88%) rename {app/src/main/java/com/tencent/iot/explorer/link/util => sdk/src/main/java/com/tencent/iot/explorer/link/core/utils}/SharePreferenceUtil.java (93%) rename {app/src/main/java/com/tencent/iot/explorer/link/kitlink/util => sdk/src/main/java/com/tencent/iot/explorer/link/core/utils}/TemperatureUtils.kt (94%) rename {app/src/main/java/com/tencent/iot/explorer/link/kitlink/util => sdk/src/main/java/com/tencent/iot/explorer/link/core/utils}/Utils.kt (70%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 06e961bab..42f85c25e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -141,13 +141,13 @@ - - + + diff --git a/app/src/main/java/com/tencent/iot/explorer/link/App.kt b/app/src/main/java/com/tencent/iot/explorer/link/App.kt index f9ebca32f..7f254b57f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/App.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/App.kt @@ -6,15 +6,13 @@ import android.text.TextUtils import androidx.multidex.MultiDex import com.tencent.android.tpush.XGPushConfig import com.tencent.iot.explorer.link.core.auth.IoTAuth +import com.tencent.iot.explorer.link.core.auth.util.Weak import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.activity.BaseActivity import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.util.AppData -import com.tencent.iot.explorer.link.kitlink.util.Weak -import com.tencent.iot.explorer.link.util.SharePreferenceUtil +import com.tencent.iot.explorer.link.core.utils.SharePreferenceUtil import com.tencent.iot.explorer.link.kitlink.activity.GuideActivity -import com.tencent.iot.explorer.link.kitlink.util.Utils -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.core.utils.Utils /** @@ -99,6 +97,7 @@ class App : Application() { super.onTerminate() //关闭WebSocket IoTAuth.destroy() + T.setContext(null) } } \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/AppData.kt b/app/src/main/java/com/tencent/iot/explorer/link/AppData.kt similarity index 93% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/AppData.kt rename to app/src/main/java/com/tencent/iot/explorer/link/AppData.kt index 32fb45c7b..3a9d52c55 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/AppData.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/AppData.kt @@ -1,14 +1,13 @@ -package com.tencent.iot.explorer.link.kitlink.util +package com.tencent.iot.explorer.link import android.content.Context import android.text.TextUtils -import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.activity.BaseActivity import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.entity.* -import com.tencent.iot.explorer.link.util.SharePreferenceUtil +import com.tencent.iot.explorer.link.core.utils.SharePreferenceUtil import com.tencent.iot.explorer.link.customview.recyclerview.SelectedArrayList import java.util.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/DataHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/DataHolder.kt similarity index 93% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/DataHolder.kt rename to app/src/main/java/com/tencent/iot/explorer/link/DataHolder.kt index e72806ea7..d45fe2e6d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/DataHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/DataHolder.kt @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.kitlink.util +package com.tencent.iot.explorer.link /** * 数据执有者 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/ErrorMessage.kt b/app/src/main/java/com/tencent/iot/explorer/link/ErrorMessage.kt index 8c5b78177..d202f23f5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/ErrorMessage.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/ErrorMessage.kt @@ -1,10 +1,9 @@ package com.tencent.iot.explorer.link -import android.util.Log import com.alibaba.fastjson.JSON import com.alibaba.fastjson.JSONObject +import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.util.JsonManager class ErrorMessage { @@ -16,12 +15,12 @@ class ErrorMessage { //app数据 fun parseErrorMessage(data: String): ErrorMessage { - var jsonObject = JSON.parse(data) as JSONObject - var errorMessage = ErrorMessage() - if (jsonObject.containsKey(CommonField.ERROR)) { - errorMessage = JsonManager.parseJson(jsonObject.getString(CommonField.ERROR), ErrorMessage::class.java) + val jsonObject = JSON.parse(data) as JSONObject + val errorMessage: ErrorMessage + errorMessage = if (jsonObject.containsKey(CommonField.ERROR)) { + JsonManager.parseJson(jsonObject.getString(CommonField.ERROR), ErrorMessage::class.java) } else { - errorMessage = JsonManager.parseJson(data, ErrorMessage::class.java) + JsonManager.parseJson(data, ErrorMessage::class.java) } return errorMessage } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/T.java b/app/src/main/java/com/tencent/iot/explorer/link/T.java similarity index 89% rename from app/src/main/java/com/tencent/iot/explorer/link/util/T.java rename to app/src/main/java/com/tencent/iot/explorer/link/T.java index 83929793f..e44d3a876 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/T.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/T.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util; +package com.tencent.iot.explorer.link; import android.content.Context; import android.widget.Toast; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/customview/dialog/ProgressDialog.java b/app/src/main/java/com/tencent/iot/explorer/link/customview/dialog/ProgressDialog.java index 5f03c0063..e8e64f2f5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/customview/dialog/ProgressDialog.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/customview/dialog/ProgressDialog.java @@ -7,7 +7,6 @@ import android.os.Message; import android.text.TextUtils; import android.util.DisplayMetrics; -import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; @@ -22,7 +21,7 @@ import com.skydoves.progressview.ProgressView; import com.tencent.iot.explorer.link.R; import com.tencent.iot.explorer.link.retrofit.DownloadRequest; -import com.tencent.iot.explorer.link.util.T; +import com.tencent.iot.explorer.link.T; import java.io.File; import java.io.IOException; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/customview/dialog/UpgradeInfo.kt b/app/src/main/java/com/tencent/iot/explorer/link/customview/dialog/UpgradeInfo.kt index a99a644ac..185241ec2 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/customview/dialog/UpgradeInfo.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/customview/dialog/UpgradeInfo.kt @@ -1,9 +1,8 @@ package com.tencent.iot.explorer.link.customview.dialog -import android.util.Log import com.alibaba.fastjson.JSON import com.alibaba.fastjson.JSONObject -import com.tencent.iot.explorer.link.util.picture.utils.FileUtils +import com.tencent.iot.explorer.link.kitlink.util.picture.utils.FileUtils import java.text.SimpleDateFormat import java.util.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AboutUsActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AboutUsActivity.kt index 88ac3df51..6a8ad4439 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AboutUsActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AboutUsActivity.kt @@ -3,7 +3,6 @@ package com.tencent.iot.explorer.link.kitlink.activity import android.app.Activity import android.content.Intent import android.os.Build -import android.provider.Settings import android.view.View import androidx.annotation.RequiresApi import com.alibaba.fastjson.JSONObject @@ -15,11 +14,11 @@ import com.tencent.iot.explorer.link.customview.dialog.UpgradeDialog import com.tencent.iot.explorer.link.customview.dialog.UpgradeInfo import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.response.BaseResponse -import com.tencent.iot.explorer.link.kitlink.util.CommonUtils -import com.tencent.iot.explorer.link.kitlink.util.FileUtils +import com.tencent.iot.explorer.link.core.utils.FileUtils import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.Utils import kotlinx.android.synthetic.main.activity_about_us.* import kotlinx.android.synthetic.main.menu_back_layout.* @@ -30,7 +29,7 @@ class AboutUsActivity : BaseActivity() { val INSTALL_PERMISS_CODE = 1 - private val ANDROID_ID = CommonUtils.getAndroidID() + private val ANDROID_ID = Utils.getAndroidID(T.getContext()) override fun getContentView(): Int { return R.layout.activity_about_us diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AccountAndSafetyActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AccountAndSafetyActivity.kt index 090a2d02e..d35aeed9c 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AccountAndSafetyActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AccountAndSafetyActivity.kt @@ -4,6 +4,7 @@ import android.text.TextUtils import android.view.View import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.entity.RegionEntity import com.tencent.iot.explorer.link.kitlink.response.BaseResponse @@ -11,7 +12,8 @@ import com.tencent.iot.explorer.link.kitlink.util.* import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.AccountAndSafetyPresenter import com.tencent.iot.explorer.link.mvp.view.AccountAndSafetyView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.Utils import kotlinx.android.synthetic.main.activity_account_and_safety.* import kotlinx.android.synthetic.main.menu_back_layout.* @@ -157,7 +159,7 @@ class AccountAndSafetyActivity : PActivity(), AccountAndSafetyView, View.OnClick val list = JsonManager.parseJsonArray(regionArray, RegionEntity::class.java) for (item: RegionEntity in list) { if (item.Region == App.data.region) { - return if (CommonUtils.isChineseSystem()) item.Title + return if (Utils.isChineseSystem(this)) item.Title else item.TitleEN } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddDeviceActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddDeviceActivity.kt index ec97e4507..8d8edb055 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddDeviceActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddDeviceActivity.kt @@ -15,7 +15,7 @@ import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.activity_add_device.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddFamilyActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddFamilyActivity.kt index bcbd68c1a..1b782e813 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddFamilyActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddFamilyActivity.kt @@ -9,7 +9,7 @@ import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.activity_add_family.* import kotlinx.android.synthetic.main.menu_cancel_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt index 9782f610f..a1a3434ac 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt @@ -9,7 +9,7 @@ import com.tencent.iot.explorer.link.kitlink.response.CreateRoomResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity import kotlinx.android.synthetic.main.activity_add_room.* import kotlinx.android.synthetic.main.menu_cancel_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddTimerActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddTimerActivity.kt index e2c3f39b2..3e265fe57 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddTimerActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddTimerActivity.kt @@ -21,7 +21,7 @@ import com.tencent.iot.explorer.link.kitlink.popup.NumberPopupWindow import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.holder.AddTimingFootHolder import kotlinx.android.synthetic.main.activity_add_timer.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BaseActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BaseActivity.kt index 96146b003..7ff0081ea 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BaseActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BaseActivity.kt @@ -13,9 +13,9 @@ import androidx.core.app.ActivityCompat import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.entity.User -import com.tencent.iot.explorer.link.kitlink.util.DataHolder -import com.tencent.iot.explorer.link.util.SharePreferenceUtil -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.DataHolder +import com.tencent.iot.explorer.link.core.utils.SharePreferenceUtil +import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.customview.status.StatusBarUtil import java.util.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindEmailActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindEmailActivity.kt index 0ceeae3f0..3a9733e07 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindEmailActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindEmailActivity.kt @@ -8,9 +8,8 @@ import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.BindEmailPresenter import com.tencent.iot.explorer.link.mvp.view.BindEmailView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.activity_bind_email.* -import kotlinx.android.synthetic.main.layout_verify_code_login.view.* import kotlinx.android.synthetic.main.menu_back_layout.* class BindEmailActivity : PActivity(), BindEmailView, View.OnClickListener { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindMobilePhoneActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindMobilePhoneActivity.kt index c4eb6a1d1..7aafca1f6 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindMobilePhoneActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindMobilePhoneActivity.kt @@ -10,7 +10,7 @@ import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.activity_bind_mobile_phone.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindPhoneActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindPhoneActivity.kt index a3467213d..4f634e807 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindPhoneActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindPhoneActivity.kt @@ -10,7 +10,7 @@ import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.BindPhonePresenter import com.tencent.iot.explorer.link.mvp.view.BindPhoneView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.activity_bind_phone.* import kotlinx.android.synthetic.main.activity_bind_phone.et_set_password import kotlinx.android.synthetic.main.activity_bind_phone.et_verify_set_password diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt index a2db7ed30..3a9c14c36 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt @@ -5,12 +5,10 @@ import android.app.Activity import android.bluetooth.BluetoothAdapter import android.content.Context import android.content.Intent -import android.net.Uri import android.os.Bundle import android.os.Handler import android.text.TextUtils import android.util.DisplayMetrics -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -18,22 +16,23 @@ import android.view.WindowManager import android.view.animation.Animation import android.view.animation.AnimationUtils import android.view.animation.LinearInterpolator -import android.widget.Toast import androidx.fragment.app.Fragment import com.alibaba.fastjson.JSON import com.example.qrcode.Constant import com.example.qrcode.ScannerActivity import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.core.link.entity.DeviceInfo import com.tencent.iot.explorer.link.core.log.L +import com.tencent.iot.explorer.link.core.utils.Utils import com.tencent.iot.explorer.link.kitlink.fragment.DeviceFragment import com.tencent.iot.explorer.link.kitlink.holder.DeviceListViewHolder import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.DeviceCategoryListResponse import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.kitlink.customview.MyScrollView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType @@ -50,7 +49,6 @@ import q.rorbin.verticaltablayout.VerticalTabLayout import q.rorbin.verticaltablayout.adapter.TabAdapter import q.rorbin.verticaltablayout.widget.ITabView import q.rorbin.verticaltablayout.widget.TabView -import java.net.URI class DeviceCategoryActivity : PActivity(), MyCallback, CRecyclerView.RecyclerItemView, View.OnClickListener, VerticalTabLayout.OnTabSelectedListener{ diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceDetailsActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceDetailsActivity.kt index f49ec587e..69c5b660f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceDetailsActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceDetailsActivity.kt @@ -14,7 +14,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.DeviceDetailPresenter import com.tencent.iot.explorer.link.mvp.view.DeviceDetailView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.activity_device_details.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyAddressActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyAddressActivity.kt index b41c10167..0bc10ac80 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyAddressActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyAddressActivity.kt @@ -6,10 +6,10 @@ import android.content.pm.PackageManager import android.text.TextUtils import com.alibaba.fastjson.JSON import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.http.HttpCallBack +import com.tencent.iot.explorer.link.core.auth.http.HttpUtil +import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.util.HttpCallBack -import com.tencent.iot.explorer.link.kitlink.util.HttpUtil -import com.tencent.iot.explorer.link.kitlink.util.JsonManager import com.tencent.map.geolocation.TencentLocation import com.tencent.map.geolocation.TencentLocationListener import com.tencent.map.geolocation.TencentLocationManager diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyListActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyListActivity.kt index 45f7732f4..357446496 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyListActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyListActivity.kt @@ -4,13 +4,13 @@ import android.view.View import android.view.ViewGroup import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.holder.FamilyListFootHolder import com.tencent.iot.explorer.link.kitlink.holder.FamilyListViewHolder import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.FamilyListResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest -import com.tencent.iot.explorer.link.kitlink.util.JsonManager import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.activity_family_list.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FeedbackActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FeedbackActivity.kt index ac1f98d57..e9ec9fcf0 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FeedbackActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FeedbackActivity.kt @@ -21,9 +21,9 @@ import com.tencent.iot.explorer.link.mvp.model.UploadModel import com.tencent.iot.explorer.link.mvp.view.UploadView import com.tencent.cos.xml.exception.CosXmlClientException import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView -import com.tencent.iot.explorer.link.util.picture.imp.ImageSelectorUtils +import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageSelectorUtils import kotlinx.android.synthetic.main.activity_feedback.* import kotlinx.android.synthetic.main.menu_back_layout.* import java.lang.StringBuilder diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ForgotPasswordActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ForgotPasswordActivity.kt index d5de8b40b..a44d1b827 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ForgotPasswordActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ForgotPasswordActivity.kt @@ -10,8 +10,8 @@ import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.ForgotPasswordPresenter import com.tencent.iot.explorer.link.mvp.view.ForgotPasswordView -import com.tencent.iot.explorer.link.util.T -import com.tencent.iot.explorer.link.util.keyboard.KeyBoardUtils +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.KeyBoardUtils import kotlinx.android.synthetic.main.activity_forgot_password.* import kotlinx.android.synthetic.main.layout_email_forgot_pwd.view.* import kotlinx.android.synthetic.main.layout_phone_forgot_pwd.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/GetCodeActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/GetCodeActivity.kt index 29c06dbdf..fd5864fc6 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/GetCodeActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/GetCodeActivity.kt @@ -5,17 +5,16 @@ import android.content.ClipboardManager import android.content.Context import android.content.Intent import android.os.Handler -import android.util.Log import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.util.Weak import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.util.Utils -import com.tencent.iot.explorer.link.kitlink.util.Weak +import com.tencent.iot.explorer.link.core.utils.Utils import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.GetCodePresenter import com.tencent.iot.explorer.link.mvp.view.GetCodeView -import com.tencent.iot.explorer.link.util.T -import com.tencent.iot.explorer.link.util.keyboard.KeyBoardUtils +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.KeyBoardUtils import kotlinx.android.synthetic.main.activity_get_code.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/GuideActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/GuideActivity.kt index b8c9481eb..437abc1cd 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/GuideActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/GuideActivity.kt @@ -5,16 +5,11 @@ import android.content.Intent import android.os.SystemClock import android.text.TextUtils import android.view.View -import android.widget.Toast import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.util.CommonUtils +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.Utils import com.tencent.iot.explorer.link.mvp.IPresenter -import com.tencent.iot.explorer.link.util.AppInfoUtils -import com.tencent.iot.explorer.link.util.SharePreferenceUtil -import com.tencent.iot.explorer.link.util.T import kotlinx.android.synthetic.main.activity_guide.* @@ -76,7 +71,7 @@ class GuideActivity : PActivity(), View.OnClickListener{ if (hits[0] >= SystemClock.uptimeMillis() - duration) { if (hits.size == 5) { // 获取AndroidID,并保存至剪切板 - AppInfoUtils.copy(this, CommonUtils.getAndroidID()) + Utils.copy(this, Utils.getAndroidID(T.getContext())) } } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/HelpWebViewActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/HelpWebViewActivity.kt index 360cc0e80..6614a2339 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/HelpWebViewActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/HelpWebViewActivity.kt @@ -22,14 +22,14 @@ import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.response.BaseResponse -import com.tencent.iot.explorer.link.kitlink.util.FileUtils +import com.tencent.iot.explorer.link.core.utils.FileUtils import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback -import com.tencent.iot.explorer.link.kitlink.util.PhotoUtils +import com.tencent.iot.explorer.link.core.utils.PhotoUtils import com.tencent.iot.explorer.link.kitlink.webview.BridgeImpl import com.tencent.iot.explorer.link.kitlink.webview.JSBridgeKt import com.tencent.iot.explorer.link.kitlink.webview.WebCallBack -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.activity_help_feedback.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt index 4591daddd..d4392e31d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt @@ -12,7 +12,7 @@ import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.kitlink.response.UserInfoResponse -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.activity_invite_member.* import kotlinx.android.synthetic.main.layout_email_register.view.* import kotlinx.android.synthetic.main.layout_phone_register.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt index 4dabfba37..15bb6ac3b 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt @@ -6,20 +6,14 @@ import android.os.Handler import android.text.Editable import android.text.TextUtils import android.text.TextWatcher -import android.util.Log import android.view.LayoutInflater import android.view.View import android.widget.TextView import androidx.core.text.isDigitsOnly -import androidx.core.widget.doOnTextChanged -import com.alibaba.fastjson.JSON import com.google.firebase.analytics.FirebaseAnalytics import com.google.firebase.crashlytics.FirebaseCrashlytics -import com.tencent.iot.explorer.link.App -import com.tencent.iot.explorer.link.ErrorCode -import com.tencent.iot.explorer.link.ErrorMessage -import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.core.log.L +import com.tencent.iot.explorer.link.* +import com.tencent.iot.explorer.link.core.utils.Utils import com.tencent.iot.explorer.link.customview.check.VerifyEdit import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.entity.User @@ -29,17 +23,11 @@ import com.tencent.iot.explorer.link.kitlink.util.* import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.LoginPresenter import com.tencent.iot.explorer.link.mvp.view.LoginView -import com.tencent.iot.explorer.link.util.SharePreferenceUtil -import com.tencent.iot.explorer.link.util.T -import com.tencent.iot.explorer.link.util.keyboard.KeyBoardUtils +import com.tencent.iot.explorer.link.core.utils.SharePreferenceUtil +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.KeyBoardUtils import kotlinx.android.synthetic.main.activity_login2.* -import kotlinx.android.synthetic.main.activity_register.* -import kotlinx.android.synthetic.main.activity_set_password.* import kotlinx.android.synthetic.main.layout_account_passwd_login.view.* -import kotlinx.android.synthetic.main.layout_email_login.view.* -import kotlinx.android.synthetic.main.layout_phone_forgot_pwd.view.* -import kotlinx.android.synthetic.main.layout_phone_login.view.* -import kotlinx.android.synthetic.main.layout_phone_register.view.* import kotlinx.android.synthetic.main.layout_verify_code_login.view.* import kotlinx.android.synthetic.main.menu_back_layout.* @@ -105,7 +93,7 @@ class LoginActivity : PActivity(), LoginView, View.OnClickListener, WeChatLogin return } onNewIntentIn() - if (!CommonUtils.isChineseSystem()) { + if (!Utils.isChineseSystem(this)) { accoutPasswdLoginView.tv_login_to_country_bypsswd.text = getString(R.string.country_china_en) verifyCodeLoginView.tv_login_to_country_byverifycode.text = getString(R.string.country_china_en) } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LogoutActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LogoutActivity.kt index 773031a1b..ad08eee32 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LogoutActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LogoutActivity.kt @@ -7,24 +7,21 @@ import android.view.View import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.util.CommonUtils import com.tencent.iot.explorer.link.kitlink.util.DateUtils import com.tencent.iot.explorer.link.mvp.IPresenter -import com.tencent.iot.explorer.link.mvp.presenter.AccountAndSafetyPresenter import com.tencent.iot.explorer.link.mvp.presenter.LogoutPresenter import com.tencent.iot.explorer.link.mvp.view.LogoutView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.Utils import kotlinx.android.synthetic.main.activity_logout.* -import kotlinx.android.synthetic.main.activity_register.* import kotlinx.android.synthetic.main.menu_back_layout.* -import java.text.SimpleDateFormat import java.util.* class LogoutActivity : PActivity(), LogoutView, View.OnClickListener{ private lateinit var presenter: LogoutPresenter - private val ANDROID_ID = CommonUtils.getAndroidID() + private val ANDROID_ID = Utils.getAndroidID(T.getContext()) override fun getPresenter(): IPresenter? { return presenter diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt index f68fac98c..cda715167 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt @@ -26,11 +26,12 @@ import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.customview.dialog.ProgressDialog import com.tencent.iot.explorer.link.customview.dialog.UpgradeDialog import com.tencent.iot.explorer.link.customview.dialog.UpgradeInfo -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.FileUtils import com.tencent.iot.explorer.link.customview.home.BottomItemEntity import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.util.* -import com.tencent.iot.explorer.link.util.SharePreferenceUtil +import com.tencent.iot.explorer.link.core.utils.SharePreferenceUtil import com.tencent.tpns.baseapi.XGApiConfig import kotlinx.android.synthetic.main.activity_main.* import java.util.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MemberActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MemberActivity.kt index d47820b8b..a117ffc08 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MemberActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MemberActivity.kt @@ -10,7 +10,7 @@ import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity -import com.tencent.iot.explorer.link.util.picture.imp.ImageManager +import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager import kotlinx.android.synthetic.main.activity_member.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyEmailActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyEmailActivity.kt index 5b0ffb891..379a27fd5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyEmailActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyEmailActivity.kt @@ -5,15 +5,12 @@ import android.view.View import com.tencent.iot.explorer.link.ErrorMessage import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.mvp.IPresenter -import com.tencent.iot.explorer.link.mvp.presenter.AccountAndSafetyPresenter import com.tencent.iot.explorer.link.mvp.presenter.ModifyEmailPresenter import com.tencent.iot.explorer.link.mvp.view.ModifyEmailView -import com.tencent.iot.explorer.link.util.T -import kotlinx.android.synthetic.main.activity_bind_email.* +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.activity_modify_email.* import kotlinx.android.synthetic.main.activity_modify_email.btn_confirm_to_modify import kotlinx.android.synthetic.main.activity_modify_email.tv_get_verify_code -import kotlinx.android.synthetic.main.activity_modify_phone.* import kotlinx.android.synthetic.main.menu_back_layout.* class ModifyEmailActivity : PActivity(), ModifyEmailView, View.OnClickListener { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPasswordActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPasswordActivity.kt index 509f67617..2facb505b 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPasswordActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPasswordActivity.kt @@ -13,7 +13,7 @@ import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.ModifyPasswordPresenter import com.tencent.iot.explorer.link.mvp.view.ModifyPasswordView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.activity_modify_password.* import kotlinx.android.synthetic.main.layout_modify_passwd_use_email.view.* import kotlinx.android.synthetic.main.layout_modify_passwd_use_email.view.tv_get_verify_code diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPhoneActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPhoneActivity.kt index ee4101166..e32c0b3a5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPhoneActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPhoneActivity.kt @@ -9,11 +9,9 @@ import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.ModifyPhonePresenter import com.tencent.iot.explorer.link.mvp.view.ModifyPhoneView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.activity_modify_phone.* import kotlinx.android.synthetic.main.activity_modify_phone.tv_get_verify_code -import kotlinx.android.synthetic.main.activity_register.* -import kotlinx.android.synthetic.main.layout_phone_register.view.* import kotlinx.android.synthetic.main.menu_back_layout.* class ModifyPhoneActivity : PActivity(), ModifyPhoneView, View.OnClickListener { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RegionActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RegionActivity.kt index 82ae43111..a3fcc09c3 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RegionActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RegionActivity.kt @@ -7,25 +7,21 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.customview.MySideBarView import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.entity.RegionEntity -import com.tencent.iot.explorer.link.kitlink.entity.TimeZoneEntity import com.tencent.iot.explorer.link.kitlink.holder.RegionKeyViewHolder import com.tencent.iot.explorer.link.kitlink.holder.RegionViewHolder -import com.tencent.iot.explorer.link.kitlink.holder.TimeZoneKeyViewHolder -import com.tencent.iot.explorer.link.kitlink.holder.TimeZoneViewHolder -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.* import com.tencent.iot.explorer.link.mvp.IPresenter -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.Utils import kotlinx.android.synthetic.main.activity_region.* -import kotlinx.android.synthetic.main.activity_time_zone.* import kotlinx.android.synthetic.main.activity_time_zone.my_side_bar import kotlinx.android.synthetic.main.activity_time_zone.tv_show_key import kotlinx.android.synthetic.main.menu_back_layout.* -import org.json.JSONObject import java.util.* import kotlin.collections.ArrayList @@ -137,7 +133,7 @@ class RegionActivity: PActivity(), tempList.forEach { val index: Int val firstLetter: String - if (!CommonUtils.isChineseSystem()) {// 英文 + if (!Utils.isChineseSystem(this)) {// 英文 index = it.TitleEN[0] - 'A' firstLetter = it.TitleEN[0].toString() it.Title = it.TitleEN diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RegisterActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RegisterActivity.kt index fc2eb2b71..0a018551f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RegisterActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RegisterActivity.kt @@ -8,13 +8,12 @@ import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants -import com.tencent.iot.explorer.link.kitlink.util.CommonUtils -import com.tencent.iot.explorer.link.kitlink.util.Utils +import com.tencent.iot.explorer.link.core.utils.Utils import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.RegisterPresenter import com.tencent.iot.explorer.link.mvp.view.RegisterView -import com.tencent.iot.explorer.link.util.T -import com.tencent.iot.explorer.link.util.keyboard.KeyBoardUtils +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.KeyBoardUtils import kotlinx.android.synthetic.main.activity_register.* import kotlinx.android.synthetic.main.layout_email_register.view.* import kotlinx.android.synthetic.main.layout_phone_register.view.* @@ -37,7 +36,7 @@ class RegisterActivity : PActivity(), RegisterView, View.OnClickListener { private lateinit var phoneView: View private lateinit var emailView: View - private val ANDROID_ID = CommonUtils.getAndroidID() + private val ANDROID_ID = Utils.getAndroidID(T.getContext()) override fun getPresenter(): IPresenter? { return presenter @@ -76,7 +75,7 @@ class RegisterActivity : PActivity(), RegisterView, View.OnClickListener { } else { iv_register_agreement.setImageResource(R.mipmap.icon_unselected) } - if (!CommonUtils.isChineseSystem()) { + if (!Utils.isChineseSystem(this)) { phoneView.tv_register_to_country.text = getString(R.string.country_china_en) emailView.tv_register_to_country_email.text = getString(R.string.country_china_en) } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomActivity.kt index 18e73c26f..69d956939 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomActivity.kt @@ -11,7 +11,7 @@ import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity import kotlinx.android.synthetic.main.activity_room.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt index c5aa5d212..3cb39a5d1 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt @@ -12,7 +12,7 @@ import com.tencent.iot.explorer.link.kitlink.holder.WeekRepeatHolder import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.activity_select_room.* import kotlinx.android.synthetic.main.item_week_repeat.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SetPasswordActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SetPasswordActivity.kt index 1ed3ab7f1..852824108 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SetPasswordActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SetPasswordActivity.kt @@ -5,8 +5,8 @@ import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.SetPasswordPresenter import com.tencent.iot.explorer.link.mvp.view.SetPasswordView -import com.tencent.iot.explorer.link.util.T -import com.tencent.iot.explorer.link.util.keyboard.KeyBoardUtils +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.KeyBoardUtils import kotlinx.android.synthetic.main.activity_set_password.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt index fb9fcee14..bf84dae62 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt @@ -12,7 +12,7 @@ import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.kitlink.response.UserInfoResponse -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.activity_share.* import kotlinx.android.synthetic.main.layout_email_register.view.* import kotlinx.android.synthetic.main.layout_phone_register.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SmartConnectActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SmartConnectActivity.kt index b55b122d6..582339b39 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SmartConnectActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SmartConnectActivity.kt @@ -7,10 +7,10 @@ import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType import com.tencent.iot.explorer.link.kitlink.fragment.* import com.tencent.iot.explorer.link.kitlink.popup.CommonPopupWindow -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.mvp.presenter.GetBindDeviceTokenPresenter import com.tencent.iot.explorer.link.mvp.view.GetBindDeviceTokenView -import com.tencent.iot.explorer.link.util.check.LocationUtil +import com.tencent.iot.explorer.link.core.utils.LocationUtil import kotlinx.android.synthetic.main.activity_smart_connect.* /** diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SoftApActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SoftApActivity.kt index 59a57e20d..f21a30152 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SoftApActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SoftApActivity.kt @@ -9,8 +9,8 @@ import com.tencent.iot.explorer.link.kitlink.popup.CommonPopupWindow import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.GetBindDeviceTokenPresenter import com.tencent.iot.explorer.link.mvp.view.GetBindDeviceTokenView -import com.tencent.iot.explorer.link.util.T -import com.tencent.iot.explorer.link.util.check.LocationUtil +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.LocationUtil import kotlinx.android.synthetic.main.activity_soft_ap.* class SoftApActivity : PActivity(), GetBindDeviceTokenView { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/TimeZoneActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/TimeZoneActivity.kt index 4d99bf1f4..8972744ee 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/TimeZoneActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/TimeZoneActivity.kt @@ -1,27 +1,23 @@ package com.tencent.iot.explorer.link.kitlink.activity -import android.app.Activity -import android.content.Intent import android.text.TextUtils import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.SearchView import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.customview.MySideBarView import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.entity.CountryCodeEntity import com.tencent.iot.explorer.link.kitlink.entity.TimeZoneEntity -import com.tencent.iot.explorer.link.kitlink.holder.CountryCodeKeyViewHolder -import com.tencent.iot.explorer.link.kitlink.holder.CountryCodeViewHolder import com.tencent.iot.explorer.link.kitlink.holder.TimeZoneKeyViewHolder import com.tencent.iot.explorer.link.kitlink.holder.TimeZoneViewHolder import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.* import com.tencent.iot.explorer.link.mvp.IPresenter -import com.tencent.iot.explorer.link.util.T -import kotlinx.android.synthetic.main.activity_country_code.* +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.Utils import kotlinx.android.synthetic.main.activity_time_zone.* import kotlinx.android.synthetic.main.activity_time_zone.my_side_bar import kotlinx.android.synthetic.main.activity_time_zone.tv_show_key @@ -43,7 +39,7 @@ class TimeZoneActivity: PActivity(), private var flags = IntArray(26) private fun getTimeZoneList() { - if (CommonUtils.isChineseSystem()) {// 中文 + if (Utils.isChineseSystem(this)) {// 中文 HttpRequest.instance.getGlobalConfig(CommonField.REGION_LIST_CN, this) saveLanguage(CommonField.CHINESE) } else {// 外文 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/UserInfoActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/UserInfoActivity.kt index 336580140..64e5fa9d4 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/UserInfoActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/UserInfoActivity.kt @@ -13,26 +13,20 @@ import android.widget.TextView import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.popup.CameraPopupWindow import com.tencent.iot.explorer.link.kitlink.popup.CommonPopupWindow import com.tencent.iot.explorer.link.kitlink.popup.EditPopupWindow -import com.tencent.iot.explorer.link.kitlink.util.CommonUtils -import com.tencent.iot.explorer.link.kitlink.util.HttpRequest -import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.UserInfoPresenter import com.tencent.iot.explorer.link.mvp.view.UserInfoView -import com.tencent.iot.explorer.link.util.AppInfoUtils -import com.tencent.iot.explorer.link.util.SharePreferenceUtil -import com.tencent.iot.explorer.link.util.T -import com.tencent.iot.explorer.link.util.picture.imageselectorbrowser.ImageSelectorConstant.REQUEST_IMAGE -import com.tencent.iot.explorer.link.util.picture.imp.ImageManager -import com.tencent.iot.explorer.link.util.picture.imp.ImageSelectorUtils +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.Utils +import com.tencent.iot.explorer.link.kitlink.util.picture.imageselectorbrowser.ImageSelectorConstant.REQUEST_IMAGE +import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager +import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageSelectorUtils import kotlinx.android.synthetic.main.activity_user_info.* import kotlinx.android.synthetic.main.dialog_temperature.view.* import kotlinx.android.synthetic.main.menu_back_layout.* -import java.util.* /** @@ -137,7 +131,7 @@ class UserInfoActivity : PActivity(), UserInfoView, View.OnClickListener, View.O if (hits[0] >= SystemClock.uptimeMillis() - duration) { if (hits.size == 5) { // 获取AndroidID,并保存至剪切板 - AppInfoUtils.copy(this, CommonUtils.getAndroidID()) + Utils.copy(this, Utils.getAndroidID(T.getContext())) } } } @@ -315,7 +309,7 @@ class UserInfoActivity : PActivity(), UserInfoView, View.OnClickListener, View.O override fun onLongClick(v: View?): Boolean { if (v is TextView) { - AppInfoUtils.copy(this@UserInfoActivity, v.text.toString()) + Utils.copy(this@UserInfoActivity, v.text.toString()) T.show(getString(R.string.copy)) } return true diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ControlPanelEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ControlPanelEntity.kt index dd5dddf53..5e6a1dc88 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ControlPanelEntity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ControlPanelEntity.kt @@ -1,7 +1,7 @@ package com.tencent.iot.explorer.link.kitlink.entity import android.text.TextUtils -import com.tencent.iot.explorer.link.kitlink.util.JsonManager +import com.tencent.iot.explorer.link.core.auth.util.JsonManager /** * 面板实体 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceProductEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceProductEntity.kt index 45bdde5f9..b5c897582 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceProductEntity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceProductEntity.kt @@ -1,6 +1,6 @@ package com.tencent.iot.explorer.link.kitlink.entity -import com.tencent.iot.explorer.link.kitlink.util.JsonManager +import com.tencent.iot.explorer.link.core.auth.util.JsonManager /** * 设备产品信息实体 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DevicePropertyEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DevicePropertyEntity.kt index fecb0307d..bedbc2602 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DevicePropertyEntity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DevicePropertyEntity.kt @@ -2,9 +2,9 @@ package com.tencent.iot.explorer.link.kitlink.entity import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.util.TemperatureUtils -import com.tencent.iot.explorer.link.util.T -import com.tencent.iot.explorer.link.util.date.DateFormatUtil +import com.tencent.iot.explorer.link.core.utils.TemperatureUtils +import com.tencent.iot.explorer.link.kitlink.util.DateUtils +import com.tencent.iot.explorer.link.T import java.lang.Exception /** @@ -88,7 +88,7 @@ class DevicePropertyEntity { private fun getTimestampText(value: String): String { try { - return DateFormatUtil.forString(value.toLong()) + return DateUtils.forString(value.toLong()) } catch (e: Exception) { e.toString() } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/PropertyEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/PropertyEntity.kt index d3bfa57ba..f98f2dca7 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/PropertyEntity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/PropertyEntity.kt @@ -2,8 +2,8 @@ package com.tencent.iot.explorer.link.kitlink.entity import com.alibaba.fastjson.JSON import com.alibaba.fastjson.JSONObject +import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.util.JsonManager /** * 产品属性 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/RegionEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/RegionEntity.kt index e10b790de..7c1dd46a4 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/RegionEntity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/RegionEntity.kt @@ -1,8 +1,7 @@ package com.tencent.iot.explorer.link.kitlink.entity -import com.tencent.iot.explorer.link.kitlink.util.CommonUtils -import com.tencent.iot.explorer.link.util.T -import java.util.* +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.Utils class RegionEntity : Comparable{ var Title = "" @@ -11,7 +10,7 @@ class RegionEntity : Comparable{ var Region = "" var CountryCode = "" override fun compareTo(other: RegionEntity): Int { - return if (CommonUtils.isChineseSystem()) { + return if (Utils.isChineseSystem(T.getContext())) { -Title.compareTo(other.Title) } else { TitleEN.compareTo(other.TitleEN) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/TimerListEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/TimerListEntity.kt index 4ed7920e1..18b95bf5a 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/TimerListEntity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/TimerListEntity.kt @@ -1,9 +1,8 @@ package com.tencent.iot.explorer.link.kitlink.entity import com.alibaba.fastjson.JSON -import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import java.lang.StringBuilder /** diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/WeatherEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/WeatherEntity.kt index 661534e74..c452e868e 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/WeatherEntity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/WeatherEntity.kt @@ -1,7 +1,7 @@ package com.tencent.iot.explorer.link.kitlink.entity import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T class WeatherEntity { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/BaseFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/BaseFragment.kt index 9d90d442a..3c6fb37d5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/BaseFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/BaseFragment.kt @@ -10,9 +10,9 @@ import androidx.annotation.LayoutRes import androidx.fragment.app.Fragment import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.kitlink.activity.MainActivity -import com.tencent.iot.explorer.link.kitlink.util.DataHolder +import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.mvp.IPresenter -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T abstract class BaseFragment : Fragment() { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/ConnectProgressFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/ConnectProgressFragment.kt index a26eddb3f..1a3325845 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/ConnectProgressFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/ConnectProgressFragment.kt @@ -11,11 +11,10 @@ import com.tencent.iot.explorer.link.kitlink.activity.SoftApActivity import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.ConnectPresenter import com.tencent.iot.explorer.link.mvp.view.ConnectView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.customview.progress.WaveProgress import com.tencent.iot.explorer.link.kitlink.activity.SmartConnectActivity import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType import kotlinx.android.synthetic.main.connected.* import kotlinx.android.synthetic.main.connecting.* import kotlinx.android.synthetic.main.fragment_connect_progress.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt index 80ea53e8a..ad06a3c94 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt @@ -1,7 +1,6 @@ package com.tencent.iot.explorer.link.kitlink.fragment import android.Manifest -import android.content.ComponentName import android.content.Context import android.content.Intent import android.content.pm.PackageManager @@ -15,6 +14,7 @@ import com.alibaba.fastjson.JSON import com.squareup.picasso.Picasso import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.customview.FullGridView import com.tencent.iot.explorer.link.kitlink.activity.SmartConnectActivity @@ -28,13 +28,11 @@ import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.ProductsConfigResponse import com.tencent.iot.explorer.link.kitlink.response.RecommDeviceListResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest -import com.tencent.iot.explorer.link.kitlink.util.JsonManager import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.IPresenter -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.fragment_devices.* -import kotlin.math.ceil class DeviceFragment() : BaseFragment(), MyCallback, AdapterView.OnItemClickListener{ diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MeFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MeFragment.kt index e06d5fbe6..921348058 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MeFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MeFragment.kt @@ -10,8 +10,8 @@ import com.tencent.iot.explorer.link.kitlink.response.UserInfoResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.kitlink.util.MyCallback -import com.tencent.iot.explorer.link.util.T -import com.tencent.iot.explorer.link.util.picture.imp.ImageManager +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager import kotlinx.android.synthetic.main.fragment_me.* /** diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt index f8bfc1027..8361cf0c5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt @@ -1,15 +1,14 @@ package com.tencent.iot.explorer.link.kitlink.fragment import android.text.TextUtils -import android.util.Log import android.view.View import android.widget.ImageView import android.widget.TextView -import com.alibaba.fastjson.JSON import com.alibaba.fastjson.JSONObject import com.squareup.picasso.Picasso import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType import com.tencent.iot.explorer.link.kitlink.entity.HardwareGuide @@ -17,11 +16,9 @@ import com.tencent.iot.explorer.link.kitlink.entity.ProdConfigDetailEntity import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.ProductsConfigResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest -import com.tencent.iot.explorer.link.kitlink.util.JsonManager import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter -import com.tencent.iot.explorer.link.util.T -import kotlinx.android.synthetic.main.item_device.view.* +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.smart_config_first.* /** diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftAppStepFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftAppStepFragment.kt index f30f375d2..6702093b2 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftAppStepFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftAppStepFragment.kt @@ -1,7 +1,6 @@ package com.tencent.iot.explorer.link.kitlink.fragment import android.text.TextUtils -import android.util.Log import android.view.View import android.widget.ImageView import android.widget.TextView @@ -9,6 +8,7 @@ import com.alibaba.fastjson.JSONObject import com.squareup.picasso.Picasso import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType import com.tencent.iot.explorer.link.kitlink.entity.HardwareGuide @@ -16,10 +16,9 @@ import com.tencent.iot.explorer.link.kitlink.entity.ProdConfigDetailEntity import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.ProductsConfigResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest -import com.tencent.iot.explorer.link.kitlink.util.JsonManager import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.fragment_soft_ap_step.* class SoftAppStepFragment(type: Int, productId: String) : BaseFragment() { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftHotspotFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftHotspotFragment.kt index bc3573f5c..b57ec27d2 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftHotspotFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftHotspotFragment.kt @@ -7,21 +7,18 @@ import android.provider.Settings import android.text.TextUtils import android.view.View import com.alibaba.fastjson.JSONObject -import com.squareup.picasso.Picasso -import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType import com.tencent.iot.explorer.link.kitlink.entity.ConnectApGuide -import com.tencent.iot.explorer.link.kitlink.entity.HardwareGuide import com.tencent.iot.explorer.link.kitlink.entity.ProdConfigDetailEntity import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.ProductsConfigResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest -import com.tencent.iot.explorer.link.kitlink.util.JsonManager import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.fragment_soft_hotspot.* class SoftHotspotFragment(type: Int, productId: String) : BaseFragment() { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/WifiFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/WifiFragment.kt index 269248178..2540a0580 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/WifiFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/WifiFragment.kt @@ -9,11 +9,9 @@ import android.text.TextWatcher import android.view.View import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.customview.dialog.WifiHelperDialog -import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.mvp.IPresenter -import com.tencent.iot.explorer.link.util.T -import com.tencent.iot.explorer.link.util.check.LocationUtil -import com.tencent.iot.explorer.link.util.keyboard.KeyBoardUtils +import com.tencent.iot.explorer.link.core.utils.LocationUtil +import com.tencent.iot.explorer.link.core.utils.KeyBoardUtils import kotlinx.android.synthetic.main.fragment_wifi.* import kotlinx.android.synthetic.main.smart_config_second.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkEnumBigItemHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkEnumBigItemHolder.kt index 95593d050..ec32a4773 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkEnumBigItemHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkEnumBigItemHolder.kt @@ -5,7 +5,7 @@ import android.view.ViewGroup import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.PropertyEntity -import com.tencent.iot.explorer.link.kitlink.util.DataHolder +import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_dark_big_enum_item.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkNumberBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkNumberBigHolder.kt index 0402fda2e..25b976c80 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkNumberBigHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkNumberBigHolder.kt @@ -5,7 +5,7 @@ import android.view.ViewGroup import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.kitlink.util.DataHolder +import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.customview.progress.SeekProgress import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_dark_big_int.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchBigHolder.kt index ff4fdfcef..8ff1f3a68 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchBigHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchBigHolder.kt @@ -5,7 +5,7 @@ import android.view.View import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.kitlink.util.DataHolder +import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_dark_big_switch.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchLongHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchLongHolder.kt index 11c3d2b09..c13b9bbcd 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchLongHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchLongHolder.kt @@ -4,7 +4,7 @@ import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.kitlink.util.DataHolder +import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_dark_long_switch.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleEnumBigItemHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleEnumBigItemHolder.kt index f3898fb74..3dca18102 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleEnumBigItemHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleEnumBigItemHolder.kt @@ -5,7 +5,7 @@ import android.view.ViewGroup import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.PropertyEntity -import com.tencent.iot.explorer.link.kitlink.util.DataHolder +import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_simple_big_enum_item.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleNumberBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleNumberBigHolder.kt index 5819eff5f..9100fcac4 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleNumberBigHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleNumberBigHolder.kt @@ -5,7 +5,7 @@ import android.view.ViewGroup import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.kitlink.util.DataHolder +import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.customview.progress.SeekProgress import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_simple_big_int.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleSwitchBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleSwitchBigHolder.kt index 33a6e0be3..77dd6e0fe 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleSwitchBigHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleSwitchBigHolder.kt @@ -6,7 +6,7 @@ import android.view.ViewGroup import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.kitlink.util.DataHolder +import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_simple_big_switch.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleSwitchLongHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleSwitchLongHolder.kt index 53b710ad1..6adfe5c2b 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleSwitchLongHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleSwitchLongHolder.kt @@ -4,7 +4,7 @@ import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.kitlink.util.DataHolder +import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_simple_long_switch.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardEnumBigItemHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardEnumBigItemHolder.kt index d072223e0..d6eb69d0b 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardEnumBigItemHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardEnumBigItemHolder.kt @@ -5,7 +5,7 @@ import android.view.ViewGroup import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.PropertyEntity -import com.tencent.iot.explorer.link.kitlink.util.DataHolder +import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_standard_big_enum_item.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardNumberBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardNumberBigHolder.kt index eeabbc321..53580c941 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardNumberBigHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardNumberBigHolder.kt @@ -5,7 +5,7 @@ import android.view.ViewGroup import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.kitlink.util.DataHolder +import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.customview.progress.SeekProgress import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_standard_big_int.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardSwitchBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardSwitchBigHolder.kt index 17cb37b4c..d67530545 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardSwitchBigHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardSwitchBigHolder.kt @@ -6,7 +6,7 @@ import android.view.ViewGroup import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.kitlink.util.DataHolder +import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_standard_big_switch.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardSwitchLongHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardSwitchLongHolder.kt index 93d1bedab..ce1e8be96 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardSwitchLongHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardSwitchLongHolder.kt @@ -4,7 +4,7 @@ import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.kitlink.util.DataHolder +import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_standard_long_switch.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/DeviceViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/DeviceViewHolder.kt index bb2c4efb9..a80ceb926 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/DeviceViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/DeviceViewHolder.kt @@ -1,14 +1,11 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context -import android.text.TextUtils -import android.view.View import android.view.ViewGroup import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity -import com.tencent.iot.explorer.link.mvp.presenter.HomeFragmentPresenter import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView -import com.tencent.iot.explorer.link.util.picture.imp.ImageManager +import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager import kotlinx.android.synthetic.main.item_device.view.* class DeviceViewHolder : CRecyclerView.CViewHolder { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/FeedbackViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/FeedbackViewHolder.kt index 67e2b1d4b..8e79deee0 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/FeedbackViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/FeedbackViewHolder.kt @@ -5,7 +5,7 @@ import android.view.View import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.activity.FeedbackActivity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView -import com.tencent.iot.explorer.link.util.picture.imp.ImageManager +import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager import kotlinx.android.synthetic.main.item_feekback.view.* class FeedbackViewHolder : CRecyclerView.CViewHolder { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MemberListViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MemberListViewHolder.kt index 8c743155a..ff6cc3f4c 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MemberListViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MemberListViewHolder.kt @@ -5,7 +5,7 @@ import android.view.ViewGroup import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.entity.MemberEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView -import com.tencent.iot.explorer.link.util.picture.imp.ImageManager +import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager import kotlinx.android.synthetic.main.item_member.view.* /** diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgDeviceViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgDeviceViewHolder.kt index bfe028d9f..f6f6589c3 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgDeviceViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgDeviceViewHolder.kt @@ -3,8 +3,8 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.view.View import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.entity.MessageEntity -import com.tencent.iot.explorer.link.util.date.DateFormatUtil import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView +import com.tencent.iot.explorer.link.kitlink.util.DateUtils import kotlinx.android.synthetic.main.item_message_device.view.* class MsgDeviceViewHolder : CRecyclerView.CViewHolder { @@ -18,7 +18,7 @@ class MsgDeviceViewHolder : CRecyclerView.CViewHolder { tv_message_content.text = it.MsgContent iv_icon_message.setImageResource(R.mipmap.icon_light) tv_message_time.text = - DateFormatUtil.forString(it.MsgTimestamp, "yyyy-MM-dd HH:mm") + DateUtils.forString(it.MsgTimestamp, "yyyy-MM-dd HH:mm") } } itemView.rl_delete_message.setOnClickListener { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgFamilyViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgFamilyViewHolder.kt index a6b4b3715..5164cbd91 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgFamilyViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgFamilyViewHolder.kt @@ -3,8 +3,8 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.view.View import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.entity.MessageEntity -import com.tencent.iot.explorer.link.util.date.DateFormatUtil import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView +import com.tencent.iot.explorer.link.kitlink.util.DateUtils import kotlinx.android.synthetic.main.item_message_family.view.* class MsgFamilyViewHolder : CRecyclerView.CViewHolder { @@ -18,7 +18,7 @@ class MsgFamilyViewHolder : CRecyclerView.CViewHolder { tv_message_content.text = it.MsgContent iv_icon_message.setImageResource(R.mipmap.icon_light) tv_message_time.text = - DateFormatUtil.forString(it.MsgTimestamp, "yyyy-MM-dd HH:mm") + DateUtils.forString(it.MsgTimestamp, "yyyy-MM-dd HH:mm") } } itemView.rl_delete_message.setOnClickListener { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgNotifyViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgNotifyViewHolder.kt index f9048cd87..00e6bead7 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgNotifyViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgNotifyViewHolder.kt @@ -2,8 +2,8 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.view.View import com.tencent.iot.explorer.link.kitlink.entity.MessageEntity -import com.tencent.iot.explorer.link.util.date.DateFormatUtil import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView +import com.tencent.iot.explorer.link.kitlink.util.DateUtils import kotlinx.android.synthetic.main.item_message_notify.view.* class MsgNotifyViewHolder : CRecyclerView.CViewHolder { @@ -15,7 +15,7 @@ class MsgNotifyViewHolder : CRecyclerView.CViewHolder { entity?.let { tv_message_content.text = it.MsgContent tv_message_time.text = - DateFormatUtil.forString(it.MsgTimestamp, "yyyy-MM-dd HH:mm") + DateUtils.forString(it.MsgTimestamp, "yyyy-MM-dd HH:mm") } rl_delete_message.setOnClickListener { it.tag = 2 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/RoomListViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/RoomListViewHolder.kt index 867a8fa7b..1dc8e6d95 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/RoomListViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/RoomListViewHolder.kt @@ -3,11 +3,10 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.View import android.view.ViewGroup -import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.entity.RoomEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.item_room_list.view.* /** diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ShareDeviceViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ShareDeviceViewHolder.kt index bb0e3e89e..4ec85b719 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ShareDeviceViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ShareDeviceViewHolder.kt @@ -5,7 +5,7 @@ import android.view.ViewGroup import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView -import com.tencent.iot.explorer.link.util.picture.imp.ImageManager +import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager import kotlinx.android.synthetic.main.item_share_device.view.* class ShareDeviceViewHolder : CRecyclerView.CViewHolder { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ShareUserHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ShareUserHolder.kt index 326a4119b..3fc889f82 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ShareUserHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ShareUserHolder.kt @@ -4,9 +4,9 @@ import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.entity.ShareUserEntity -import com.tencent.iot.explorer.link.util.date.DateFormatUtil import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView -import com.tencent.iot.explorer.link.util.picture.imp.ImageManager +import com.tencent.iot.explorer.link.kitlink.util.DateUtils +import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager import kotlinx.android.synthetic.main.item_share_user.view.* /** @@ -27,7 +27,7 @@ class ShareUserHolder : CRecyclerView.CViewHolder { ) //2020-01-08 14:02 itemView.tv_item_user_date.text = - DateFormatUtil.forString(BindTime * 1000, "yyyy-MM-dd HH:mm") + DateUtils.forString(BindTime * 1000, "yyyy-MM-dd HH:mm") } itemView.rl_delete_share_user.setOnClickListener { recyclerItemView?.doAction( diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/TimerListViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/TimerListViewHolder.kt index 5334b1b71..a55766e2c 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/TimerListViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/TimerListViewHolder.kt @@ -7,7 +7,7 @@ import com.alibaba.fastjson.JSON import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity import com.tencent.iot.explorer.link.kitlink.entity.TimerListEntity -import com.tencent.iot.explorer.link.kitlink.util.DataHolder +import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.item_timer_list.view.* import java.lang.StringBuilder diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/popup/CameraPopupWindow.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/popup/CameraPopupWindow.kt index ec246d2a9..a099e4d9c 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/popup/CameraPopupWindow.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/popup/CameraPopupWindow.kt @@ -5,8 +5,8 @@ import android.view.Gravity import android.view.View import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.util.picture.imageselectorbrowser.ImageSelectorActivity -import com.tencent.iot.explorer.link.util.picture.imp.ImageSelectorUtils +import com.tencent.iot.explorer.link.kitlink.util.picture.imageselectorbrowser.ImageSelectorActivity +import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageSelectorUtils import kotlinx.android.synthetic.main.popup_select_camera.view.* /** diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/popup/EditPopupWindow.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/popup/EditPopupWindow.kt index 0cc6e5926..a0d9698a3 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/popup/EditPopupWindow.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/popup/EditPopupWindow.kt @@ -1,13 +1,10 @@ package com.tencent.iot.explorer.link.kitlink.popup import android.content.Context -import android.text.InputFilter import android.view.Gravity import android.view.View -import android.view.ViewGroup -import androidx.core.util.rangeTo import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T import kotlinx.android.synthetic.main.popup_edit.view.* /** diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/BaseResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/BaseResponse.kt index 24d349991..87ce8b2da 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/BaseResponse.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/BaseResponse.kt @@ -1,6 +1,6 @@ package com.tencent.iot.explorer.link.kitlink.response -import com.tencent.iot.explorer.link.kitlink.util.JsonManager +import com.tencent.iot.explorer.link.core.auth.util.JsonManager /** * 基础响应实体 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/CommonUtils.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/CommonUtils.kt deleted file mode 100644 index 34da6378a..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/CommonUtils.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.util - -import android.provider.Settings -import android.text.TextUtils -import com.tencent.iot.explorer.link.util.T - -object CommonUtils { - fun isChineseSystem(): Boolean { - return T.getContext().resources.configuration.locale.language == "zh" - } - - fun getAndroidID(): String { - val id = Settings.System.getString(T.getContext().contentResolver, Settings.System.ANDROID_ID) - return if (TextUtils.isEmpty(id)) "" - else id - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/DateUtils.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/DateUtils.java index 4af494049..fe36b18b2 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/DateUtils.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/DateUtils.java @@ -1,9 +1,9 @@ package com.tencent.iot.explorer.link.kitlink.util; -import com.tencent.iot.explorer.link.App; import com.tencent.iot.explorer.link.R; -import com.tencent.iot.explorer.link.util.T; +import com.tencent.iot.explorer.link.T; +import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; @@ -25,4 +25,30 @@ public static Date getDateAfter(Date date, int day) { now.set(Calendar.DATE, now.get(Calendar.DATE) + day); return now.getTime(); } + + /** + * 把毫秒值转化为yyyy-MM-dd + * + * @param currentTimeMillis + * @return + */ + public static String forString(long currentTimeMillis) { + return forString(currentTimeMillis, null); + } + + /** + * 把毫秒值转化为format格式的日期 + * + * @param currentTimeMillis + * @return + */ + public static String forString(long currentTimeMillis, String format) { + Date d = new Date(currentTimeMillis); + if ((format == null) || format.equals("")) { + format = "yyyy-MM-dd"; + } + DateFormat df = new SimpleDateFormat(format); + String str = df.format(d); + return str; + } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpRequest.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpRequest.kt index 8c22f8b7d..f83669c1a 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpRequest.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpRequest.kt @@ -1,17 +1,19 @@ package com.tencent.iot.explorer.link.kitlink.util import android.text.TextUtils -import android.util.Log import com.tencent.iot.explorer.link.* +import com.tencent.iot.explorer.link.core.auth.util.JsonManager +import com.tencent.iot.explorer.link.core.auth.util.SignatureUtil import com.tencent.iot.explorer.link.core.link.entity.DeviceInfo import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.core.utils.IPUtil +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.Utils import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.retrofit.StringRequest import java.util.* import com.tencent.iot.explorer.link.retrofit.Callback -import com.tencent.iot.explorer.link.util.T import kotlin.collections.HashMap /** @@ -46,7 +48,7 @@ class HttpRequest private constructor() { const val BUSI_APP = "studioapp" const val BUSI_OPENSOURCE = "studioappOpensource" - val ANDROID_ID = CommonUtils.getAndroidID() + val ANDROID_ID = Utils.getAndroidID(T.getContext()) } /** diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpUtil.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpUtil.kt deleted file mode 100644 index f37a6c05d..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpUtil.kt +++ /dev/null @@ -1,161 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.util - -import android.text.TextUtils -import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.util.T -import java.io.* -import java.net.HttpURLConnection -import java.net.MalformedURLException -import java.net.URL -import kotlin.concurrent.thread - -/** - * HttpURLConnection请求工具 - */ -object HttpUtil { - - /** - * get请求 - */ - fun get(url: String, listener: HttpCallBack) { - Thread( - Runnable { - val connection: HttpURLConnection - try { - val url = URL(url) - connection = url.openConnection() as HttpURLConnection - connection.requestMethod = "GET" - connection.connectTimeout = 8000 - connection.readTimeout = 8000 - connection.connect() - if (HttpURLConnection.HTTP_OK == connection.responseCode) { - val reader = BufferedReader(InputStreamReader(connection.inputStream)) - val response = StringBuilder() - var line = reader.readLine() - while (!TextUtils.isEmpty(line)) { - response.append(line) - line = reader.readLine() - } - listener.onSuccess(response.toString()) - } else { - listener.onError(T.getContext().getString(R.string.server_error)) //"服务器出错" - } - } catch (e: MalformedURLException) { - listener.onError(e.message ?: "") - e.printStackTrace() - } catch (e: IOException) { - e.printStackTrace() - } - }).start() - } - - /** - * post请求 - */ - fun post(url: String, params: Map, listener: HttpCallBack) { - thread(start = true) { - try { - (URL(url).openConnection() as? HttpURLConnection)?.run { - requestMethod = "POST" - connectTimeout = 8000 - readTimeout = 8000 - doOutput = true - outputStream?.run { - PrintWriter(this).run { - write(getPostParams(params)) - close() - } - flush() - close() - } - connect() - if (HttpURLConnection.HTTP_OK == responseCode) { - val reader = BufferedReader(InputStreamReader(inputStream)) - val response = StringBuilder() - var line = reader.readLine() - while (!TextUtils.isEmpty(line)) { - response.append(line) - line = reader.readLine() - } - listener.onSuccess(response.toString()) - } else { - listener.onError(T.getContext().getString(R.string.server_error)) //"服务器出错" - } - } - } catch (e: MalformedURLException) { - listener.onError(e.message ?: "") - e.printStackTrace() - } catch (e: IOException) { - e.printStackTrace() - } - } - } - - /** - * postJson请求 - */ - fun postJson(url: String, json: String, listener: HttpCallBack) { - thread(start = true) { - try { - (URL(url).openConnection() as? HttpURLConnection)?.run { - requestMethod = "POST" - connectTimeout = 8000 - readTimeout = 8000 - doOutput = true - doInput = true - addRequestProperty("Charset", "UTF-8") - addRequestProperty("Content-Type","application/json") - outputStream?.run { - PrintWriter(this).run { - print(json) - close() - } - flush() - close() - } - connect() - if (HttpURLConnection.HTTP_OK == responseCode) { - val reader = BufferedReader(InputStreamReader(inputStream)) - val response = StringBuilder() - var line = reader.readLine() - while (!TextUtils.isEmpty(line)) { - response.append(line) - line = reader.readLine() - } - listener.onSuccess(response.toString()) - } else { - listener.onError(T.getContext().getString(R.string.server_error)) //"服务器出错" - } - } - } catch (e: MalformedURLException) { - listener.onError(e.message ?: "") - e.printStackTrace() - } catch (e: IOException) { - e.printStackTrace() - } - } - } - - /** - * 将Map集合中的数据转换成post提交的格式 - * - * @param params - * @return - */ - private fun getPostParams(params: Map): String { - val sb = StringBuilder() - params.keys.forEach { - if (sb.isEmpty()) - sb.append(it).append("=").append(params[it]) - else - sb.append("&").append(it).append("=").append(params[it]) - } - return sb.toString() - } - -} - -interface HttpCallBack { - fun onSuccess(response: String) - fun onError(error: String) -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/JsonManager.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/JsonManager.java deleted file mode 100644 index ce89f3387..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/JsonManager.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.util; - -import android.util.Log; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.TypeReference; - -import java.util.List; -import java.util.Map; - -public class JsonManager { - /** - * json格式转对象 245 - */ - public static T parseJson(String json, Class clazz) { - try { - - return JSON.parseObject(json, clazz); - } catch (Exception e) { - Log.e("ParseJsonEntity", "fastjson解析出错:" + e.getMessage() + "\n原因是:" + e.getCause()); - return null; - } - - } - - /** - * json格式转对象 245 - */ - public static List parseJsonArray(String json, Class clazz) { - try { - - return JSON.parseArray(json, clazz); - } catch (Exception e) { - Log.e("ParseJsonEntity", "fastjson解析出错:" + e.getMessage() + "\n原因是:" + e.getCause()); - return null; - } - - } - - /** - * 功能描述:把JSON数据转换成普通字符串列表 - */ - public static List parseArray(String jsonData) { - - try { - return JSON.parseArray(jsonData, String.class); - } catch (Exception e) { - Log.e("ParseJsonEntity", "fastjson解析出错:" + e.getMessage() + "\n原因是:" + e.getCause()); - return null; - - } - } - - /** - * 功能描述:把指定的java对象转为json数据 - */ - public static String toJson(Object clazz) { - try { - return JSON.toJSONString(clazz); - } catch (Exception e) { - Log.e("ToJsonEntity", "fastjson转换错误:" + e.getMessage() + "\n原因是:" + e.getCause()); - return null; - } - } - - /** - * 功能描述:把JSON数据转换成较为复杂的java对象列表 - */ - public static List> parseObjectArray(String jsonData) { - - try { - return JSON.parseObject(jsonData, new TypeReference>>() { - }); - } catch (Exception e) { - Log.e("ParseObjectArray", "fastjson解析错误:" + e.getMessage() + "\n原因是:" + e.getCause()); - return null; - } - } - -} diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/OnCameraEventListener.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/OnCameraEventListener.kt deleted file mode 100644 index 9c6ca3623..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/OnCameraEventListener.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.util - -import android.view.View - -/** - * 操作相机事件的接口 - */ -interface OnCameraEventListener { - - // 相机窗口被打开 - fun onCameraOpened() - - /** - * 拍照成功 - * view: 打开相机窗口的对象 - * path: 相机拍照保存的临时路径 - */ - fun onCaptureSuccess(view: View, path: String) - - // 相机窗口已关闭 - fun onCameraClosed() -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/SignatureUtil.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/SignatureUtil.kt deleted file mode 100644 index 96bf68d99..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/SignatureUtil.kt +++ /dev/null @@ -1,32 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.util - -import android.util.Base64 -import com.tencent.iot.explorer.link.core.log.L -import java.nio.charset.Charset -import javax.crypto.Mac -import javax.crypto.spec.SecretKeySpec - -object SignatureUtil { - - /** - * 签名数据 - */ - fun format(params: Map): String { - val sb = StringBuilder() - params.toSortedMap().forEach { - L.e("${it.key}=${it.value}") - sb.append(it.key).append("=").append(it.value).append("&") - } - return sb.substring(0, sb.lastIndex) - } - - fun signature(sign: String, secret: String): String { - L.e("待签名=$sign") - val secretKey = SecretKeySpec(secret.toByteArray(Charset.forName("utf-8")), "HmacSHA1") - val mac = Mac.getInstance("HmacSHA1") - mac.init(secretKey) - val result = mac.doFinal(sign.toByteArray(Charset.forName("utf-8"))) - return Base64.encodeToString(result, Base64.DEFAULT).replace("\n", "") - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/StatusBarUtil.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/StatusBarUtil.java index 8deb5de69..bc9a89b9b 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/StatusBarUtil.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/StatusBarUtil.java @@ -13,6 +13,8 @@ import androidx.annotation.IntDef; +import com.tencent.iot.explorer.link.core.utils.OSUtils; + import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.reflect.Field; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeChatLogin.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeChatLogin.kt index c5dadcf63..ced4b4690 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeChatLogin.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeChatLogin.kt @@ -3,10 +3,10 @@ package com.tencent.iot.explorer.link.kitlink.util import android.app.Activity import com.tencent.iot.explorer.link.BuildConfig import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.kitlink.wxapi.WXEntryActivity import com.tencent.mm.opensdk.modelmsg.SendAuth import com.tencent.mm.opensdk.openapi.WXAPIFactory -import com.tencent.iot.explorer.link.util.T /** diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Weak.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Weak.kt deleted file mode 100644 index 7ba65e6bc..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Weak.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.util - -import java.lang.ref.WeakReference -import kotlin.reflect.KProperty - -class Weak(initializer: () -> T?) { - var weakReference = WeakReference(initializer()) - - constructor() : this({ - null - }) - - operator fun getValue(thisRef: Any?, property: KProperty<*>): T? { - return weakReference.get() - } - - operator fun setValue(thisRef: Any?, property: KProperty<*>, value: T?) { - weakReference = WeakReference(value) - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeatherUtils.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeatherUtils.kt index 5cad1e713..965d919ea 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeatherUtils.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeatherUtils.kt @@ -4,7 +4,7 @@ import android.content.Context import com.alibaba.fastjson.JSON import com.tencent.iot.explorer.link.BuildConfig import com.tencent.iot.explorer.link.kitlink.entity.WeatherInfo -import com.tencent.iot.explorer.link.util.check.LocationUtil +import com.tencent.iot.explorer.link.core.utils.LocationUtil import com.tencent.map.geolocation.TencentLocation import com.tencent.map.geolocation.TencentLocationListener import okhttp3.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ClipPictureActivity.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/clipimage/ClipPictureActivity.java similarity index 96% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ClipPictureActivity.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/clipimage/ClipPictureActivity.java index d147c7f64..37b0b598b 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ClipPictureActivity.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/clipimage/ClipPictureActivity.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.clipimage; +package com.tencent.iot.explorer.link.kitlink.util.picture.clipimage; import android.app.Activity; import android.content.Intent; @@ -19,10 +19,10 @@ import android.widget.ImageView.ScaleType; import android.widget.Toast; -import com.tencent.iot.explorer.link.util.picture.clipimage.ClipView.OnDrawListenerComplete; -import com.tencent.iot.explorer.link.util.picture.utils.BitmapUtils; -import com.tencent.iot.explorer.link.util.picture.utils.ImageUtils; -import com.tencent.iot.explorer.link.util.picture.utils.WindowManage; +import com.tencent.iot.explorer.link.kitlink.util.picture.clipimage.ClipView.OnDrawListenerComplete; +import com.tencent.iot.explorer.link.kitlink.util.picture.utils.BitmapUtils; +import com.tencent.iot.explorer.link.kitlink.util.picture.utils.ImageUtils; +import com.tencent.iot.explorer.link.kitlink.util.picture.utils.WindowManage; import com.tencent.iot.explorer.link.R;; import java.io.ByteArrayOutputStream; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ClipView.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/clipimage/ClipView.java similarity index 96% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ClipView.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/clipimage/ClipView.java index e790e472a..3ad3dbdb0 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ClipView.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/clipimage/ClipView.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.clipimage; +package com.tencent.iot.explorer.link.kitlink.util.picture.clipimage; import android.content.Context; import android.graphics.Canvas; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ImageSimpleBrowseActivity.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/clipimage/ImageSimpleBrowseActivity.java similarity index 96% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ImageSimpleBrowseActivity.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/clipimage/ImageSimpleBrowseActivity.java index c3d97b5d2..8518be6dd 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/clipimage/ImageSimpleBrowseActivity.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/clipimage/ImageSimpleBrowseActivity.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.clipimage; +package com.tencent.iot.explorer.link.kitlink.util.picture.clipimage; import android.app.Activity; import android.graphics.Bitmap; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/HackyViewPager.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/HackyViewPager.java similarity index 88% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/HackyViewPager.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/HackyViewPager.java index 5816e9136..f92e00d70 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/HackyViewPager.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/HackyViewPager.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.imageselectorbrowser; +package com.tencent.iot.explorer.link.kitlink.util.picture.imageselectorbrowser; import android.content.Context; import android.util.AttributeSet; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorActivity.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorActivity.java similarity index 98% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorActivity.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorActivity.java index 052aff5f8..fa60951a0 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorActivity.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorActivity.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.imageselectorbrowser; +package com.tencent.iot.explorer.link.kitlink.util.picture.imageselectorbrowser; import android.app.Activity; import android.content.Context; @@ -19,7 +19,7 @@ import androidx.fragment.app.FragmentActivity; import com.tencent.iot.explorer.link.R; -import com.tencent.iot.explorer.link.util.picture.clipimage.ClipPictureActivity; +import com.tencent.iot.explorer.link.kitlink.util.picture.clipimage.ClipPictureActivity; import java.io.BufferedInputStream; import java.io.BufferedReader; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorBrowseActivity.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorBrowseActivity.java similarity index 94% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorBrowseActivity.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorBrowseActivity.java index c0abb972c..49256cc22 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorBrowseActivity.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorBrowseActivity.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.imageselectorbrowser; +package com.tencent.iot.explorer.link.kitlink.util.picture.imageselectorbrowser; import android.app.Activity; import android.content.Intent; @@ -20,8 +20,8 @@ import com.github.chrisbanes.photoview.PhotoViewAttacher; import com.squareup.picasso.Picasso; import com.tencent.iot.explorer.link.R; -import com.tencent.iot.explorer.link.util.picture.utils.ImageShowUtils; -import com.tencent.iot.explorer.link.util.picture.utils.ImageUtils; +import com.tencent.iot.explorer.link.kitlink.util.picture.utils.ImageShowUtils; +import com.tencent.iot.explorer.link.kitlink.util.picture.utils.ImageUtils; import java.io.File; import java.io.FileNotFoundException; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorConstant.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorConstant.java similarity index 91% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorConstant.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorConstant.java index 97a3e15df..ff7532a98 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorConstant.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorConstant.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.imageselectorbrowser; +package com.tencent.iot.explorer.link.kitlink.util.picture.imageselectorbrowser; public class ImageSelectorConstant { /** 最大图片选择次数,int类型,默认9 */ diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorFolderBean.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorFolderBean.java similarity index 94% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorFolderBean.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorFolderBean.java index de2377577..ada3052ef 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorFolderBean.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorFolderBean.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.imageselectorbrowser; +package com.tencent.iot.explorer.link.kitlink.util.picture.imageselectorbrowser; import java.util.List; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorFragment.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorFragment.java similarity index 98% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorFragment.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorFragment.java index 35976ff0d..f3a9e5f77 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorFragment.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorFragment.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.imageselectorbrowser; +package com.tencent.iot.explorer.link.kitlink.util.picture.imageselectorbrowser; import android.annotation.SuppressLint; import android.annotation.TargetApi; @@ -34,10 +34,10 @@ import androidx.loader.content.Loader; import com.tencent.iot.explorer.link.R; -import com.tencent.iot.explorer.link.util.picture.imageselectorbrowser.ImageSelectorActivity.Mode; -import com.tencent.iot.explorer.link.util.picture.imp.ImageManager; -import com.tencent.iot.explorer.link.util.picture.utils.FileUtils; -import com.tencent.iot.explorer.link.util.picture.utils.TimeUtils; +import com.tencent.iot.explorer.link.kitlink.util.picture.imageselectorbrowser.ImageSelectorActivity.Mode; +import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager; +import com.tencent.iot.explorer.link.kitlink.util.picture.utils.FileUtils; +import com.tencent.iot.explorer.link.kitlink.util.picture.utils.TimeUtils; import java.io.File; import java.util.ArrayList; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorGridAdapter.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorGridAdapter.java similarity index 97% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorGridAdapter.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorGridAdapter.java index d2c4a894b..c57eafc22 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorGridAdapter.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorGridAdapter.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.imageselectorbrowser; +package com.tencent.iot.explorer.link.kitlink.util.picture.imageselectorbrowser; import android.content.Context; import android.view.LayoutInflater; @@ -9,7 +9,7 @@ import android.widget.ImageView; import com.tencent.iot.explorer.link.R; -import com.tencent.iot.explorer.link.util.picture.imp.ImageManager; +import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager; import java.io.File; import java.util.ArrayList; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorImageBean.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorImageBean.java similarity index 93% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorImageBean.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorImageBean.java index 68035c658..0db73ebd2 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorImageBean.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorImageBean.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.imageselectorbrowser; +package com.tencent.iot.explorer.link.kitlink.util.picture.imageselectorbrowser; /** * 单张图片的实体类 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorPopupFolderAdapter.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorPopupFolderAdapter.java similarity index 97% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorPopupFolderAdapter.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorPopupFolderAdapter.java index b17f2f873..dbc025e5c 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imageselectorbrowser/ImageSelectorPopupFolderAdapter.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imageselectorbrowser/ImageSelectorPopupFolderAdapter.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.imageselectorbrowser; +package com.tencent.iot.explorer.link.kitlink.util.picture.imageselectorbrowser; import android.content.Context; import android.view.LayoutInflater; @@ -8,7 +8,7 @@ import android.widget.ImageView; import android.widget.TextView; -import com.tencent.iot.explorer.link.util.picture.imp.ImageManager; +import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager; import com.tencent.iot.explorer.link.R;; import java.io.File; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imp/ImageManager.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imp/ImageManager.java similarity index 98% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/imp/ImageManager.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imp/ImageManager.java index 091f9956f..fcfc607e6 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imp/ImageManager.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imp/ImageManager.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.imp; +package com.tencent.iot.explorer.link.kitlink.util.picture.imp; import android.content.Context; import android.graphics.Bitmap; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imp/ImageSelectorUtils.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imp/ImageSelectorUtils.java similarity index 89% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/imp/ImageSelectorUtils.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imp/ImageSelectorUtils.java index 366ca4131..46cdd12a6 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/imp/ImageSelectorUtils.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/imp/ImageSelectorUtils.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.imp; +package com.tencent.iot.explorer.link.kitlink.util.picture.imp; import android.app.Activity; import android.content.Context; @@ -6,9 +6,9 @@ import androidx.fragment.app.Fragment; -import com.tencent.iot.explorer.link.util.picture.imageselectorbrowser.ImageSelectorActivity; -import com.tencent.iot.explorer.link.util.picture.imageselectorbrowser.ImageSelectorActivity.Mode; -import com.tencent.iot.explorer.link.util.picture.imageselectorbrowser.ImageSelectorConstant; +import com.tencent.iot.explorer.link.kitlink.util.picture.imageselectorbrowser.ImageSelectorActivity; +import com.tencent.iot.explorer.link.kitlink.util.picture.imageselectorbrowser.ImageSelectorActivity.Mode; +import com.tencent.iot.explorer.link.kitlink.util.picture.imageselectorbrowser.ImageSelectorConstant; import java.util.ArrayList; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/BitmapUtils.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/BitmapUtils.java similarity index 99% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/BitmapUtils.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/BitmapUtils.java index 024b4c615..cbbe61737 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/BitmapUtils.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/BitmapUtils.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.utils; +package com.tencent.iot.explorer.link.kitlink.util.picture.utils; import android.content.res.Resources; import android.graphics.Bitmap; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/FileUtils.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/FileUtils.java similarity index 99% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/FileUtils.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/FileUtils.java index 0c1ee153b..cf59dde2c 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/FileUtils.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/FileUtils.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.utils; +package com.tencent.iot.explorer.link.kitlink.util.picture.utils; import android.content.ContentResolver; import android.content.Context; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/ImageShowUtils.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/ImageShowUtils.java similarity index 95% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/ImageShowUtils.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/ImageShowUtils.java index bd75842f5..f095c1622 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/ImageShowUtils.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/ImageShowUtils.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.utils; +package com.tencent.iot.explorer.link.kitlink.util.picture.utils; import android.app.Activity; import android.app.Service; @@ -14,9 +14,8 @@ import android.view.inputmethod.InputMethodManager; import android.widget.TextView; -import com.tencent.iot.explorer.link.App; import com.tencent.iot.explorer.link.R; -import com.tencent.iot.explorer.link.util.T; +import com.tencent.iot.explorer.link.T; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/ImageUtils.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/ImageUtils.java similarity index 96% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/ImageUtils.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/ImageUtils.java index 6fa22627d..f414995a6 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/ImageUtils.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/ImageUtils.java @@ -5,7 +5,7 @@ scaleImage(Bitmap org, float scaleWidth, float scaleHeight) 缩放图片 =======================================================================*/ -package com.tencent.iot.explorer.link.util.picture.utils; +package com.tencent.iot.explorer.link.kitlink.util.picture.utils; import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/TimeUtils.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/TimeUtils.java similarity index 93% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/TimeUtils.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/TimeUtils.java index b94a8ab75..1db1b0e68 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/TimeUtils.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/TimeUtils.java @@ -3,7 +3,7 @@ getTime(long timeInMillis, SimpleDateFormat dateFormat) ��longת��Ϊ�̶���ʽʱ���ַ��� ===================================================================================== */ -package com.tencent.iot.explorer.link.util.picture.utils; +package com.tencent.iot.explorer.link.kitlink.util.picture.utils; import java.io.File; import java.text.SimpleDateFormat; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/WindowManage.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/WindowManage.java similarity index 90% rename from app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/WindowManage.java rename to app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/WindowManage.java index 51b0cc526..74696d1b9 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/picture/utils/WindowManage.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/WindowManage.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.picture.utils; +package com.tencent.iot.explorer.link.kitlink.util.picture.utils; import android.app.Activity; import android.util.DisplayMetrics; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/webview/BridgeImpl.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/webview/BridgeImpl.kt index 239e6fab9..706b01fae 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/webview/BridgeImpl.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/webview/BridgeImpl.kt @@ -9,8 +9,8 @@ import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.kitlink.activity.HelpWebViewActivity import com.tencent.iot.explorer.link.kitlink.activity.LoginActivity import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.util.AppData -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.AppData +import com.tencent.iot.explorer.link.T object BridgeImpl { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindEmailModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindEmailModel.kt index 1cfa47a92..d4cc63c3e 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindEmailModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindEmailModel.kt @@ -8,7 +8,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.BindEmailView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T class BindEmailModel(view: BindEmailView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindPhoneModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindPhoneModel.kt index 7a13f8638..e22437960 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindPhoneModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindPhoneModel.kt @@ -9,7 +9,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.BindPhoneView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T class BindPhoneModel(view: BindPhoneView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ConnectModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ConnectModel.kt index 690aad4ef..bb13958ec 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ConnectModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ConnectModel.kt @@ -8,8 +8,8 @@ import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.auth.http.ConnectionListener import com.tencent.iot.explorer.link.core.auth.http.Reconnect import com.tencent.iot.explorer.link.core.auth.response.DeviceBindTokenStateResponse -import com.tencent.iot.explorer.link.core.link.SmartConfigService -import com.tencent.iot.explorer.link.core.link.SoftAPService +import com.tencent.iot.explorer.link.core.link.service.SmartConfigService +import com.tencent.iot.explorer.link.core.link.service.SoftAPService import com.tencent.iot.explorer.link.core.link.entity.* import com.tencent.iot.explorer.link.core.link.exception.TCLinkException import com.tencent.iot.explorer.link.core.link.listener.SmartConfigListener @@ -20,7 +20,7 @@ import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.* import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.ConnectView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T /** * 配网进度、绑定设备 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ControlPanelModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ControlPanelModel.kt index 3ad4477a1..edfd78705 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ControlPanelModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ControlPanelModel.kt @@ -7,11 +7,11 @@ import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.message.payload.Payload import com.tencent.iot.explorer.link.core.auth.message.upload.ArrayString import com.tencent.iot.explorer.link.core.auth.socket.callback.ActivePushCallback +import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.entity.* import com.tencent.iot.explorer.link.kitlink.response.* import com.tencent.iot.explorer.link.kitlink.util.HttpRequest -import com.tencent.iot.explorer.link.kitlink.util.JsonManager import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/FamilyModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/FamilyModel.kt index bb8e1cbb8..07fbea200 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/FamilyModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/FamilyModel.kt @@ -12,7 +12,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.FamilyView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T /** * 家庭详情业务 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ForgotPasswordModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ForgotPasswordModel.kt index 49edcb50b..8d8a10c9f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ForgotPasswordModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ForgotPasswordModel.kt @@ -9,7 +9,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.ForgotPasswordView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T class ForgotPasswordModel(view: ForgotPasswordView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt index d488dfa61..225f1db7f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt @@ -15,7 +15,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.HomeFragmentView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T class HomeFragmentModel(view: HomeFragmentView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LoginModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LoginModel.kt index c0e708301..4f204a73e 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LoginModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LoginModel.kt @@ -5,7 +5,6 @@ import com.tencent.iot.explorer.link.ErrorMessage import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants -import com.tencent.iot.explorer.link.kitlink.entity.ParentRespEntity import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.LoginResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest @@ -13,7 +12,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.LoginView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T class LoginModel(view: LoginView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LogoutModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LogoutModel.kt index 6034b1c1a..b4179fc2f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LogoutModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LogoutModel.kt @@ -6,7 +6,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.LogoutView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T class LogoutModel(view: LogoutView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyEmailModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyEmailModel.kt index 9d919c54a..bcc657910 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyEmailModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyEmailModel.kt @@ -8,7 +8,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.ModifyEmailView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T class ModifyEmailModel(view: ModifyEmailView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPasswordModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPasswordModel.kt index 88fca9217..11141264a 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPasswordModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPasswordModel.kt @@ -9,7 +9,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.ModifyPasswordView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T class ModifyPasswordModel(view: ModifyPasswordView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPhoneModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPhoneModel.kt index 95fdff759..bf024d7f5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPhoneModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPhoneModel.kt @@ -1,6 +1,5 @@ package com.tencent.iot.explorer.link.mvp.model -import com.tencent.iot.explorer.link.ErrorCode import com.tencent.iot.explorer.link.ErrorMessage import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants @@ -10,7 +9,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.ModifyPhoneView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T class ModifyPhoneModel(view: ModifyPhoneView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/RegisterModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/RegisterModel.kt index 1f77024fc..0838ac05e 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/RegisterModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/RegisterModel.kt @@ -2,7 +2,6 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest @@ -10,7 +9,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.RegisterView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T class RegisterModel(view: RegisterView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/SetPasswordModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/SetPasswordModel.kt index 3c040fd2f..640494168 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/SetPasswordModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/SetPasswordModel.kt @@ -9,7 +9,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.SetPasswordView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T /** * 设置密码 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt index 49efc00ab..29de4efce 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt @@ -12,7 +12,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.TimerListView -import com.tencent.iot.explorer.link.util.T +import com.tencent.iot.explorer.link.T /** * 云端定时列表业务 @@ -109,7 +109,8 @@ class TimerListModel(view: TimerListView) : ParentModel(view), My if (deletePosition >= 0) timerList.removeAt(deletePosition) deletePosition = -1 - T.show(T.getContext().getString(R.string.delete_success)) //"删除成功" + T.show( + T.getContext().getString(R.string.delete_success)) //"删除成功" view?.showTimerList(timerList.size) } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/UserInfoModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/UserInfoModel.kt index 87908a034..ce24ee129 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/UserInfoModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/UserInfoModel.kt @@ -1,6 +1,5 @@ package com.tencent.iot.explorer.link.mvp.model -import android.app.DownloadManager import android.content.Context import android.text.TextUtils import com.tencent.iot.explorer.link.App @@ -15,7 +14,6 @@ import com.tencent.iot.explorer.link.mvp.view.UserInfoView import com.tencent.cos.xml.exception.CosXmlClientException import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.response.UserSettingResponse -import com.tencent.iot.explorer.link.util.T /** diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/AppInfoUtils.java b/app/src/main/java/com/tencent/iot/explorer/link/util/AppInfoUtils.java deleted file mode 100644 index b7d2ddb17..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/AppInfoUtils.java +++ /dev/null @@ -1,302 +0,0 @@ -package com.tencent.iot.explorer.link.util; - -import android.Manifest; -import android.app.Activity; -import android.app.ActivityManager; -import android.content.ClipData; -import android.content.ClipboardManager; -import android.content.Context; -import android.content.Intent; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.graphics.Bitmap; -import android.graphics.Point; -import android.graphics.Rect; -import android.net.Uri; -import android.telephony.TelephonyManager; -import android.util.DisplayMetrics; -import android.util.TypedValue; -import android.view.View; -import android.view.WindowManager; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.app.ActivityCompat; - -import java.util.List; - -public class AppInfoUtils { - /** - * 获取包信息 - */ - @Nullable - public static PackageInfo getPackageInfo(Context context) { - try { - PackageManager packageManager = context.getPackageManager(); - return packageManager.getPackageInfo(context.getPackageName(), 0); - } catch (PackageManager.NameNotFoundException e) { - e.printStackTrace(); - } - return null; - } - - /** - * 获取手机设备号 - */ - @Nullable - public static String getUDID(Context context) { - return ((TelephonyManager) (context.getSystemService(Context.TELEPHONY_SERVICE))).getDeviceId(); - } - - /** - * 获取版本号 - */ - public static int getVersionCode(Context context) { - try { - PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); - return info.versionCode; - } catch (PackageManager.NameNotFoundException e) { - e.printStackTrace(); - } - return -1; - } - - /** - * 获取版本名 - */ - @NonNull - public static String getVersionName(Context context) { - try { - PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0); - return info.versionName; - } catch (PackageManager.NameNotFoundException e) { - e.printStackTrace(); - } - return ""; - } - - /** - * 获得屏幕宽度 - */ - public static int getScreenWidth(Context context) { - WindowManager wm = (WindowManager) context - .getSystemService(Context.WINDOW_SERVICE); - DisplayMetrics outMetrics = new DisplayMetrics(); - wm.getDefaultDisplay().getMetrics(outMetrics); - return outMetrics.widthPixels; - } - - /** - * 获得屏幕高度 - */ - public static int getScreenHeight(Context context) { - WindowManager wm = (WindowManager) context - .getSystemService(Context.WINDOW_SERVICE); - DisplayMetrics outMetrics = new DisplayMetrics(); - wm.getDefaultDisplay().getMetrics(outMetrics); - return outMetrics.heightPixels; - } - - /** - * 获得状态栏的高度 - */ - public static int getStatusBarHeight(Context context) { - - int statusHeight = -1; - try { - Class clazz = Class.forName("com.android.internal.R$dimen"); - Object object = clazz.newInstance(); - int height = Integer.parseInt(clazz.getField("status_bar_height") - .get(object).toString()); - statusHeight = context.getResources().getDimensionPixelSize(height); - } catch (Exception e) { - e.printStackTrace(); - } - return statusHeight; - } - - - /*** - * 获取ActionBar的高度 - */ - public static int getActionBarHeight(Context context) { - TypedValue tv = new TypedValue(); - int actionBarHeight = 0; - if (context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))// 如果资源是存在的、有效的 - { - actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics()); - } - return actionBarHeight; - } - - /** - * 获取当前屏幕截图,包含状态栏 - */ - public static Bitmap snapShotWithStatusBar(Activity activity) { - View view = activity.getWindow().getDecorView(); - view.setDrawingCacheEnabled(true); - view.buildDrawingCache(); - Bitmap bmp = view.getDrawingCache(); - int width = getScreenWidth(activity); - int height = getScreenHeight(activity); - Bitmap bp = null; - bp = Bitmap.createBitmap(bmp, 0, 0, width, height); - view.destroyDrawingCache(); - return bp; - - } - - /** - * 获取当前屏幕截图,不包含状态栏 - */ - public static Bitmap snapShotWithoutStatusBar(Activity activity) { - View view = activity.getWindow().getDecorView(); - view.setDrawingCacheEnabled(true); - view.buildDrawingCache(); - Bitmap bmp = view.getDrawingCache(); - Rect frame = new Rect(); - activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); - int statusBarHeight = frame.top; - - int width = getScreenWidth(activity); - int height = getScreenHeight(activity); - Bitmap bp = null; - bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height - - statusBarHeight); - view.destroyDrawingCache(); - return bp; - - } - - /** - * 获取屏幕长宽比 - */ - public static float getScreenRate(Context context) { - Point P = getScreenMetrics(context); - float H = P.y; - float W = P.x; - return (H / W); - } - - /** - * 获取屏幕宽度和高度,单位为px - */ - public static Point getScreenMetrics(Context context) { - DisplayMetrics dm = context.getResources().getDisplayMetrics(); - int w_screen = dm.widthPixels; - int h_screen = dm.heightPixels; - return new Point(w_screen, h_screen); - - } - - /** - * dp转px - */ - public static int dp2px(Context context, float dpVal) { - return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, - dpVal, context.getResources().getDisplayMetrics()); - } - - /** - * sp转px - */ - public static int sp2px(Context context, float spVal) { - return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, - spVal, context.getResources().getDisplayMetrics()); - } - - /** - * px转dp - */ - public static float px2dp(Context context, float pxVal) { - final float scale = context.getResources().getDisplayMetrics().density; - return (pxVal / scale); - } - - /** - * px转sp - */ - public static float px2sp(Context context, float pxVal) { - return (pxVal / context.getResources().getDisplayMetrics().scaledDensity); - } - - /** - * 跳转到应用商店进行评分 - */ - public static void toStorePraise(Context context, String packName) { - try { - Uri uri = Uri.parse("market://details?id=" + packName); - Intent intent = new Intent(Intent.ACTION_VIEW, uri); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(intent); - } catch (Exception e) { - //ToastUtil.showMessage("咦!应用商店呢?"); - } - } - - /** - * 程序是否在前台运行 - * - * @return - */ - public static boolean isAppOnForeground(Context context) { - ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); - String packageName = context.getPackageName(); - - List appProcesses = activityManager - .getRunningAppProcesses(); - if (appProcesses == null) - return false; - - for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) { - // The name of the process that this object is associated with. - if (appProcess.processName.equals(packageName) - && appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { - return true; - } - } - - return false; - } - - public static boolean isAppInstalled(Context context, String packageName) { - PackageInfo packageInfo; - try { - packageInfo = context.getPackageManager().getPackageInfo(packageName, 0); - } catch (Exception e) { - packageInfo = null; - e.printStackTrace(); - } - if (packageInfo == null) { - return false; - } else { - return true; - } - } - - public static String getIMEI(Context context) { - if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) - != PackageManager.PERMISSION_GRANTED) { - return ""; - } - TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); - if (telephonyManager == null) { - return ""; - } - String im = telephonyManager.getDeviceId(); - if (im == null || im.contains("000000000000000")) - im = telephonyManager.getSubscriberId(); - if (im == null) { - return ""; - } - return im; - } - - //复制到粘贴板 - public static void copy(Context context, String data) { - ClipboardManager clipboard = (ClipboardManager) context. - getSystemService(Context.CLIPBOARD_SERVICE); - ClipData clipData = ClipData.newPlainText(null, data); - clipboard.setPrimaryClip(clipData); - } - -} diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/date/DateFormatUtil.java b/app/src/main/java/com/tencent/iot/explorer/link/util/date/DateFormatUtil.java deleted file mode 100644 index bd794d912..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/date/DateFormatUtil.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.tencent.iot.explorer.link.util.date; - -import com.tencent.iot.explorer.link.App; -import com.tencent.iot.explorer.link.R; -import com.tencent.iot.explorer.link.util.T; - -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; - -/** - * 日期格式处理 - */ -public class DateFormatUtil { - - /** - * 把毫秒值转化为yyyy-MM-dd - * - * @param currentTimeMillis - * @return - */ - public static String forString(long currentTimeMillis) { - return forString(currentTimeMillis, null); - } - - /** - * 把毫秒值转化为yyyy-MM-dd - * - * @param currentTimeMillis - * @return - */ - public static String forString(String currentTimeMillis) { - try { - return forString(Long.valueOf(currentTimeMillis) * 1000, null); - } catch (Exception e) { - e.printStackTrace(); - return forString(0, null); - } - - } - - /** - * 把毫秒值转化为format格式的日期 - * - * @param currentTimeMillis - * @return - */ - public static String forString(long currentTimeMillis, String format) { - Date d = new Date(currentTimeMillis); - if ((format == null) || format.equals("")) { - format = "yyyy-MM-dd"; - } - DateFormat df = new SimpleDateFormat(format); - String str = df.format(d); - return str; - } - - /** - * 取得当前时间戳(精确到秒) - */ - public static long getTime() { - long time = System.currentTimeMillis(); - return time; - } - - /** - * 毫秒转为时/分/秒 - */ - public static String toHMS(long currentTimeMillis) { - long ls = currentTimeMillis / 1000; - String s = (ls % 60) + T.getContext().getString(R.string.unit_s); - int im = (int) (ls / 60); - String m = ""; - if (im > 0) { - m = (im % 60) + T.getContext().getString(R.string.unit_m);//"分钟"; - } - String h = ""; - int ih = im / 60; - if (ih > 0) { - h = ih + T.getContext().getString(R.string.unit_h);//"小时"; - } - return h + m + s; - } - - /** - * 把时间转化在long - * - * @param date - * @param format - * @return - */ - public static long stringToLong(String date, String format) { - try { - SimpleDateFormat sdf = new SimpleDateFormat(format); - return sdf.parse(date).getTime(); - } catch (ParseException e) { - e.printStackTrace(); - } - return 0; - } -} diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/keyboard/OnSoftKeyBoardListener.java b/app/src/main/java/com/tencent/iot/explorer/link/util/keyboard/OnSoftKeyBoardListener.java deleted file mode 100644 index 76f30e148..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/keyboard/OnSoftKeyBoardListener.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.tencent.iot.explorer.link.util.keyboard; - -public interface OnSoftKeyBoardListener { - - - /** - * 软键盘显示后调用此方法 - * - * @param newY 软键盘显示时控件inputView的y坐标位置 - * @param keyHeight 软键盘的高度 - */ - void onShowSoftKeyboard(int newY, int keyHeight); - - /** - * 软键盘隐藏后调用此方法 - * - * @param myOldY 软键盘隐藏时控件inputView的y坐标位置 - */ - void onHideSoftKeyboard(int myOldY); - -} diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/keyboard/SoftKeyBoard.java b/app/src/main/java/com/tencent/iot/explorer/link/util/keyboard/SoftKeyBoard.java deleted file mode 100644 index d63dac904..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/keyboard/SoftKeyBoard.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.tencent.iot.explorer.link.util.keyboard; - -import android.app.Activity; -import android.content.res.Resources; -import android.graphics.Rect; -import android.os.Handler; -import android.view.View; -import android.view.Window; - -public class SoftKeyBoard { - - private Activity activity; - - private boolean isKeyShowListener = false; - private OnSoftKeyBoardListener listener; - - public SoftKeyBoard(Activity activity) { - this.activity = activity; - } - - public boolean isKeyShowListener() { - return isKeyShowListener; - } - - public void setKeyShowListener(boolean keyShowListener) { - isKeyShowListener = keyShowListener; - } - - private Handler handler = new Handler(); - private boolean newStatus = true; - private boolean currentStatus = false; - private boolean waitHandler = false; - private Runnable runnable = new Runnable() { - @Override - public void run() { - if (listener != null && waitHandler && newStatus != currentStatus) { - waitHandler = false; - currentStatus = newStatus; - if (currentStatus) { - listener.onShowSoftKeyboard(newY, keyHeight); - } else { - listener.onHideSoftKeyboard(oldY); - } - } else { - waitHandler = false; - } - } - }; - - private int newY = 0, oldY = 0, keyHeight = 0; - - /** - * 监听器 - * - * @param inputView - * @param listener - */ - public void setSoftKeyBoardShowListener(final View inputView, final OnSoftKeyBoardListener listener) { - this.listener = listener; - activity.getWindow().getDecorView().addOnLayoutChangeListener(new View.OnLayoutChangeListener() { - @Override - public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { - if (isKeyShowListener) { - //获取View可见区域的bottom - Rect rect = new Rect(); - activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); - int titleHeight = getTitleBarHeight(); - int statusHeight = getStatusHeight(); - int navigationBarHeight = getNavigationBarHeight(); - keyHeight = bottom - rect.bottom - navigationBarHeight; - newY = rect.bottom - inputView.getHeight(); - oldY = inputView.getHeight(); - if (bottom != 0 && oldBottom != 0 && keyHeight <= 0) { - newStatus = false; -// listener.onHideSoftKeyboard(oldY); - } else { - newStatus = true; -// listener.onShowSoftKeyboard(newY, keyHeight); - } - tab(); - } else { - isKeyShowListener = true; - } - } - }); - } - - private void tab() { - if (!waitHandler) { - waitHandler = true; - handler.postDelayed(runnable, 100); - } - } - - public void destroy() { - handler.removeCallbacks(runnable); - } - - /** - * 获得状态栏的高度 - * - * @return - */ - private int getNavigationBarHeight() { - Resources resources = activity.getResources(); - int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android"); - int height = resources.getDimensionPixelSize(resourceId); - return height; - } - - /** - * 获得导航栏的高度 - * - * @return - */ - public int getStatusHeight() { - Rect rect = new Rect(); - activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); - return rect.top; - } - - /** - * 获得标题栏的高度 - * - * @return - */ - public int getTitleBarHeight() { - int height = activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop(); - return height; - } - -} diff --git a/app/src/main/res/layout/imageselector_browse_image_layout.xml b/app/src/main/res/layout/imageselector_browse_image_layout.xml index e1079f9d0..18f7f0eae 100644 --- a/app/src/main/res/layout/imageselector_browse_image_layout.xml +++ b/app/src/main/res/layout/imageselector_browse_image_layout.xml @@ -5,11 +5,11 @@ android:layout_height="match_parent" android:background="@android:color/black" > - - + ): String { val sb = StringBuilder() params.toSortedMap().forEach { + L.e("${it.key}=${it.value}") sb.append(it.key).append("=").append(it.value).append("&") } return sb.substring(0, sb.lastIndex) } fun signature(sign: String, secret: String): String { + L.e("待签名=$sign") val secretKey = SecretKeySpec(secret.toByteArray(Charset.forName("utf-8")), "HmacSHA1") val mac = Mac.getInstance("HmacSHA1") mac.init(secretKey) diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/service/ConfigService.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/service/ConfigService.kt index 9eb1c07d1..b1ef98b21 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/service/ConfigService.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/service/ConfigService.kt @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.core.link +package com.tencent.iot.explorer.link.core.link.service import org.json.JSONException import org.json.JSONObject diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/service/SmartConfigService.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/service/SmartConfigService.kt index 431cbdbf2..b9b4cea6b 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/service/SmartConfigService.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/service/SmartConfigService.kt @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.core.link +package com.tencent.iot.explorer.link.core.link.service import android.content.Context import android.text.TextUtils diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/service/SoftAPService.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/service/SoftAPService.kt index bfa9a5acf..aed4236a4 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/service/SoftAPService.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/service/SoftAPService.kt @@ -1,10 +1,9 @@ -package com.tencent.iot.explorer.link.core.link +package com.tencent.iot.explorer.link.core.link.service import android.content.Context import android.net.wifi.WifiManager import android.text.TextUtils import android.util.Log -import com.alibaba.fastjson.JSON import com.tencent.iot.explorer.link.core.auth.util.Weak import com.tencent.iot.explorer.link.core.link.entity.DeviceInfo import com.tencent.iot.explorer.link.core.link.entity.LinkTask diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/FileUtils.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/FileUtils.kt similarity index 87% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/FileUtils.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/FileUtils.kt index b71a928a2..f6c955661 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/FileUtils.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/FileUtils.kt @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.kitlink.util +package com.tencent.iot.explorer.link.core.utils import android.content.ContentUris import android.content.Context @@ -10,7 +10,6 @@ import android.os.Build import android.os.Environment import android.provider.DocumentsContract import android.provider.MediaStore -import android.util.Log import androidx.annotation.RequiresApi import androidx.core.content.FileProvider import java.io.ByteArrayOutputStream @@ -32,7 +31,9 @@ object FileUtils { } else { sdDir = context.cacheDir } - val cacheDir = File(sdDir, tempFolderName) + val cacheDir = File(sdDir, + tempFolderName + ) if (!cacheDir.exists()) { cacheDir.mkdirs() @@ -47,7 +48,9 @@ object FileUtils { } else { sdDir = context.cacheDir } - val cacheDir = File(sdDir, folderName) + val cacheDir = File(sdDir, + folderName + ) if (!cacheDir.exists()) { cacheDir.mkdirs() @@ -61,7 +64,10 @@ object FileUtils { // DocumentProvider if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { // ExternalStorageProvider - if (isExternalStorageDocument(uri)) { + if (isExternalStorageDocument( + uri + ) + ) { val docId = DocumentsContract.getDocumentId(uri) val split = docId.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() val type = split[0] @@ -69,12 +75,23 @@ object FileUtils { return Environment.getExternalStorageDirectory().path + "/" + split[1] } - } else if (isDownloadsDocument(uri)) { + } else if (isDownloadsDocument( + uri + ) + ) { val id = DocumentsContract.getDocumentId(uri) val contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), java.lang.Long.valueOf(id)) - return getDataColumn(context, contentUri, null, null) - - } else if (isMediaDocument(uri)) { + return getDataColumn( + context, + contentUri, + null, + null + ) + + } else if (isMediaDocument( + uri + ) + ) { val docId = DocumentsContract.getDocumentId(uri) val split = docId.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() val type = split[0] @@ -91,11 +108,21 @@ object FileUtils { val selection = "_id=?" val selectionArgs = arrayOf(split[1]) - return getDataColumn(context, contentUri, selection, selectionArgs) + return getDataColumn( + context, + contentUri, + selection, + selectionArgs + ) } } else if ("content".equals(uri.scheme, ignoreCase = true)) { - return getDataColumn(context, uri, null, null) + return getDataColumn( + context, + uri, + null, + null + ) } else if ("file".equals(uri.scheme, ignoreCase = true)) { return uri.path @@ -167,7 +194,7 @@ object FileUtils { if (options <= 10) break } - var path = Environment.getExternalStorageDirectory().toString() + this.tempFileName + var path = Environment.getExternalStorageDirectory().toString() + tempFileName val file = File(path) FileOutputStream(file).use { it.write(tmp.toByteArray()) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/keyboard/KeyBoardUtils.java b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/KeyBoardUtils.java similarity index 92% rename from app/src/main/java/com/tencent/iot/explorer/link/util/keyboard/KeyBoardUtils.java rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/KeyBoardUtils.java index a177e2ef2..062f261e0 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/keyboard/KeyBoardUtils.java +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/KeyBoardUtils.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util.keyboard; +package com.tencent.iot.explorer.link.core.utils; import android.content.Context; import android.view.View; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/check/LocationUtil.java b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/LocationUtil.java similarity index 77% rename from app/src/main/java/com/tencent/iot/explorer/link/util/check/LocationUtil.java rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/LocationUtil.java index e131bc9e8..82daba726 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/check/LocationUtil.java +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/LocationUtil.java @@ -1,11 +1,8 @@ -package com.tencent.iot.explorer.link.util.check; +package com.tencent.iot.explorer.link.core.utils; import android.content.Context; import android.location.LocationManager; import android.os.Looper; -import android.util.Log; - -import com.alibaba.fastjson.JSON; import com.tencent.map.geolocation.TencentLocation; import com.tencent.map.geolocation.TencentLocationListener; import com.tencent.map.geolocation.TencentLocationManager; @@ -18,11 +15,7 @@ public static boolean isLocationServiceEnable(Context context) { if (context != null) { LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); if (locationManager != null) { - boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); - // 通过网络定位的方式 -// boolean network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); -// return gps || network; - return gps; + return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); } } return false; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/OSUtils.java b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/OSUtils.java similarity index 95% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/OSUtils.java rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/OSUtils.java index c7553233d..bd564283f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/OSUtils.java +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/OSUtils.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.kitlink.util; +package com.tencent.iot.explorer.link.core.utils; import android.os.Build; import android.text.TextUtils; diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/PhotoUtils.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/PhotoUtils.kt similarity index 88% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/PhotoUtils.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/PhotoUtils.kt index b292e6ede..4dabcf3e5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/PhotoUtils.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/PhotoUtils.kt @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.kitlink.util +package com.tencent.iot.explorer.link.core.utils import android.app.Activity import android.content.Intent @@ -40,7 +40,9 @@ object PhotoUtils { } else { intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(temp)) } - context.startActivityForResult(intent, RESULT_CODE_CAMERA) + context.startActivityForResult(intent, + RESULT_CODE_CAMERA + ) } /** @@ -51,7 +53,9 @@ object PhotoUtils { val albumIntent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI) albumIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); albumIntent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*") - context.startActivityForResult(albumIntent, RESULT_CODE_PHOTO) + context.startActivityForResult(albumIntent, + RESULT_CODE_PHOTO + ) } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/util/SharePreferenceUtil.java b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/SharePreferenceUtil.java similarity index 93% rename from app/src/main/java/com/tencent/iot/explorer/link/util/SharePreferenceUtil.java rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/SharePreferenceUtil.java index 40d0cc6ea..7e5046683 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/util/SharePreferenceUtil.java +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/SharePreferenceUtil.java @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.util; +package com.tencent.iot.explorer.link.core.utils; import android.content.Context; import android.content.SharedPreferences; @@ -79,8 +79,7 @@ public static boolean clearString(Context context, String fileName, String key) */ public static boolean saveString(Context context, String fileName, Map params) { SharedPreferences.Editor editor = context.getSharedPreferences(fileName, Context.MODE_PRIVATE).edit(); - for (String key : - params.keySet()) { + for (String key : params.keySet()) { String value = params.get(key); editor.putString(key, value); } @@ -133,8 +132,7 @@ public static String getString(Context context, String fileName, String key) { public static Map getString(Context context, String fileName, String... keys) { SharedPreferences sp = context.getSharedPreferences(fileName, Context.MODE_PRIVATE); Map params = new HashMap<>(); - for (String key : - keys) { + for (String key : keys) { String value = sp.getString(key, ""); params.put(key, value); } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/TemperatureUtils.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/TemperatureUtils.kt similarity index 94% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/TemperatureUtils.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/TemperatureUtils.kt index ff2b7747c..62341cde4 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/TemperatureUtils.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/TemperatureUtils.kt @@ -1,6 +1,5 @@ -package com.tencent.iot.explorer.link.kitlink.util +package com.tencent.iot.explorer.link.core.utils -import com.tencent.iot.explorer.link.core.log.L import java.text.DecimalFormat object TemperatureUtils { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Utils.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/Utils.kt similarity index 70% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Utils.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/Utils.kt index ae0b2ba1d..ac6829b65 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/Utils.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/Utils.kt @@ -1,22 +1,17 @@ -package com.tencent.iot.explorer.link.kitlink.util +package com.tencent.iot.explorer.link.core.utils +import android.content.ClipData +import android.content.ClipboardManager import android.content.Context +import android.provider.Settings import android.text.TextUtils import com.tencent.iot.explorer.link.core.log.L import java.util.* object Utils { - fun isEmpty(src: String): Boolean { - if (src == null || src.equals("")) { - return true - } - - return false - } - - fun isDigitsOnly(src: String): Boolean { - var flag = src.toIntOrNull() + private fun isDigitsOnly(src: String): Boolean { + val flag = src.toIntOrNull() if (flag != null) { return true } @@ -24,12 +19,11 @@ object Utils { } - // 从字符传中获取第一段连续的数字 + // 从字符串中获取第一段连续的数字 fun getFirstSeriesNumFromStr(src: String): Int { - if (isEmpty(src)) { - return 0; + if (TextUtils.isEmpty(src)) { + return 0 } - var start = -1 var end = -1 for ((i, item) in src.withIndex()) { @@ -41,7 +35,7 @@ object Utils { } } - var retStr = "" + val retStr: String if (start < 0 && end < 0) { return 0 } else if (start >= 0 && end < 0) { @@ -58,18 +52,17 @@ object Utils { } fun getLang(): String { - var local = Locale.getDefault().toString() + val local = Locale.getDefault().toString() if (TextUtils.isEmpty(local)) { L.d("getLang return default lang(zh-CN)") return "zh-CN" // 默认时返回中文类型 } var tmp = local - var eleArray = tmp.split("_") + val eleArray = tmp.split("_") if (eleArray.size >= 3) { - tmp = eleArray.get(0) + "_" + eleArray.get(1) + tmp = eleArray[0] + "_" + eleArray[1] } - var ret = tmp.replace("_", "-") - + val ret = tmp.replace("_", "-") L.d("getLang return $ret") return ret } @@ -78,14 +71,14 @@ object Utils { fun getUrlParamValue(url: String, name: String?): String? { val paramsStr = url.substring(url.indexOf("?") + 1, url.length) val split: MutableMap = hashMapOf() - var params = paramsStr.split("&") + val params = paramsStr.split("&") for (paramKV in params) { - var kv = paramKV.split("=") + val kv = paramKV.split("=") if (kv.size == 2) { - split[kv.get(0)] = kv.get(1) + split[kv[0]] = kv[1] } } - return split.get(name) + return split[name] } interface SecondsCountDownCallback { @@ -98,7 +91,7 @@ object Utils { } // 非单例线程,允许多处使用倒计时功能 - fun startCountBySeconds(max: Int, step: Int, secondsCountDownCallback: SecondsCountDownCallback) { + private fun startCountBySeconds(max: Int, step: Int, secondsCountDownCallback: SecondsCountDownCallback) { if (max <= 0) return // 上线为负数或者 0 的时候不进行倒计时的功能 var countDown = 0; @@ -138,7 +131,23 @@ object Utils { fun clearXmlStringValue(context: Context, xmlName: String, keyName: String) { setXmlStringValue(context, xmlName, keyName, "") } -// @JvmStatic -// fun main(args: Array) { -// } + + /* + * 复制到粘贴板 + */ + fun copy(context: Context, data: String?) { + val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + val clipData = ClipData.newPlainText(null, data) + clipboard.setPrimaryClip(clipData) + } + + fun isChineseSystem(context: Context): Boolean { + return context.resources.configuration.locale.language == "zh" + } + + fun getAndroidID(context: Context): String { + val id = Settings.System.getString(context.contentResolver, Settings.System.ANDROID_ID) + return if (TextUtils.isEmpty(id)) "" + else id + } } \ No newline at end of file diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ConnectDeviceActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ConnectDeviceActivity.kt index e28928783..c0b706211 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ConnectDeviceActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ConnectDeviceActivity.kt @@ -4,10 +4,7 @@ import android.content.Context import android.content.Intent import android.net.wifi.WifiManager import android.provider.Settings -import android.text.TextUtils -import android.util.Log import android.view.View -import com.alibaba.fastjson.JSON import com.espressif.iot.esptouch.IEsptouchResult import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.callback.MyCallback @@ -15,14 +12,12 @@ import com.tencent.iot.explorer.link.core.auth.http.ConnectionListener import com.tencent.iot.explorer.link.core.auth.http.Reconnect import com.tencent.iot.explorer.link.core.auth.http.RetryJob import com.tencent.iot.explorer.link.core.auth.response.BaseResponse -import com.tencent.iot.explorer.link.core.auth.response.BindDeviceTokenResponse import com.tencent.iot.explorer.link.core.auth.response.DeviceBindTokenStateResponse import com.tencent.iot.explorer.link.core.demo.App import com.tencent.iot.explorer.link.core.demo.R import com.tencent.iot.explorer.link.core.demo.log.L -import com.tencent.iot.explorer.link.core.demo.response.UserInfoResponse -import com.tencent.iot.explorer.link.core.link.SmartConfigService -import com.tencent.iot.explorer.link.core.link.SoftAPService +import com.tencent.iot.explorer.link.core.link.service.SmartConfigService +import com.tencent.iot.explorer.link.core.link.service.SoftAPService import com.tencent.iot.explorer.link.core.link.entity.DeviceInfo import com.tencent.iot.explorer.link.core.link.entity.LinkTask import com.tencent.iot.explorer.link.core.link.entity.SmartConfigStep @@ -41,8 +36,8 @@ class ConnectDeviceActivity : BaseActivity() { private val task = LinkTask() - private var smartConfigService:SmartConfigService? = null - private var softAPService:SoftAPService? = null + private var smartConfigService: SmartConfigService? = null + private var softAPService: SoftAPService? = null private var retryJob: RetryJob? = null @Volatile var checkDeviceBindTokenStateStarted = false From e7b70c14f34ee2969c8cb31d5da19f0c05d19887 Mon Sep 17 00:00:00 2001 From: archurtan Date: Wed, 21 Oct 2020 15:05:31 +0800 Subject: [PATCH 026/804] =?UTF-8?q?Link=E5=8E=BB=E9=87=8D(=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E9=83=A8=E5=88=86=E4=BB=A3=E7=A0=81=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I4dca29e97f4744df9e53e4f0d6cfc170107ea11a --- .../explorer/link/mvp/model/TimerListModel.kt | 3 +- .../iot/explorer/link/core/utils/FileUtils.kt | 48 ++++--------------- .../explorer/link/core/utils/PhotoUtils.kt | 9 +--- 3 files changed, 11 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt index 29de4efce..bbcff7ed5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt @@ -109,8 +109,7 @@ class TimerListModel(view: TimerListView) : ParentModel(view), My if (deletePosition >= 0) timerList.removeAt(deletePosition) deletePosition = -1 - T.show( - T.getContext().getString(R.string.delete_success)) //"删除成功" + T.show(T.getContext().getString(R.string.delete_success)) //"删除成功" view?.showTimerList(timerList.size) } } diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/FileUtils.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/FileUtils.kt index f6c955661..a043a0c9d 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/FileUtils.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/FileUtils.kt @@ -31,9 +31,7 @@ object FileUtils { } else { sdDir = context.cacheDir } - val cacheDir = File(sdDir, - tempFolderName - ) + val cacheDir = File(sdDir, tempFolderName) if (!cacheDir.exists()) { cacheDir.mkdirs() @@ -48,9 +46,7 @@ object FileUtils { } else { sdDir = context.cacheDir } - val cacheDir = File(sdDir, - folderName - ) + val cacheDir = File(sdDir, folderName) if (!cacheDir.exists()) { cacheDir.mkdirs() @@ -64,34 +60,18 @@ object FileUtils { // DocumentProvider if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { // ExternalStorageProvider - if (isExternalStorageDocument( - uri - ) - ) { + if (isExternalStorageDocument(uri)) { val docId = DocumentsContract.getDocumentId(uri) val split = docId.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() val type = split[0] if ("primary".equals(type, ignoreCase = true)) { return Environment.getExternalStorageDirectory().path + "/" + split[1] } - - } else if (isDownloadsDocument( - uri - ) - ) { + } else if (isDownloadsDocument(uri)) { val id = DocumentsContract.getDocumentId(uri) val contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), java.lang.Long.valueOf(id)) - return getDataColumn( - context, - contentUri, - null, - null - ) - - } else if (isMediaDocument( - uri - ) - ) { + return getDataColumn(context, contentUri, null, null) + } else if (isMediaDocument(uri)) { val docId = DocumentsContract.getDocumentId(uri) val split = docId.split(":".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() val type = split[0] @@ -108,22 +88,10 @@ object FileUtils { val selection = "_id=?" val selectionArgs = arrayOf(split[1]) - return getDataColumn( - context, - contentUri, - selection, - selectionArgs - ) + return getDataColumn(context, contentUri, selection, selectionArgs) } - } else if ("content".equals(uri.scheme, ignoreCase = true)) { - return getDataColumn( - context, - uri, - null, - null - ) - + return getDataColumn(context, uri, null, null) } else if ("file".equals(uri.scheme, ignoreCase = true)) { return uri.path } diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/PhotoUtils.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/PhotoUtils.kt index 4dabcf3e5..b4332660a 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/PhotoUtils.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/PhotoUtils.kt @@ -36,13 +36,10 @@ object PhotoUtils { // 通过FileProvider创建一个content类型的Uri val uri = FileProvider.getUriForFile(context, context.packageName + ".fileprovider", temp) intent.putExtra(MediaStore.EXTRA_OUTPUT, uri) - } else { intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(temp)) } - context.startActivityForResult(intent, - RESULT_CODE_CAMERA - ) + context.startActivityForResult(intent, RESULT_CODE_CAMERA) } /** @@ -53,9 +50,7 @@ object PhotoUtils { val albumIntent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI) albumIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); albumIntent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*") - context.startActivityForResult(albumIntent, - RESULT_CODE_PHOTO - ) + context.startActivityForResult(albumIntent, RESULT_CODE_PHOTO) } } From 6840de89e2a77741c7bf16eec6c1eb1ec72c2c7c Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Wed, 21 Oct 2020 15:52:27 +0800 Subject: [PATCH 027/804] =?UTF-8?q?[=E4=BA=A7=E5=93=81=E4=BD=93=E9=AA=8C]?= =?UTF-8?q?=E6=89=AB=E7=A0=81=E6=89=B9=E9=87=8F=E6=8A=95=E4=BA=A7=E8=BF=9B?= =?UTF-8?q?=E5=85=A5=E9=85=8D=E7=BD=91=E6=B5=81=E7=A8=8B=EF=BC=88=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E5=BE=AA=E7=8E=AF=E6=8F=90=E7=A4=BA=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=80=BB=E8=BE=91=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://docs.qq.com/doc/DYWlScEd4WkpiZW1G Change-Id: I533dd59f064facd28d70afff53667d23075fe229 --- .../explorer/link/kitlink/activity/DeviceCategoryActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt index 3a9c14c36..602071b43 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt @@ -180,7 +180,7 @@ class DeviceCategoryActivity : PActivity(), MyCallback, CRecyclerView.RecyclerI } override fun permissionDenied(permission: String) { - requestPermission(arrayOf(permission)) +// requestPermission(arrayOf(permission)) } override fun onClick(v: View?) { From 1ee77b2d77814e1047a86433005f5f106851d6f0 Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Wed, 21 Oct 2020 15:36:03 +0800 Subject: [PATCH 028/804] =?UTF-8?q?[=E8=85=BE=E8=AE=AF=E8=BF=9E=E8=BF=9EAP?= =?UTF-8?q?P]=E6=96=B0=E5=A2=9E=E8=AF=84=E6=B5=8B=E6=A8=A1=E5=9D=97(?= =?UTF-8?q?=E5=88=86=E4=BA=AB=E5=AF=B9=E8=AF=9D=E6=A1=86=EF=BC=8C=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E8=B7=B3=E8=BD=AC=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E4=BA=8B=E4=BB=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E5=88=86=E4=BA=AB=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=88=86?= =?UTF-8?q?=E4=BA=AB=E5=AF=B9=E8=AF=9D=E6=A1=86=E6=95=88=E6=9E=9C=E8=B0=83?= =?UTF-8?q?=E6=95=B4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit http://tapd.oa.com/NEW_IOT/prong/stories/view/1020393192859993441 Change-Id: I70a784cfcfc4ac1f0338eb38e45d4bebbebcc84a --- app/src/main/AndroidManifest.xml | 1 + .../customview/dialog/ShareOptionDialog.java | 73 +++++++ .../activity/CommentDetailsActivity.kt | 191 ++++++++++++++++++ .../link/kitlink/activity/MainActivity.kt | 60 ++++-- .../link/kitlink/consts/CommonField.kt | 4 + .../link/kitlink/fragment/CommentFragment.kt | 154 ++++++++++++++ .../explorer/link/kitlink/util/WeChatLogin.kt | 72 +++++++ .../drawable/background_top_radius_cell.xml | 12 ++ .../res/layout/activity_comment_detail.xml | 28 +++ app/src/main/res/layout/fragment_comment.xml | 25 +++ .../res/layout/popup_share_option_layout.xml | 147 ++++++++++++++ .../main/res/mipmap-hdpi/main_tab_1_hover.png | Bin 571 -> 0 bytes .../res/mipmap-hdpi/main_tab_1_normal.png | Bin 565 -> 0 bytes .../main/res/mipmap-hdpi/main_tab_3_hover.png | Bin 941 -> 0 bytes .../res/mipmap-hdpi/main_tab_3_normal.png | Bin 970 -> 0 bytes .../main/res/mipmap-mdpi/main_tab_1_hover.png | Bin 349 -> 0 bytes .../res/mipmap-mdpi/main_tab_1_normal.png | Bin 321 -> 0 bytes .../main/res/mipmap-mdpi/main_tab_3_hover.png | Bin 511 -> 0 bytes .../res/mipmap-mdpi/main_tab_3_normal.png | Bin 468 -> 0 bytes .../res/mipmap-xhdpi/main_tab_1_hover.png | Bin 770 -> 0 bytes .../res/mipmap-xhdpi/main_tab_1_normal.png | Bin 759 -> 0 bytes .../res/mipmap-xhdpi/main_tab_3_hover.png | Bin 1526 -> 0 bytes .../res/mipmap-xhdpi/main_tab_3_normal.png | Bin 1493 -> 0 bytes .../main/res/mipmap-xxhdpi/commet_pressed.png | Bin 0 -> 1423 bytes .../res/mipmap-xxhdpi/commet_unpressed.png | Bin 0 -> 1423 bytes app/src/main/res/mipmap-xxhdpi/copy_link.png | Bin 0 -> 4636 bytes .../res/mipmap-xxhdpi/main_tab_1_hover.png | Bin 1552 -> 1406 bytes .../res/mipmap-xxhdpi/main_tab_1_normal.png | Bin 1512 -> 823 bytes .../res/mipmap-xxhdpi/main_tab_3_hover.png | Bin 3007 -> 1731 bytes .../res/mipmap-xxhdpi/main_tab_3_normal.png | Bin 2939 -> 1240 bytes .../main/res/mipmap-xxhdpi/wechat_logo.png | Bin 0 -> 8770 bytes .../res/mipmap-xxxhdpi/main_tab_1_hover.png | Bin 981 -> 0 bytes .../res/mipmap-xxxhdpi/main_tab_1_normal.png | Bin 958 -> 0 bytes .../res/mipmap-xxxhdpi/main_tab_3_hover.png | Bin 2941 -> 0 bytes .../res/mipmap-xxxhdpi/main_tab_3_normal.png | Bin 2857 -> 0 bytes app/src/main/res/values/strings.xml | 3 + .../iot/explorer/link/core/utils/Utils.kt | 60 ++++++ 37 files changed, 811 insertions(+), 19 deletions(-) create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/customview/dialog/ShareOptionDialog.java create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt create mode 100644 app/src/main/res/drawable/background_top_radius_cell.xml create mode 100644 app/src/main/res/layout/activity_comment_detail.xml create mode 100644 app/src/main/res/layout/fragment_comment.xml create mode 100644 app/src/main/res/layout/popup_share_option_layout.xml delete mode 100644 app/src/main/res/mipmap-hdpi/main_tab_1_hover.png delete mode 100644 app/src/main/res/mipmap-hdpi/main_tab_1_normal.png delete mode 100644 app/src/main/res/mipmap-hdpi/main_tab_3_hover.png delete mode 100644 app/src/main/res/mipmap-hdpi/main_tab_3_normal.png delete mode 100644 app/src/main/res/mipmap-mdpi/main_tab_1_hover.png delete mode 100644 app/src/main/res/mipmap-mdpi/main_tab_1_normal.png delete mode 100644 app/src/main/res/mipmap-mdpi/main_tab_3_hover.png delete mode 100644 app/src/main/res/mipmap-mdpi/main_tab_3_normal.png delete mode 100644 app/src/main/res/mipmap-xhdpi/main_tab_1_hover.png delete mode 100644 app/src/main/res/mipmap-xhdpi/main_tab_1_normal.png delete mode 100644 app/src/main/res/mipmap-xhdpi/main_tab_3_hover.png delete mode 100644 app/src/main/res/mipmap-xhdpi/main_tab_3_normal.png create mode 100644 app/src/main/res/mipmap-xxhdpi/commet_pressed.png create mode 100644 app/src/main/res/mipmap-xxhdpi/commet_unpressed.png create mode 100644 app/src/main/res/mipmap-xxhdpi/copy_link.png create mode 100644 app/src/main/res/mipmap-xxhdpi/wechat_logo.png delete mode 100644 app/src/main/res/mipmap-xxxhdpi/main_tab_1_hover.png delete mode 100644 app/src/main/res/mipmap-xxxhdpi/main_tab_1_normal.png delete mode 100644 app/src/main/res/mipmap-xxxhdpi/main_tab_3_hover.png delete mode 100644 app/src/main/res/mipmap-xxxhdpi/main_tab_3_normal.png diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 42f85c25e..e67d49e89 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -78,6 +78,7 @@ + { + if (comment_detail_web.canGoBack()) { + comment_detail_web.goBack() //返回上一页面 + } else { // 关闭当前窗口 + this@CommentDetailsActivity.finish() + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + + comment_detail_web.clearHistory() + comment_detail_web.clearCache(true) + comment_detail_web.loadUrl("about:blank") + } + + val webChromeClient = object: WebChromeClient() { + + override fun onShowFileChooser (webView: WebView, filePathCallback: ValueCallback>, fileChooserParams: FileChooserParams?): Boolean { + return true + } + + override fun onReceivedTitle(view: WebView?, title: String?) { + super.onReceivedTitle(view, title) + tv_title.setText(title) + } + + override fun onReceivedTouchIconUrl(view: WebView?, url: String?, precomposed: Boolean) { + } + + override fun onJsPrompt(view: WebView, url: String, message: String, defaultValue: String, result: JsPromptResult): Boolean { + result.confirm(JSBridgeKt.callNative(view, message)) + return true + } + } + + var webViewClient = object: WebViewClient() { + override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { + if (url.contains("onArticleShare?")) { + dialog?.show() + } + return true + } + } +} + diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt index cda715167..9cb7eeaa8 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt @@ -30,6 +30,7 @@ import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.core.utils.FileUtils import com.tencent.iot.explorer.link.customview.home.BottomItemEntity import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.fragment.CommentFragment import com.tencent.iot.explorer.link.kitlink.util.* import com.tencent.iot.explorer.link.core.utils.SharePreferenceUtil import com.tencent.tpns.baseapi.XGApiConfig @@ -41,6 +42,7 @@ import kotlin.system.exitProcess * main页面 */ class MainActivity : PActivity(), MyCallback { + private var previousPosition = 0 private val fragments = arrayListOf() @@ -117,20 +119,28 @@ class MainActivity : PActivity(), MyCallback { home_bottom_view.addMenu( BottomItemEntity( getString(R.string.main_tab_1), - R.color.main_tab_normal, R.color.main_tab_hover, + resources.getColor(R.color.main_tab_normal), resources.getColor(R.color.main_tab_hover), R.mipmap.main_tab_1_normal, R.mipmap.main_tab_1_hover ) ) - .addMenu( - BottomItemEntity( - getString(R.string.main_tab_3), - R.color.main_tab_normal, R.color.main_tab_hover, - R.mipmap.main_tab_3_normal, R.mipmap.main_tab_3_hover + .addMenu( + BottomItemEntity( + getString(R.string.main_tab_4), + resources.getColor(R.color.main_tab_normal), resources.getColor(R.color.main_tab_hover), + R.mipmap.commet_unpressed, R.mipmap.commet_pressed + ) ) - ).showMenu() + .addMenu( + BottomItemEntity( + getString(R.string.main_tab_3), + resources.getColor(R.color.main_tab_normal), resources.getColor(R.color.main_tab_hover), + R.mipmap.main_tab_3_normal, R.mipmap.main_tab_3_hover + ) + ).showMenu() fragments.clear() fragments.add(HomeFragment()) + fragments.add(CommentFragment()) fragments.add(MeFragment()) this.supportFragmentManager.beginTransaction() .add(R.id.main_container, fragments[0]) @@ -141,7 +151,7 @@ class MainActivity : PActivity(), MyCallback { override fun setListener() { home_bottom_view.setOnItemClickListener { _, position, previewPosition -> - showFragment(position, previewPosition) + showFragment(position) } (fragments[0] as? HomeFragment)?.run { popupListener = object : HomeFragment.PopupListener { @@ -201,23 +211,35 @@ class MainActivity : PActivity(), MyCallback { override fun success(response: BaseResponse, reqCode: Int) { } - private fun showFragment(position: Int, previewPosition: Int) { - StatusBarUtil.setStatusBarDarkTheme(this, true) - /*if (position == 2) { - //设置白色状态栏 - StatusBarUtil.setStatusBarDarkTheme(this, false) - } else { - //设置黑色状态栏 - StatusBarUtil.setStatusBarDarkTheme(this, true) - }*/ +// private fun showFragment(position: Int, previewPosition: Int) { +// StatusBarUtil.setStatusBarDarkTheme(this, true) +// /*if (position == 2) { +// //设置白色状态栏 +// StatusBarUtil.setStatusBarDarkTheme(this, false) +// } else { +// //设置黑色状态栏 +// StatusBarUtil.setStatusBarDarkTheme(this, true) +// }*/ +// val transaction = this.supportFragmentManager.beginTransaction() +// if (fragments[position].isAdded) { +// transaction.show(fragments[position]).hide(fragments[previewPosition]).commit() +// } else { +// transaction.add(R.id.main_container, fragments[position]) +// .show(fragments[position]).hide(fragments[previewPosition]) +// .commit() +// } +// } + + private fun showFragment(position: Int) { val transaction = this.supportFragmentManager.beginTransaction() if (fragments[position].isAdded) { - transaction.show(fragments[position]).hide(fragments[previewPosition]).commit() + transaction.show(fragments[position]).hide(fragments[previousPosition]).commit() } else { transaction.add(R.id.main_container, fragments[position]) - .show(fragments[position]).hide(fragments[previewPosition]) + .show(fragments[position]).hide(fragments[previousPosition]) .commit() } + previousPosition = position } private fun showFamilyPopup(familyList: List) { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt index 32e53e72b..d6eb181f6 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt @@ -42,6 +42,10 @@ object CommonField { const val LOAD_VIEW_TXT_TYPE = "loadViewTxtType" const val HARD_WARE_GUIDE = "hardwareGuide" const val CONNECT_AP_GUIDE = "connectApGuide" + const val EXTRA_INFO = "extraInfo" + const val KEY_URL = "url" + const val H5_BASE_URL = "https://iot.cloud.tencent.com/explorer-h5/evaluation/" + const val WECHAT_MINI_PROGRAM_PATH = "pages/Index/TabPages/Evaluation/EvaluationDetail/EvaluationDetail?item=" /*******上传文件********/ diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt new file mode 100644 index 000000000..e0d0fbd46 --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt @@ -0,0 +1,154 @@ +package com.tencent.iot.explorer.link.kitlink.fragment + +import android.content.Intent +import android.graphics.Bitmap +import android.net.Uri +import android.util.Log +import android.view.View +import android.view.ViewGroup +import android.webkit.* +import android.widget.LinearLayout +import android.widget.ProgressBar +import com.alibaba.fastjson.JSON +import com.alibaba.fastjson.JSONObject +import com.example.qrcode.utils.CommonUtils +import com.tencent.iot.explorer.link.App +import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.Utils +import com.tencent.iot.explorer.link.kitlink.activity.CommentDetailsActivity +import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.response.BaseResponse +import com.tencent.iot.explorer.link.kitlink.util.HttpRequest +import com.tencent.iot.explorer.link.kitlink.util.MyCallback +import com.tencent.iot.explorer.link.kitlink.webview.BridgeImpl +import com.tencent.iot.explorer.link.kitlink.webview.JSBridgeKt +import com.tencent.iot.explorer.link.mvp.IPresenter +import kotlinx.android.synthetic.main.fragment_comment.* + +/** + * 评测界面 + */ +class CommentFragment : BaseFragment(), View.OnClickListener, MyCallback { + private var progressbar: ProgressBar? = null + + override fun getContentView(): Int { + return R.layout.fragment_comment + } + + override fun getPresenter(): IPresenter? { + return null + } + + // 每次窗口返回刷新一次 + override fun onResume() { + super.onResume() + initView() + getAppGetTokenTicket() + } + + // 每次刷新显示,重新获取一次 + override fun onHiddenChanged(hidden: Boolean) { + super.onHiddenChanged(hidden) + if (!hidden) { + getAppGetTokenTicket() + } + } + + override fun startHere(view: View) { + setListener() + } + + private fun setListener() { + + } + + private fun initView() { + val drawable = resources.getDrawable(R.drawable.progress_bar_states, null) + progressbar = ProgressBar(context, null, android.R.attr.progressBarStyleHorizontal) + var params = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 5) + progressbar!!.layoutParams = LinearLayout.LayoutParams(params) + progressbar!!.progressDrawable = drawable + web_comment!!.addView(progressbar) + + web_comment.settings.javaScriptEnabled = true // 设置js支持 + web_comment.settings.domStorageEnabled = true // 开启 DOM storage API 功能 + web_comment.settings.textZoom = 100 // 设置网页字体不跟随系统字体发生改变 + web_comment.settings.useWideViewPort = true // 缩放至屏幕的大小 + web_comment.settings.loadWithOverviewMode = true + // 是否支持缩放 + web_comment.settings.setSupportZoom(true) + web_comment.settings.builtInZoomControls = true + web_comment.settings.displayZoomControls = false + web_comment.settings.cacheMode = WebSettings.LOAD_NO_CACHE // 不缓存 + } + + override fun onClick(v: View?) { + when (v) { + + } + } + + /** + * 获取一次性的 TokenTicket + */ + private fun getAppGetTokenTicket() { + HttpRequest.instance.getOneTimeTokenTicket(this) + } + + override fun fail(msg: String?, reqCode: Int) { + } + + override fun success(response: BaseResponse, reqCode: Int) { + JSBridgeKt.register("help_center_bridge", BridgeImpl::class.java) + + web_comment.webViewClient = webViewClient + web_comment.webChromeClient = webChromeClient + + if (response.code == 0) { + var js = JSON.parse(response.data.toString()) as JSONObject + var url = CommonField.H5_BASE_URL + "?ticket=" + js[CommonField.TOKEN_TICKET] + if (App.DEBUG_VERSION) { + url += ("&uin=" + Utils.getAndroidID(context!!)) + } + if (!App.isOEMApp()) { + url += "&appID=" + T.getContext().applicationInfo.packageName + } + web_comment.loadUrl(url) + } + } + + val webChromeClient = object: WebChromeClient() { + + override fun onShowFileChooser (webView: WebView, filePathCallback: ValueCallback>, fileChooserParams: FileChooserParams?): Boolean { + return true + } + + override fun onReceivedTitle(view: WebView?, title: String?) { + super.onReceivedTitle(view, title) + } + + override fun onReceivedTouchIconUrl(view: WebView?, url: String?, precomposed: Boolean) { + } + + override fun onJsPrompt(view: WebView, url: String, message: String, defaultValue: String, result: JsPromptResult): Boolean { + result.confirm(JSBridgeKt.callNative(view, message)) + return true + } + } + + var webViewClient = object: WebViewClient() { + override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { + // 跳转到评测详情界面 + if (url.contains("iot-explorer-help-center://") && url.contains("goDetail")) { + var intent = Intent(context, CommentDetailsActivity::class.java) + intent.putExtra(CommonField.EXTRA_INFO, url) + startActivity(intent) + } + return true + } + + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeChatLogin.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeChatLogin.kt index ced4b4690..9b5fefd87 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeChatLogin.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeChatLogin.kt @@ -1,11 +1,19 @@ package com.tencent.iot.explorer.link.kitlink.util import android.app.Activity +import android.content.Context +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.text.TextUtils +import android.util.Log +import com.squareup.picasso.Picasso import com.tencent.iot.explorer.link.BuildConfig import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.Utils import com.tencent.iot.explorer.link.kitlink.wxapi.WXEntryActivity import com.tencent.mm.opensdk.modelmsg.SendAuth +import com.tencent.mm.opensdk.modelmsg.* import com.tencent.mm.opensdk.openapi.WXAPIFactory @@ -73,5 +81,69 @@ class WeChatLogin { fun onFail(msg:String) } + /** + * 分享小程序 + * context 分享使用的上下文 + * url 小程序依赖的链接 + * path 小程序跳转的页面 + * picPath 分享显示的图片 + */ + fun shareMiniProgram(context: Context, url: String, path: String, picPath: String) { + if (TextUtils.isEmpty(url)) return + + var wxApi = WXAPIFactory.createWXAPI(context, APP_ID) + if (wxApi.isWXAppInstalled) { + Thread(Runnable { // 需要在线程中同步的解析图片 + val miniProgramObj = WXMiniProgramObject() + miniProgramObj.webpageUrl = url + val msg = WXMediaMessage(miniProgramObj) + msg.title = context.getString(R.string.app_name) + miniProgramObj.userName = "gh_2aa6447f2b7c" + miniProgramObj.path = path + val bitmap: Bitmap = Picasso.get().load(picPath).get() + val sendBitmap = Bitmap.createScaledBitmap(bitmap!!, 200, 200, true) + bitmap?.recycle() + msg.thumbData = Utils.bmpToByteArray(sendBitmap) + + val req = SendMessageToWX.Req() + req.message = msg + req.scene = SendMessageToWX.Req.WXSceneSession + + wxApi.sendReq(req) + }).start() + + } else { + T.show(context.resources.getString(R.string.not_wechat_client)) + } + } + + /** + * 分享网页 + * context 分享使用的上下文 + * shareContent 被分享的网页链接 + */ + fun sharehtml(context: Context, shareContent: String?) { + var wxApi = WXAPIFactory.createWXAPI(context, APP_ID) + if (wxApi.isWXAppInstalled) { + wxApi.registerApp(APP_ID) + val webpage = WXWebpageObject() + webpage.webpageUrl = shareContent + val msg = WXMediaMessage(webpage) + msg.title = context.getString(R.string.app_name) + msg.description = " " + val thumb = BitmapFactory.decodeResource(context.resources, R.mipmap.ic_launcher) + msg.setThumbImage(thumb) + + val req = SendMessageToWX.Req() + req.transaction = System.currentTimeMillis().toString() + req.message = msg + req.scene = SendMessageToWX.Req.WXSceneSession + wxApi.sendReq(req) + + } else { + T.show(context.resources.getString(R.string.not_wechat_client)) + } + } + } \ No newline at end of file diff --git a/app/src/main/res/drawable/background_top_radius_cell.xml b/app/src/main/res/drawable/background_top_radius_cell.xml new file mode 100644 index 000000000..29449a0dd --- /dev/null +++ b/app/src/main/res/drawable/background_top_radius_cell.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/app/src/main/res/layout/activity_comment_detail.xml b/app/src/main/res/layout/activity_comment_detail.xml new file mode 100644 index 000000000..7be9c33e0 --- /dev/null +++ b/app/src/main/res/layout/activity_comment_detail.xml @@ -0,0 +1,28 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_comment.xml b/app/src/main/res/layout/fragment_comment.xml new file mode 100644 index 000000000..c103015cc --- /dev/null +++ b/app/src/main/res/layout/fragment_comment.xml @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/popup_share_option_layout.xml b/app/src/main/res/layout/popup_share_option_layout.xml new file mode 100644 index 000000000..cd2eba97a --- /dev/null +++ b/app/src/main/res/layout/popup_share_option_layout.xml @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/mipmap-hdpi/main_tab_1_hover.png b/app/src/main/res/mipmap-hdpi/main_tab_1_hover.png deleted file mode 100644 index 7f38c8d90b6cf055475dbb5b53e19a363b68086d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 571 zcmV-B0>u4^P)RBfT}UaGbL;(NbeJeLvac7>z9fjOHTxaY_C70BHP zeRunBwsc&Aat)!`C!jSpFtU@@7&L$O-&_8M%Eim)^&mShUfPrV@vMaqW zY5O4z4CIhtJf_Cn&hiYfr4F<*L0(A}megeLKo1iuE(1rj2002ov JPDHLkV1jns4X6MB diff --git a/app/src/main/res/mipmap-hdpi/main_tab_1_normal.png b/app/src/main/res/mipmap-hdpi/main_tab_1_normal.png deleted file mode 100644 index 893b67079cc8b2b2e2a6b880af551de111a1825e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 565 zcmV-50?Pe~P)r=Og+1DX;7#zV;$O6Xf=6#X2t9f5RK-6a?#}zZ3_}S77wn;j zwp1^&Jy@0WlE6BByWMPNvqVY_LS6 z@0@!zYabC2iO9YWRKWW)MFO}`U^jXB$1iFJ8e`U&`BuRk3@qY6Ie%-6S*rzUt=(1t z4*=fzV?|^=Klfz3wRU@|NM=4)p1+^Yx%pvpoOAO4uKjt;d>$N_rs*PpZwm5o+#Vuw zs9?XQX}TB$DIy!nR^L14w#xQ$&TRp>R~Ecc6?v>6e*svYv}do^TgrR**yGa8^5^Qi z((FT)Wpk4vi)2|g2jHV}6Mg`AIaU*9-W>Ac-m41q17J_P7Bg>-oG2nk%EW$^tsVor zJmm9x^w;1dNfwy-N?F;-w19q?`9!(?RgxqN#fnyy)jY;=yi*slNF2vIBJ!y0>MAKO zP;39HrHh%lfj(QPwf4=Z@qPe&X`l`Czko9H?x>e^x7&Rm z3JT!!KRyV%L!o7>BD7SIh+IAcXi7vhF}5b?B@xjduh4v5t-q-S00000NkvXXu0mjf Da?1k4 diff --git a/app/src/main/res/mipmap-hdpi/main_tab_3_hover.png b/app/src/main/res/mipmap-hdpi/main_tab_3_hover.png deleted file mode 100644 index a2fa183ca8b53273d50af3aa7065394d7c6e3503..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 941 zcmV;e15*5nP);YVk3%11Vs=Oku}b_Ga}i-M^yeE?C#yo4;QAG^Pg|-y>rf;0d$CRr$Ow3 zqzK|k5PMKO3X&X%&uht1w=%C6g7`Uzy>vtRvB#O$T1c|@r3Xv^Z*LK#+^h(o>@g_k z9Ms@Ckh1}bZ&igg_*8Qt4Le&Q@e>>_%&!`g8D0n_&k}KFZfkQOt)Zo{WK%HRovGuM z9818?^ni6s@vB&(O*MNM&e531BfXH8Hz&5o?$zx@{37C|Rf_LK%=dWpmzkcoOJXnK z8GWF{pF^|xrC~qCze2Ei4TOP+|CDFIInlVEbD<1sPiP=48Hbi?KW}c>&&+L&R1a+` z^>2Sh4>atja{EJ_>aPaEKqTKoGjP3OKP6Yo56+_+2m=|M(^^s@Z@oAg2m={%JX%L( zZ3A9wqpj3Eq7M{^&Vs>%4fwokUcvVh+>XIsuGvHJl~@bCsULKQH#c#p=*}%q9dEfS z67iNdM?WY4Sh7Brj8n%d&WBcG3d&vG9LSQ0pVYO-q7V3>iG%>Gp#>lw(*XJd*3bg| zfToiL@yF!pUV2h{7*3_HgO4zrY=d-O8c(}VlG4OR*$t_F9z|?3W496T1r%5 z4TwjQdF=^gosQ_ukq(f2 zN$~V~a{;nn#-{vX%K_t3{5S^t3LrcDc0ZkM#%V=o1HoQqI=5~fQ~g)XQ} z?fzV>aLVd!hw1JFak7rJetd=L>`2$HEqfJ6&IUhWCz}X0>F1EM$h=>rXJ7St?NH8c zn0yIjKL@cJtUwX|f%-QT{|f;Ag7{DHLu?GhpP+aU#MeRYUi5nHwWR(JM>8rqX~FBi P00000NkvXXu0mjf=mWfl diff --git a/app/src/main/res/mipmap-hdpi/main_tab_3_normal.png b/app/src/main/res/mipmap-hdpi/main_tab_3_normal.png deleted file mode 100644 index 4b4959be6081f892f9f85f3ef88be7ddc7f0018b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 970 zcmV;*12z1KP)*;O0o@L8-N3_0pJRNk7Ly6I{-WYV7>$Ozl-GT+}zxKBZbsjztSsUxY9H| zHWEmZ=es~`YOOy?)AVTo&jR?W8>~|5{b56%EGT@rTCLvSEvM5W)iBQ(b95+>wOZ|w zpx7O)_3>WwNxl=p?skKHhf+!fy>_^)hSvJ+pas5<3hA8N7wpERezgGn=xfE~6p|Nx zapzp$HZwmz|8TIYA4UUJO8w^f;rgI@0B(A)YcUu_M1b6C?X;N{_=#+MbP`))7yx_m` z9n?9uzu;{7Sg-j29uM;?mCC;8pdun^nm!X0Ym@+8^S!fPuRl2yNUz}KetImp!EcAj zD6LlO0D#R1pw|}`77j!Q?40bc6`aziOKOB)2iHiR9F%WNDfN1Rc>cy-Eh`A%=Uwz( zD@|Ch*Pj5e)lF0>^+jpXPH3&a?4}Fg#>&b{Z%zWB(gkh}z_fF2tY64HoO5FUrU6{- z0{r!EfDZxqyCCTgW6aR3WO;e{DFA;K)ZJQKT%6c(u`%W_fI9^jzd0V8p5r9m%#H)_BzNX`Y0pd@&^f7oltJh1Zz z+zs)2(^~t&UIXSq@zSOs>l6ae05C&xYH4Zd(O6IbCP_{KnCaB$HU+QWOKLWo6MhTyx|C9DBxgx} zO7axRDQoQ!YwZz|QzTDmtn9T?t$H#+(J=xEA7Uyp+HSG-d0;6y?D1GC&xffZ@s6zJQ{9 z9T;zPr?2nI(I`#nKo=_Z6$*2k>_Slv!rYcA9x1HPZx_*&0jtmR6#ELLDWfkmS+P3^ zzbOpGSIq6#_@Kjem!vS1DaD8DuG=YXF5Pl2I(%*^)&dUNX{f@Nqy=05>P{OboV6=$x%{M8`c6)1p2&XarXs)B(=3*J<0jrJk}^_h$eka z@me9tYibHfEy?RkiW3Sie>IWRxcg<7;)KGX;6=+6$BXbxVFvU;F@TTML#Gmj8PJsC zlbM+T==Lhi0IwCd7L6YObhTjj0?@g8xIw=y8oN4d1zp^IIe-VSJ`g}RP19R$en0TN z!1WJzD*)dACvfYI0el_62cWy3Q(IRGBsnH}oMT|fT!t**MuJJ|bD$M~K~nz%A&8_j TGBpWW00000NkvXXu0mjfJhy-H diff --git a/app/src/main/res/mipmap-mdpi/main_tab_3_hover.png b/app/src/main/res/mipmap-mdpi/main_tab_3_hover.png deleted file mode 100644 index 8f5050091d9708780f8b404bdcf93ee58b70f777..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 511 zcmV*Wi#2r{2Bpo;%*gt`wXXp;%4w8qDwCIr?O7=Yt zGk8hBa?QAP)=JU$7oxGxc>mqm(;ZBfWC2LKOHdW!7e!_G|imRsQP@;Yz=32_Ek5Wt$SJy zwVNWrsHJH6kapf`mti5VAo=?JYUAeb{C!~|uc%#?4pj9ylx(7xK*{NDlGT-vk|W8&>4SM9R+6*nKVfJRA} zkLazeU4~EwC8tRjb*gD@0$Y*}7wU)l>0sWH$OH?PKY{-c#G1muylVO z2eAc8yNa5Tq&tf{T$JLr-a(mnly(&kGUoofGVf6XMlSof8P#C{k}lf99(BdX^JaHg z+%HG%vhylvT99-g{si&o&BXpYNe69OXj|MGtsl^a|B{Fy5VZgR002ovPDHLkV1g35 B>EZwY diff --git a/app/src/main/res/mipmap-mdpi/main_tab_3_normal.png b/app/src/main/res/mipmap-mdpi/main_tab_3_normal.png deleted file mode 100644 index 70472165ab59c8f9b6d53228e7fbc69bf1615aa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 468 zcmV;_0W1EAP))II>6acVycMsk${8-tQu6$7I>RUHb>#PIq#z&=-9>g23knnGxD&j4uRx&IH0 zAqCJC0K1U)ehx4e%}>FZVRmbftV?<;>Djs%=-hK}y~?G{T}cW?M@}w3%3T~JD-qeK z>g`=Wl57L;CL$Y>RSBq8)kAU{++P_9&fV>qaBaN?lWe0RGks1Ggd+0^^d=&kDG$$9 z5rD2JG{#oQsa1UbvlTYbES~0oCPbX5jm3FMn}eGTo;jJQh>Ha`ln(P zk#7<4_7(Q&RMjE;)W6@wyb4djPDDI_3xLa%VYBW5bRnFht@R5K^GRgYWTw*q0000< KMNUMnLSTY{%*6%( diff --git a/app/src/main/res/mipmap-xhdpi/main_tab_1_hover.png b/app/src/main/res/mipmap-xhdpi/main_tab_1_hover.png deleted file mode 100644 index d106c91cdad5a18793abe70ab9cfef91a43acef1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 770 zcmV+d1O5DoP)eLDpfBIB?(~L4ZRdAwhs3S%E|#Na?;= zk`*Tq2m}IwxD#70M>{jSExX-vnLl}I``)~-^Y7bjrobc=sAUjeg7~c;mk8AIMAj}{ z6m3HAJBWXO3c>H7XtV0}##hjt1@YMs*l?U7=+0K%?r2Ia8Rvlei1__uM;E-kbG@iN2nuol9>XC{!#0(0io{9Q<8V!g|))g^THa4cZ`-5>aIA; zO7=ngVzi`GtHms&TU)JKEc*h<{`kecum)25mIv}pA(qS%#fu=mu}sL9)~ z-*3@gp_a^&7uF!7J1rqa_7DBZ!)%!q^l1n*j= zNWtW zE{vAUedAUrzgLGeJfo$$0JJ|&qvPV=7D`knnE^$|8pu}+Q^$u@_dB*^d^p6Tq28{# z&#^_k?EoF%G|K@xz$uplbbwPX2j~C?g$j}TJyCN&S~OsK_K>fiwD-&%{8|(b__eV7 z-{t!QN_7XcdHufyq`2KL8n+AE$*BNT_aAV708Bq073WWD)&Kwi07*qoM6N<$f|}`S AO#lD@ diff --git a/app/src/main/res/mipmap-xhdpi/main_tab_1_normal.png b/app/src/main/res/mipmap-xhdpi/main_tab_1_normal.png deleted file mode 100644 index ae2b7a5bafeb66b52ffc6f4922191d9d71c043cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 759 zcmVtz5BIpjXZ!+#T5lH2Kb z%_j1g4%=t1B)99X-${}rvm`HEyCfo4#+W%{%$$f^xsD@wF?Ep@ktG1X97S83iKqFz z1GpEFr8-=OAh`vg?=0#s={Rm5!v)a@;88$G3Ne}&S8zLh-{YW@(HEX41iNl zm%P6O30US>H3W(c^$#>a7yy5^t*)$QA*8_JhMplBa7Tg-31qgnR7LW@FjF9-&~DJBR8 z!6_#Q2Ei#O2nN9cj4^X0_o^JDyag^@Fnt!YJ#3aa9)n;I41)OuwbomC&$of$caA~u zgCH0L2MB@%2!bAR2?9_f+$#>fAgw^~C2u_dR35>xMg@XnjR@}lyL<&f6UA}7`Beo) pWFv~AC=!v4vUYMx1n)oO{s6%M4PZ^@N{;{l002ovPDHLkV1gbpN}~V( diff --git a/app/src/main/res/mipmap-xhdpi/main_tab_3_hover.png b/app/src/main/res/mipmap-xhdpi/main_tab_3_hover.png deleted file mode 100644 index 45ac57f2cb9a3ffc351c8f7d93683bf3b244afee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1526 zcmV=xKv4{8!lO|m{vc{hAS8kq+1)v_mq>iXAEt;=qe+Q8VkC;MC^S@R zOoPGK4>S@(f{9`X5H(6DR0Hkab7tG6fLJgEr9yeHKXxhf-r4Ow?(O;|^K18>@B3!v z&Y3xLfw1so*GOoNf!ul!Zv{ywNKSz`4dTC`WgE!UBj(P>Tyu43Is!*b?g7acAopa} zOd+isidP}xj<2-*+;9$F3(c#GFlB3}pxl+1clf$W+v$&}sR40YndUAx%`J!~Csf*2 z2FlEU;(zjpJqzMpApQWvuYu%sX#Nt!W&opypk!)g&5^km#3$?mr4!m+gjh>e&gUJz z8A|Fvd?-hZE;##d8$?G}AeO2Eamp%8@oGGsx~AY*nH6_!j*}7Ydxm z2jXx13(L{#1LskRYTtr0DAQDNvVTgDZQ*fAi>EVpg~rtf;xnFU(-0b$Hcg(+JQf;P zAN;H5TcL4j^R|cULTFrl@E?O3!{d^M{#@?a(6}y>diIT)H-^Tg;E(}n4fmo3q3gR7>-ribr zOyx^KX%K%Kpz2};C8|M^^o?S~9aVI!SgH!zJ9@GQvwt5Mg7PAu-9`R)v3*kUad?Vl z^qvVpaS@26s-P_^o=T1_I+l~V(USMRM=X`Q>=+ufnFhs8Anvh<+Ff#7&BHy(k&P>N0wcT~0r zod1=`>{*v#=C%U&sk-xaDE1b6u51@T{25g8&cIFOLNsv~G=C23E~l^ULM$;ce;}Qh zlXq$;cN0|G;2HBG;@%D7&3R0AL&-z-hvUgQkmTy2{cv(USOI8$1jGk(&M+l){U1>L za-Lpkgwq=QJ60~7=Fz^gV!tLYWd0aSOw6&EoXF&y|2dR#VB2tzo4t`De&3SMT1(nb zRtlP@K(p&#Gk6t1obdecCmb`T(wd8gW5$5^h$la{0^Zt(=GB$fS~7?mJYIU?o4?vL zRa$4sAYSKLX#NIBygP*+MBK@h)><^8tu-M2*Yghk2oNu`tUxD0ydGK>Aks0e(%N$( z(lHKN7Jy_uh)?-^=;ZT&I#lg@IsG|hFGv~?ccX#UKZ`bWU_9b(G;=8!4)~l&pl3mC&*VT0REx29Rt9$qp#j z1xX=Cr2I|s0mKsz*n4ko_YKgz1SI0wZbNl?jI zi1Sk*UJ5deAlU@spOC5J7?687dzW$kvS{u>=9a1}`?>ROkbDi2cR~CdVmud4$7DF^ cVdY5t54CS*Vd-R7*Z=?k07*qoM6N<$g7+iaD*ylh diff --git a/app/src/main/res/mipmap-xhdpi/main_tab_3_normal.png b/app/src/main/res/mipmap-xhdpi/main_tab_3_normal.png deleted file mode 100644 index 704a6a8715502b125188d9a15f600153e23623b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1493 zcmV;`1uFW9P)^}`|w z!N3ezrOBPS@AI59*KwSM$+j&sEmq4-U2X05W3S72=FH5UnR{n?;Qcdj-{*PG$35@7 z_c%^W@H}rcfCVDbN^%c?9uYYMzz6ULfDV$auInz&=ku4xr6Y2;0$PIHB!UDuu5Y+sJ!IF3?k zj)?qKM(lZ#Lh^l*uL5`tz~=z+6-*u>IisoO0Ne@SR0)AS0G4a5$CY|Molaj5Unn6%@1ktB+hXL}Xc#;n7gr(a5o2F$kCE#O!{E`lxQ0M-uVL`VxVS{*u(4Y9#lIh0b5mCGG)FNos2y~J25m0CzLU4cB3mIBESEAaqOTI>0B8&yipB-t5) z@C3<~^_nZ-eF?zH5Ci%>faz5e02m426%@B8ik6IsERCb-lt?7Th{)1PTY_Z2h^!7> zrye+P;AR-j9wRQ0{6s`Ea&%b$*=Qs@(r zY0VZ}ErPQ0Z^O%Xj)<(bY|hgFwus1*OeWLPZ1JU#$z)nYWC_VF0M3{`NIrYA0*eD|NqwIfH3#HT~5t$$CwM+%gJwsPnNX`XtzQO~A@jHOsB;O_ZxQNWoWHOVp z+3cu#O=Pp#Q2=ffk=d^6J`o&ay93Tp`b6ZcQtIwY5(g%Kt-@rfI0+ypB6|VsB)Lr~ zwHd$$l52y@b{j~3L~8#h-4dpLnQzGADHj~_<@!~06rkOxRxeY5tLFBNX{d<62Mjw(J1~v5=Zm{ zPyn`)TuE|X!zwM`_eZ4D>8T{=ipY}yR*`HYxdT7~KpKPBCXWVJE(d}c=*QrB+Z$Z? v=>b5JUy^(Wz%wH9pyzqheBU2YkH-H1iCF)fWp)J000000NkvXXu0mjfHQ~mG diff --git a/app/src/main/res/mipmap-xxhdpi/commet_pressed.png b/app/src/main/res/mipmap-xxhdpi/commet_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..866e584bd22f71f717b69cc059920c16e795ac38 GIT binary patch literal 1423 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBgK_VEh;06XFWwGBEsSX!y?%3MSLQ zjNJbW3I7=i|1$u&vHuye{xc-~X8;NUxj^yE{|w1sb|P2`CHis0!D@ga z5OxMw7S4unfr^33fNTf@C<{bDEkHpCLKA^#hpRzjz_~yZAofCxLgvE7;S8WfXd2Du)hH*ej(d++{(hmRgVdHU@6iEak7A$j)T*LYz@hGP%QkLNvI zb5plWyv$p}M^KoV`>5ZWV|+5fA!!Sea^C$;ui9>@ey8?E-R0*O?UT-|n3uSsV&3Be zp3bhT4~m6ubmH8>{N73Hl3ND<@x;Yl!WG<4wc1?*TvxW0?LRX;U~STm`wmN&XuaTA z#qoNfvc}2(QmaB{yjRVckjq@c5)z=Q(zJ>7otg`ECRJvZC+_IgaZ{Ag;b;)JZ-mm-YQr)Zi#TVZM18-6S308`|thhZMAt$Bx~ zB9HxP*u0F(@cg0vi<{mu&ieam?taM|YkAJsJtzv;`_Y`a-S$_mdV#VI`~6#$r#NC+ zziF=L+i}z1_HE0{O<#8MnY_rK-B>O7^#f0u*Q6dUiE}^6E3fsAFyuEq~H&^Eg_ut;it}qWn7UDj&6wZbWiAx$!%pm zC9!kyOUY@qn`Byai%QwTG?m-lzE-;#b~tlq6;JR~L1w$T66<<0KX~MwdB5bhR`Qc) zr)Jvy74!RicS`ri3u@+t66)gJ4;K~L9JV>NlcW3TBDrr`+Lt~|?B^9secM{K(}MkU zDtG?xp0}U3ZOA$OU`~upyXPdPi{B%xHr8~osra^pS+WMJFdK;--Cz^@Wad|a)33M2 z{hYkSsb~g|f3NEKjYq<#cxXim9>28fN(Iy8rvY3a+arWt*Pi+mTAEOKg>7lki`%Vh zH|s6g6A-JuO+V3cs_Me*>kOsW>%+xW#7~^PP+F{9)O9A-*yaD$c$ZY2#8AbJQ$Pi) Mr>mdKI;Vst0R35+r2qf` literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/commet_unpressed.png b/app/src/main/res/mipmap-xxhdpi/commet_unpressed.png new file mode 100644 index 0000000000000000000000000000000000000000..c2a7c751ae906361afa8952346d064f9ca7bd7d7 GIT binary patch literal 1423 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBgK_VEh;06XFWwq5@+EZEY156$J$a z85tQVDJgMraZyoG5fKp~At6CQB>@2iettPVu#|*^1XxO5NJvT$s!~Q&R7ONZT0}%j zSXfF3s6s*lXo9%7jF_0Ts3;Ig2}{TTx#Hr|Vq#K2BrGm1E)HTqHHu4%fVh%C1Xd5y z1rz}xgrJltL_}Ot1c*T5K+`}50?kJth%C@RF%W{vic5-$O9K&D5M(b{9B3EVI&rYc zAVDMt0F4y`+71x}n*&q^5&^NH#sXanRs&WBb_3AA2#pXCkS-)agpF`<5CiB1u=z-W z_>4kQ1~MGv9t?z4@c;k+QuB8x1EYUMNswPK10xeN3o9Et2PYRd4=*3TfS{0wsDz}f zoT7@Vn!1LTwvMj8fuWhXg_X6Fi>sHnk6&O=NN89@WOPh?QgTXaT6#uiR(4KqUVcGg zQE_Q`Rdr2mU1L*oOKW>aXK!Esgeg;}&6qiB?t;ZjmM&ktZvBRho40M>xqI)vgNKhE zJ8|;V=`-gpT)cGc`i+~nZr{Ck|G~pYkDok!_WZ@mSFhi`|M2Pam#;s6{r>a!pJCkA z_dqu@CV9KNtW@V`V_{%m>h^ST43UsLd+=+#FeAgUhvmofp02s6TP9xSt>Ggm%*=h% z@69njnc$GL1xY#Yey3M$w^YAVd!z31^NaRLXI9KhTv0La@c~a~*VPBbLN_{b?qGiJ zq;<(Hga3Hq;x6F|?x$MqE&;A9+sgKznI5n<>BoJCrAxG4aIE5Zy--=>rWe%exZbODwmioADQM%bgPSVfPo7*;`0_$d|EHdt?RtAX zCS86sHC1s!*6vFY#_3Zu&7ZBXH0=$)6?A|p^3=mHkJi?_!%~sQ{xob}#$|Z^Q2)hE zZy9I(eKmK#H3&fISMD_6ZhS%>}pt;$mzv8>-T*YoYT>2LeC<>jU? zJNZmrfX-k=W(xk z!nz5USIrMtw`WrDhuoGBPW$jvXTvhC$OlI^M0vU=bjRejGM|#zx%j2zwAxKFExJXe zY+;(pZEs(z-3&XNxwDEVc&Z??-CT)vJ((Xo^3J?p@>?tU$+J^4?f#1SeZD)T`{M;Q z^Fj%A@$QFIbUV%5{t&t;ucLK6T?Gul`H literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/copy_link.png b/app/src/main/res/mipmap-xxhdpi/copy_link.png new file mode 100644 index 0000000000000000000000000000000000000000..38614e79335fe4f2ea6bee394af0cee6410490cc GIT binary patch literal 4636 zcmd6rc{tQxxWKDF;tP#deLNR3@g-Z z)1hc^DsuJ`pl0{y+6A6Y8_fW&iG6bf!4Bhl~dj6(Gf zOH0x{4235rKZT>B`|(WiZ4539bSVQp)af9QHcXU3f&0?qkG*)B68W{*A$3s|oC(ee zKjHFb`&(*_e!jxD*FZI9{O3KvvkS>KS@cg#xwyD&(B4bCnP8TWRQ(*1V0F6wLMoSX zy-6O}x(Lk)jh%(@Go@#dRQ(8Jf-xlT(-Boa$wc>}m640y1~texd+28@w%arTa0OS3 zQejFF7_>Y2G%SdQ7EBTt@rq#iByk(OG5WIRr7CG!6Ugm zEh&YuF}tMQo7p={Ox=S=S9e<7DUnFBw8r7Z-d857+tKp5GG7`+NPV45->9%Qo*otH zaO(_A;S;aRI{8Rw*Zz&IDeFHR-ooykL`HSiY*7Le@bnNE0D<8xz@x*p6Y1eWLCR_x zRhu?lGq2)#FX}SVE_J$91cz_%qw1I-mAd^Oo_S`@iI-XLXRFVQ2_p-0awMwtC}6OA z@ihg-54Q;6%#xCuoTjsu6mSt#8yZ>qLu9AX_Gj~|NxQ;}ks{_bo{Q%H7#bQTx{=4N zFz_F5Y8;)NOB{`8hRh_3)_%RTTHZSbPf(TLUYcq2S+goXiE=s^-?KgaNaOT`p5>5F zyg2ZXdW0>*chY}x`T6r#O4)Lbd5o(s>b=kl3kxFzLX~U7+r5_JT2wXwhPTbk6#P+t z&-j^=bIxN@@K{P7M z7_3GV+h|hV|BY-_S2`nkvR=c{Vg~*>d}PWiENEGMjF5(yQOISblSnyEtA-~dmq82+ z%s<4);~t{jy$FTcS#7ZGyi%q8X085DAIu)t!DTvbdU+jaqbr~Ik-+!c%>s^kEh0mUkM4}STqRwf zYIy6X=Ex9wZ3z9vtLyw=*n^`IYflW7Dc!Mm89WR#25l@5Qpn+pdTHqym95f>VY6B4 z8pf%TszHf~hN1qcMa9^TwQ3E4s!yLjPC+)O1IfRG33g7S%q2)3`m}eKV7K0$*rDRL z^_w2^YBZaB@+togG`KFzshQ4`hI4)otV~c4Ozc8SRqqKLAO6Gyyn~!#Z*JPfsg5VM zgITWh#a`(tx^t+Yngr;C9!%FF0Mis_%fwcj?|u*0oxPYqzMI@$pYMW*Wz4}ZE|}bk zj+Q?OX%#%{5(@{P&dQP!aY;8WKm&so+_ood%iLvC=h-v8F020Fr~zf>n}_iWfM^7@ zNn8UkFbg`yB*tuq6%G7!O?%ED0)V)3*qhn^FC1cmb9pe!UYLF3JV#}v+@WE6Oyz3sBY|3K?3VzdW`(?IuC|>Vvh7(AlQT6- zn7EzaW>`r$M^Di{{LVg-3@6)?LjvB~7lCO}f=atwT8=w44ez6~?8A7IUp}l1tO{I* zHAw3^*Z|5sM>Pq%g>PPlbrb0xlVpt7cu!gy#Y#~z@1y|A?Hg|eAZv7p6meKfh>ryk z4*U&ywHx)~sPqcJ4;pMSJAqhG7iS!X>GBIboLpack-}xOU^s;zO z(zh}K!FSF9s~+krcF)b7BNmT8+~A3jLlTBZzVH=VpZv;uccy&nacFY2yD+|nx@zQ5 zzJ!!N-SPz|PR(O9o)Xl6)M+W=Y{i&pfAxB2qOYis{79VBVT<)ORe_xUok`K5O7@Ki7NLUNZ+P4mo?WoM&4z&e^)cs};_P?nnx?Sc6hU zVmlY4wZ)PFjnJWKV-~uboWT2KJ1|kaC6is^v7-onn6F8d!$^^0;|Me~jpVh1+`@*f ze5ILNS{6x$RRIaoGNd+vk!%A|*L?{|5Wx@LrKDvJ`Y|0Su0tQ!P zn`RX;1L@d(%y0XPv4vt$uPH`F2a0DpKCbq=tQmG#?ytAF{$x|8#rH4W{*|Som2IuI}>!URM-ruWAQr^m_U#JvCN!fmhOX>b0#^T%f%g^c|=%o z1&e}>wI&b{nHryaoa36Gy#Co_9r7AFD>i@1jo;W84yOTB=KqcNuYKXL|IvL+_Yi%l zo1Z(jsoW;ijgev5edQ3T+}`~Z-=?<_=Utzq{|=NlJTvxSmd~%6+PtK?O5Oqcd&u!;yQFoF=V!RL z0d{+b${AO$n_bb{BUL|Cr;sk_8Md{fYY$lr388Ru& z1HJU9g$4F-%lWn8h?OAph@E!#@0P700@!R+Muu1#{dIAqrkc`?z% zsmJI$(Cz#^*|Hi9*libcpt~tPv3$XS?yDF+*t3uZv|@LVhn|aS+AimO|0OlTXT-Lw zdDAN8)g(!j|BqmMo1f`DaUR}BwOCvA5MU8C>CoWc(6p;QMBuR|7C8f1>m3`NMF z=?N%AG$-U~L9B&ie*bgP`X`S$xekf~$F;nIKogVvUVpj2>D(f|6rmFF4&*7aU3d-b z>gwuowY*TQ?@loG|h=Hk!7OKWT3L8Co*PQfv+ud(GY}E9Y~uO41G! z*uKekyl! zxM`=aukS()vL+qzqS>A<7;ocQUcAcuJ2Uz%JH4NBV*f|w)o?jo+^T8s z=vMchk`IDgl#gD>4l+j8(l%geI_yo*a%$Hdq#PXr{AeMl`>m|w@N?M8jMQ;zT_5vf zfhkGZJzxY;DrbD_YHZbYzR5_?6kon1Q=fn~nmE%`z9rE%CM8HyeCe``l{zTn&|g44 zJ5?M(4>5{CypE%YV$i1&1)0n*Opk9*&;ek(RF=O*GXK)%nCKxV-7y6kFneqv7%eVI zBl%%r61slz!J0mrDKP4a!D@EV)NE&!wFE>eN=umpgv;^gm0h>ySMakEG{4F-Y_p>? zF(z9yMBYm%IAQ zQ^J>tnMYq^V}E}wcfH?4OJmRTj94@D_Mv2F_S}r7aObqd&RItO){&;YBK(D_rnIh9 zYn++oC=QmTI}m+v_{P%Q+BcLf&dh!T2CXxa*jhR zVq8w(0qU?|0S=K*pb12g0J9Hdo%QacRkbLN;@7tfU&thAMjWX0sbD zp3O5_oVPb;gKd5}-JWM7f(ywU3?k}FbJ~5Ds*Cmy+D9OGxI(e$BBepTKGqN)fAy_e zA4gz+;ZmV|rTq|sd1o5my7-?&$|WD=qi}Baa0HaIHuIH#-$+@^fd9m!RGWUbm|?Y1 zJOZEs=>jD}a;sR7kN>pDK%*QGeV0WNQDD}72Q|pniKfYWe$^`%d5V#4ybb3^<|rn9 zSEglL1rrIG(;4yp>IPTBJQcDcSWh5AD+aUrWPP$BIXUre=9Zw|7}NGw!4MPNovVvu z^QcW_ilgb>zeyK3jpi>wf8T)1)-9Zan~{QjSs2C*YF34$!Eu~5rJ2!JUTKul#Z zGHT)pl6=3%nTQw|y!S9dODKcLcIki{ByUecWZEj9Iqk`6jPFhn-j-L_dieLAX=&&@ zi{yoxsYdl|^>X#52NB!_p)nIcn%qj({e9aWy@e4jwZp`b0Jh>%N?i5U^_8xGzqrZ7 zi?H`L?RWIAgjq|}Wz5y%mcrCBfODSaX%k;LOa9V%^hIgxCE!``%WdO9z3@j(q0O?? z@DpvtuI5J_P^rXF(-nptd3YV?L4m`c2OQIc$ezyG@0o7AeP~uaG(hv; db~}T4O8N7UqG^{tq4QrKz{J2(zgia+`yXBDat;6h literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/main_tab_1_hover.png b/app/src/main/res/mipmap-xxhdpi/main_tab_1_hover.png index cc6d39be1aa4a7355fb6079dbd42a4ec86e4c44d..a38555d9fbec13f470fbbacb81e0a1ed1cb5e3ee 100644 GIT binary patch literal 1406 zcmV-^1%djBP)y1N;Hz{xMzdSE7Q9?k?wIS?0vB>_*dIFQm zHCy6ipilw<@n@ajt)pvfcUBU3JgNcBO{|w##4XUtCy6I~m2;H^hb!$`)(|LJrxFu8 zB*q26pK)Rft>703MkNSg9P?oQQQxZjmw;rG%UR@%4H9{QKfO!2yk4`yt^gGK%D+o& z7Q7hv=BA*c*5iGAbA3)=QiTf4@rB^ofSX*GvEuM*`=p~i<9wCMu~~3;V9!qxN9nN& z`@7EwOj)a^Vjf>gj7<8vq-=v&QyzN69g(G*e=m#QlNbKjMseXDaMSm@~Xk;Mb|tc^qs5eqT$BlJ0^B z__N&hM{+3=@=6L9=GdYRt5Z3U+K%5TYKi(r1jU!7d5GoD#fuy zFfb4s-`Y)HtJ`RoGbS*(LQ@gn2#Nv+9*v24HSbwXZ?qtV%QVs8Yr*({BBz{~TVH9v zgm$6H<$4maU!o{*(3Sy%n9^I|0qQnbjczbStxB{OJt#8RKdekogi>I-uSjDq$0f$Z z{i8wfYV|7H)0bW5$fbHt#^(}4<77@;IL%mgTC7V28uOT$1TQW-k7<1k9^hQ1?eStv z6I_XVLGkb+W~6l?7h^)8-0%KvrPcOVuYWdbwQ}rA;E6dNNlU;)ezJ3Poa^@+i^sV@ zC!61PInqvnWS^GY)UW1T0FQ;tLfHa744(D`+^vg9)(}YG>7eQE(1nt@KO0;q4IZyE z#@WOmiHDF1kYx&xkpjxn7$9T}kYzED4o}BHoKPSO7&zDU&+JrzFgD)TT}{oDI^*1_ z5A4TGfE6s!Gl&rvud$7-b~Bv2i~=NI@e} ziG?y4I*8#7P|;-&lN=oMY$cYF6PQXYEWFNv!ZOXmm)8MsuVAre6*O`{VqqXrc%foI znYd7zO-c57eCV2a5b;8MPl=4ZBd$@eGW{%Cn?dIoX^qT~$FShY(Tweb^QmkIQ3o;$ z;*bjbXybglgtorYY2PX1#sX z;wYBb2%JqB>?*}A&q{2}&7t^m)S?h>D3DPdaDk|I8H~N^EA0ZX1oU>n5=zW?*uk*) zq4j1QyA-85Ea(pLgpC2ZU>rt~i%|{%hkCA;=tdpLs!E*6g~qw;0-qAZp?aa#$yVbs zGI8DoDH#_xL_JV>X}KccFTrQ|oQF9CHNq-3G571Ao3V@SQ4t-R6$nu^zPl0Yvp{h3$Epu>b%7 M07*qoM6N<$f)pREl>h($ literal 1552 zcmaJ>`#aMM9NyRrOWQ$&*mp%rL|esd(Pr9Lmb2E>DY>Lbt2pkrGFGxKGOIZ2xTKag zjA|xFE=NQ~$1q)WTT8XhAsG#^<1grk_kExDd7tO~>GOF{GlFPlrnaUK2*fM^q%s$j zwSXXFqXlkVxsC*Zz@G+C$*i=J|4Kq*STxIS{q*vIRh8zJWN9l8jGu^T&m#SMLeUjD zOpq0KQh-idg9iU&5@0I~bF7dlc6(;!^30O@6*;@yoZ7w<9x&LM8J!|KBdw`CbE!Ud zNIms#3&ZiQMe4>>SubkDsplWU#7iMQaqRJ0MiDId%Dekur4M{O3hi5Vq`0Ha%-x7v zC6<-gCn1vgCE4om&CBThS-EOhQ{5B)(%5M~wkL1wL!r&aiqR9wQSqSL4z7#hfgPYf zKrVFOpm%K6;&vI7(R7$>rIT^l9}SFl3n1Bq*@l_)xO&6?sb5tnn&dqvoEALW4$6^k zO+K1^{vDM{CYnS1E7RIMrB7UY>iF@zZIbKTQE?-@?@uY;jEq|&fEWWo9es4h1Z*|H zxgf29bVJpgd^_q+ef_5l@HJFLj1JsgO3jQWWMo$NzYNKr`qD#wl=QyI@FCHq9tI1J zvEK`mw64Dxj}m;RKQC2p;%i#l5dy={?h5ZlaY7Ju{E8J*n#Y6u76h7`Id-1WH>vKns*GWS75-Hw8#YD4m zwC14Cf#23(HdoDkda#jBWYHR+%>NJ)M6~P@Dn~1L9&8}+Ud%j5{?Qq+b8)tk_Nliw z{X<%*kici-d5A?KAE-nIY8qRh#pV(pLrG10aG#fBc{W&AZxtfiMbTIQ4t;jS=B7tn zt<~XM(iKc3RtMoF8p+gH(Y$HsJn2h%()0u{>@L;aJ$kWH7%O(x72D#2e--gSEXke9|lstU-O%6B7)4q=rxulp|xK91N+ zb8cKFYnu1PdXh7cDl(N;oj(k#m?E#b;4}~EM1&u*b}u@A#E^%ge0^iYOhmIW8xsZ> zMK5KMXAXBnMJCX<`+&(-^0U@~B)qdLw08>uId3x%PQ=sJ3`o%>s~azvBY@+J%fjqm z;WEyraok8PwxT{8&>qz-4hbygd)7k)-!BiX&|~;Bw$f`;spF9Wdk>$~wxJT&@7~vJ zjhUZndgVwOTBLdp%=ZDOe*uRK<6>%GIl8LM9_MN^HlO-J$c8_q5y@VT1vk7Q9r1@6V_{3Ophpfx3%W*2m z`LVxnnKE$O!u_Z*cyG9|9xHl%s#D%&O)P9S<<9o{*j$27zwBSfNXM1m8lO50aEPFA z)2#V0;$ij5H@(~V$81GqR$13441i3<`({VbrataqD?UfNt@8%~b&T1U)f&PXM*1vUBD_?AJF zWJ)Q+S-BuR6~SUgyRYRd&g*AYgC_FRKPeY}vv@>6rgjfTtx8(P)w?F_-N7+&El>nO^(C%W59HsQwig3U#hG7P|kS wgJ)}LcHQW;dZAFd1k1|j>O5X}P0>g670{WFBcYy23ri0P@DHNaQX;tj1E4e0FaQ7m diff --git a/app/src/main/res/mipmap-xxhdpi/main_tab_1_normal.png b/app/src/main/res/mipmap-xxhdpi/main_tab_1_normal.png index 0b14a84dbeb53c3969b4d3726c9142b9953d5ff1..74adca2e54b3a3160a0cf3c8c5a3f607bd960b86 100644 GIT binary patch literal 823 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBgK_VAK!r32_B-k$^FSwzi6jij0hm zl$4Z^kPtt=93Pl1At50uDk>r(4`hgoi;IcLii*mJh)6-W;^H!*qSB(GQoU=2Fe1}gJgk*z_ddcC?rf4MG&kWV>Zyma;2O`CV_K6?7h*^8I2T)Tez{(~n^U%Y(% z=H2@bpFV&6_Wj4tUw{9ZXw;+utz%5`c6UiRbZZAEknQg2;uzv_{Oz>paK=Q5*7m>` z8nPbhURo=8WL=hSUUb26hSS$S|NmcTl?YBw(~CU4uljq{w=>(nnZJ%z=BQPQ){u(b zKJ&SAWkbygm3JN=S5G<2^ZqR3(TFu1PxiF!P>o?f=f-ldlBvckthVkC(~3OP_Fkg` z)0M~B=QYfJdF{n6wzzA%rfb$7{QhvlqYmHnh}rW`GMrzXRlJnr&iTxbvyBQYKVFx! zX16=^zu>uM0C)73d0+UJxL;kio*~8dR{GbJ#-{a`qb4*i*&8kWO+}$xWetA-*Q>9x zI*xuj52scXzrMd>H;?z*OzFPfeKS=wLOm5ESwqe!7;t>?NZ5bz*4o}3D;s>GLxUT4 zd}@pMzhw)zyIUj68;xkWxY%ERLRkNtnpfZAmE`Z<$(7=wxx){b4X#v>;(K_s#X7)dq(E literal 1512 zcmaJ>`#Tc~7~aKg?j)BkF5?j?%8*N8Y#d=)+bkxW9+QZp)J&_L?Z|PTTVZJGbisy| zC1JGcR4y^}EJWHtt(G+lZAEqV7xcsXzCV2L^F7b^e&6#I9zum0=x)&k000JIzab8* z6{`kHM@!B9j(hh50Giw|1RP6lkTrxC#39WBDUO>=OOEO1!uL?U>bWTZMG4(X%Bj$-q_moMDIF_k{17}8a)oj7BEZ<3K?H7 z7xM!*o}VG!>Pa}>3fAmmZZ@7D&K#t-7=3D@l4|hTa$y zXdSW0h<|E!QAyPx>!`eL+n!%)ASAR!*R1;9OYQ9W*QYBU7ht%nXw$49K0g0 zk~sbO7(@kiNH%HltRJag@91>rQRvP%S#;Qe%&X%mvwL*#PBGP`9$QMc(!jtf@m)5G zIo)?auQ{H}b>|%iPhMY0{&LWbtqM9d+J+VFqc7NX*G}{D4Y&6|NyZ=PM%XnW&9;9p zZ~GOLWTF|4xbfmcobD2!A2J}(ScY>%u{Oj^*o^-9sHsjB9JY03&M4H1pHG(OkDSz3 zIRr|r#1z=femRgn>_e$vQqq8BEmFS=ZHx*)Nbyuz-Xdf_B#sKtZI(s~C;}TG@3Twd zvnS{6yP`R}!6dWpGgaU63;102zO%9^N`U@J(~7Gy&1E7-)YE6PbuAvFPPKMAT~K4! zT|8g`J^iM2n1KFnZOGU1cZBv1PcB6q2y z+vzt>#c(I_n_;&<9?*l$#5z-<-uTUpS}fJ1uOa|s`F4r)LE@Sxt&Ugi(u9>`1rFCL!h-Cp zE`~TlN+V3SFdaPH!%~te#|C~?aE@#)m_4HJzb6uRbNXaPk5k^g*fzqu_YYc0t)kTQ zu%N0j2M)>JjtM*#x_xgGdf`6=Ch3vMLDISAX>eiwX zvmmk)E~ozfau@ghv;4M$2fsyn28ozM1ub|;X4?-cW=s2p6G*4k9k8u_%I1MkT4Uwd z*WtyDXBW+k>aAT+Kl`7*d}52mH6a(%)s`JAZiB_0C0WMhH`E^-5Qan{+Jh4R`XBIK B%kcmJ diff --git a/app/src/main/res/mipmap-xxhdpi/main_tab_3_hover.png b/app/src/main/res/mipmap-xxhdpi/main_tab_3_hover.png index 52ac6d38654808046bce16e0a75d9b7bda9c78ee..c04da90dff4aa127cc430596367cddf5618c6456 100644 GIT binary patch literal 1731 zcmV;!20ZzRP)#G!&j0mHLg^u?Iy6Nx51DVG;Va1y!1m~07KzJ7nF=XC#b z){Oye*BDOnO`Dyy`TYLpclrLBknrT1cscq|T-A>at9r0gRHb1uz6==bqYC_= z%zYUw)pvVst`tW}A0vI1s!}e~YpS;=U z!vr8FZ@^2wTkgwKApA(71mMTj=)ltom_v#>Z@({T!{Ib2@SL<;Cp-bB4dDj`zO-ZF zeS%+<01A9erFIlX-rw}%1&29hH5`oe_wxxH68L;7*N^oP4}hothQqW6oUoDp{sJ%D z0-xsvmin+W;sF@WQuj7u4q^WA1eyBN$5c+SDA(k!jI$z1Bgx=l}nZp!_T9#6ZU3gpR^P($khaVUF zsWx0S;q_MO$2*qOZ-Fb!K^ksxzUM#U?m@zE~ebRt8y$wPW)|3|~)D+8h zA%ozz1b#^i#un|z%BcDw*`$nRMEv|&OTJ4G9dHr;P8j&xgs-#K2WBzf&l&Jo+=7!) zccZcf$|hwjBND_xd(oD;kX+)&Ho|)f+TbSqHu;;qsF^N@6!_b$gS?pR1hNLoCZ**3 z*Y={G>eAE3dh+*~I-6p;mB|_?o0O9Ce~GJ{DiG;5M#0{)!M`^nd$Fv6`X*&9*b&{B z`EXe5fyfwAmy}i+N}HIUy!~PT`8@eAWEruvO2e4tkJ|$%@MBW2G0XYsT(U{YGD7%k zQ@~$k;U0;4t9;x`{5*%%dU2IYTdz6b~!Q(%<44;$Nj-~mnSj$s?wV)Nd@_eXa z;WjX3yrvenqM1*jW>GVCFKWUL>bY#G0S!sfr{siXfmW1s;57~?AI;e3^f*5<--o7A zu+nX?ct610$3jsvkV7qK3Tl26hO!#*eYOXm%=5sL;l`FU7jhoGAUSQt7MFG61GdN? z*lGTm%-ci&9@&jSWqE*kA~%ppF_3E+4LF_QLPM$t)zj(gr3C-h<|^?3_))^&B>XRg zKhFs(?Qwwc9}zqtB79(B3yu zYN#Om-&4TfB>Y9@`GH5`TAPKxq zfgdjO$O}29UfD;OmQO?l*?grX$Kfus+5$cOO0zcwJ63sR49{a=rsv z90#BYd=iydi*7Xl%`DiGw)hS};O98?AT&z=X19sw00dg#MSKF|oCI$U_4zgo#A^Tq z|I~oT?7d125PY*Tr0#M+mBbr-at%ree^20_q7wIFW9a5f8WM|qxS~whd)%as^VORt zQcRg)%)Feix^fh8vWApp$_;O(T`qXj6{U*m;7w7KpN~ z2SlbRGmV+9CIoU6%@;KWm1W9}0O14aiU=K2im5sT<|;}OIfG)Z2WHozQO|jM+Wa4` Z{{Yk-452tNq)7k(002ovPDHLkV1iRjQj-7x literal 3007 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 PLFJRDtDnm{r-UW|n<<^l literal 2939 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 diff --git a/app/src/main/res/mipmap-xxhdpi/wechat_logo.png b/app/src/main/res/mipmap-xxhdpi/wechat_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d05e720898bbb9400cc73dc514f785bd972085e7 GIT binary patch literal 8770 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�hmtj$IVbL4}UpH}UK zo|D?5XL3E?TX#D!P}@p&U74oOVq)+kevr)4HA`8=vK(1NeHB&?9V+Q${&d3@U-|Fb zKmRzout_gCce$*$+$F*C$JviiPv7&0buMtmN=c_icH+1oG2J zQmrcjlL!D^A?2p%I4KH5pnUIv@?Q{&Le!Q|8{HX>Rl2mT9lmSXVJ?P)vTl|iL&`fFUrKQ+nHNXZ z@XSU>V(DH{3Q9&<1#RAdKbn=0O31NN0+$r_uKc;?${(^3hiIv2-#lBS-gSoZ-x(CL z%}^R@CePjExD0a`PdG&az-Kb4DXT&>g_Azsq-m8V%LJvUR+CfL5?x=`9Uc6zR0b=E zI6WbWY8ID%f;TW@?x2%NIo+}9AsdeYAQ^<$Xx-xS-&Q`FSLeTsG}aGFlAr2z@BNgz z40pYrY5olzAXbslZyVapEoJi9h2h8SAF7ET#LW__79yA47AEXf5r=Z?gIzdJ9dkmE z-1RF_fn;R#;d38N2oE}v>taO9Vyiggi2-{2l+>dux-!tOP7(nTMM;yRT|d6}H1==( zpNmn&HU68p?I6i=k1u$tHncn%6%L877P0d}l zmH+8XiQiulX#Il!o_rveIY`;Vexp z^qm+Pb`<0vp!tV4InE76#laAEMgPMlD4`ZXCOQL#qm|;e;e`>0R>G&Q1o!?c>|4mH zw_!C;zJ~;qd$KjD7p6%*yop#lu{M;p%Gt3U$yVvYLYu$=pXP3dFzM^lFEgbXbB@c( zZ63n=$}(otbj(aKAXfm%#e4i1NqsgRLgzj@Gau@Jn(yVC1D`$+EU0=( z`5I$GI0ps;-x7lxn|!Pd46c-}G?ygACR*ptZgzZBt$e4Qma4I=ELjYRUScFAk}L@{ z1{*YYpLe@)9$Mqqq_zo0x~a^vZw+t%_P{}#!BCP@-~-*N=BOVsQuOD^Ng7 ziV%H`k^j!avsA3af$)RXM943J7c3b}^*QK51H12=F-!!oz_FDr&CEcig@xoeA0^lH zI1_Y&A5xle**Iy~!NBqs5b!Rd=Vp1ww$f&oD8I1y|D$VP%K>~QQWoOfNaFL(|2G=~ NP*v1asFt?~|34Bhf~x=k literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/main_tab_1_hover.png b/app/src/main/res/mipmap-xxxhdpi/main_tab_1_hover.png deleted file mode 100644 index b827bafeba1b50a75eb3b6b4221ae5d00da49935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 981 zcmeAS@N?(olHy`uVBq!ia0vp^1wfp^!3HEXQ%m+TFfh;Yba4!+nDch-#lXh~BCerL z-V0c!PY_Z%J@4UVSqJtd%r6v57=Vl?{E^>!UNn>(sGE^G{f*Ggs%cBp?;9`9k1JAB zFMDPvmXtZ=t((SX@u28H6Zu6Mb}d)JfV|Y*owjm6I&Y;pnexY9sEDX{fyQa|^< zWjW?fv&xt6S?|B3^7wK?(XMZ48+O$DRSQ@D`5JWF$K&r4{r9hbf8_L>JNwkL#gi;m zR!%*eynjvU2Gj7#oz}L|#iGBT>P}x6KJ!ZR>MIN(X8+6L#eaF^PQ0>mfy(BbvPC&% z9$7pZCqth7cx$)*f9bQ1CFfXGX9n5-|IYh9-+JD}D;Gp!eZ7`(-(TYOS+8py-@jis zf!1nlp06@f&%@KSTIK7Mf5-kDeLp#!FE0PZ)7PyUXAXY8{G(~fzhy77-p7Y7*{A%! zcIEpCA@VCuhTJXN6dAJJHR!m5@3W_`k3KP0T*=%y*GJsrm1L0TvSL4{pzd#F+bq)` zfBLGlGlg&F%t==yjM*JaqyMMO`n_WFbu-~hcdFG(&to)@pa_R=z) zsTp@M)GXdTXyr+tpYyUldd7Mg#p>v-T*AB2W%A3WDOaYLJv^p&wFu~utf0mE;*+Ok zNvd9UUAg}6{dS4dN2jD{{XJ$hQ%`F)_tN{9{IxV^o>hLGvTH@ITFU1cc|n>db-tF~ zcqpW_bBWT-#|u?TFZo(rYP)d=WO9h@K{c7om1V9cOB_8{T`&4L#e3_5^leWc2>@yJ zA4P^={|g*2X!^7NSPW30eOJsM-uJF@DwA1sSI*~-n|gNQnG-+Mwr<)f@i*IQk|f)F zUyIClM|WtS^N>!;PJE*_$3#D=rr5FISj=Re(`m1E%W%7t-hRo_WZ|GttT4e+;DiiE z3LlFRJJU?&#xso$&qx-YBp$JCwqw2hSLLt86TY)EDGD$te&7+PkmG1^;AlBu?C_vc z0VpKEbl$)vVTF17;U0k#HEtX!cFHV9^97k^p66&hliuR+%-Bicv!vpLpSYy`)C`_I zR4{nfX~)3g^xzb0l^wS%ld#1zhw4dUEXQn@?)z7BWAXFgEeZzr0-ybOelXcJ++Ci7 z$(_rlR-*g-;pqwnO%}y}etKGMJ^SnZkrurig%6)+G;7Sh`|`6?J>yP}8B?Pyo9_d& OD}$%2pUXO@geCy+#=pP- diff --git a/app/src/main/res/mipmap-xxxhdpi/main_tab_1_normal.png b/app/src/main/res/mipmap-xxxhdpi/main_tab_1_normal.png deleted file mode 100644 index a5e31544288a44c24277302f3cfbb8ad2655c35d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 958 zcmeAS@N?(olHy`uVBq!ia0vp^1wfp^!3HEXQ%m+TFfg}zx;TbZ%y~QaZm5!@fE#C{ z01pry6gc5vG=ay2`HX|{gzu}YCN=(c*z6u#Ubic4+3vRY^DeKCI1~GhX0dFBTTzx)aJ_Ieh*Zjb)+UeCD_46E%*Z*IEHre=j`p zx9FX>{r;Pm9>*^G{vr0&g(WF+>J!R6UrqFsC zR|-G$T-NcXe)j{0X-b>YgWTB;+?sr5+wt?hS-)0nl>5)c!g}D+nKEaU&Ak3WXLF7( z`Nwd;%Vk2PBfq7%$bsIOvPSVQ6M}>puI;?PYR1jU-=ELEDLi>rqxsBLRpwW8R#hEe z@-3ku%jz0CgI z)q0lIzpUO{ny(BFOBQi?VrV|o^l$y7eX_geE#aGR=GDE6OW&tIpC6KMl>N`g^!Ji; zsxx!X=&hW`yD@6=%{KLwQJ2+X?k~ONaWd!d>?@B>A3eA9R_Vou>?{Y470ND)*DF)| zY@1|s+rzVVz1_-lDf`^~(xhL?f6LzLS*liS{Hj1SFg9rBnSU0Ot?sDJDPCE24QS5H zkpF6PtfpnH*PNMKF=>_M>7&kiS0@=y))nvH7~*}dXJ5=4&$Q`Fql(g|?7u!EYvr^# zAN9oRt2f+nl~cRiZoJZeI(wwy%+!;3+G} zA}pv=Wj?*fZ~k|cSk`NMPa8T11+@!C{5lzHz1sVnx zqzcb@#k$PCDCh6bt@465`wMF|CNODEV3J;NAPs}{LaAU)w{W5x7muAXE8F~uOwH## z8V{x~Iq<+ZDB**orooRM5s4aH((J+!pIihYJ_RVS1|D$-7?B!*h k*FRI%CFS?$y54$*y*u6fS3P1|3(S`cp00i_>zopr058Y4b^rhX diff --git a/app/src/main/res/mipmap-xxxhdpi/main_tab_3_hover.png b/app/src/main/res/mipmap-xxxhdpi/main_tab_3_hover.png deleted file mode 100644 index 55ecc4208bb6dcd2e1ccc737237983444f22ee16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2941 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首页 场景 我的 + 评测 成功 @@ -32,6 +33,8 @@ 请打开 WIFI 下载成功 下载失败 + 微信好友 + 复制链接 微信登录 邮箱登录 diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/Utils.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/Utils.kt index ac6829b65..51639d894 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/Utils.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/utils/Utils.kt @@ -3,11 +3,18 @@ package com.tencent.iot.explorer.link.core.utils import android.content.ClipData import android.content.ClipboardManager import android.content.Context +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.graphics.Canvas +import android.os.Build import android.provider.Settings import android.text.TextUtils import com.tencent.iot.explorer.link.core.log.L +import java.io.ByteArrayOutputStream +import java.io.IOException import java.util.* + object Utils { private fun isDigitsOnly(src: String): Boolean { @@ -150,4 +157,57 @@ object Utils { return if (TextUtils.isEmpty(id)) "" else id } + + fun bmpToByteArray(bitmap: Bitmap?): ByteArray? { + + // 要返回的字符串 + var reslut: ByteArray? = null + var baos: ByteArrayOutputStream? = null + try { + if (bitmap != null) { + baos = ByteArrayOutputStream() + /** + * 压缩只对保存有效果bitmap还是原来的大小 + */ + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos) + baos.flush() + baos.close() + // 转换为字节数组 + reslut = baos.toByteArray() + } else { + return null + } + } catch (e: IOException) { + e.printStackTrace() + } finally { + try { + if (baos != null) { + baos.close() + } + } catch (e: IOException) { + e.printStackTrace() + } + } + return reslut + } + + fun getBitmap(context: Context, vectorDrawableId: Int): Bitmap? { + var bitmap: Bitmap? = null + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { + val vectorDrawable = context.getDrawable(vectorDrawableId) + bitmap = Bitmap.createBitmap( + vectorDrawable!!.intrinsicWidth, + vectorDrawable.intrinsicHeight, Bitmap.Config.ARGB_8888 + ) + val canvas = Canvas(bitmap) + vectorDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()) + vectorDrawable.draw(canvas) + } else { + bitmap = BitmapFactory.decodeResource(context.resources, vectorDrawableId) + } + return bitmap + } +// @JvmStatic +// fun main(args: Array) { +// } } \ No newline at end of file From 0c537e2d6afbc7d53edf19ccc3c48baf4b2085d8 Mon Sep 17 00:00:00 2001 From: archurtan Date: Wed, 21 Oct 2020 16:47:23 +0800 Subject: [PATCH 029/804] =?UTF-8?q?=E8=B0=83=E6=95=B4workflow=E8=84=9A?= =?UTF-8?q?=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I54c5df29e04699332eb2d9f1484747ecc903184c --- .github/workflows/tencent_official.yml | 2 +- app/build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tencent_official.yml b/.github/workflows/tencent_official.yml index 9564f5356..7d4c12355 100644 --- a/.github/workflows/tencent_official.yml +++ b/.github/workflows/tencent_official.yml @@ -46,7 +46,7 @@ jobs: - name: Adapt build.gradle from debug to release run: | sed -i 's#opensource_keystore#tencent_official_keystore#g' app/build.gradle - sed -i '/opensource {/, +3d' app/build.gradle + sed -i '/opensource {/, +4d' app/build.gradle sed -i 's#//-##g' app/build.gradle sed -i "s#'111222'#System.getenv(\"IOT_RELEASE_KEYSTORE_PASSWORD\")#g" app/build.gradle sed -i 's#sdk-debug#sdk-release#g' sdk/build.gradle diff --git a/app/build.gradle b/app/build.gradle index f15d05904..88e00bd89 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -60,11 +60,11 @@ android { applicationId "com.tencent.iot.explorer.link.opensource" resValue("string" , "app_name_zh", "连连开源体验") resValue("string" , "app_name_en", "(英)连连开源体验") - } //-tencentOfficial { //- applicationId "com.tencent.iot.explorer.link" - //- resValue("string" , "app_name","腾讯连连") + //- resValue("string" , "app_name_zh","腾讯连连") + //- resValue("string" , "app_name_en","(英)腾讯连连") //-} } From d2240f96c5881bb7077c759025eeaad7c79c904d Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Wed, 21 Oct 2020 18:42:11 +0800 Subject: [PATCH 030/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8C=81=E7=BB=AD?= =?UTF-8?q?=E9=9B=86=E6=88=90=E6=97=A0=E6=B3=95=E4=BD=93=E9=AA=8C=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=8E=AF=E5=A2=83=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Idbd9195d00d3ce21f3b968f455ca0152035822f7 --- .../iot/explorer/link/kitlink/fragment/CommentFragment.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt index e0d0fbd46..e667c7fa4 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt @@ -108,9 +108,7 @@ class CommentFragment : BaseFragment(), View.OnClickListener, MyCallback { if (response.code == 0) { var js = JSON.parse(response.data.toString()) as JSONObject var url = CommonField.H5_BASE_URL + "?ticket=" + js[CommonField.TOKEN_TICKET] - if (App.DEBUG_VERSION) { - url += ("&uin=" + Utils.getAndroidID(context!!)) - } + url += ("&uin=" + Utils.getAndroidID(context!!)) if (!App.isOEMApp()) { url += "&appID=" + T.getContext().applicationInfo.packageName } From cf2e0b8755fed092101559af0d6550d2c1d80c64 Mon Sep 17 00:00:00 2001 From: archurtan Date: Wed, 21 Oct 2020 19:34:42 +0800 Subject: [PATCH 031/804] =?UTF-8?q?Link=20entity=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I780251de06c032c7a30799571d1a91493f58c504 --- .../com/tencent/iot/explorer/link/AppData.kt | 3 + .../link/kitlink/activity/AddRoomActivity.kt | 2 +- .../link/kitlink/activity/AddTimerActivity.kt | 2 +- .../kitlink/activity/CloudTimingActivity.kt | 2 +- .../kitlink/activity/ControlPanelActivity.kt | 4 +- .../kitlink/activity/DeviceDetailsActivity.kt | 4 +- .../link/kitlink/activity/FamilyActivity.kt | 3 +- .../kitlink/activity/InviteMemberActivity.kt | 2 +- .../link/kitlink/activity/MainActivity.kt | 2 +- .../link/kitlink/activity/MemberActivity.kt | 2 +- .../link/kitlink/activity/RoomActivity.kt | 4 +- .../link/kitlink/activity/RoomListActivity.kt | 4 +- .../kitlink/activity/SelectRoomActivity.kt | 4 +- .../link/kitlink/activity/ShareActivity.kt | 2 +- .../kitlink/activity/ShareUserListActivity.kt | 2 +- .../link/kitlink/entity/DeviceOnlineEntity.kt | 12 -- .../entity/ParentDeviceChangeEntity.kt | 9 - .../link/kitlink/entity/RoomEntity.kt | 14 -- .../link/kitlink/entity/ShareDeviceEntity.kt | 2 + .../link/kitlink/entity/UpdateEntity.kt | 4 - .../link/kitlink/fragment/HomeFragment.kt | 4 +- .../holder/ControlDarkEnumBigItemHolder.kt | 2 +- .../holder/ControlDarkNumberBigHolder.kt | 2 +- .../holder/ControlDarkSwitchBigHolder.kt | 2 +- .../holder/ControlDarkSwitchLongHolder.kt | 2 +- .../holder/ControlSimpleEnumBigItemHolder.kt | 2 +- .../holder/ControlSimpleNumberBigHolder.kt | 2 +- .../holder/ControlSimpleSwitchBigHolder.kt | 2 +- .../holder/ControlSimpleSwitchLongHolder.kt | 2 +- .../ControlStandardEnumBigItemHolder.kt | 2 +- .../holder/ControlStandardNumberBigHolder.kt | 2 +- .../holder/ControlStandardSwitchBigHolder.kt | 2 +- .../holder/ControlStandardSwitchLongHolder.kt | 2 +- .../link/kitlink/holder/DeviceViewHolder.kt | 2 +- .../kitlink/holder/FamilyInfoHeaderHolder.kt | 2 +- .../kitlink/holder/FamilyListViewHolder.kt | 2 +- .../kitlink/holder/HomeHeadViewHolder1.kt | 2 +- .../kitlink/holder/HomeHeadViewHolder2.kt | 2 +- .../kitlink/holder/HomeHeadViewHolder3.kt | 3 +- .../link/kitlink/holder/HomeRoomViewHolder.kt | 2 +- .../kitlink/holder/PopupFamilyListHolder.kt | 2 +- .../link/kitlink/holder/RoomListViewHolder.kt | 2 +- .../kitlink/holder/ShareDeviceViewHolder.kt | 2 +- .../link/kitlink/popup/FamilyListPopup.kt | 2 +- .../kitlink/response/DeviceListResponse.kt | 2 +- .../kitlink/response/DeviceOnlineResponse.kt | 2 +- .../kitlink/response/FamilyListResponse.kt | 2 +- .../response/ModifyAliasNameResponse.kt | 2 +- .../link/kitlink/response/RoomListResponse.kt | 2 +- .../link/kitlink/theme/DarkPanelTheme.kt | 173 ------------------ .../explorer/link/mvp/model/FamilyModel.kt | 2 +- .../link/mvp/model/HomeFragmentModel.kt | 4 +- .../explorer/link/mvp/model/TimerListModel.kt | 2 +- .../mvp/presenter/HomeFragmentPresenter.kt | 2 +- .../iot/explorer/link/core/auth/IoTAuth.kt | 12 +- .../link/core/auth/callback/DeviceCallback.kt | 4 +- .../explorer/link/core/auth/entity/Device.kt | 33 ---- .../link/core/auth}/entity/DeviceEntity.kt | 65 ++++--- ...{DeviceOnline.kt => DeviceOnlineEntity.kt} | 2 +- .../explorer/link/core/auth/entity/Family.kt | 11 -- .../link/core/auth}/entity/FamilyEntity.kt | 23 +-- .../auth/entity/{Room.kt => RoomEntity.kt} | 2 +- .../core/auth/response/DeviceListResponse.kt | 4 +- .../auth/response/DeviceOnlineResponse.kt | 4 +- .../core/auth/response/FamilyListResponse.kt | 4 +- .../core/auth/response/RoomListResponse.kt | 4 +- .../iot/explorer/link/core/demo/AppData.kt | 18 +- .../core/demo/activity/AddRoomActivity.kt | 4 +- .../demo/activity/AddTimingProjectActivity.kt | 4 +- .../demo/activity/ControlPanelActivity.kt | 8 +- .../link/core/demo/activity/FamilyActivity.kt | 6 +- .../demo/activity/InviteMemberActivity.kt | 6 +- .../link/core/demo/activity/MemberActivity.kt | 6 +- .../link/core/demo/activity/RoomActivity.kt | 10 +- .../core/demo/activity/RoomListActivity.kt | 8 +- .../core/demo/activity/SelectRoomActivity.kt | 16 +- .../core/demo/activity/ShareDeviceActivity.kt | 4 +- .../demo/activity/ShareDeviceListActivity.kt | 4 +- .../demo/activity/ShareUserListActivity.kt | 4 +- .../demo/activity/TimingProjectActivity.kt | 6 +- .../link/core/demo/adapter/DeviceAdapter.kt | 4 +- .../link/core/demo/adapter/FamilyAdapter.kt | 4 +- .../core/demo/adapter/FamilyInfoHolder.kt | 4 +- .../core/demo/adapter/FamilyListAdapter.kt | 4 +- .../link/core/demo/adapter/RoomAdapter.kt | 4 +- .../link/core/demo/fragment/DeviceFragment.kt | 8 +- .../link/core/demo/holder/DeviceHolder.kt | 4 +- .../link/core/demo/holder/FamilyHolder.kt | 4 +- .../core/demo/holder/FamilyListFootHolder.kt | 4 +- .../link/core/demo/holder/FamilyListHolder.kt | 4 +- .../link/core/demo/holder/RoomHolder.kt | 4 +- .../link/core/demo/holder/RoomListHolder.kt | 4 +- .../demo/response/ShareDeviceListRespone.kt | 4 +- 93 files changed, 202 insertions(+), 453 deletions(-) delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceOnlineEntity.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ParentDeviceChangeEntity.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/RoomEntity.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/UpdateEntity.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/theme/DarkPanelTheme.kt delete mode 100644 sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Device.kt rename {app/src/main/java/com/tencent/iot/explorer/link/kitlink => sdk/src/main/java/com/tencent/iot/explorer/link/core/auth}/entity/DeviceEntity.kt (76%) rename sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/{DeviceOnline.kt => DeviceOnlineEntity.kt} (88%) delete mode 100644 sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Family.kt rename {app/src/main/java/com/tencent/iot/explorer/link/kitlink => sdk/src/main/java/com/tencent/iot/explorer/link/core/auth}/entity/FamilyEntity.kt (75%) rename sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/{Room.kt => RoomEntity.kt} (91%) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/AppData.kt b/app/src/main/java/com/tencent/iot/explorer/link/AppData.kt index 3a9d52c55..7e5805f61 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/AppData.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/AppData.kt @@ -3,6 +3,9 @@ package com.tencent.iot.explorer.link import android.content.Context import android.text.TextUtils import com.tencent.iot.explorer.link.core.auth.IoTAuth +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.activity.BaseActivity import com.tencent.iot.explorer.link.kitlink.consts.CommonField diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt index a1a3434ac..2ad131bc6 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt @@ -10,7 +10,7 @@ import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.T -import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import kotlinx.android.synthetic.main.activity_add_room.* import kotlinx.android.synthetic.main.menu_cancel_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddTimerActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddTimerActivity.kt index 3e265fe57..58ad23e13 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddTimerActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddTimerActivity.kt @@ -9,7 +9,6 @@ import com.alibaba.fastjson.JSON import com.alibaba.fastjson.JSONObject import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity import com.tencent.iot.explorer.link.kitlink.entity.TimerListEntity import com.tencent.iot.explorer.link.kitlink.holder.DeviceActionViewHolder @@ -22,6 +21,7 @@ import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.holder.AddTimingFootHolder import kotlinx.android.synthetic.main.activity_add_timer.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CloudTimingActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CloudTimingActivity.kt index 02c73c5c3..1749571a2 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CloudTimingActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CloudTimingActivity.kt @@ -5,7 +5,7 @@ import android.view.ViewGroup import android.widget.RelativeLayout import android.widget.Switch import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity import com.tencent.iot.explorer.link.kitlink.entity.TimerListEntity import com.tencent.iot.explorer.link.kitlink.holder.FootAddTimingProjectHolder diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ControlPanelActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ControlPanelActivity.kt index f08806d7b..1262d1aa7 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ControlPanelActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ControlPanelActivity.kt @@ -1,16 +1,14 @@ package com.tencent.iot.explorer.link.kitlink.activity -import android.os.Bundle import android.view.View import android.view.ViewGroup import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity import com.tencent.iot.explorer.link.kitlink.entity.NavBar import com.tencent.iot.explorer.link.kitlink.popup.EnumPopupWindow import com.tencent.iot.explorer.link.kitlink.popup.NumberPopupWindow -import com.tencent.iot.explorer.link.kitlink.theme.PanelTheme import com.tencent.iot.explorer.link.kitlink.theme.PanelThemeManager import com.tencent.iot.explorer.link.kitlink.util.StatusBarUtil import com.tencent.iot.explorer.link.mvp.IPresenter diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceDetailsActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceDetailsActivity.kt index 69c5b660f..65c64bc93 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceDetailsActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceDetailsActivity.kt @@ -4,8 +4,6 @@ import android.text.TextUtils import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity -import com.tencent.iot.explorer.link.kitlink.entity.RoomEntity import com.tencent.iot.explorer.link.kitlink.popup.CommonPopupWindow import com.tencent.iot.explorer.link.kitlink.popup.EditPopupWindow import com.tencent.iot.explorer.link.kitlink.response.BaseResponse @@ -15,6 +13,8 @@ import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.DeviceDetailPresenter import com.tencent.iot.explorer.link.mvp.view.DeviceDetailView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import kotlinx.android.synthetic.main.activity_device_details.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyActivity.kt index 732ffde6d..45946b8b5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyActivity.kt @@ -6,7 +6,7 @@ import android.view.ViewGroup import androidx.recyclerview.widget.GridLayoutManager import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.kitlink.holder.FamilyFootHolder import com.tencent.iot.explorer.link.kitlink.holder.FamilyInfoHeaderHolder import com.tencent.iot.explorer.link.kitlink.holder.MemberListViewHolder @@ -16,7 +16,6 @@ import com.tencent.iot.explorer.link.mvp.IModel import com.tencent.iot.explorer.link.mvp.model.FamilyModel import com.tencent.iot.explorer.link.mvp.view.FamilyView import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView -import com.tencent.iot.explorer.link.kitlink.activity.MActivity import kotlinx.android.synthetic.main.activity_family.* import kotlinx.android.synthetic.main.foot_family.view.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt index d4392e31d..a928715a6 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt @@ -6,13 +6,13 @@ import android.view.View import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.kitlink.response.UserInfoResponse import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import kotlinx.android.synthetic.main.activity_invite_member.* import kotlinx.android.synthetic.main.layout_email_register.view.* import kotlinx.android.synthetic.main.layout_phone_register.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt index 9cb7eeaa8..f0375995e 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt @@ -12,7 +12,6 @@ import com.google.firebase.analytics.FirebaseAnalytics import com.google.firebase.crashlytics.FirebaseCrashlytics import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity import com.tencent.iot.explorer.link.kitlink.fragment.HomeFragment import com.tencent.iot.explorer.link.kitlink.fragment.MeFragment import com.tencent.iot.explorer.link.kitlink.popup.FamilyListPopup @@ -27,6 +26,7 @@ import com.tencent.iot.explorer.link.customview.dialog.ProgressDialog import com.tencent.iot.explorer.link.customview.dialog.UpgradeDialog import com.tencent.iot.explorer.link.customview.dialog.UpgradeInfo import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.utils.FileUtils import com.tencent.iot.explorer.link.customview.home.BottomItemEntity import com.tencent.iot.explorer.link.kitlink.consts.CommonField diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MemberActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MemberActivity.kt index a117ffc08..255d37b92 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MemberActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MemberActivity.kt @@ -3,13 +3,13 @@ package com.tencent.iot.explorer.link.kitlink.activity import android.view.View import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.entity.MemberEntity import com.tencent.iot.explorer.link.kitlink.popup.CommonPopupWindow import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback -import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager import kotlinx.android.synthetic.main.activity_member.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomActivity.kt index 69d956939..9512d917d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomActivity.kt @@ -4,7 +4,6 @@ import android.text.TextUtils import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.RoomEntity import com.tencent.iot.explorer.link.kitlink.popup.CommonPopupWindow import com.tencent.iot.explorer.link.kitlink.popup.EditPopupWindow import com.tencent.iot.explorer.link.kitlink.response.BaseResponse @@ -12,7 +11,8 @@ import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.T -import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import kotlinx.android.synthetic.main.activity_room.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomListActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomListActivity.kt index 31abafd08..438e37bea 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomListActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomListActivity.kt @@ -4,8 +4,9 @@ import android.text.TextUtils import android.view.View import android.view.ViewGroup import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.RoomEntity import com.tencent.iot.explorer.link.kitlink.holder.RoomListFootHolder import com.tencent.iot.explorer.link.kitlink.holder.RoomListViewHolder import com.tencent.iot.explorer.link.kitlink.response.BaseResponse @@ -13,7 +14,6 @@ import com.tencent.iot.explorer.link.kitlink.response.RoomListResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView -import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity import kotlinx.android.synthetic.main.activity_room_list.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt index 3cb39a5d1..2bbc5eff2 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt @@ -6,13 +6,13 @@ import android.view.ViewGroup import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity -import com.tencent.iot.explorer.link.kitlink.entity.RoomEntity import com.tencent.iot.explorer.link.kitlink.holder.WeekRepeatHolder import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.activity_select_room.* import kotlinx.android.synthetic.main.item_week_repeat.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt index bf84dae62..853bea716 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt @@ -6,13 +6,13 @@ import android.view.View import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.kitlink.response.UserInfoResponse import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import kotlinx.android.synthetic.main.activity_share.* import kotlinx.android.synthetic.main.layout_email_register.view.* import kotlinx.android.synthetic.main.layout_phone_register.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareUserListActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareUserListActivity.kt index 98e31fdcd..d1525c577 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareUserListActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareUserListActivity.kt @@ -3,8 +3,8 @@ package com.tencent.iot.explorer.link.kitlink.activity import android.view.View import android.view.ViewGroup import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.ShareUserEntity import com.tencent.iot.explorer.link.kitlink.holder.ShareUserFootHolder import com.tencent.iot.explorer.link.kitlink.holder.ShareUserHeadHolder diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceOnlineEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceOnlineEntity.kt deleted file mode 100644 index 50d98c1d5..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceOnlineEntity.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.entity - -class DeviceOnlineEntity { - - var DeviceName = "" - var DeviceId = "" - var ProductId = "" - var Online = 0 -// var LoginTime = 0L -// var LastDataTime = 0L - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ParentDeviceChangeEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ParentDeviceChangeEntity.kt deleted file mode 100644 index ebb280d77..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ParentDeviceChangeEntity.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.entity - -class ParentDeviceChangeEntity { - - var action = "" - var params: DeviceChangeEntity? = null - var push = false - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/RoomEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/RoomEntity.kt deleted file mode 100644 index 613942222..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/RoomEntity.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.entity - -/** - * 房间实体 - */ -class RoomEntity { - - var RoomId = "" - var RoomName = "" - var DeviceNum = 0 - var CreateTime = 0L - var UpdateTime = 0L - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ShareDeviceEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ShareDeviceEntity.kt index 84dff8476..c8f8bd78c 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ShareDeviceEntity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ShareDeviceEntity.kt @@ -1,5 +1,7 @@ package com.tencent.iot.explorer.link.kitlink.entity +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity + class ShareDeviceEntity : DeviceEntity() { init { this.shareDevice = true diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/UpdateEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/UpdateEntity.kt deleted file mode 100644 index f9794b864..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/UpdateEntity.kt +++ /dev/null @@ -1,4 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.entity - -class UpdateEntity { -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/HomeFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/HomeFragment.kt index a67ecb8be..782e024e5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/HomeFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/HomeFragment.kt @@ -10,14 +10,14 @@ import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.activity.ControlPanelActivity import com.tencent.iot.explorer.link.kitlink.activity.DeviceCategoryActivity -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity -import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity import com.tencent.iot.explorer.link.kitlink.holder.* import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.HomeFragmentPresenter import com.tencent.iot.explorer.link.mvp.view.HomeFragmentView import com.scwang.smart.refresh.layout.api.RefreshLayout import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerDivider import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkEnumBigItemHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkEnumBigItemHolder.kt index ec32a4773..6b2041e4d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkEnumBigItemHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkEnumBigItemHolder.kt @@ -3,9 +3,9 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.PropertyEntity import com.tencent.iot.explorer.link.DataHolder +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_dark_big_enum_item.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkNumberBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkNumberBigHolder.kt index 25b976c80..7b7e5efb3 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkNumberBigHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkNumberBigHolder.kt @@ -3,9 +3,9 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity import com.tencent.iot.explorer.link.DataHolder +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.customview.progress.SeekProgress import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_dark_big_int.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchBigHolder.kt index 8ff1f3a68..23c72ea0d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchBigHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchBigHolder.kt @@ -3,9 +3,9 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.view.KeyEvent import android.view.View import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity import com.tencent.iot.explorer.link.DataHolder +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_dark_big_switch.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchLongHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchLongHolder.kt index c13b9bbcd..3b7361894 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchLongHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchLongHolder.kt @@ -2,9 +2,9 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity import com.tencent.iot.explorer.link.DataHolder +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_dark_long_switch.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleEnumBigItemHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleEnumBigItemHolder.kt index 3dca18102..f19e0776a 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleEnumBigItemHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleEnumBigItemHolder.kt @@ -3,9 +3,9 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.PropertyEntity import com.tencent.iot.explorer.link.DataHolder +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_simple_big_enum_item.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleNumberBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleNumberBigHolder.kt index 9100fcac4..850d1f8e5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleNumberBigHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleNumberBigHolder.kt @@ -3,9 +3,9 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity import com.tencent.iot.explorer.link.DataHolder +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.customview.progress.SeekProgress import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_simple_big_int.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleSwitchBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleSwitchBigHolder.kt index 77dd6e0fe..613da1c2f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleSwitchBigHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleSwitchBigHolder.kt @@ -4,9 +4,9 @@ import android.content.Context import android.view.KeyEvent import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity import com.tencent.iot.explorer.link.DataHolder +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_simple_big_switch.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleSwitchLongHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleSwitchLongHolder.kt index 6adfe5c2b..e4999b675 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleSwitchLongHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleSwitchLongHolder.kt @@ -2,9 +2,9 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity import com.tencent.iot.explorer.link.DataHolder +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_simple_long_switch.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardEnumBigItemHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardEnumBigItemHolder.kt index d6eb69d0b..ecce1742f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardEnumBigItemHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardEnumBigItemHolder.kt @@ -3,9 +3,9 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.PropertyEntity import com.tencent.iot.explorer.link.DataHolder +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_standard_big_enum_item.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardNumberBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardNumberBigHolder.kt index 53580c941..11430a561 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardNumberBigHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardNumberBigHolder.kt @@ -3,9 +3,9 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity import com.tencent.iot.explorer.link.DataHolder +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.customview.progress.SeekProgress import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_standard_big_int.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardSwitchBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardSwitchBigHolder.kt index d67530545..a30944dfc 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardSwitchBigHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardSwitchBigHolder.kt @@ -4,9 +4,9 @@ import android.content.Context import android.view.KeyEvent import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity import com.tencent.iot.explorer.link.DataHolder +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_standard_big_switch.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardSwitchLongHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardSwitchLongHolder.kt index ce1e8be96..4fbbd6691 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardSwitchLongHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardSwitchLongHolder.kt @@ -2,9 +2,9 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity import com.tencent.iot.explorer.link.DataHolder +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_standard_long_switch.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/DeviceViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/DeviceViewHolder.kt index a80ceb926..80fdd97ea 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/DeviceViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/DeviceViewHolder.kt @@ -3,7 +3,7 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager import kotlinx.android.synthetic.main.item_device.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/FamilyInfoHeaderHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/FamilyInfoHeaderHolder.kt index ec4555b8f..a449e7fae 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/FamilyInfoHeaderHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/FamilyInfoHeaderHolder.kt @@ -3,7 +3,7 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.View import android.view.ViewGroup -import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.head_family.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/FamilyListViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/FamilyListViewHolder.kt index 2340c42d9..ff3fcc4c7 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/FamilyListViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/FamilyListViewHolder.kt @@ -3,7 +3,7 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.View import android.view.ViewGroup -import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.item_family_list.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeHeadViewHolder1.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeHeadViewHolder1.kt index d98d3bea7..5778f77b3 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeHeadViewHolder1.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeHeadViewHolder1.kt @@ -2,7 +2,7 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.view.View import com.tencent.iot.explorer.link.App -import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.kitlink.entity.WeatherEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.head_home1.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeHeadViewHolder2.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeHeadViewHolder2.kt index c43881731..eb7ca04aa 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeHeadViewHolder2.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeHeadViewHolder2.kt @@ -2,7 +2,7 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.view.View import com.tencent.iot.explorer.link.App -import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.kitlink.entity.WeatherEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.head_home1.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeHeadViewHolder3.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeHeadViewHolder3.kt index d29249b47..06a889854 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeHeadViewHolder3.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeHeadViewHolder3.kt @@ -5,8 +5,7 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.RoomEntity -import com.tencent.iot.explorer.link.kitlink.fragment.BaseFragment +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import com.tencent.iot.explorer.link.kitlink.fragment.HomeFragment import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.head_home3.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeRoomViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeRoomViewHolder.kt index b8d383c89..3e1a6633a 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeRoomViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/HomeRoomViewHolder.kt @@ -5,7 +5,7 @@ import android.graphics.Typeface import android.text.TextUtils import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.RoomEntity +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.item_home_room.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/PopupFamilyListHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/PopupFamilyListHolder.kt index c42187edc..26dceedd7 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/PopupFamilyListHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/PopupFamilyListHolder.kt @@ -3,7 +3,7 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.item_popup_family_list.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/RoomListViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/RoomListViewHolder.kt index 1dc8e6d95..7f9d334ca 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/RoomListViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/RoomListViewHolder.kt @@ -4,9 +4,9 @@ import android.content.Context import android.view.View import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.RoomEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import kotlinx.android.synthetic.main.item_room_list.view.* /** diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ShareDeviceViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ShareDeviceViewHolder.kt index 4ec85b719..1198c0d3c 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ShareDeviceViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ShareDeviceViewHolder.kt @@ -3,7 +3,7 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager import kotlinx.android.synthetic.main.item_share_device.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/popup/FamilyListPopup.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/popup/FamilyListPopup.kt index 7f5e6aafc..05cb83062 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/popup/FamilyListPopup.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/popup/FamilyListPopup.kt @@ -5,7 +5,7 @@ import android.view.Gravity import android.view.View import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.kitlink.holder.PopupFamilyListHolder import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.popup_family.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceListResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceListResponse.kt index 093af298b..b74906bd1 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceListResponse.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceListResponse.kt @@ -1,6 +1,6 @@ package com.tencent.iot.explorer.link.kitlink.response -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity class DeviceListResponse { var Total = 0 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceOnlineResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceOnlineResponse.kt index a32344895..dadcfcc35 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceOnlineResponse.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceOnlineResponse.kt @@ -1,6 +1,6 @@ package com.tencent.iot.explorer.link.kitlink.response -import com.tencent.iot.explorer.link.kitlink.entity.DeviceOnlineEntity +import com.tencent.iot.explorer.link.core.auth.entity.DeviceOnlineEntity /** * 设备在线状态响应实体 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/FamilyListResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/FamilyListResponse.kt index e92e1e4a8..ea99190b4 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/FamilyListResponse.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/FamilyListResponse.kt @@ -1,6 +1,6 @@ package com.tencent.iot.explorer.link.kitlink.response -import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity /** * 家庭响应实体 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ModifyAliasNameResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ModifyAliasNameResponse.kt index c75e5801f..5bc9101a5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ModifyAliasNameResponse.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ModifyAliasNameResponse.kt @@ -1,6 +1,6 @@ package com.tencent.iot.explorer.link.kitlink.response -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity /** * 修改设备别名响应实体 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/RoomListResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/RoomListResponse.kt index c93fb72e6..7adb8b9ef 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/RoomListResponse.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/RoomListResponse.kt @@ -1,6 +1,6 @@ package com.tencent.iot.explorer.link.kitlink.response -import com.tencent.iot.explorer.link.kitlink.entity.RoomEntity +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity /** * 房间列表响应实体 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/theme/DarkPanelTheme.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/theme/DarkPanelTheme.kt deleted file mode 100644 index 6c8b4f59d..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/theme/DarkPanelTheme.kt +++ /dev/null @@ -1,173 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.theme - -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.Switch -import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.activity.ControlPanelActivity -import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.kitlink.holder.* -import com.tencent.iot.explorer.link.customview.progress.SeekProgress -import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView - -/** - * 暗黑主题 - */ -class DarkPanelTheme(activity: ControlPanelActivity) : PanelTheme(activity) { - - override fun getTag(): String { - return "dark" - } - - override fun getSpanSize(position: Int): Int { - return when (mActivity.getDeviceProperty(position).type) { - "btn-big" -> { - 6 - } - "btn-col-1" -> { - 6 - } - "btn-col-2" -> { - 3 - } - else -> {//btn-col-3 - 2 - } - } - } - - override fun getViewHolder(parent: ViewGroup, viewType: Int): CRecyclerView.CViewHolder<*> { - return when (viewType) { - BIG_SWITCH -> ControlDarkSwitchBigHolder( - LayoutInflater.from(mActivity).inflate( - R.layout.control_dark_big_switch, - parent, - false - ) - ) - BIG_ENUM -> ControlDarkEnumBigHolder( - mActivity, parent, R.layout.control_dark_big_enum - ) - BIG_NUMBER -> { - ControlDarkNumberBigHolder( - mActivity, parent, R.layout.control_dark_big_int - ) - } - LONG_SWITCH -> ControlDarkSwitchLongHolder( - mActivity, parent, R.layout.control_dark_long_switch - ) - LONG -> ControlDarkLongHolder( - mActivity, parent, R.layout.control_dark_long - ) - MEDIUM -> ControlDarkMediumHolder( - mActivity, parent, R.layout.control_dark_medium - ) - else -> { - ControlDarkSmallHolder(mActivity, parent, R.layout.control_dark_medium) - } - } - } - - private var timingProject: ControlDarkCloudHolder? = null - - override fun getTimingProject(cRecyclerView: CRecyclerView): CRecyclerView.FootViewHolder<*> { - if (timingProject == null) { - timingProject = - ControlDarkCloudHolder(mActivity, cRecyclerView, R.layout.control_dark_long) - timingProject!!.footListener = object : CRecyclerView.FootListener { - override fun doAction( - holder: CRecyclerView.FootViewHolder<*>, - clickView: View, - position: Int - ) { - mActivity.jumpToCloudTiming() - } - } - } - return timingProject!! - } - - /** - * 列表监听 - */ - override fun doAction( - viewHolder: CRecyclerView.CViewHolder<*>, - clickView: View, - position: Int - ) { - when (viewHolder) { - is ControlDarkSwitchBigHolder -> switch(position) - is ControlDarkNumberBigHolder -> { - if (clickView is SeekProgress) - onProgress(mActivity.getDeviceProperty(position), clickView) - } - is ControlDarkEnumBigHolder -> { - enum(position) - } - is ControlDarkSwitchLongHolder -> switch(position) - is ControlDarkLongHolder -> { - showPopup(position) - } - is ControlDarkMediumHolder -> { - when (clickView is Switch) { - true -> switch(position) - false -> { - showPopup(position) - } - } - } - is ControlDarkSmallHolder -> { - when (clickView is Switch) { - true -> switch(position) - false -> { - showPopup(position) - } - } - } - } - } - - /** - * 显示对应的弹框 - */ - private fun showPopup(position: Int) { - mActivity.getDeviceProperty(position).run { - when { - isEnumType() -> mActivity.showEnumPopup(this) - isNumberType() -> mActivity.showNumberPopup(this) - } - } - } - - /** - * 开关 - */ - private fun switch(position: Int) { - mActivity.getDeviceProperty(position).run { - mActivity.controlDevice( - id, - if (getValue() == "0") "1" else "0" - ) - } - } - - /** - * 大按钮进度条 - */ - private fun onProgress(entity: DevicePropertyEntity, sp: SeekProgress) { - mActivity.controlDevice(entity.id, sp.getProgress().toString()) - } - - /** - * 大按钮列表 - */ - private fun enum(position: Int) { - mActivity.getDeviceProperty(0).let { - it.enumEntity?.run { - mActivity.controlDevice(it.id, position.toString()) - } - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/FamilyModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/FamilyModel.kt index 07fbea200..de8e90b0a 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/FamilyModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/FamilyModel.kt @@ -1,7 +1,6 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.FamilyEntity import com.tencent.iot.explorer.link.kitlink.entity.FamilyInfoEntity import com.tencent.iot.explorer.link.kitlink.entity.MemberEntity import com.tencent.iot.explorer.link.kitlink.response.BaseResponse @@ -13,6 +12,7 @@ import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.FamilyView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity /** * 家庭详情业务 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt index 225f1db7f..3cb94c6b8 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt @@ -5,8 +5,6 @@ import com.alibaba.fastjson.JSON import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity -import com.tencent.iot.explorer.link.kitlink.entity.RoomEntity import com.tencent.iot.explorer.link.kitlink.entity.ShareDeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.WeatherEntity import com.tencent.iot.explorer.link.kitlink.response.* @@ -16,6 +14,8 @@ import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.HomeFragmentView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity class HomeFragmentModel(view: HomeFragmentView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt index bbcff7ed5..484c9cf77 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt @@ -3,7 +3,6 @@ package com.tencent.iot.explorer.link.mvp.model import com.alibaba.fastjson.JSON import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.TimerListEntity import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.TimerListResponse @@ -13,6 +12,7 @@ import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.TimerListView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity /** * 云端定时列表业务 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/presenter/HomeFragmentPresenter.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/presenter/HomeFragmentPresenter.kt index 585c0b138..3d858681e 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/presenter/HomeFragmentPresenter.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/presenter/HomeFragmentPresenter.kt @@ -2,7 +2,7 @@ package com.tencent.iot.explorer.link.mvp.presenter import android.text.TextUtils import com.tencent.iot.explorer.link.App -import com.tencent.iot.explorer.link.kitlink.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.mvp.ParentPresenter import com.tencent.iot.explorer.link.mvp.model.HomeFragmentModel import com.tencent.iot.explorer.link.mvp.view.HomeFragmentView diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/IoTAuth.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/IoTAuth.kt index 63e03fd58..1fcf916a5 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/IoTAuth.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/IoTAuth.kt @@ -1,12 +1,8 @@ package com.tencent.iot.explorer.link.core.auth import android.content.Context -import android.content.SharedPreferences import android.text.TextUtils -import com.tencent.iot.explorer.link.core.auth.entity.Device -import com.tencent.iot.explorer.link.core.auth.entity.Family -import com.tencent.iot.explorer.link.core.auth.entity.Room -import com.tencent.iot.explorer.link.core.auth.entity.User +import com.tencent.iot.explorer.link.core.auth.entity.* import com.tencent.iot.explorer.link.core.auth.impl.* import com.tencent.iot.explorer.link.core.auth.listener.LoginExpiredListener import com.tencent.iot.explorer.link.core.auth.message.upload.ActivePushMessage @@ -32,21 +28,21 @@ object IoTAuth { * 家庭列表 */ val familyList by lazy { - arrayListOf() + arrayListOf() } /** * 设备列表 */ val roomList by lazy { - arrayListOf() + arrayListOf() } /** * 设备列表 */ val deviceList by lazy { - arrayListOf() + arrayListOf() } /** diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/callback/DeviceCallback.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/callback/DeviceCallback.kt index 5b7071d40..318745116 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/callback/DeviceCallback.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/callback/DeviceCallback.kt @@ -1,6 +1,6 @@ package com.tencent.iot.explorer.link.core.auth.callback -import com.tencent.iot.explorer.link.core.auth.entity.Device +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity /** * 设备列表callback @@ -10,7 +10,7 @@ interface DeviceCallback { /** * 列表请求成功 */ - fun success(deviceList: List) + fun success(deviceList: List) /** * 在线状态获取成功 diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Device.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Device.kt deleted file mode 100644 index 0fbc13e3d..000000000 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Device.kt +++ /dev/null @@ -1,33 +0,0 @@ -package com.tencent.iot.explorer.link.core.auth.entity - -import android.text.TextUtils -import com.alibaba.fastjson.JSON - -class Device { - - var DeviceId = "" - var ProductId = "" - var DeviceName = "" - var AliasName = "" - var UserID = "" - var FamilyId = "" - var RoomId = "" - var IconUrl = "" - var CreateTime = 0L - var UpdateTIme = 0L - - var online = 0 - - fun getAlias(): String { - return if (TextUtils.isEmpty(AliasName)) { - DeviceName - } else { - AliasName - } - } - - override fun toString(): String { - return JSON.toJSONString(this) - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceEntity.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceEntity.kt similarity index 76% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceEntity.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceEntity.kt index 0048f3de0..313f83bda 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceEntity.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceEntity.kt @@ -1,30 +1,37 @@ -package com.tencent.iot.explorer.link.kitlink.entity - -import android.text.TextUtils - -open class DeviceEntity { - var DeviceId = "" - var ProductId = "" - var DeviceName = "" - var AliasName = "" - var UserID = "" - var FamilyId = "" - var RoomId = "" - var IconUrl = "" - var DeviceType = "" - var CreateTime = 0L - var UpdateTIme = 0L - - //在线状态 - var online = 0 - //共享设备 - var shareDevice = false - - fun getAlias(): String { - return if (TextUtils.isEmpty(AliasName)) { - DeviceName - } else { - AliasName - } - } +package com.tencent.iot.explorer.link.core.auth.entity + +import android.text.TextUtils +import com.alibaba.fastjson.JSON + +open class DeviceEntity { + + var DeviceId = "" + var ProductId = "" + var DeviceName = "" + var AliasName = "" + var UserID = "" + var FamilyId = "" + var RoomId = "" + var IconUrl = "" + var DeviceType = "" + var CreateTime = 0L + var UpdateTIme = 0L + + //在线状态 + var online = 0 + //共享设备 + var shareDevice = false + + fun getAlias(): String { + return if (TextUtils.isEmpty(AliasName)) { + DeviceName + } else { + AliasName + } + } + + override fun toString(): String { + return JSON.toJSONString(this) + } + } \ No newline at end of file diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceOnline.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceOnlineEntity.kt similarity index 88% rename from sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceOnline.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceOnlineEntity.kt index e43b2f0a6..bfd08e167 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceOnline.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceOnlineEntity.kt @@ -1,6 +1,6 @@ package com.tencent.iot.explorer.link.core.auth.entity -class DeviceOnline { +class DeviceOnlineEntity { var DeviceName = "" var DeviceId = "" diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Family.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Family.kt deleted file mode 100644 index 2a53d84f9..000000000 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Family.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.tencent.iot.explorer.link.core.auth.entity - -class Family { - - var FamilyId = "" - var FamilyName = "" - var Role = 0 // 1:自己是管理员 0:普通成员 - var CreateTime = 0L - var UpdateTime = 0L - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/FamilyEntity.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/FamilyEntity.kt similarity index 75% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/FamilyEntity.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/FamilyEntity.kt index e41807124..6aa8297a5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/FamilyEntity.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/FamilyEntity.kt @@ -1,12 +1,13 @@ -package com.tencent.iot.explorer.link.kitlink.entity - -/** - * 家庭实体 - */ -class FamilyEntity { - var FamilyId = "" - var FamilyName = "" - var Role = 0 // 1:自己是管理员 0:普通成员 - var CreateTime = 0L - var UpdateTime = 0L +package com.tencent.iot.explorer.link.core.auth.entity + + +/** + * 家庭实体 + */ +class FamilyEntity { + var FamilyId = "" + var FamilyName = "" + var Role = 0 // 1:自己是管理员 0:普通成员 + var CreateTime = 0L + var UpdateTime = 0L } \ No newline at end of file diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Room.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/RoomEntity.kt similarity index 91% rename from sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Room.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/RoomEntity.kt index 368d70b33..0a990635b 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Room.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/RoomEntity.kt @@ -3,7 +3,7 @@ package com.tencent.iot.explorer.link.core.auth.entity /** * 房间实体 */ -class Room { +class RoomEntity { var RoomId = "" var RoomName = "" diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceListResponse.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceListResponse.kt index 3bc8285cf..44d36bdef 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceListResponse.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceListResponse.kt @@ -1,9 +1,9 @@ package com.tencent.iot.explorer.link.core.auth.response -import com.tencent.iot.explorer.link.core.auth.entity.Device +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity class DeviceListResponse { var Total = 0 var RequestId = "" - var DeviceList = ArrayList() + var DeviceList = ArrayList() } \ No newline at end of file diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceOnlineResponse.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceOnlineResponse.kt index 6e0ed168e..d2634524d 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceOnlineResponse.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceOnlineResponse.kt @@ -1,13 +1,13 @@ package com.tencent.iot.explorer.link.core.auth.response -import com.tencent.iot.explorer.link.core.auth.entity.DeviceOnline +import com.tencent.iot.explorer.link.core.auth.entity.DeviceOnlineEntity /** * 设备在线状态响应实体 */ class DeviceOnlineResponse { - var deviceStatuses: List? = null + var deviceStatuses: List? = null // var ProductId = "" var RequestId = "" // var TotalCnt = 0 diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/FamilyListResponse.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/FamilyListResponse.kt index b1a11afcb..6d690eb0f 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/FamilyListResponse.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/FamilyListResponse.kt @@ -1,11 +1,11 @@ package com.tencent.iot.explorer.link.core.auth.response -import com.tencent.iot.explorer.link.core.auth.entity.Family +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity class FamilyListResponse { var RequestId = "" - var FamilyList = arrayListOf() + var FamilyList = arrayListOf() var Total = 0 } \ No newline at end of file diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/RoomListResponse.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/RoomListResponse.kt index 87f8d08ab..b6a877d27 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/RoomListResponse.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/RoomListResponse.kt @@ -1,6 +1,6 @@ package com.tencent.iot.explorer.link.core.auth.response -import com.tencent.iot.explorer.link.core.auth.entity.Room +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity /** * 房间列表响应实体 @@ -8,7 +8,7 @@ import com.tencent.iot.explorer.link.core.auth.entity.Room class RoomListResponse { var RequestId = "" - var Roomlist = arrayListOf() + var Roomlist = arrayListOf() var Total = 0 } \ No newline at end of file diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/AppData.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/AppData.kt index 57350adee..59d521fc8 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/AppData.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/AppData.kt @@ -1,8 +1,8 @@ package com.tencent.iot.explorer.link.core.demo import com.tencent.iot.explorer.link.core.auth.IoTAuth -import com.tencent.iot.explorer.link.core.auth.entity.Family -import com.tencent.iot.explorer.link.core.auth.entity.Room +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import com.tencent.iot.explorer.link.core.demo.activity.BaseActivity import com.tencent.iot.explorer.link.core.demo.entity.UserInfo import java.util.* @@ -23,9 +23,9 @@ class AppData private constructor() { //用户 var userInfo = UserInfo() //当前家庭 - private var currentFamily = Family() + private var currentFamily = FamilyEntity() //当前房间 - private var currentRoom = Room() + private var currentRoom = RoomEntity() var bindDeviceToken = "" @@ -43,7 +43,7 @@ class AppData private constructor() { /** * 获取当前家庭 */ - fun getCurrentFamily(): Family { + fun getCurrentFamily(): FamilyEntity { //判断当前family是否还存在列表中:去除删除操作的bug IoTAuth.familyList.forEachIndexed { _, entity -> if (entity.FamilyId == currentFamily.FamilyId) { @@ -53,7 +53,7 @@ class AppData private constructor() { currentFamily = if (IoTAuth.familyList.isNotEmpty()) { IoTAuth.familyList[0] } else { - Family() + FamilyEntity() } return currentFamily } @@ -69,7 +69,7 @@ class AppData private constructor() { /** * 获取当前房间 */ - fun getCurrentRoom(): Room { + fun getCurrentRoom(): RoomEntity { //判断当前room是否还存在列表中:去除删除操作的bug IoTAuth.roomList.forEachIndexed { _, entity -> if (entity.RoomId == currentRoom.RoomId) { @@ -79,7 +79,7 @@ class AppData private constructor() { currentRoom = if (IoTAuth.roomList.isNotEmpty()) { IoTAuth.roomList[0] } else { - Room() + RoomEntity() } return currentRoom } @@ -88,7 +88,7 @@ class AppData private constructor() { * 退出登录时调用 */ fun clear() { - currentFamily = Family() + currentFamily = FamilyEntity() IoTAuth.familyList.clear() IoTAuth.roomList.clear() IoTAuth.deviceList.clear() diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/AddRoomActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/AddRoomActivity.kt index ecf628cc7..b6cae3830 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/AddRoomActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/AddRoomActivity.kt @@ -3,7 +3,7 @@ package com.tencent.iot.explorer.link.core.demo.activity import android.text.TextUtils import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.callback.MyCallback -import com.tencent.iot.explorer.link.core.auth.entity.Family +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.demo.R import com.tencent.iot.explorer.link.core.demo.log.L @@ -30,7 +30,7 @@ class AddRoomActivity : BaseActivity(), MyCallback { show(getString(R.string.empty_room)) return } - get("family")?.run { + get("family")?.run { if (TextUtils.isEmpty(FamilyId)) return IoTAuth.roomImpl.create(FamilyId, familyName, this@AddRoomActivity) } diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/AddTimingProjectActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/AddTimingProjectActivity.kt index be5aa86d6..9e9fdaccb 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/AddTimingProjectActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/AddTimingProjectActivity.kt @@ -10,7 +10,7 @@ import com.alibaba.fastjson.JSONObject import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.callback.MyCallback import com.tencent.iot.explorer.link.core.auth.entity.ControlPanel -import com.tencent.iot.explorer.link.core.auth.entity.Device +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.demo.R import com.tencent.iot.explorer.link.core.demo.adapter.AddTimingProjectAdapter @@ -109,7 +109,7 @@ class AddTimingProjectActivity : BaseActivity(), MyCallback { this.Days = getToday() this.TimerName = "我的定时" this.TimePoint = "12:00" - get("device")?.let { + get("device")?.let { this.ProductId = it.ProductId this.DeviceName = it.DeviceName } diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ControlPanelActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ControlPanelActivity.kt index 01b94b913..66dd8ba88 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ControlPanelActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ControlPanelActivity.kt @@ -8,8 +8,8 @@ import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.callback.ControlPanelCallback import com.tencent.iot.explorer.link.core.auth.callback.MyCallback import com.tencent.iot.explorer.link.core.auth.entity.ControlPanel -import com.tencent.iot.explorer.link.core.auth.entity.Device -import com.tencent.iot.explorer.link.core.auth.entity.Room +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import com.tencent.iot.explorer.link.core.auth.message.payload.Payload import com.tencent.iot.explorer.link.core.auth.message.upload.ArrayString import com.tencent.iot.explorer.link.core.auth.response.BaseResponse @@ -35,7 +35,7 @@ import kotlinx.android.synthetic.main.menu_back_layout.* */ class ControlPanelActivity : BaseActivity(), ControlPanelCallback, ActivePushCallback { - private var device: Device? = null + private var device: DeviceEntity? = null //是否是共享设备 private var hasShare = false @@ -87,7 +87,7 @@ class ControlPanelActivity : BaseActivity(), ControlPanelCallback, ActivePushCal else show("共享设备无法修改") } id == "room" -> { - if (get("select_room") == null) + if (get("select_room") == null) put("select_room", App.data.getCurrentRoom()) jumpActivity(SelectRoomActivity::class.java) } diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/FamilyActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/FamilyActivity.kt index d94321b07..36d9924bd 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/FamilyActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/FamilyActivity.kt @@ -8,7 +8,7 @@ import com.tencent.iot.explorer.link.core.demo.popup.EditPopupWindow import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.callback.MyCallback import com.tencent.iot.explorer.link.core.auth.consts.RequestCode -import com.tencent.iot.explorer.link.core.auth.entity.Family +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.demo.R import com.tencent.iot.explorer.link.core.demo.adapter.MemberAdapter @@ -28,7 +28,7 @@ class FamilyActivity : BaseActivity(), MyCallback { private lateinit var adapter: MemberAdapter - private var family: Family? = null + private var family: FamilyEntity? = null private val memberList = arrayListOf() private val familyInfo = FamilyInfo() @@ -58,7 +58,7 @@ class FamilyActivity : BaseActivity(), MyCallback { rv_member_list.layoutManager = layoutManager rv_member_list.adapter = adapter - family = get("family") + family = get("family") family?.run { if (Role == 1) { if (IoTAuth.familyList.size <= 1) diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/InviteMemberActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/InviteMemberActivity.kt index f7f73a2d5..f36a7c5fc 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/InviteMemberActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/InviteMemberActivity.kt @@ -3,8 +3,8 @@ package com.tencent.iot.explorer.link.core.demo.activity import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.callback.MyCallback import com.tencent.iot.explorer.link.core.auth.consts.RequestCode -import com.tencent.iot.explorer.link.core.auth.entity.Device -import com.tencent.iot.explorer.link.core.auth.entity.Family +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.demo.R import com.tencent.iot.explorer.link.core.demo.log.L @@ -59,7 +59,7 @@ class InviteMemberActivity : BaseActivity(), MyCallback { * 发送邀请进入家庭的邀请 */ private fun sendFamilyInvite(userId: String) { - get("family")?.run { + get("family")?.run { IoTAuth.memberImpl.sendFamilyInvite(FamilyId, userId, this@InviteMemberActivity) } } diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/MemberActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/MemberActivity.kt index ad9ae7abd..151b1cd85 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/MemberActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/MemberActivity.kt @@ -6,7 +6,7 @@ import com.tencent.iot.explorer.link.core.demo.popup.CommonPopupWindow import com.squareup.picasso.Picasso import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.callback.MyCallback -import com.tencent.iot.explorer.link.core.auth.entity.Family +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.demo.App import com.tencent.iot.explorer.link.core.demo.R @@ -32,7 +32,7 @@ class MemberActivity : BaseActivity(), MyCallback { override fun initView() { tv_title.text = getString(R.string.member_setting) member = get("member") - role = get("family")?.Role ?: 0 + role = get("family")?.Role ?: 0 showMemberInfo() } @@ -91,7 +91,7 @@ class MemberActivity : BaseActivity(), MyCallback { */ private fun deleteMember() { member?.run { - get("family")?.let { + get("family")?.let { IoTAuth.memberImpl.deleteFamilyMember(it.FamilyId, UserID, this@MemberActivity) } } diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/RoomActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/RoomActivity.kt index 821884d3a..43b4cba54 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/RoomActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/RoomActivity.kt @@ -6,8 +6,8 @@ import com.tencent.iot.explorer.link.core.demo.popup.EditPopupWindow import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.callback.MyCallback import com.tencent.iot.explorer.link.core.auth.consts.RequestCode -import com.tencent.iot.explorer.link.core.auth.entity.Family -import com.tencent.iot.explorer.link.core.auth.entity.Room +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.demo.R import com.tencent.iot.explorer.link.core.demo.log.L @@ -19,7 +19,7 @@ import kotlinx.android.synthetic.main.menu_back_layout.* */ class RoomActivity : BaseActivity(), MyCallback { - private var room: Room? = null + private var room: RoomEntity? = null private var familyId = "" private var deleteRoomPopup: CommonPopupWindow? = null @@ -32,8 +32,8 @@ class RoomActivity : BaseActivity(), MyCallback { override fun initView() { tv_title.text = getString(R.string.room_setting) - room = get("room") - get("family")?.FamilyId?.let { + room = get("room") + get("family")?.FamilyId?.let { familyId = it } tv_room_setting_name.text = room?.RoomName ?: "" diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/RoomListActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/RoomListActivity.kt index 828821b60..321da8630 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/RoomListActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/RoomListActivity.kt @@ -4,8 +4,8 @@ import android.view.View import androidx.recyclerview.widget.LinearLayoutManager import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.callback.MyCallback -import com.tencent.iot.explorer.link.core.auth.entity.Family -import com.tencent.iot.explorer.link.core.auth.entity.Room +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.auth.response.RoomListResponse import com.tencent.iot.explorer.link.core.demo.R @@ -22,7 +22,7 @@ import kotlinx.android.synthetic.main.menu_back_layout.* class RoomListActivity : BaseActivity(), MyCallback { private lateinit var adapter: RoomListAdapter - private val roomList = arrayListOf() + private val roomList = arrayListOf() override fun onResume() { refreshRoomList() @@ -57,7 +57,7 @@ class RoomListActivity : BaseActivity(), MyCallback { * 获取家庭内房间列表 */ private fun refreshRoomList() { - get("family")?.run { + get("family")?.run { IoTAuth.familyImpl.roomList(FamilyId, 0, this@RoomListActivity) } } diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/SelectRoomActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/SelectRoomActivity.kt index 6c03bf87a..33bc5cc4a 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/SelectRoomActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/SelectRoomActivity.kt @@ -5,8 +5,8 @@ import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.callback.MyCallback -import com.tencent.iot.explorer.link.core.auth.entity.Device -import com.tencent.iot.explorer.link.core.auth.entity.Room +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.auth.response.RoomListResponse import com.tencent.iot.explorer.link.core.demo.App @@ -23,14 +23,14 @@ import kotlinx.android.synthetic.main.menu_back_layout.* */ class SelectRoomActivity : BaseActivity(),MyCallback { - private lateinit var selectedRoom: Room - private lateinit var device: Device - private val roomList = arrayListOf() + private lateinit var selectedRoom: RoomEntity + private lateinit var device: DeviceEntity + private val roomList = arrayListOf() private val adapter = object : BaseAdapter(this, roomList) { override fun createHolder(parent: ViewGroup, viewType: Int): BaseHolder<*> { return object : - BaseHolder(this@SelectRoomActivity, parent, R.layout.item_week_repeat) { + BaseHolder(this@SelectRoomActivity, parent, R.layout.item_week_repeat) { override fun show(holder: BaseHolder<*>, position: Int) { data.run { itemView.tv_week_repeat_title.text = RoomName @@ -65,8 +65,8 @@ class SelectRoomActivity : BaseActivity(),MyCallback { override fun initView() { tv_title.text = "选择房间" - selectedRoom = get("select_room")!! - device = get("device")!! + selectedRoom = get("select_room")!! + device = get("device")!! rv_select_room.layoutManager = LinearLayoutManager(this) rv_select_room.adapter = adapter refreshRoomList() diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ShareDeviceActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ShareDeviceActivity.kt index d8eb639db..9650ab4e9 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ShareDeviceActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ShareDeviceActivity.kt @@ -3,7 +3,7 @@ package com.tencent.iot.explorer.link.core.demo.activity import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.callback.MyCallback import com.tencent.iot.explorer.link.core.auth.consts.RequestCode -import com.tencent.iot.explorer.link.core.auth.entity.Device +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.demo.R import com.tencent.iot.explorer.link.core.demo.log.L @@ -58,7 +58,7 @@ class ShareDeviceActivity : BaseActivity(), MyCallback { * 发送设备分享的邀请 */ private fun sendShareDevice(userId: String) { - get("device")?.run { + get("device")?.run { IoTAuth.shareImpl.sendShareDevice( ProductId, DeviceName, diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ShareDeviceListActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ShareDeviceListActivity.kt index 3875ab706..137166db1 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ShareDeviceListActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ShareDeviceListActivity.kt @@ -4,7 +4,7 @@ import android.view.View import androidx.recyclerview.widget.LinearLayoutManager import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.callback.MyCallback -import com.tencent.iot.explorer.link.core.auth.entity.Device +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.auth.response.DeviceListResponse import com.tencent.iot.explorer.link.core.demo.R @@ -22,7 +22,7 @@ import kotlinx.android.synthetic.main.menu_back_layout.* */ class ShareDeviceListActivity : BaseActivity() { - private val shareDeviceList = arrayListOf() + private val shareDeviceList = arrayListOf() private lateinit var adapter: DeviceAdapter override fun getContentView(): Int { diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ShareUserListActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ShareUserListActivity.kt index a4359b57a..6768b3835 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ShareUserListActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ShareUserListActivity.kt @@ -5,7 +5,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.callback.MyCallback import com.tencent.iot.explorer.link.core.auth.consts.RequestCode -import com.tencent.iot.explorer.link.core.auth.entity.Device +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.demo.R import com.tencent.iot.explorer.link.core.demo.adapter.OnItemListener @@ -23,7 +23,7 @@ import kotlinx.android.synthetic.main.menu_back_layout.* class ShareUserListActivity : BaseActivity(), MyCallback { private lateinit var adapter: ShareUserAdapter - private var device: Device? = null + private var device: DeviceEntity? = null private val userList = arrayListOf() diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/TimingProjectActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/TimingProjectActivity.kt index d1007ec51..7037f5d4b 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/TimingProjectActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/TimingProjectActivity.kt @@ -7,7 +7,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.callback.MyCallback import com.tencent.iot.explorer.link.core.auth.consts.RequestCode -import com.tencent.iot.explorer.link.core.auth.entity.Device +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.demo.R import com.tencent.iot.explorer.link.core.demo.adapter.OnItemListener @@ -26,7 +26,7 @@ class TimingProjectActivity : BaseActivity() { private val timingList = arrayListOf() private lateinit var adapter: TimingProjectAdapter - private var device: Device? = null + private var device: DeviceEntity? = null override fun getContentView(): Int { return R.layout.activity_timing_project @@ -34,7 +34,7 @@ class TimingProjectActivity : BaseActivity() { override fun initView() { tv_title.text = "云端定时" - device = get("device") + device = get("device") rv_timing_project.layoutManager = LinearLayoutManager(this) adapter = TimingProjectAdapter(this, timingList) rv_timing_project.adapter = adapter diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/DeviceAdapter.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/DeviceAdapter.kt index 52375e607..d2b719785 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/DeviceAdapter.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/DeviceAdapter.kt @@ -2,14 +2,14 @@ package com.tencent.iot.explorer.link.core.demo.adapter import android.content.Context import android.view.ViewGroup -import com.tencent.iot.explorer.link.core.auth.entity.Device +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.core.demo.R import com.tencent.iot.explorer.link.core.demo.holder.BaseHolder import com.tencent.iot.explorer.link.core.demo.holder.DeviceHolder class DeviceAdapter : BaseAdapter { - constructor(context: Context, list: List) : super(context, list) + constructor(context: Context, list: List) : super(context, list) override fun createHolder(parent: ViewGroup, viewType: Int): BaseHolder<*> { return DeviceHolder(mContext, parent, R.layout.item_device) diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/FamilyAdapter.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/FamilyAdapter.kt index cd8898a83..d4184ea29 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/FamilyAdapter.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/FamilyAdapter.kt @@ -3,11 +3,11 @@ package com.tencent.iot.explorer.link.core.demo.adapter import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.core.demo.R -import com.tencent.iot.explorer.link.core.auth.entity.Family +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.demo.holder.BaseHolder import com.tencent.iot.explorer.link.core.demo.holder.FamilyHolder -class FamilyAdapter(context: Context, list: List) : BaseAdapter(context, list) { +class FamilyAdapter(context: Context, list: List) : BaseAdapter(context, list) { override fun getItemViewType(position: Int): Int { return 0 diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/FamilyInfoHolder.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/FamilyInfoHolder.kt index cf7ed017c..bb256bbfb 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/FamilyInfoHolder.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/FamilyInfoHolder.kt @@ -3,11 +3,11 @@ package com.tencent.iot.explorer.link.core.demo.adapter import android.content.Context import android.view.View import android.view.ViewGroup -import com.tencent.iot.explorer.link.core.auth.entity.Family +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.demo.holder.BaseHolder import kotlinx.android.synthetic.main.item_family_info.view.* -class FamilyInfoHolder : BaseHolder { +class FamilyInfoHolder : BaseHolder { constructor(context: Context, root: ViewGroup, resLayout: Int) : super(context, root, resLayout) diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/FamilyListAdapter.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/FamilyListAdapter.kt index 72af1f17f..9a9a6bb3c 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/FamilyListAdapter.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/FamilyListAdapter.kt @@ -2,12 +2,12 @@ package com.tencent.iot.explorer.link.core.demo.adapter import android.content.Context import android.view.ViewGroup -import com.tencent.iot.explorer.link.core.auth.entity.Family +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.demo.R import com.tencent.iot.explorer.link.core.demo.holder.BaseHolder import com.tencent.iot.explorer.link.core.demo.holder.FamilyListHolder -class FamilyListAdapter(context: Context, list: List) : BaseAdapter(context, list) { +class FamilyListAdapter(context: Context, list: List) : BaseAdapter(context, list) { override fun createHolder(parent: ViewGroup, viewType: Int): BaseHolder<*> { return FamilyListHolder(mContext, parent, R.layout.item_family_list) diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/RoomAdapter.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/RoomAdapter.kt index 95a7af4d8..91fd77489 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/RoomAdapter.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/RoomAdapter.kt @@ -2,12 +2,12 @@ package com.tencent.iot.explorer.link.core.demo.adapter import android.content.Context import android.view.ViewGroup -import com.tencent.iot.explorer.link.core.auth.entity.Room +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import com.tencent.iot.explorer.link.core.demo.R import com.tencent.iot.explorer.link.core.demo.holder.BaseHolder import com.tencent.iot.explorer.link.core.demo.holder.RoomHolder -class RoomAdapter(context: Context, list: List) : BaseAdapter(context, list) { +class RoomAdapter(context: Context, list: List) : BaseAdapter(context, list) { override fun createHolder(parent: ViewGroup, viewType: Int): BaseHolder<*> { return RoomHolder(mContext, parent, R.layout.item_room) diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/fragment/DeviceFragment.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/fragment/DeviceFragment.kt index 8a330bf7c..eb1259748 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/fragment/DeviceFragment.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/fragment/DeviceFragment.kt @@ -7,8 +7,8 @@ import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.callback.DeviceCallback import com.tencent.iot.explorer.link.core.auth.callback.MyCallback import com.tencent.iot.explorer.link.core.auth.consts.RequestCode -import com.tencent.iot.explorer.link.core.auth.entity.Device -import com.tencent.iot.explorer.link.core.auth.entity.Room +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.auth.response.RoomListResponse import com.tencent.iot.explorer.link.core.demo.App @@ -107,7 +107,7 @@ class DeviceFragment : BaseFragment(), MyCallback { //有家庭获取房间列表,第一个房间为所有设备,也是默认房间 IoTAuth.roomList.clear() //先添加一个默认房间 - val room = Room() + val room = RoomEntity() room.RoomName = "所有设备" IoTAuth.roomList.add(room) IoTAuth.familyImpl.roomList(App.data.getCurrentFamily().FamilyId, 0, this) @@ -122,7 +122,7 @@ class DeviceFragment : BaseFragment(), MyCallback { 0, object : DeviceCallback { //获取到设备列表时回调(新增设备无在线状态) - override fun success(deviceList: List) { + override fun success(deviceList: List) { showDevice() } diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/DeviceHolder.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/DeviceHolder.kt index b10baec95..71908fb3a 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/DeviceHolder.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/DeviceHolder.kt @@ -3,11 +3,11 @@ package com.tencent.iot.explorer.link.core.demo.holder import android.content.Context import android.view.ViewGroup import com.squareup.picasso.Picasso -import com.tencent.iot.explorer.link.core.auth.entity.Device +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.core.demo.R import kotlinx.android.synthetic.main.item_device.view.* -class DeviceHolder : BaseHolder { +class DeviceHolder : BaseHolder { constructor(context: Context, root: ViewGroup, resLayout: Int) : super(context, root, resLayout) diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/FamilyHolder.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/FamilyHolder.kt index 603f99a19..8b3d58c90 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/FamilyHolder.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/FamilyHolder.kt @@ -2,12 +2,12 @@ package com.tencent.iot.explorer.link.core.demo.holder import android.content.Context import android.view.ViewGroup -import com.tencent.iot.explorer.link.core.auth.entity.Family +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.demo.App import com.tencent.iot.explorer.link.core.demo.R import kotlinx.android.synthetic.main.item_family.view.* -class FamilyHolder : BaseHolder { +class FamilyHolder : BaseHolder { constructor(context: Context, root: ViewGroup, resLayout: Int) : super(context, root, resLayout) diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/FamilyListFootHolder.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/FamilyListFootHolder.kt index 38d3d3c09..7d4f20b94 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/FamilyListFootHolder.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/FamilyListFootHolder.kt @@ -2,13 +2,13 @@ package com.tencent.iot.explorer.link.core.demo.holder import android.content.Context import android.view.ViewGroup -import com.tencent.iot.explorer.link.core.auth.entity.Family +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import kotlinx.android.synthetic.main.foot_family_list.view.* /** * 家庭 管理底部 */ -class FamilyListFootHolder : BaseHolder { +class FamilyListFootHolder : BaseHolder { constructor(context: Context, parent: ViewGroup, resId: Int) : super(context, parent, resId) diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/FamilyListHolder.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/FamilyListHolder.kt index 27a2924ea..b16785366 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/FamilyListHolder.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/FamilyListHolder.kt @@ -3,13 +3,13 @@ package com.tencent.iot.explorer.link.core.demo.holder import android.content.Context import android.view.View import android.view.ViewGroup -import com.tencent.iot.explorer.link.core.auth.entity.Family +import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import kotlinx.android.synthetic.main.item_family_list.view.* /** * 家庭管理列表 */ -class FamilyListHolder : BaseHolder { +class FamilyListHolder : BaseHolder { constructor(context: Context, parent: ViewGroup, resId: Int) : super(context, parent, resId) diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/RoomHolder.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/RoomHolder.kt index 4993f66b9..e676b0c4d 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/RoomHolder.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/RoomHolder.kt @@ -2,12 +2,12 @@ package com.tencent.iot.explorer.link.core.demo.holder import android.content.Context import android.view.ViewGroup -import com.tencent.iot.explorer.link.core.auth.entity.Room +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import com.tencent.iot.explorer.link.core.demo.App import com.tencent.iot.explorer.link.core.demo.R import kotlinx.android.synthetic.main.item_room.view.* -class RoomHolder : BaseHolder { +class RoomHolder : BaseHolder { constructor(context: Context, root: ViewGroup, resLayout: Int) : super(context, root, resLayout) diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/RoomListHolder.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/RoomListHolder.kt index 6efbde8e7..08ac74def 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/RoomListHolder.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/RoomListHolder.kt @@ -3,10 +3,10 @@ package com.tencent.iot.explorer.link.core.demo.holder import android.content.Context import android.view.View import android.view.ViewGroup -import com.tencent.iot.explorer.link.core.auth.entity.Room +import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import kotlinx.android.synthetic.main.item_room_list.view.* -class RoomListHolder : BaseHolder { +class RoomListHolder : BaseHolder { constructor(context: Context, root: ViewGroup, resLayout: Int) : super(context, root, resLayout) diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/ShareDeviceListRespone.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/ShareDeviceListRespone.kt index f0d118c8a..fe7cd7f2f 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/ShareDeviceListRespone.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/ShareDeviceListRespone.kt @@ -1,11 +1,11 @@ package com.tencent.iot.explorer.link.core.demo.response -import com.tencent.iot.explorer.link.core.auth.entity.Device +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity class ShareDeviceListRespone { var Total = 0 var RequestId = "" - var ShareDevices = ArrayList() + var ShareDevices = ArrayList() } \ No newline at end of file From ef262259263aa74ec02f0d3a20d0526e001cf206 Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Thu, 22 Oct 2020 14:25:10 +0800 Subject: [PATCH 032/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E4=BD=93=E9=AA=8C=E7=99=BB=E5=BD=95=E4=B8=8E=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E7=82=B9=E8=A7=A6=E4=BC=98=E5=8C=96=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://docs.qq.com/doc/DYUx5cmFqd1paa3Nv Change-Id: Ibe6130a9956b272326120c4268cbc066fd236f49 --- .../link/kitlink/activity/LoginActivity.kt | 4 ++ .../activity/ModifyPasswordActivity.kt | 50 +++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt index 15bb6ac3b..b473ca8a6 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt @@ -340,11 +340,15 @@ class LoginActivity : PActivity(), LoginView, View.OnClickListener, WeChatLogin private fun showVerifyCodeLogin() { tv_title.text = getString(R.string.verify_code_login) vp_login2.setCurrentItem(0, true) + verifyCodeLoginView.et_login_phone_or_email_byverifycode.setText(accoutPasswdLoginView.et_login_phone_or_email.text) + verifyCodeLoginView.et_login_phone_or_email_byverifycode.setSelection(verifyCodeLoginView.et_login_phone_or_email_byverifycode.text.toString().length) } private fun showPasswdLogin() { tv_title.text = getString(R.string.account_passwd_login) vp_login2.setCurrentItem(1, true) + accoutPasswdLoginView.et_login_phone_or_email.setText(verifyCodeLoginView.et_login_phone_or_email_byverifycode.text) + accoutPasswdLoginView.et_login_phone_or_email.setSelection(accoutPasswdLoginView.et_login_phone_or_email.text.toString().length) } private fun getUserId(user: User) { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPasswordActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPasswordActivity.kt index 2facb505b..ed20e9f51 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPasswordActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPasswordActivity.kt @@ -3,9 +3,11 @@ package com.tencent.iot.explorer.link.kitlink.activity import android.app.AlertDialog import android.content.DialogInterface import android.content.Intent +import android.os.Handler import android.text.TextUtils import android.view.LayoutInflater import android.view.View +import android.widget.TextView import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.ErrorMessage import com.tencent.iot.explorer.link.R @@ -14,6 +16,7 @@ import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.ModifyPasswordPresenter import com.tencent.iot.explorer.link.mvp.view.ModifyPasswordView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.utils.Utils import kotlinx.android.synthetic.main.activity_modify_password.* import kotlinx.android.synthetic.main.layout_modify_passwd_use_email.view.* import kotlinx.android.synthetic.main.layout_modify_passwd_use_email.view.tv_get_verify_code @@ -24,6 +27,7 @@ import kotlinx.android.synthetic.main.layout_modify_passwd_use_phone.view.iv_cle import kotlinx.android.synthetic.main.layout_modify_passwd_use_phone.view.iv_clear_verify_password import kotlinx.android.synthetic.main.layout_modify_passwd_use_phone.view.tv_set_password_hint import kotlinx.android.synthetic.main.layout_modify_passwd_use_phone.view.tv_set_verify_password_hint +import kotlinx.android.synthetic.main.layout_verify_code_login.view.* import kotlinx.android.synthetic.main.menu_back_layout.* class ModifyPasswordActivity : PActivity(), ModifyPasswordView, View.OnClickListener { @@ -31,6 +35,7 @@ class ModifyPasswordActivity : PActivity(), ModifyPasswordView, View.OnClickList private lateinit var presenter: ModifyPasswordPresenter private lateinit var modifyPasswdUsePhoneView: View private lateinit var modifyPasswdUseEmailView: View + private var handler: Handler = Handler() override fun getPresenter(): IPresenter? { return presenter @@ -76,6 +81,47 @@ class ModifyPasswordActivity : PActivity(), ModifyPasswordView, View.OnClickList btn_confirm_to_modify.setOnClickListener(this) } + var phoneSecondsCountDownCallback = object: Utils.SecondsCountDownCallback { + override fun currentSeconds(seconds: Int) { + handler.post(Runnable { + modifyPasswdUsePhoneView.tv_get_verify_code.setText(getString(R.string.resend) + "(${seconds}s)") + }) + } + + override fun countDownFinished() { + handler.post(Runnable { + modifyPasswdUsePhoneView.tv_get_verify_code.setText(getString(R.string.resend)) + enableTextView(modifyPasswdUsePhoneView.tv_get_verify_code, true) + }) + } + } + + var emailSecondsCountDownCallback = object: Utils.SecondsCountDownCallback { + override fun currentSeconds(seconds: Int) { + handler.post(Runnable { + modifyPasswdUseEmailView.tv_get_verify_code.setText(getString(R.string.resend) + "(${seconds}s)") + }) + } + + override fun countDownFinished() { + handler.post(Runnable { + modifyPasswdUseEmailView.tv_get_verify_code.setText(getString(R.string.resend)) + enableTextView(modifyPasswdUseEmailView.tv_get_verify_code, true) + }) + } + } + + private fun enableTextView(textView: TextView, enable: Boolean) { + if (textView == null) return + + if (enable) { + textView.setTextColor(resources.getColor(R.color.blue_0052d9)) + } else { + textView.setTextColor(resources.getColor(R.color.gray_bbbbbb)) + } + textView.isEnabled = enable + } + override fun onClick(v: View?) { when (v) { modifyPasswdUsePhoneView.tv_use_email_verify_code_to_modify -> { @@ -89,6 +135,8 @@ class ModifyPasswordActivity : PActivity(), ModifyPasswordView, View.OnClickList if (!TextUtils.isEmpty(account)) { presenter.setPhone(account) presenter.requestPhoneCode() + Utils.startCountBySeconds(60, phoneSecondsCountDownCallback) + enableTextView(modifyPasswdUsePhoneView.tv_get_verify_code, false) } else { T.show(getString(R.string.phone_empty)) } @@ -98,6 +146,8 @@ class ModifyPasswordActivity : PActivity(), ModifyPasswordView, View.OnClickList if (!TextUtils.isEmpty(account)) { presenter.setEmail(account) presenter.requestEmailCode() + Utils.startCountBySeconds(60, emailSecondsCountDownCallback) + enableTextView(modifyPasswdUseEmailView.tv_get_verify_code, false) } else { T.show(getString(R.string.email_empty)) } From e566f4cbb56e4ddb658cbdc85bfaaab8eacc30df Mon Sep 17 00:00:00 2001 From: archurtan Date: Thu, 22 Oct 2020 10:25:47 +0800 Subject: [PATCH 033/804] =?UTF-8?q?Link=20response=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ic8871bf26c277ad68aad43ac77b9e1da010d7498 --- .../com/tencent/iot/explorer/link/AppData.kt | 1 + .../link/kitlink/activity/AboutUsActivity.kt | 2 +- .../activity/AccountAndSafetyActivity.kt | 2 +- .../kitlink/activity/AddDeviceActivity.kt | 2 +- .../kitlink/activity/AddFamilyActivity.kt | 2 +- .../link/kitlink/activity/AddRoomActivity.kt | 2 +- .../link/kitlink/activity/AddTimerActivity.kt | 2 +- .../link/kitlink/activity/BaseActivity.kt | 2 +- .../activity/BindMobilePhoneActivity.kt | 2 +- .../activity/CommentDetailsActivity.kt | 2 +- .../kitlink/activity/ControlPanelActivity.kt | 2 +- .../activity/DeviceCategoryActivity.kt | 2 +- .../kitlink/activity/DeviceDetailsActivity.kt | 2 +- .../kitlink/activity/FamilyListActivity.kt | 4 +- .../link/kitlink/activity/FeedbackActivity.kt | 2 +- .../kitlink/activity/HelpWebViewActivity.kt | 2 +- .../kitlink/activity/InviteMemberActivity.kt | 2 +- .../link/kitlink/activity/LoginActivity.kt | 4 +- .../link/kitlink/activity/MainActivity.kt | 2 +- .../link/kitlink/activity/MemberActivity.kt | 2 +- .../link/kitlink/activity/RoomActivity.kt | 2 +- .../link/kitlink/activity/RoomListActivity.kt | 4 +- .../kitlink/activity/SelectRoomActivity.kt | 2 +- .../link/kitlink/activity/ShareActivity.kt | 2 +- .../kitlink/activity/ShareUserListActivity.kt | 2 +- .../link/kitlink/activity/TimeZoneActivity.kt | 2 +- .../link/kitlink/entity/DeviceDataEntity.kt | 10 -- .../kitlink/entity/DeviceProductEntity.kt | 45 ------ .../kitlink/entity/DevicePropertyEntity.kt | 9 +- .../link/kitlink/entity/PropertyEntity.kt | 142 ------------------ .../iot/explorer/link/kitlink/entity/User.kt | 13 -- .../link/kitlink/fragment/CommentFragment.kt | 5 +- .../link/kitlink/fragment/DeviceFragment.kt | 2 +- .../link/kitlink/fragment/MeFragment.kt | 2 +- .../link/kitlink/fragment/MessageFragment.kt | 2 +- .../link/kitlink/fragment/SCStepFragment.kt | 2 +- .../kitlink/fragment/SoftAppStepFragment.kt | 2 +- .../kitlink/fragment/SoftHotspotFragment.kt | 2 +- .../holder/ControlDarkEnumBigHolder.kt | 9 +- .../holder/ControlDarkEnumBigItemHolder.kt | 4 +- .../holder/ControlSimpleEnumBigHolder.kt | 4 +- .../holder/ControlSimpleEnumBigItemHolder.kt | 4 +- .../holder/ControlStandardEnumBigHolder.kt | 4 +- .../ControlStandardEnumBigItemHolder.kt | 4 +- .../link/kitlink/response/BaseResponse.kt | 26 ---- .../kitlink/response/ControlPanelResponse.kt | 14 -- .../kitlink/response/DeviceDataResponse.kt | 27 ---- .../kitlink/response/DeviceListResponse.kt | 9 -- .../kitlink/response/DeviceOnlineResponse.kt | 15 -- .../kitlink/response/DeviceProductResponse.kt | 13 -- .../kitlink/response/FamilyListResponse.kt | 14 -- .../link/kitlink/response/LoginResponse.kt | 14 -- .../link/kitlink/response/RoomListResponse.kt | 14 -- .../explorer/link/kitlink/util/HttpRequest.kt | 2 +- .../explorer/link/kitlink/util/MyCallback.kt | 2 +- .../link/mvp/model/AccountAndSafetyModel.kt | 2 +- .../explorer/link/mvp/model/BindEmailModel.kt | 2 +- .../explorer/link/mvp/model/BindPhoneModel.kt | 2 +- .../explorer/link/mvp/model/ConnectModel.kt | 2 +- .../link/mvp/model/ControlPanelModel.kt | 12 +- .../link/mvp/model/DeviceDetailModel.kt | 2 +- .../explorer/link/mvp/model/FamilyModel.kt | 2 +- .../link/mvp/model/ForgotPasswordModel.kt | 2 +- .../link/mvp/model/GetBindDeviceTokenModel.kt | 2 +- .../explorer/link/mvp/model/GetCodeModel.kt | 2 +- .../link/mvp/model/HomeFragmentModel.kt | 1 + .../iot/explorer/link/mvp/model/LoginModel.kt | 4 +- .../explorer/link/mvp/model/LogoutModel.kt | 2 +- .../explorer/link/mvp/model/MessageModel.kt | 2 +- .../link/mvp/model/ModifyEmailModel.kt | 2 +- .../link/mvp/model/ModifyPasswordModel.kt | 2 +- .../link/mvp/model/ModifyPhoneModel.kt | 2 +- .../explorer/link/mvp/model/RegisterModel.kt | 2 +- .../link/mvp/model/ResetPasswordModel.kt | 2 +- .../link/mvp/model/SetPasswordModel.kt | 2 +- .../explorer/link/mvp/model/TimerListModel.kt | 2 +- .../explorer/link/mvp/model/UploadModel.kt | 2 +- .../explorer/link/mvp/model/UserInfoModel.kt | 2 +- .../link/mvp/view/ControlPanelView.kt | 2 +- .../iot/explorer/link/mvp/view/LoginView.kt | 4 +- .../core/auth}/entity/ControlPanelEntity.kt | 7 +- .../{DeviceStatus.kt => DeviceDataEntity.kt} | 2 +- .../link/core/auth/entity/PanelConfig.kt | 21 --- .../link/core/auth/entity/PanelData.kt | 27 ---- .../link/core/auth/entity/PanelNavBar.kt | 30 ---- .../link/core/auth/entity/PanelProperty.kt | 18 --- .../entity/{Product.kt => ProductEntity.kt} | 2 +- .../link/core/auth/entity/ProductProperty.kt | 77 ++++++++++ .../link/core/auth/entity/Standard.kt | 15 -- .../explorer/link/core/auth/entity/User.kt | 2 + .../link/core/auth/impl/DeviceImpl.kt | 4 +- .../auth/response/ControlPanelResponse.kt | 5 +- .../core/auth/response/DeviceDataResponse.kt | 8 +- .../auth/response/DeviceOnlineResponse.kt | 2 +- .../auth/response/DeviceProductResponse.kt | 4 +- .../core/auth/response/FamilyListResponse.kt | 4 + .../link/core/auth/service/DeviceService.kt | 14 +- 97 files changed, 200 insertions(+), 577 deletions(-) delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceDataEntity.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceProductEntity.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/PropertyEntity.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/User.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/BaseResponse.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ControlPanelResponse.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceDataResponse.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceListResponse.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceOnlineResponse.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceProductResponse.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/FamilyListResponse.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/LoginResponse.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/RoomListResponse.kt rename {app/src/main/java/com/tencent/iot/explorer/link/kitlink => sdk/src/main/java/com/tencent/iot/explorer/link/core/auth}/entity/ControlPanelEntity.kt (88%) rename sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/{DeviceStatus.kt => DeviceDataEntity.kt} (85%) delete mode 100644 sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/PanelConfig.kt delete mode 100644 sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/PanelData.kt delete mode 100644 sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/PanelNavBar.kt delete mode 100644 sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/PanelProperty.kt rename sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/{Product.kt => ProductEntity.kt} (98%) delete mode 100644 sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Standard.kt diff --git a/app/src/main/java/com/tencent/iot/explorer/link/AppData.kt b/app/src/main/java/com/tencent/iot/explorer/link/AppData.kt index 7e5805f61..f5b217cc2 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/AppData.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/AppData.kt @@ -6,6 +6,7 @@ import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity +import com.tencent.iot.explorer.link.core.auth.entity.User import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.activity.BaseActivity import com.tencent.iot.explorer.link.kitlink.consts.CommonField diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AboutUsActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AboutUsActivity.kt index 6a8ad4439..23608066e 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AboutUsActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AboutUsActivity.kt @@ -13,11 +13,11 @@ import com.tencent.iot.explorer.link.customview.dialog.ProgressDialog import com.tencent.iot.explorer.link.customview.dialog.UpgradeDialog import com.tencent.iot.explorer.link.customview.dialog.UpgradeInfo import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.core.utils.FileUtils import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.utils.Utils import kotlinx.android.synthetic.main.activity_about_us.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AccountAndSafetyActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AccountAndSafetyActivity.kt index d35aeed9c..0ba99584e 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AccountAndSafetyActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AccountAndSafetyActivity.kt @@ -7,12 +7,12 @@ import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.entity.RegionEntity -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.* import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.AccountAndSafetyPresenter import com.tencent.iot.explorer.link.mvp.view.AccountAndSafetyView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.utils.Utils import kotlinx.android.synthetic.main.activity_account_and_safety.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddDeviceActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddDeviceActivity.kt index 8d8edb055..15824d553 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddDeviceActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddDeviceActivity.kt @@ -11,11 +11,11 @@ import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.link.entity.DeviceInfo import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import kotlinx.android.synthetic.main.activity_add_device.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddFamilyActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddFamilyActivity.kt index 1b782e813..0ea0f8575 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddFamilyActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddFamilyActivity.kt @@ -5,11 +5,11 @@ import android.text.TextUtils import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import kotlinx.android.synthetic.main.activity_add_family.* import kotlinx.android.synthetic.main.menu_cancel_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt index 2ad131bc6..991d88029 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt @@ -4,13 +4,13 @@ import android.text.TextUtils import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.CreateRoomResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import kotlinx.android.synthetic.main.activity_add_room.* import kotlinx.android.synthetic.main.menu_cancel_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddTimerActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddTimerActivity.kt index 58ad23e13..8b6fba404 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddTimerActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddTimerActivity.kt @@ -17,11 +17,11 @@ import com.tencent.iot.explorer.link.kitlink.holder.OnTimeChangedListener import com.tencent.iot.explorer.link.kitlink.popup.EditPopupWindow import com.tencent.iot.explorer.link.kitlink.popup.EnumPopupWindow import com.tencent.iot.explorer.link.kitlink.popup.NumberPopupWindow -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.holder.AddTimingFootHolder import kotlinx.android.synthetic.main.activity_add_timer.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BaseActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BaseActivity.kt index 7ff0081ea..14a2ba797 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BaseActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BaseActivity.kt @@ -12,10 +12,10 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.entity.User import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.core.utils.SharePreferenceUtil import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.entity.User import com.tencent.iot.explorer.link.customview.status.StatusBarUtil import java.util.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindMobilePhoneActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindMobilePhoneActivity.kt index 7aafca1f6..6bec33cae 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindMobilePhoneActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindMobilePhoneActivity.kt @@ -6,11 +6,11 @@ import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import kotlinx.android.synthetic.main.activity_bind_mobile_phone.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt index e64794ad1..780fa2caa 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt @@ -12,10 +12,10 @@ import com.alibaba.fastjson.JSON import com.alibaba.fastjson.JSONObject import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.utils.Utils import com.tencent.iot.explorer.link.customview.dialog.ShareOptionDialog import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.WeChatLogin diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ControlPanelActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ControlPanelActivity.kt index 1262d1aa7..ac9602bbd 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ControlPanelActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ControlPanelActivity.kt @@ -6,7 +6,7 @@ import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.kitlink.entity.NavBar +import com.tencent.iot.explorer.link.core.auth.entity.NavBar import com.tencent.iot.explorer.link.kitlink.popup.EnumPopupWindow import com.tencent.iot.explorer.link.kitlink.popup.NumberPopupWindow import com.tencent.iot.explorer.link.kitlink.theme.PanelThemeManager diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt index 602071b43..00f328533 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceCategoryActivity.kt @@ -28,11 +28,11 @@ import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.core.utils.Utils import com.tencent.iot.explorer.link.kitlink.fragment.DeviceFragment import com.tencent.iot.explorer.link.kitlink.holder.DeviceListViewHolder -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.DeviceCategoryListResponse import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.kitlink.customview.MyScrollView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceDetailsActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceDetailsActivity.kt index 65c64bc93..8b0afb0e2 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceDetailsActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DeviceDetailsActivity.kt @@ -6,7 +6,6 @@ import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.popup.CommonPopupWindow import com.tencent.iot.explorer.link.kitlink.popup.EditPopupWindow -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter @@ -15,6 +14,7 @@ import com.tencent.iot.explorer.link.mvp.view.DeviceDetailView import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import kotlinx.android.synthetic.main.activity_device_details.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyListActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyListActivity.kt index 357446496..e87e37b4f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyListActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FamilyListActivity.kt @@ -4,12 +4,12 @@ import android.view.View import android.view.ViewGroup import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse +import com.tencent.iot.explorer.link.core.auth.response.FamilyListResponse import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.holder.FamilyListFootHolder import com.tencent.iot.explorer.link.kitlink.holder.FamilyListViewHolder -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse -import com.tencent.iot.explorer.link.kitlink.response.FamilyListResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FeedbackActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FeedbackActivity.kt index e9ec9fcf0..295423735 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FeedbackActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FeedbackActivity.kt @@ -14,7 +14,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.holder.FeedbackViewHolder import com.tencent.iot.explorer.link.kitlink.popup.CameraPopupWindow -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.model.UploadModel @@ -22,6 +21,7 @@ import com.tencent.iot.explorer.link.mvp.view.UploadView import com.tencent.cos.xml.exception.CosXmlClientException import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageSelectorUtils import kotlinx.android.synthetic.main.activity_feedback.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/HelpWebViewActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/HelpWebViewActivity.kt index 6614a2339..e0001d56c 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/HelpWebViewActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/HelpWebViewActivity.kt @@ -21,7 +21,6 @@ import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.core.utils.FileUtils import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback @@ -30,6 +29,7 @@ import com.tencent.iot.explorer.link.kitlink.webview.BridgeImpl import com.tencent.iot.explorer.link.kitlink.webview.JSBridgeKt import com.tencent.iot.explorer.link.kitlink.webview.WebCallBack import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import kotlinx.android.synthetic.main.activity_help_feedback.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt index a928715a6..c8505fe37 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/InviteMemberActivity.kt @@ -6,13 +6,13 @@ import android.view.View import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.kitlink.response.UserInfoResponse import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import kotlinx.android.synthetic.main.activity_invite_member.* import kotlinx.android.synthetic.main.layout_email_register.view.* import kotlinx.android.synthetic.main.layout_phone_register.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt index b473ca8a6..fbc7e8235 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/LoginActivity.kt @@ -16,8 +16,6 @@ import com.tencent.iot.explorer.link.* import com.tencent.iot.explorer.link.core.utils.Utils import com.tencent.iot.explorer.link.customview.check.VerifyEdit import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.entity.User -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.UserInfoResponse import com.tencent.iot.explorer.link.kitlink.util.* import com.tencent.iot.explorer.link.mvp.IPresenter @@ -25,6 +23,8 @@ import com.tencent.iot.explorer.link.mvp.presenter.LoginPresenter import com.tencent.iot.explorer.link.mvp.view.LoginView import com.tencent.iot.explorer.link.core.utils.SharePreferenceUtil import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.entity.User +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.utils.KeyBoardUtils import kotlinx.android.synthetic.main.activity_login2.* import kotlinx.android.synthetic.main.layout_account_passwd_login.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt index f0375995e..2b64ca996 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MainActivity.kt @@ -15,7 +15,6 @@ import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.fragment.HomeFragment import com.tencent.iot.explorer.link.kitlink.fragment.MeFragment import com.tencent.iot.explorer.link.kitlink.popup.FamilyListPopup -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.android.tpush.XGIOperateCallback import com.tencent.android.tpush.XGPushConfig @@ -27,6 +26,7 @@ import com.tencent.iot.explorer.link.customview.dialog.UpgradeDialog import com.tencent.iot.explorer.link.customview.dialog.UpgradeInfo import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.utils.FileUtils import com.tencent.iot.explorer.link.customview.home.BottomItemEntity import com.tencent.iot.explorer.link.kitlink.consts.CommonField diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MemberActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MemberActivity.kt index 255d37b92..4c862fba1 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MemberActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MemberActivity.kt @@ -4,10 +4,10 @@ import android.view.View import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.entity.MemberEntity import com.tencent.iot.explorer.link.kitlink.popup.CommonPopupWindow -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomActivity.kt index 9512d917d..9ad4b60ef 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomActivity.kt @@ -6,13 +6,13 @@ import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.popup.CommonPopupWindow import com.tencent.iot.explorer.link.kitlink.popup.EditPopupWindow -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import kotlinx.android.synthetic.main.activity_room.* import kotlinx.android.synthetic.main.menu_back_layout.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomListActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomListActivity.kt index 438e37bea..8c33293b3 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomListActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/RoomListActivity.kt @@ -6,11 +6,11 @@ import android.view.ViewGroup import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse +import com.tencent.iot.explorer.link.core.auth.response.RoomListResponse import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.holder.RoomListFootHolder import com.tencent.iot.explorer.link.kitlink.holder.RoomListViewHolder -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse -import com.tencent.iot.explorer.link.kitlink.response.RoomListResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt index 2bbc5eff2..afcad5d4a 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SelectRoomActivity.kt @@ -7,12 +7,12 @@ import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.holder.WeekRepeatHolder -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.activity_select_room.* import kotlinx.android.synthetic.main.item_week_repeat.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt index 853bea716..0b14432bd 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareActivity.kt @@ -6,13 +6,13 @@ import android.view.View import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.kitlink.response.UserInfoResponse import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import kotlinx.android.synthetic.main.activity_share.* import kotlinx.android.synthetic.main.layout_email_register.view.* import kotlinx.android.synthetic.main.layout_phone_register.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareUserListActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareUserListActivity.kt index d1525c577..f36d45a34 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareUserListActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareUserListActivity.kt @@ -4,12 +4,12 @@ import android.view.View import android.view.ViewGroup import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.entity.ShareUserEntity import com.tencent.iot.explorer.link.kitlink.holder.ShareUserFootHolder import com.tencent.iot.explorer.link.kitlink.holder.ShareUserHeadHolder import com.tencent.iot.explorer.link.kitlink.holder.ShareUserHolder -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.ShareUserResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/TimeZoneActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/TimeZoneActivity.kt index 8972744ee..928cf516c 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/TimeZoneActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/TimeZoneActivity.kt @@ -13,10 +13,10 @@ import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.entity.TimeZoneEntity import com.tencent.iot.explorer.link.kitlink.holder.TimeZoneKeyViewHolder import com.tencent.iot.explorer.link.kitlink.holder.TimeZoneViewHolder -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.* import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.utils.Utils import kotlinx.android.synthetic.main.activity_time_zone.* import kotlinx.android.synthetic.main.activity_time_zone.my_side_bar diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceDataEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceDataEntity.kt deleted file mode 100644 index 099fb57c4..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceDataEntity.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.entity - -/** - * 设备当前状态实体 - */ -class DeviceDataEntity { - var id = "" - var value = "" - var LastUpdate = 0L -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceProductEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceProductEntity.kt deleted file mode 100644 index b5c897582..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DeviceProductEntity.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.entity - -import com.tencent.iot.explorer.link.core.auth.util.JsonManager - -/** - * 设备产品信息实体 - */ -class DeviceProductEntity { - - var ProductId = "" - var Name = "" - var Description = "" - var State = "" - var DataTemplate = "" - var AppTemplate = "" - var UpdateTime = 0L - - var myTemplate: Template? = null - - /** - * 解析DataTemplate数据 - */ - fun parseTemplate(): Template? { - JsonManager.parseJson(DataTemplate, Template::class.java)?.run { - myTemplate = this - } - return myTemplate - } - - class Template { - var version = "" - var profile = Profile() - var properties = arrayListOf() - var events = Any() - var actions = Any() - - - } - - class Profile { - var ProductId = "" - var CategoryId = "" - } -} - diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DevicePropertyEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DevicePropertyEntity.kt index bedbc2602..935dc6ceb 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DevicePropertyEntity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/DevicePropertyEntity.kt @@ -5,6 +5,7 @@ import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.utils.TemperatureUtils import com.tencent.iot.explorer.link.kitlink.util.DateUtils import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.entity.ProductProperty import java.lang.Exception /** @@ -21,10 +22,10 @@ class DevicePropertyEntity { var icon = "" //产品属性 - var numberEntity: PropertyEntity.NumberEntity? = null - var stringEntity: PropertyEntity.StringEntity? = null - var enumEntity: PropertyEntity.EnumEntity? = null - var boolEntity: PropertyEntity.BoolEntity? = null + var numberEntity: ProductProperty.NumberEntity? = null + var stringEntity: ProductProperty.StringEntity? = null + var enumEntity: ProductProperty.EnumEntity? = null + var boolEntity: ProductProperty.BoolEntity? = null var timestamp = false //数值类型:Int/Float diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/PropertyEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/PropertyEntity.kt deleted file mode 100644 index f98f2dca7..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/PropertyEntity.kt +++ /dev/null @@ -1,142 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.entity - -import com.alibaba.fastjson.JSON -import com.alibaba.fastjson.JSONObject -import com.tencent.iot.explorer.link.core.auth.util.JsonManager -import com.tencent.iot.explorer.link.core.log.L - -/** - * 产品属性 - */ -class PropertyEntity { - - var id = "" - var name = "" - var desc = "" - var required = true - var mode = "" - var define: JSONObject? = null - - fun getType(): String { - define?.let { - return it.getString("type") - } - return "" - } - - fun isNumberType(): Boolean { - if (getType() == "int" || getType() == "float") { - return true - } - return false - } - - fun isStringType(): Boolean { - if (getType() == "string") { - return true - } - return false - } - - fun isTimestampType(): Boolean { - if (getType() == "timestamp") { - return true - } - return false - } - - fun isEnumType(): Boolean { - if (getType() == "enum") { - return true - } - return false - } - - fun isBoolType(): Boolean { - if (getType() == "bool") { - return true - } - return false - } - - fun getNumberEntity(): NumberEntity? { - val json = JSON.toJSONString(define) - L.d("json=$json") - return JsonManager.parseJson(json, NumberEntity::class.java) - } - - fun getStringEntity(): StringEntity { - val json = JSON.toJSONString(define) - L.d("json=$json") - return JsonManager.parseJson(json, StringEntity::class.java) - } - - fun getEnumEntity(): EnumEntity { - val json = JSON.toJSONString(define) - L.d("json=$json") - return JsonManager.parseJson(json, EnumEntity::class.java) - } - - fun getBoolEntity(): BoolEntity { - val json = JSON.toJSONString(define) - L.d("json=$json") - return JsonManager.parseJson(json, BoolEntity::class.java) - } - - class NumberEntity { - var type = "" - var min = "0" - var max = "100" - var start = "" - var step = "" - var unit = "" - - fun getNumUnit(): String { - return if (unit == "oC") { - "℃" - } else if (unit == "oF") { - "℉" - } else { - unit - } - } - } - - class StringEntity { - var type = "" - var min = "0" - var max = "0" - } - - class EnumEntity { - var type = "" - var mapping: JSONObject? = null - - fun getValueText(value: String): String { - return mapping?.getString(value) ?: "" - } - - fun parseList(): ArrayList { - val list = arrayListOf() - mapping?.keys?.forEachIndexed { _, k -> - list.add(MappingEntity(mapping!!.getString(k), k)) - } - return list - } - } - - class BoolEntity { - var type = "" - var mapping: JSONObject? = null - - fun getValueText(value: String): String { - return mapping!!.getString(value) - } - } - - class MappingEntity(k: String, v: String) { - var key = k - var value = v - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/User.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/User.kt deleted file mode 100644 index 04cf55c77..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/User.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.entity - -/** - * 用户 - */ -class User { - - var ExpireAt = 0L - - var Token = "" - - var CancelAccountTime = 0L -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt index e667c7fa4..bd5eff739 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt @@ -1,9 +1,7 @@ package com.tencent.iot.explorer.link.kitlink.fragment import android.content.Intent -import android.graphics.Bitmap import android.net.Uri -import android.util.Log import android.view.View import android.view.ViewGroup import android.webkit.* @@ -11,14 +9,13 @@ import android.widget.LinearLayout import android.widget.ProgressBar import com.alibaba.fastjson.JSON import com.alibaba.fastjson.JSONObject -import com.example.qrcode.utils.CommonUtils import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.utils.Utils import com.tencent.iot.explorer.link.kitlink.activity.CommentDetailsActivity import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.webview.BridgeImpl diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt index ad06a3c94..238e3fa12 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt @@ -24,7 +24,6 @@ import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType import com.tencent.iot.explorer.link.kitlink.entity.CategoryDeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.ProdConfigDetailEntity import com.tencent.iot.explorer.link.kitlink.entity.RecommDeviceEntity -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.ProductsConfigResponse import com.tencent.iot.explorer.link.kitlink.response.RecommDeviceListResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest @@ -32,6 +31,7 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import kotlinx.android.synthetic.main.fragment_devices.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MeFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MeFragment.kt index 921348058..4e3672899 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MeFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MeFragment.kt @@ -5,12 +5,12 @@ import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.activity.* -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.UserInfoResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager import kotlinx.android.synthetic.main.fragment_me.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MessageFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MessageFragment.kt index 42317fda8..59b91f461 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MessageFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MessageFragment.kt @@ -10,7 +10,6 @@ import com.tencent.iot.explorer.link.kitlink.entity.MessageEntity import com.tencent.iot.explorer.link.kitlink.holder.MsgDeviceViewHolder import com.tencent.iot.explorer.link.kitlink.holder.MsgFamilyViewHolder import com.tencent.iot.explorer.link.kitlink.holder.MsgNotifyViewHolder -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.MessageListResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback @@ -18,6 +17,7 @@ import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.IPresenter import com.scwang.smart.refresh.layout.api.RefreshLayout import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.fragment_message.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt index 8361cf0c5..3a862aa9f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt @@ -13,12 +13,12 @@ import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType import com.tencent.iot.explorer.link.kitlink.entity.HardwareGuide import com.tencent.iot.explorer.link.kitlink.entity.ProdConfigDetailEntity -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.ProductsConfigResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import kotlinx.android.synthetic.main.smart_config_first.* /** diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftAppStepFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftAppStepFragment.kt index 6702093b2..b4f109200 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftAppStepFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftAppStepFragment.kt @@ -13,12 +13,12 @@ import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType import com.tencent.iot.explorer.link.kitlink.entity.HardwareGuide import com.tencent.iot.explorer.link.kitlink.entity.ProdConfigDetailEntity -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.ProductsConfigResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import kotlinx.android.synthetic.main.fragment_soft_ap_step.* class SoftAppStepFragment(type: Int, productId: String) : BaseFragment() { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftHotspotFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftHotspotFragment.kt index b57ec27d2..a12f3e95a 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftHotspotFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftHotspotFragment.kt @@ -13,12 +13,12 @@ import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType import com.tencent.iot.explorer.link.kitlink.entity.ConnectApGuide import com.tencent.iot.explorer.link.kitlink.entity.ProdConfigDetailEntity -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.ProductsConfigResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import kotlinx.android.synthetic.main.fragment_soft_hotspot.* class SoftHotspotFragment(type: Int, productId: String) : BaseFragment() { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkEnumBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkEnumBigHolder.kt index 8b3c00f74..13a01ef52 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkEnumBigHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkEnumBigHolder.kt @@ -1,18 +1,13 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context -import android.graphics.Color -import android.graphics.drawable.Drawable -import android.graphics.drawable.GradientDrawable -import android.graphics.drawable.shapes.Shape import android.view.View import android.view.ViewGroup -import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.entity.ProductProperty import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.kitlink.entity.PropertyEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerDivider import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_dark_big_enum.view.* @@ -26,7 +21,7 @@ class ControlDarkEnumBigHolder : CRecyclerView.CViewHolder constructor(context: Context, parent: ViewGroup, resId: Int) : super(context, parent, resId) - private var list: List? = null + private var list: List? = null var selectPosition = 0 override fun show(position: Int) { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkEnumBigItemHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkEnumBigItemHolder.kt index 6b2041e4d..25e1f7ec5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkEnumBigItemHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkEnumBigItemHolder.kt @@ -3,16 +3,16 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.PropertyEntity import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.ProductProperty import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_dark_big_enum_item.view.* /** * 暗黑主题:枚举类型大按钮item */ -class ControlDarkEnumBigItemHolder : CRecyclerView.CViewHolder { +class ControlDarkEnumBigItemHolder : CRecyclerView.CViewHolder { constructor( context: Context, diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleEnumBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleEnumBigHolder.kt index fdf759c72..76d1e0f0b 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleEnumBigHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleEnumBigHolder.kt @@ -6,8 +6,8 @@ import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.entity.ProductProperty import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.kitlink.entity.PropertyEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerDivider import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_simple_big_enum.view.* @@ -20,7 +20,7 @@ class ControlSimpleEnumBigHolder : CRecyclerView.CViewHolder? = null + private var list: List? = null var selectPosition = 0 override fun show(position: Int) { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleEnumBigItemHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleEnumBigItemHolder.kt index f19e0776a..ffa0b4984 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleEnumBigItemHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlSimpleEnumBigItemHolder.kt @@ -3,16 +3,16 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.PropertyEntity import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.ProductProperty import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_simple_big_enum_item.view.* /** * 标准主题:枚举类型大按钮item */ -class ControlSimpleEnumBigItemHolder : CRecyclerView.CViewHolder { +class ControlSimpleEnumBigItemHolder : CRecyclerView.CViewHolder { constructor( context: Context, diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardEnumBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardEnumBigHolder.kt index d07c7aceb..19e5be638 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardEnumBigHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardEnumBigHolder.kt @@ -6,8 +6,8 @@ import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.auth.entity.ProductProperty import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.kitlink.entity.PropertyEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerDivider import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_standard_big_enum.view.* @@ -20,7 +20,7 @@ class ControlStandardEnumBigHolder : CRecyclerView.CViewHolder? = null + private var list: List? = null var selectPosition = 0 override fun show(position: Int) { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardEnumBigItemHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardEnumBigItemHolder.kt index ecce1742f..c93b7bf28 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardEnumBigItemHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlStandardEnumBigItemHolder.kt @@ -3,16 +3,16 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.PropertyEntity import com.tencent.iot.explorer.link.DataHolder import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.entity.ProductProperty import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import kotlinx.android.synthetic.main.control_standard_big_enum_item.view.* /** * 简约主题:枚举类型大按钮item */ -class ControlStandardEnumBigItemHolder : CRecyclerView.CViewHolder { +class ControlStandardEnumBigItemHolder : CRecyclerView.CViewHolder { constructor( context: Context, diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/BaseResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/BaseResponse.kt deleted file mode 100644 index 87ce8b2da..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/BaseResponse.kt +++ /dev/null @@ -1,26 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.response - -import com.tencent.iot.explorer.link.core.auth.util.JsonManager - -/** - * 基础响应实体 - */ -class BaseResponse { - var code = -1 - var msg = "" - var data = Any() - - /** - * 请求成功 - */ - fun isSuccess(): Boolean { - return code == 0 - } - - /** - * 解析对应的实体 - */ - fun parse(clazz: Class): T? { - return JsonManager.parseJson(data.toString(), clazz) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ControlPanelResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ControlPanelResponse.kt deleted file mode 100644 index dc2b1eb1a..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ControlPanelResponse.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.response - -import com.tencent.iot.explorer.link.kitlink.entity.ControlPanelEntity - -/** - * 控制面板数据 - */ -class ControlPanelResponse { - - var Data: ArrayList? = null - - var RequestId = "" - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceDataResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceDataResponse.kt deleted file mode 100644 index f37e6685a..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceDataResponse.kt +++ /dev/null @@ -1,27 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.response - -import com.alibaba.fastjson.JSON -import com.tencent.iot.explorer.link.kitlink.entity.DeviceDataEntity - -/** - * 设备当前数据 - */ -class DeviceDataResponse { - - var Data = "" - var RequestId = "" - - fun parseList(): List { - val list = ArrayList() - val obj = JSON.parseObject(Data) - obj.keys.forEach { - val entity = DeviceDataEntity() - entity.id = it - entity.value = obj.getJSONObject(it).getString("Value") - entity.LastUpdate = obj.getJSONObject(it).getLong("LastUpdate") - list.add(entity) - } - return list - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceListResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceListResponse.kt deleted file mode 100644 index b74906bd1..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceListResponse.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.response - -import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity - -class DeviceListResponse { - var Total = 0 - var RequestId = "" - var DeviceList = ArrayList() -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceOnlineResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceOnlineResponse.kt deleted file mode 100644 index dadcfcc35..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceOnlineResponse.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.response - -import com.tencent.iot.explorer.link.core.auth.entity.DeviceOnlineEntity - -/** - * 设备在线状态响应实体 - */ -class DeviceOnlineResponse { - - var DeviceStatuses: List? = null - // var Devices = arrayListOf() -// var ProductId = "" - var RequestId = "" -// var TotalCnt = 0 -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceProductResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceProductResponse.kt deleted file mode 100644 index c437587a3..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/DeviceProductResponse.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.response - -import com.tencent.iot.explorer.link.kitlink.entity.DeviceProductEntity - -/** - * 设备产品信息响应实体 - */ -class DeviceProductResponse { - - var Products = arrayListOf() - var RequestId = "" - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/FamilyListResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/FamilyListResponse.kt deleted file mode 100644 index ea99190b4..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/FamilyListResponse.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.response - -import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity - -/** - * 家庭响应实体 - */ -class FamilyListResponse { - - var RequestId = "" - var FamilyList = arrayListOf() - var Total = 0 - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/LoginResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/LoginResponse.kt deleted file mode 100644 index 7e8970b0b..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/LoginResponse.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.response - -import com.tencent.iot.explorer.link.kitlink.entity.User - -/** - * 登录响应实体 - */ -class LoginResponse { - - var Data: User? = null - - var RequestId = "" - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/RoomListResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/RoomListResponse.kt deleted file mode 100644 index 7adb8b9ef..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/RoomListResponse.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.response - -import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity - -/** - * 房间列表响应实体 - */ -class RoomListResponse { - - var RequestId = "" - var Roomlist: List? = null - var Total = 0 - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpRequest.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpRequest.kt index f83669c1a..f5e2884f4 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpRequest.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/HttpRequest.kt @@ -8,9 +8,9 @@ import com.tencent.iot.explorer.link.core.link.entity.DeviceInfo import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.core.utils.IPUtil import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.utils.Utils import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.retrofit.StringRequest import java.util.* import com.tencent.iot.explorer.link.retrofit.Callback diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/MyCallback.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/MyCallback.kt index d400c04c1..2c839ed8b 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/MyCallback.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/MyCallback.kt @@ -1,6 +1,6 @@ package com.tencent.iot.explorer.link.kitlink.util -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse /** * 响应回调 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/AccountAndSafetyModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/AccountAndSafetyModel.kt index b174f9087..bf151f2c6 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/AccountAndSafetyModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/AccountAndSafetyModel.kt @@ -1,8 +1,8 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.App +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.UserInfoResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindEmailModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindEmailModel.kt index d4cc63c3e..3331365da 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindEmailModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindEmailModel.kt @@ -2,13 +2,13 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.ErrorMessage import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.BindEmailView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse class BindEmailModel(view: BindEmailView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindPhoneModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindPhoneModel.kt index e22437960..64e625121 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindPhoneModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/BindPhoneModel.kt @@ -3,13 +3,13 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.ErrorMessage import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.BindPhoneView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse class BindPhoneModel(view: BindPhoneView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ConnectModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ConnectModel.kt index bb13958ec..37dd6ec73 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ConnectModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ConnectModel.kt @@ -16,11 +16,11 @@ import com.tencent.iot.explorer.link.core.link.listener.SmartConfigListener import com.tencent.iot.explorer.link.core.link.listener.SoftAPListener import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.fragment.WifiFragment -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.* import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.ConnectView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse /** * 配网进度、绑定设备 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ControlPanelModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ControlPanelModel.kt index edfd78705..0a8859a04 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ControlPanelModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ControlPanelModel.kt @@ -4,8 +4,16 @@ import android.os.Handler import android.text.TextUtils import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.core.auth.IoTAuth +import com.tencent.iot.explorer.link.core.auth.entity.DeviceDataEntity +import com.tencent.iot.explorer.link.core.auth.entity.NavBar +import com.tencent.iot.explorer.link.core.auth.entity.ProductProperty +import com.tencent.iot.explorer.link.core.auth.entity.Property import com.tencent.iot.explorer.link.core.auth.message.payload.Payload import com.tencent.iot.explorer.link.core.auth.message.upload.ArrayString +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse +import com.tencent.iot.explorer.link.core.auth.response.ControlPanelResponse +import com.tencent.iot.explorer.link.core.auth.response.DeviceDataResponse +import com.tencent.iot.explorer.link.core.auth.response.DeviceProductResponse import com.tencent.iot.explorer.link.core.auth.socket.callback.ActivePushCallback import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.core.log.L @@ -40,7 +48,7 @@ class ControlPanelModel(view: ControlPanelView) : ParentModel( private val uiList = ArrayList() //产品信息 - private val propertyList = ArrayList() + private val propertyList = ArrayList() //设备当前信息 private val deviceDataList = arrayListOf() @@ -203,7 +211,7 @@ class ControlPanelModel(view: ControlPanelView) : ParentModel( devicePropertyList.forEachIndexed { _, devicePropertyEntity -> if (it.id == devicePropertyEntity.id) { devicePropertyEntity.setValue(it.value) - devicePropertyEntity.LastUpdate = it.LastUpdate + devicePropertyEntity.LastUpdate = it.lastUpdate return@checked } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/DeviceDetailModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/DeviceDetailModel.kt index 3e5e65cdc..b610a078a 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/DeviceDetailModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/DeviceDetailModel.kt @@ -1,8 +1,8 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.App +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.ParentModel diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/FamilyModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/FamilyModel.kt index de8e90b0a..aa028f530 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/FamilyModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/FamilyModel.kt @@ -3,7 +3,6 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.entity.FamilyInfoEntity import com.tencent.iot.explorer.link.kitlink.entity.MemberEntity -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.FamilyInfoResponse import com.tencent.iot.explorer.link.kitlink.response.MemberListResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest @@ -13,6 +12,7 @@ import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.FamilyView import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse /** * 家庭详情业务 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ForgotPasswordModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ForgotPasswordModel.kt index 8d8a10c9f..7156f64d0 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ForgotPasswordModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ForgotPasswordModel.kt @@ -3,13 +3,13 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.ForgotPasswordView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse class ForgotPasswordModel(view: ForgotPasswordView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/GetBindDeviceTokenModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/GetBindDeviceTokenModel.kt index d6447296c..808a4b393 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/GetBindDeviceTokenModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/GetBindDeviceTokenModel.kt @@ -2,8 +2,8 @@ package com.tencent.iot.explorer.link.mvp.model import android.text.TextUtils import com.tencent.iot.explorer.link.App +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.auth.response.BindDeviceTokenResponse -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.ParentModel diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/GetCodeModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/GetCodeModel.kt index e44d74b7b..985092926 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/GetCodeModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/GetCodeModel.kt @@ -3,9 +3,9 @@ package com.tencent.iot.explorer.link.mvp.model import android.os.Handler import android.text.TextUtils import com.tencent.iot.explorer.link.App +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.activity.SetPasswordActivity -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt index 3cb94c6b8..60f5f1254 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt @@ -16,6 +16,7 @@ import com.tencent.iot.explorer.link.mvp.view.HomeFragmentView import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity +import com.tencent.iot.explorer.link.core.auth.response.* class HomeFragmentModel(view: HomeFragmentView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LoginModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LoginModel.kt index 4f204a73e..a1107f479 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LoginModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LoginModel.kt @@ -5,14 +5,14 @@ import com.tencent.iot.explorer.link.ErrorMessage import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse -import com.tencent.iot.explorer.link.kitlink.response.LoginResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.LoginView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse +import com.tencent.iot.explorer.link.core.auth.response.LoginResponse class LoginModel(view: LoginView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LogoutModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LogoutModel.kt index b4179fc2f..558d8c730 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LogoutModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/LogoutModel.kt @@ -1,12 +1,12 @@ package com.tencent.iot.explorer.link.mvp.model -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.LogoutView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse class LogoutModel(view: LogoutView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/MessageModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/MessageModel.kt index fba63eebd..24b68759f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/MessageModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/MessageModel.kt @@ -1,8 +1,8 @@ package com.tencent.iot.explorer.link.mvp.model +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.entity.MessageEntity -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.MessageListResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyEmailModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyEmailModel.kt index bcc657910..c48fe6a86 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyEmailModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyEmailModel.kt @@ -2,13 +2,13 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.ErrorMessage import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.ModifyEmailView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse class ModifyEmailModel(view: ModifyEmailView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPasswordModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPasswordModel.kt index 11141264a..09ebbcfe1 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPasswordModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPasswordModel.kt @@ -3,13 +3,13 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.ErrorMessage import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.ModifyPasswordView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse class ModifyPasswordModel(view: ModifyPasswordView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPhoneModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPhoneModel.kt index bf024d7f5..0cc729846 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPhoneModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ModifyPhoneModel.kt @@ -3,13 +3,13 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.ErrorMessage import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.ModifyPhoneView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse class ModifyPhoneModel(view: ModifyPhoneView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/RegisterModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/RegisterModel.kt index 0838ac05e..5ceabad3c 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/RegisterModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/RegisterModel.kt @@ -3,13 +3,13 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.consts.SocketConstants -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.RegisterView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse class RegisterModel(view: RegisterView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ResetPasswordModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ResetPasswordModel.kt index 4fa0605fb..2092d9857 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ResetPasswordModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ResetPasswordModel.kt @@ -1,7 +1,7 @@ package com.tencent.iot.explorer.link.mvp.model +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.ParentModel diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/SetPasswordModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/SetPasswordModel.kt index 640494168..fbf6a3ac4 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/SetPasswordModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/SetPasswordModel.kt @@ -3,13 +3,13 @@ package com.tencent.iot.explorer.link.mvp.model import android.text.TextUtils import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.SetPasswordView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse /** * 设置密码 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt index 484c9cf77..6e714059a 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/TimerListModel.kt @@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSON import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.entity.TimerListEntity -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.TimerListResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback @@ -13,6 +12,7 @@ import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.TimerListView import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse /** * 云端定时列表业务 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/UploadModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/UploadModel.kt index 0685d34e6..1ee9ba612 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/UploadModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/UploadModel.kt @@ -4,7 +4,6 @@ import android.content.Context import android.text.TextUtils import com.alibaba.fastjson.JSONObject import com.tencent.iot.explorer.link.kitlink.response.AppCosAuthResponse -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.view.UploadView @@ -18,6 +17,7 @@ import com.tencent.cos.xml.model.CosXmlResult import com.tencent.cos.xml.transfer.COSXMLUploadTask import com.tencent.cos.xml.transfer.TransferConfig import com.tencent.cos.xml.transfer.TransferManager +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.log.L import com.tencent.qcloud.core.auth.QCloudCredentialProvider import com.tencent.qcloud.core.auth.QCloudCredentials diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/UserInfoModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/UserInfoModel.kt index ce24ee129..c5b30a25d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/UserInfoModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/UserInfoModel.kt @@ -3,7 +3,6 @@ package com.tencent.iot.explorer.link.mvp.model import android.content.Context import android.text.TextUtils import com.tencent.iot.explorer.link.App -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse import com.tencent.iot.explorer.link.kitlink.response.UserInfoResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback @@ -12,6 +11,7 @@ import com.tencent.iot.explorer.link.mvp.ParentModel import com.tencent.iot.explorer.link.mvp.view.UploadView import com.tencent.iot.explorer.link.mvp.view.UserInfoView import com.tencent.cos.xml.exception.CosXmlClientException +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.response.UserSettingResponse diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/view/ControlPanelView.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/view/ControlPanelView.kt index da750d520..6c7bc3cae 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/view/ControlPanelView.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/view/ControlPanelView.kt @@ -1,7 +1,7 @@ package com.tencent.iot.explorer.link.mvp.view import com.tencent.iot.explorer.link.mvp.ParentView -import com.tencent.iot.explorer.link.kitlink.entity.NavBar +import com.tencent.iot.explorer.link.core.auth.entity.NavBar interface ControlPanelView : ParentView { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/view/LoginView.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/view/LoginView.kt index 02ad46ee1..bce937229 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/view/LoginView.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/view/LoginView.kt @@ -1,8 +1,8 @@ package com.tencent.iot.explorer.link.mvp.view import com.tencent.iot.explorer.link.ErrorMessage -import com.tencent.iot.explorer.link.kitlink.entity.User -import com.tencent.iot.explorer.link.kitlink.response.BaseResponse +import com.tencent.iot.explorer.link.core.auth.entity.User +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.mvp.ParentView interface LoginView : ParentView { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ControlPanelEntity.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/ControlPanelEntity.kt similarity index 88% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ControlPanelEntity.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/ControlPanelEntity.kt index 5e6a1dc88..01aed3842 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ControlPanelEntity.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/ControlPanelEntity.kt @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.kitlink.entity +package com.tencent.iot.explorer.link.core.auth.entity import android.text.TextUtils import com.tencent.iot.explorer.link.core.auth.util.JsonManager @@ -11,7 +11,8 @@ class ControlPanelEntity { var ProductId = "" var Config = "" - var configEntity = ConfigEntity() + var configEntity = + ConfigEntity() fun parse(): ControlPanelEntity { JsonManager.parseJson(Config, ConfigEntity::class.java)?.let { @@ -64,6 +65,8 @@ class PanelEntity { * 面板主题 */ class Standard { + var theme = "" + var bgImgId = "" var navBar = NavBar() var properties = arrayListOf() var timingProject = false diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceStatus.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceDataEntity.kt similarity index 85% rename from sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceStatus.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceDataEntity.kt index 73707a1e0..a9fef507d 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceStatus.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceDataEntity.kt @@ -3,7 +3,7 @@ package com.tencent.iot.explorer.link.core.auth.entity /** * 设备状态 */ -class DeviceStatus { +class DeviceDataEntity { var id = "" var value = "" diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/PanelConfig.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/PanelConfig.kt deleted file mode 100644 index 9f2cf8f0a..000000000 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/PanelConfig.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.tencent.iot.explorer.link.core.auth.entity - -class PanelConfig { - - var profile = Profile() - var Global = "" - var Panel = PanelEntity() - var ShortCut = "" - var WifiSoftAP = "" - var DeviceInfo = "" - -} - -class Profile { - var ProductId = "" -} - -class PanelEntity { - var type = "" - var standard = Standard() -} \ No newline at end of file diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/PanelData.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/PanelData.kt deleted file mode 100644 index d4a97c654..000000000 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/PanelData.kt +++ /dev/null @@ -1,27 +0,0 @@ -package com.tencent.iot.explorer.link.core.auth.entity - -import com.tencent.iot.explorer.link.core.auth.util.JsonManager - -/** - * 面板实体 - */ -class PanelData { - - var ProductId = "" - var Config = "" - - var panelConfig = PanelConfig() - - fun parse(): PanelConfig { - JsonManager.parseJson(Config, PanelConfig::class.java)?.let { - panelConfig = it - } - return panelConfig - } - -} - - - - - diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/PanelNavBar.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/PanelNavBar.kt deleted file mode 100644 index a4fb22fd5..000000000 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/PanelNavBar.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.tencent.iot.explorer.link.core.auth.entity - -import android.text.TextUtils - - -/** - * 导航栏 - */ -class PanelNavBar { - - var visible = false - var templateId = "" - //是否显示导航 timingProject - var timingProject = false - - /** - * 是否显示导航 NavBar - */ - fun isShowNavBar(): Boolean { - return visible && (!TextUtils.isEmpty(templateId) || timingProject) - } - - /** - * 是否显示导航 templateId - */ - fun isShowTemplate(): Boolean { - return !TextUtils.isEmpty(templateId) - } - -} \ No newline at end of file diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/PanelProperty.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/PanelProperty.kt deleted file mode 100644 index 5731709b9..000000000 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/PanelProperty.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.tencent.iot.explorer.link.core.auth.entity - -class PanelProperty { - - // var big = false - var id = "" - var ui = UI() - - fun isBig(): Boolean { - return ui.type == "btn-big" - } - - class UI { - var type = "" - var icon = "" - } - -} \ No newline at end of file diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Product.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/ProductEntity.kt similarity index 98% rename from sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Product.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/ProductEntity.kt index 2f532ac0d..48af886b5 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Product.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/ProductEntity.kt @@ -5,7 +5,7 @@ import com.tencent.iot.explorer.link.core.auth.util.JsonManager /** * 设备归属的产品 */ -class Product { +class ProductEntity { var ProductId = "" var Name = "" diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/ProductProperty.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/ProductProperty.kt index e7e391f66..0b094e133 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/ProductProperty.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/ProductProperty.kt @@ -1,7 +1,9 @@ package com.tencent.iot.explorer.link.core.auth.entity import com.alibaba.fastjson.JSON +import com.alibaba.fastjson.JSONObject import com.tencent.iot.explorer.link.core.auth.util.JsonManager +import com.tencent.iot.explorer.link.core.log.L /** * 产品属性 @@ -81,6 +83,26 @@ class ProductProperty { } } + fun getNumberEntity(): NumberEntity? { + L.d("json=$define") + return JsonManager.parseJson(define, NumberEntity::class.java) + } + + fun getStringEntity(): StringEntity { + L.d("json=$define") + return JsonManager.parseJson(define, StringEntity::class.java) + } + + fun getEnumEntity(): EnumEntity { + L.d("json=$define") + return JsonManager.parseJson(define, EnumEntity::class.java) + } + + fun getBoolEntity(): BoolEntity { + L.d("json=$define") + return JsonManager.parseJson(define, BoolEntity::class.java) + } + /** * 获取type */ @@ -91,4 +113,59 @@ class ProductProperty { return JSON.parseObject(define)?.getString("type") ?: "timestamp" } + class NumberEntity { + var type = "" + var min = "0" + var max = "100" + var start = "" + var step = "" + var unit = "" + + fun getNumUnit(): String { + return if (unit == "oC") { + "℃" + } else if (unit == "oF") { + "℉" + } else { + unit + } + } + } + + class StringEntity { + var type = "" + var min = "0" + var max = "0" + } + + class EnumEntity { + var type = "" + var mapping: JSONObject? = null + + fun getValueText(value: String): String { + return mapping?.getString(value) ?: "" + } + + fun parseList(): ArrayList { + val list = arrayListOf() + mapping?.keys?.forEachIndexed { _, k -> + list.add(MappingEntity(mapping!!.getString(k), k)) + } + return list + } + } + + class BoolEntity { + var type = "" + var mapping: JSONObject? = null + + fun getValueText(value: String): String { + return mapping!!.getString(value) + } + } + + class MappingEntity(k: String, v: String) { + var key = k + var value = v + } } \ No newline at end of file diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Standard.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Standard.kt deleted file mode 100644 index 817c719d2..000000000 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/Standard.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.tencent.iot.explorer.link.core.auth.entity - -/** - * 面板主题 - */ -class Standard { - - var theme = "" - var bgImgId = "" - var navBar = PanelNavBar() - //面板数据 - var properties = arrayListOf() - var timingProject = false - -} diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/User.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/User.kt index fe9c92378..f9097ff1b 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/User.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/User.kt @@ -11,6 +11,8 @@ class User { var Token = "" + var CancelAccountTime = 0L + /** * 登录是否过期 */ diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/impl/DeviceImpl.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/impl/DeviceImpl.kt index cd3dbe24e..cc930e693 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/impl/DeviceImpl.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/impl/DeviceImpl.kt @@ -17,12 +17,12 @@ interface DeviceImpl { /** * 面板数据模板 */ - fun panelConfig(): PanelConfig? + fun panelConfig(): ConfigEntity? /** * 设备产品信息 */ - fun product(): Product? + fun product(): ProductEntity? /** * 清空数据 diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/ControlPanelResponse.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/ControlPanelResponse.kt index ae1a4e725..f5cce6561 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/ControlPanelResponse.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/ControlPanelResponse.kt @@ -1,13 +1,14 @@ package com.tencent.iot.explorer.link.core.auth.response -import com.tencent.iot.explorer.link.core.auth.entity.PanelData +import com.tencent.iot.explorer.link.core.auth.entity.ControlPanelEntity + /** * 控制面板数据 */ class ControlPanelResponse { - var Data: ArrayList? = null + var Data: ArrayList? = null var RequestId = "" diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceDataResponse.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceDataResponse.kt index 32cd8f36c..ea0b9976f 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceDataResponse.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceDataResponse.kt @@ -1,7 +1,7 @@ package com.tencent.iot.explorer.link.core.auth.response import com.alibaba.fastjson.JSON -import com.tencent.iot.explorer.link.core.auth.entity.DeviceStatus +import com.tencent.iot.explorer.link.core.auth.entity.DeviceDataEntity /** * 设备当前数据 @@ -11,11 +11,11 @@ class DeviceDataResponse { var Data = "" var RequestId = "" - fun parseList(): List { - val list = ArrayList() + fun parseList(): List { + val list = ArrayList() val obj = JSON.parseObject(Data) obj.keys.forEach { - val entity = DeviceStatus() + val entity = DeviceDataEntity() entity.id = it entity.value = obj.getJSONObject(it).getString("Value") entity.lastUpdate = obj.getJSONObject(it).getLong("LastUpdate") diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceOnlineResponse.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceOnlineResponse.kt index d2634524d..24605c48b 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceOnlineResponse.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceOnlineResponse.kt @@ -7,7 +7,7 @@ import com.tencent.iot.explorer.link.core.auth.entity.DeviceOnlineEntity */ class DeviceOnlineResponse { - var deviceStatuses: List? = null + var DeviceStatuses: List? = null // var ProductId = "" var RequestId = "" // var TotalCnt = 0 diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceProductResponse.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceProductResponse.kt index 88c561bc7..3a6f81636 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceProductResponse.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/DeviceProductResponse.kt @@ -1,13 +1,13 @@ package com.tencent.iot.explorer.link.core.auth.response -import com.tencent.iot.explorer.link.core.auth.entity.Product +import com.tencent.iot.explorer.link.core.auth.entity.ProductEntity /** * 设备产品信息响应实体 */ class DeviceProductResponse { - var Products = arrayListOf() + var Products = arrayListOf() var RequestId = "" } \ No newline at end of file diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/FamilyListResponse.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/FamilyListResponse.kt index 6d690eb0f..e33f60f64 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/FamilyListResponse.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/FamilyListResponse.kt @@ -2,6 +2,10 @@ package com.tencent.iot.explorer.link.core.auth.response import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity + +/** + * 家庭响应实体 + */ class FamilyListResponse { var RequestId = "" diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/service/DeviceService.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/service/DeviceService.kt index a6529d44c..c33ae987b 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/service/DeviceService.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/service/DeviceService.kt @@ -24,13 +24,13 @@ internal class DeviceService : BaseService(), DeviceImpl { /** * 面板初始对象 */ - private var panelConfig: PanelConfig? = null + private var panelConfig: ConfigEntity? = null private var hasPanel = false /** * 设备产品数据 */ - private var product: Product? = null + private var product: ProductEntity? = null private var hasProduct = false private var deviceName = "" @@ -39,11 +39,11 @@ internal class DeviceService : BaseService(), DeviceImpl { return panelList } - override fun panelConfig(): PanelConfig? { + override fun panelConfig(): ConfigEntity? { return panelConfig } - override fun product(): Product? { + override fun product(): ProductEntity? { return product } @@ -126,11 +126,11 @@ internal class DeviceService : BaseService(), DeviceImpl { override fun success(response: BaseResponse, reqCode: Int) { if (response.isSuccess()) { response.parse(DeviceOnlineResponse::class.java)?.run { - if (!deviceStatuses.isNullOrEmpty()) { + if (!DeviceStatuses.isNullOrEmpty()) { for (i in index until size) { IoTAuth.deviceList[i].run { run check@{ - deviceStatuses!!.forEach { + DeviceStatuses!!.forEach { if (DeviceId == it.DeviceId) { online = it.Online return@check @@ -306,7 +306,7 @@ internal class DeviceService : BaseService(), DeviceImpl { response.parse(ControlPanelResponse::class.java)?.Data?.let { if (it.isNotEmpty()) { it[0].parse().run { - panelConfig = this + panelConfig = this.configEntity hasPanel = true //合并数据 mergeData(callback) From 6d5a832736f9f124942954415dc5efe614e0c585 Mon Sep 17 00:00:00 2001 From: archurtan Date: Thu, 22 Oct 2020 17:02:32 +0800 Subject: [PATCH 034/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dsdkdemo=20crash?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Iec339c9131495b339364d457cc0e7af108e496d1 --- .../link/core/demo/activity/ControlPanelActivity.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ControlPanelActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ControlPanelActivity.kt index 66dd8ba88..cb7f1c59c 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ControlPanelActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ControlPanelActivity.kt @@ -300,7 +300,11 @@ class ControlPanelActivity : BaseActivity(), ControlPanelCallback, ActivePushCal } } numberPopup!!.showTitle(entity.name) - numberPopup!!.setProgress(entity.value.toDouble().toInt()) + if (entity.value.isNotEmpty()) { + numberPopup!!.setProgress(entity.value.toDouble().toInt()) + } else { + numberPopup!!.setProgress(0) + } numberPopup?.setBg(control_panel_bg) numberPopup?.show(control_panel) } From e22d845e1b34aecee0c702b116dda714fd50e29d Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Thu, 22 Oct 2020 19:03:36 +0800 Subject: [PATCH 035/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E4=BD=93=E9=AA=8C=E7=99=BB=E5=BD=95=E4=B8=8E=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E7=82=B9=E8=A7=A6=E4=BC=98=E5=8C=96=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=88=E8=A1=A5=E5=85=85=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://docs.qq.com/doc/DYUx5cmFqd1paa3Nv Change-Id: I08ae120e8fc85f9712af10d876a8c13013759885 --- .../kitlink/activity/BindEmailActivity.kt | 8 +++ .../kitlink/activity/BindPhoneActivity.kt | 6 +++ .../kitlink/activity/ModifyEmailActivity.kt | 6 +++ .../activity/ModifyPasswordActivity.kt | 51 +++---------------- .../kitlink/activity/ModifyPhoneActivity.kt | 5 ++ .../link/kitlink/activity/UserInfoActivity.kt | 23 --------- .../link/kitlink/util/AutomicUtils.kt | 41 +++++++++++++++ 7 files changed, 72 insertions(+), 68 deletions(-) create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/AutomicUtils.kt diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindEmailActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindEmailActivity.kt index 3a9733e07..bc59fed79 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindEmailActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindEmailActivity.kt @@ -1,5 +1,6 @@ package com.tencent.iot.explorer.link.kitlink.activity +import android.os.Handler import android.text.TextUtils import android.view.View import com.tencent.iot.explorer.link.App @@ -9,12 +10,17 @@ import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.BindEmailPresenter import com.tencent.iot.explorer.link.mvp.view.BindEmailView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.kitlink.util.AutomicUtils import kotlinx.android.synthetic.main.activity_bind_email.* +import kotlinx.android.synthetic.main.activity_bind_email.tv_get_verify_code +import kotlinx.android.synthetic.main.activity_modify_email.* import kotlinx.android.synthetic.main.menu_back_layout.* class BindEmailActivity : PActivity(), BindEmailView, View.OnClickListener { private lateinit var presenter: BindEmailPresenter + private var hanlder = Handler() + override fun getPresenter(): IPresenter? { return presenter @@ -55,6 +61,8 @@ class BindEmailActivity : PActivity(), BindEmailView, View.OnClickListener { if (!TextUtils.isEmpty(account)) { presenter.setEmail(account) presenter.requestEmailVerifyCode() + AutomicUtils.automicChangeStatus(this, hanlder, tv_get_verify_code, 60) + } else { T.show(getString(R.string.email_empty)) } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindPhoneActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindPhoneActivity.kt index 4f634e807..196607dac 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindPhoneActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/BindPhoneActivity.kt @@ -1,6 +1,7 @@ package com.tencent.iot.explorer.link.kitlink.activity import android.content.Intent +import android.os.Handler import android.text.TextUtils import android.view.View import com.tencent.iot.explorer.link.App @@ -11,6 +12,7 @@ import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.BindPhonePresenter import com.tencent.iot.explorer.link.mvp.view.BindPhoneView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.kitlink.util.AutomicUtils import kotlinx.android.synthetic.main.activity_bind_phone.* import kotlinx.android.synthetic.main.activity_bind_phone.et_set_password import kotlinx.android.synthetic.main.activity_bind_phone.et_verify_set_password @@ -19,11 +21,13 @@ import kotlinx.android.synthetic.main.activity_bind_phone.iv_clear_verify_passwo import kotlinx.android.synthetic.main.activity_bind_phone.line2_set_pwd import kotlinx.android.synthetic.main.activity_bind_phone.line_set_pwd import kotlinx.android.synthetic.main.activity_bind_phone.tv_get_verify_code +import kotlinx.android.synthetic.main.activity_modify_phone.* import kotlinx.android.synthetic.main.menu_back_layout.* class BindPhoneActivity : PActivity(), BindPhoneView, View.OnClickListener { private lateinit var presenter: BindPhonePresenter + private var hanlder = Handler() override fun getPresenter(): IPresenter? { return presenter @@ -73,6 +77,8 @@ class BindPhoneActivity : PActivity(), BindPhoneView, View.OnClickListener { if (!TextUtils.isEmpty(account)) { presenter.setPhone(account) presenter.requestPhoneCode() + AutomicUtils.automicChangeStatus(this, hanlder, tv_get_verify_code, 60) + } else { T.show(getString(R.string.phone_empty)) } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyEmailActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyEmailActivity.kt index 379a27fd5..763326f53 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyEmailActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyEmailActivity.kt @@ -1,5 +1,6 @@ package com.tencent.iot.explorer.link.kitlink.activity +import android.os.Handler import android.text.TextUtils import android.view.View import com.tencent.iot.explorer.link.ErrorMessage @@ -8,14 +9,17 @@ import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.ModifyEmailPresenter import com.tencent.iot.explorer.link.mvp.view.ModifyEmailView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.kitlink.util.AutomicUtils import kotlinx.android.synthetic.main.activity_modify_email.* import kotlinx.android.synthetic.main.activity_modify_email.btn_confirm_to_modify import kotlinx.android.synthetic.main.activity_modify_email.tv_get_verify_code +import kotlinx.android.synthetic.main.activity_modify_phone.* import kotlinx.android.synthetic.main.menu_back_layout.* class ModifyEmailActivity : PActivity(), ModifyEmailView, View.OnClickListener { private lateinit var presenter: ModifyEmailPresenter + private var hanlder = Handler() override fun getPresenter(): IPresenter? { return presenter @@ -50,6 +54,8 @@ class ModifyEmailActivity : PActivity(), ModifyEmailView, View.OnClickListener if (!TextUtils.isEmpty(account)) { presenter.setEmail(account) presenter.requestEmailVerifyCode() + AutomicUtils.automicChangeStatus(this, hanlder, tv_get_verify_code, 60) + } else { T.show(getString(R.string.email_empty)) } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPasswordActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPasswordActivity.kt index ed20e9f51..d565b2e2d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPasswordActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPasswordActivity.kt @@ -17,6 +17,7 @@ import com.tencent.iot.explorer.link.mvp.presenter.ModifyPasswordPresenter import com.tencent.iot.explorer.link.mvp.view.ModifyPasswordView import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.core.utils.Utils +import com.tencent.iot.explorer.link.kitlink.util.AutomicUtils import kotlinx.android.synthetic.main.activity_modify_password.* import kotlinx.android.synthetic.main.layout_modify_passwd_use_email.view.* import kotlinx.android.synthetic.main.layout_modify_passwd_use_email.view.tv_get_verify_code @@ -81,47 +82,6 @@ class ModifyPasswordActivity : PActivity(), ModifyPasswordView, View.OnClickList btn_confirm_to_modify.setOnClickListener(this) } - var phoneSecondsCountDownCallback = object: Utils.SecondsCountDownCallback { - override fun currentSeconds(seconds: Int) { - handler.post(Runnable { - modifyPasswdUsePhoneView.tv_get_verify_code.setText(getString(R.string.resend) + "(${seconds}s)") - }) - } - - override fun countDownFinished() { - handler.post(Runnable { - modifyPasswdUsePhoneView.tv_get_verify_code.setText(getString(R.string.resend)) - enableTextView(modifyPasswdUsePhoneView.tv_get_verify_code, true) - }) - } - } - - var emailSecondsCountDownCallback = object: Utils.SecondsCountDownCallback { - override fun currentSeconds(seconds: Int) { - handler.post(Runnable { - modifyPasswdUseEmailView.tv_get_verify_code.setText(getString(R.string.resend) + "(${seconds}s)") - }) - } - - override fun countDownFinished() { - handler.post(Runnable { - modifyPasswdUseEmailView.tv_get_verify_code.setText(getString(R.string.resend)) - enableTextView(modifyPasswdUseEmailView.tv_get_verify_code, true) - }) - } - } - - private fun enableTextView(textView: TextView, enable: Boolean) { - if (textView == null) return - - if (enable) { - textView.setTextColor(resources.getColor(R.color.blue_0052d9)) - } else { - textView.setTextColor(resources.getColor(R.color.gray_bbbbbb)) - } - textView.isEnabled = enable - } - override fun onClick(v: View?) { when (v) { modifyPasswdUsePhoneView.tv_use_email_verify_code_to_modify -> { @@ -135,8 +95,8 @@ class ModifyPasswordActivity : PActivity(), ModifyPasswordView, View.OnClickList if (!TextUtils.isEmpty(account)) { presenter.setPhone(account) presenter.requestPhoneCode() - Utils.startCountBySeconds(60, phoneSecondsCountDownCallback) - enableTextView(modifyPasswdUsePhoneView.tv_get_verify_code, false) + AutomicUtils.automicChangeStatus(this@ModifyPasswordActivity, + handler, modifyPasswdUsePhoneView.tv_get_verify_code, 60) } else { T.show(getString(R.string.phone_empty)) } @@ -146,8 +106,9 @@ class ModifyPasswordActivity : PActivity(), ModifyPasswordView, View.OnClickList if (!TextUtils.isEmpty(account)) { presenter.setEmail(account) presenter.requestEmailCode() - Utils.startCountBySeconds(60, emailSecondsCountDownCallback) - enableTextView(modifyPasswdUseEmailView.tv_get_verify_code, false) + + AutomicUtils.automicChangeStatus(this@ModifyPasswordActivity, + handler, modifyPasswdUseEmailView.tv_get_verify_code, 60) } else { T.show(getString(R.string.email_empty)) } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPhoneActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPhoneActivity.kt index e32c0b3a5..2776ed2ce 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPhoneActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ModifyPhoneActivity.kt @@ -1,6 +1,7 @@ package com.tencent.iot.explorer.link.kitlink.activity import android.content.Intent +import android.os.Handler import android.text.TextUtils import android.view.View import com.tencent.iot.explorer.link.ErrorMessage @@ -10,13 +11,16 @@ import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.ModifyPhonePresenter import com.tencent.iot.explorer.link.mvp.view.ModifyPhoneView import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.kitlink.util.AutomicUtils import kotlinx.android.synthetic.main.activity_modify_phone.* import kotlinx.android.synthetic.main.activity_modify_phone.tv_get_verify_code +import kotlinx.android.synthetic.main.layout_modify_passwd_use_email.view.* import kotlinx.android.synthetic.main.menu_back_layout.* class ModifyPhoneActivity : PActivity(), ModifyPhoneView, View.OnClickListener { private lateinit var presenter: ModifyPhonePresenter + private var hanlder = Handler() override fun getPresenter(): IPresenter? { return presenter @@ -59,6 +63,7 @@ class ModifyPhoneActivity : PActivity(), ModifyPhoneView, View.OnClickListener if (!TextUtils.isEmpty(account)) { presenter.setPhone(account) presenter.requestPhoneCode() + AutomicUtils.automicChangeStatus(this, hanlder, tv_get_verify_code, 60) } else { T.show(getString(R.string.phone_empty)) } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/UserInfoActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/UserInfoActivity.kt index 64e5fa9d4..00e30629a 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/UserInfoActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/UserInfoActivity.kt @@ -157,29 +157,6 @@ class UserInfoActivity : PActivity(), UserInfoView, View.OnClickListener, View.O popupWindow?.show(user_info) } - private fun showCommonPopup() { - if (commonPopupWindow == null) { - commonPopupWindow = CommonPopupWindow(this) - } - commonPopupWindow?.setBg(user_info_popup_bg) - commonPopupWindow?.setCommonParams( - getString(R.string.please_bind_title), - getString(R.string.please_bind_content) - ) - commonPopupWindow?.setMenuText("", getString(R.string.bind)) - commonPopupWindow?.onKeyListener = object : CommonPopupWindow.OnKeyListener { - override fun cancel(popupWindow: CommonPopupWindow) { - popupWindow.dismiss() - } - - override fun confirm(popupWindow: CommonPopupWindow) { - jumpActivity(BindMobilePhoneActivity::class.java) - popupWindow.dismiss() - } - } - commonPopupWindow?.show(user_info) - } - private fun showEditPopup() { if (editPopupWindow == null) { editPopupWindow = EditPopupWindow(this) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/AutomicUtils.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/AutomicUtils.kt new file mode 100644 index 000000000..607d3718b --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/AutomicUtils.kt @@ -0,0 +1,41 @@ +package com.tencent.iot.explorer.link.kitlink.util + +import android.content.Context +import android.os.Handler +import android.widget.TextView +import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.core.utils.Utils + +object AutomicUtils { + + private fun enableTextView(context: Context, textView: TextView, enable: Boolean) { + if (textView == null) return + + if (enable) { + textView.setTextColor(context.resources.getColor(R.color.blue_0052d9)) + } else { + textView.setTextColor(context.resources.getColor(R.color.gray_bbbbbb)) + } + textView.isEnabled = enable + } + + fun automicChangeStatus(context: Context, handler: Handler, textView: TextView, seconds: Int) { + var secondsCountDownCallback = object: Utils.SecondsCountDownCallback { + override fun currentSeconds(seconds: Int) { + handler.post(Runnable { + textView.setText(context.getString(R.string.resend) + "(${seconds}s)") + }) + } + + override fun countDownFinished() { + handler.post(Runnable { + textView.setText(context.getString(R.string.resend)) + enableTextView(context, textView, true) + }) + } + } + + Utils.startCountBySeconds(seconds, secondsCountDownCallback) + enableTextView(context, textView, false) + } +} \ No newline at end of file From 0c38d6d8e6fae51dc99d3045cee73d9a06eb8178 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eagleychen=28=E9=99=88=E9=B9=B0=29?= Date: Fri, 16 Oct 2020 16:49:45 +0800 Subject: [PATCH 036/804] =?UTF-8?q?=E5=AE=8C=E5=96=84Android=20App=20OEM?= =?UTF-8?q?=E4=BF=A1=E9=B8=BD=E6=8E=A8=E9=80=81=E6=96=87=E6=A1=A3=E6=8C=87?= =?UTF-8?q?=E5=BC=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I29ea8f89a498ef31c6cb2749a2bd725c2764a436 --- README.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a773de9d6..145a023ad 100644 --- a/README.md +++ b/README.md @@ -34,10 +34,22 @@ app-config.json 需要配置的内容,如下: **2、信鸽(可选)** -连连开源体验版集成了**信鸽推送**,用于实现消息推送。 +  腾讯连连开源体验版集成了**信鸽推送**,用于实现消息推送。 -* 若确认使用推送功能,需要前往[信鸽推送平台](https://cloud.tencent.com/product/tpns?fromSource=gwzcw.2454256.2454256.2454256&utm_medium=cpc&utm_id=gwzcw.2454256.2454256.2454256)申请获得的 **AccessID** 和 **AccessKey**,[申请步骤](https://cloud.tencent.com/product/tpns/getting-started)。 * 若不使用推送功能,**XgAccessId** 和 **XgAccessKey** 设置为**长度为0的字符串**即可。 +* 若确认使用推送功能,需要前往[信鸽推送平台](https://cloud.tencent.com/product/tpns?fromSource=gwzcw.2454256.2454256.2454256&utm_medium=cpc&utm_id=gwzcw.2454256.2454256.2454256)申请获得的 **AccessID** 和 **AccessKey**,[申请步骤](https://cloud.tencent.com/product/tpns/getting-started)。 +* 将申请获得的 **AccessID** 和 **AccessKey**,填写到[物联网开发平台中](https://console.cloud.tencent.com/iotexplorer/project/prj-hwcjnzaa/app/list) +* 将申请获得的 **AccessID** 和 **AccessKey**,写入在app-config.json文件中对应位置。 + +```json +{ + "WXAccessAppId": "", + "TencentIotLinkAppkey": "请输入从物联网开发平台申请的Appkey, 正式发布前务必填写", + "TencentIotLinkAppSecret": "请输入从物联网开发平台申请的AppSecrect, AppSecrect请保存在服务端,此处仅为演示,如有泄露概不负责", + "XgAccessId": "请输入从信鸽推送平台申请的AccessID", + "XgAccessKey": "请输入从信鸽推送平台申请的AccessKey" +} +``` **3、Firebase(可选)** From 59a19bb5ae0fd6011d7822b68461873b9456b0d2 Mon Sep 17 00:00:00 2001 From: archurtan Date: Thu, 22 Oct 2020 19:49:37 +0800 Subject: [PATCH 037/804] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I1424ed870542570b02c370f31f0ab8d310aff5ee --- .../link/kitlink/entity/ParentRespEntity.kt | 109 ------- .../link/kitlink/fragment/SceneFragment.kt | 18 -- .../kitlink/holder/ControlDarkCloudHolder.kt | 22 -- .../kitlink/holder/ControlDarkLongHolder.kt | 29 -- .../kitlink/holder/ControlDarkMediumHolder.kt | 48 --- .../holder/ControlDarkNumberBigHolder.kt | 50 ---- .../kitlink/holder/ControlDarkSmallHolder.kt | 48 --- .../holder/ControlDarkSwitchBigHolder.kt | 70 ----- .../holder/ControlDarkSwitchLongHolder.kt | 30 -- app/src/main/res/layout/fragment_scene.xml | 13 - .../core/auth/socket/JWebSocketClient1.kt | 117 -------- .../link/core/auth/socket/WSClientManager1.kt | 283 ------------------ 12 files changed, 837 deletions(-) delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ParentRespEntity.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SceneFragment.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkCloudHolder.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkLongHolder.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkMediumHolder.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkNumberBigHolder.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSmallHolder.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchBigHolder.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchLongHolder.kt delete mode 100644 app/src/main/res/layout/fragment_scene.xml delete mode 100644 sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/socket/JWebSocketClient1.kt delete mode 100644 sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/socket/WSClientManager1.kt diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ParentRespEntity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ParentRespEntity.kt deleted file mode 100644 index bd1a47448..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ParentRespEntity.kt +++ /dev/null @@ -1,109 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.entity - -import android.text.TextUtils -import com.alibaba.fastjson.JSON -import com.alibaba.fastjson.JSONArray -import com.alibaba.fastjson.JSONObject -import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import java.lang.Exception - -/** - * WebSocket通用响应实体 - */ -class ParentRespEntity { - var error = "" - var error_message = "" - var data: JSONObject? = null - var reqId = -1 - - fun toShow(): String { - return "error:${error}error_message:${error_message}data:$data" - } - - fun getResponse(): JSONObject? { - try { - if (data == null) return null - val response = data!!.getString(CommonField.RESPONSE) - if (TextUtils.isEmpty(response)) return null - return JSON.parseObject(response) - } catch (e: Exception) { - e.printStackTrace() - } - return null - } - - fun getResponseKeyObj(key: String): JSONObject? { - val obj = getResponse() - if (obj != null) { - return obj.getJSONObject(key) - } - return null - } - - fun getResponseKeyArray(key: String): JSONArray? { - val obj = getResponse() - if (obj != null) { - return obj.getJSONArray(key) - } - return null - } - - /** - * 获得响应结果中的template字段的数据 - */ - fun getResponseTemplate(): JSONObject? { - val obj = getResponse() - if (obj != null) { - val products = obj.getJSONArray(CommonField.PRODUCTS) - if (products.isNullOrEmpty()) return null - val json = JSON.parseObject(products[0].toString()).getString(CommonField.DATA_TEMPLATE) - L.d("template=$json") - return JSON.parseObject(json) - } - return null - } - - fun getResponse(key: String): String { - val obj = getResponse() - return if (obj == null) { - "" - } else { - if (TextUtils.isEmpty(obj.getString(key))) { - "" - } else { - obj.getString(key) - } - } - } - - fun getResponseError(): JSONObject? { - try { - if (data == null) return null - val response = data!!.getString(CommonField.RESPONSE) - if (TextUtils.isEmpty(response)) return null - val respObj = JSON.parseObject(response) - return respObj.getJSONObject(CommonField.ERROR) - } catch (e: Exception) { - e.printStackTrace() - } - return null - } - - fun getResponseErrorMessage(): String { - return getResponseError(CommonField.MESSAGE) - } - - fun getResponseError(key: String): String { - val entity = getResponseError() - return if (entity == null) { - "" - } else { - if (TextUtils.isEmpty(entity.getString(key))) { - "" - } else { - entity.getString(key) - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SceneFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SceneFragment.kt deleted file mode 100644 index 972e3994e..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SceneFragment.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.fragment - -import android.view.View -import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.mvp.IPresenter - -class SceneFragment : BaseFragment() { - override fun getContentView(): Int { - return R.layout.fragment_scene - } - - override fun getPresenter(): IPresenter? { - return null - } - - override fun startHere(view: View) { - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkCloudHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkCloudHolder.kt deleted file mode 100644 index b9eddeb3b..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkCloudHolder.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.holder - -import android.content.Context -import android.view.View -import android.view.ViewGroup -import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView -import kotlinx.android.synthetic.main.control_dark_long.view.* - -/** - * 云端定时长按钮 - */ -class ControlDarkCloudHolder : CRecyclerView.FootViewHolder { - - constructor(context: Context, parent: ViewGroup, resId: Int) : super(context, parent, resId) - - override fun show() { - itemView.tv_dark_long_name.text = getString(R.string.cloud_timing) - itemView.tv_dark_long_value.visibility = View.INVISIBLE - itemView.setOnClickListener { footListener?.doAction(this, it, 0) } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkLongHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkLongHolder.kt deleted file mode 100644 index 9d8815acd..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkLongHolder.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.holder - -import android.content.Context -import android.view.ViewGroup -import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView -import kotlinx.android.synthetic.main.control_dark_long.view.* - -/** - * 暗黑主题长按钮:布尔类型之外 - */ -class ControlDarkLongHolder : CRecyclerView.CViewHolder { - - constructor(context: Context, parent: ViewGroup, resId: Int) : super(context, parent, resId) - - override fun show(position: Int) { - entity?.run { - itemView.tv_dark_long_name.text = name - itemView.tv_dark_long_value.text = getValueText() - when (id) { - "color" -> itemView.iv_dark_long.setImageResource(R.mipmap.icon_control_color) - else -> itemView.iv_dark_long.setImageResource(R.mipmap.icon_control_brightness) - } - } - itemView.setOnClickListener { recyclerItemView?.doAction(this, it, position) } - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkMediumHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkMediumHolder.kt deleted file mode 100644 index 32f48f952..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkMediumHolder.kt +++ /dev/null @@ -1,48 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.holder - -import android.content.Context -import android.view.View -import android.view.ViewGroup -import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView -import kotlinx.android.synthetic.main.control_dark_medium.view.* - -/** - * 暗黑主题中按钮 - */ -class ControlDarkMediumHolder : CRecyclerView.CViewHolder { - - constructor(context: Context, parent: ViewGroup, resId: Int) : super(context, parent, resId) - - override fun show(position: Int) { - entity?.run { - itemView.tv_dark_medium_name.text = name - if (isBoolType()) { - itemView.dark_medium_switch.visibility = View.VISIBLE - itemView.tv_dark_medium_value.visibility = View.GONE - itemView.iv_dark_medium_next.visibility = View.GONE - itemView.dark_medium_switch.isChecked = (getValue() == "1") - itemView.dark_medium_switch.setOnClickListener { - recyclerItemView?.doAction(this@ControlDarkMediumHolder, it, position) - } - itemView.setOnClickListener(null) - } else { - itemView.dark_medium_switch.visibility = View.GONE - itemView.tv_dark_medium_value.visibility = View.VISIBLE - itemView.iv_dark_medium_next.visibility = View.VISIBLE - itemView.dark_medium_switch.setOnClickListener(null) - itemView.setOnClickListener { - recyclerItemView?.doAction(this@ControlDarkMediumHolder, it, position) - } - } - itemView.tv_dark_medium_value.text = getValueText() - when (id) { - "color" -> itemView.iv_dark_medium.setImageResource(R.mipmap.icon_control_color) - "power_switch" -> itemView.iv_dark_medium.setImageResource(R.mipmap.icon_control_switch) - else -> itemView.iv_dark_medium.setImageResource(R.mipmap.icon_control_brightness) - } - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkNumberBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkNumberBigHolder.kt deleted file mode 100644 index 7b7e5efb3..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkNumberBigHolder.kt +++ /dev/null @@ -1,50 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.holder - -import android.content.Context -import android.view.ViewGroup -import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.DataHolder -import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity -import com.tencent.iot.explorer.link.customview.progress.SeekProgress -import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView -import kotlinx.android.synthetic.main.control_dark_big_int.view.* - -/** - * 控制面板数字类型:大按钮 - */ -class ControlDarkNumberBigHolder : CRecyclerView.CViewHolder { - - constructor(context: Context, parent: ViewGroup, resId: Int) : super(context, parent, resId) - - override fun show(position: Int) { - entity?.run { - itemView.tv_dark_big_int_name.text = name - itemView.tv_dark_big_int_value.text = getValueText() - val progress = getValue().toDouble().toInt() - L.e("progress=$progress,min=${numberEntity?.min},max=${numberEntity?.max}") - itemView.sp_dark_big_int.setProgress(progress) - itemView.sp_dark_big_int.setRange( - numberEntity?.min?.toDouble()?.toInt() ?: 0, - numberEntity?.max?.toDouble()?.toInt() ?: 100 - ) - itemView.sp_dark_big_int.setStepValue(numberEntity?.step?.toInt() ?: 1) - if (DataHolder.instance.get("device")?.online ?: 0 == 1) { - itemView.sp_dark_big_int.onProgressListener = - object : SeekProgress.OnProgressListener { - override fun onProgress(progress: Int, step: Int, keyUp: Boolean) { - itemView.tv_dark_big_int_value.text = - "$progress${numberEntity?.getNumUnit() ?: ""}" - if (keyUp) { - recyclerItemView?.doAction( - this@ControlDarkNumberBigHolder, - itemView.sp_dark_big_int, position - ) - } - } - } - } - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSmallHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSmallHolder.kt deleted file mode 100644 index 4d6cc4965..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSmallHolder.kt +++ /dev/null @@ -1,48 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.holder - -import android.content.Context -import android.view.View -import android.view.ViewGroup -import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView -import kotlinx.android.synthetic.main.control_dark_medium.view.* - -/** - * 暗黑主题小按钮 - */ -class ControlDarkSmallHolder : CRecyclerView.CViewHolder { - - constructor(context: Context, parent: ViewGroup, resId: Int) : super(context, parent, resId) - - override fun show(position: Int) { - entity?.run { - itemView.tv_dark_medium_name.text = name - if (isBoolType()) { - itemView.dark_medium_switch.visibility = View.VISIBLE - itemView.tv_dark_medium_value.visibility = View.GONE - itemView.iv_dark_medium_next.visibility = View.GONE - itemView.dark_medium_switch.isChecked = (getValue() == "1") - itemView.dark_medium_switch.setOnClickListener { - recyclerItemView?.doAction(this@ControlDarkSmallHolder, it, position) - } - itemView.setOnClickListener(null) - } else { - itemView.dark_medium_switch.visibility = View.GONE - itemView.tv_dark_medium_value.visibility = View.VISIBLE - itemView.iv_dark_medium_next.visibility = View.VISIBLE - itemView.dark_medium_switch.setOnClickListener(null) - itemView.setOnClickListener { - recyclerItemView?.doAction(this@ControlDarkSmallHolder, it, position) - } - } - itemView.tv_dark_medium_value.text = getValueText() - when (id) { - "color" -> itemView.iv_dark_medium.setImageResource(R.mipmap.icon_control_color) - "power_switch" -> itemView.iv_dark_medium.setImageResource(R.mipmap.icon_control_switch) - else -> itemView.iv_dark_medium.setImageResource(R.mipmap.icon_control_brightness) - } - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchBigHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchBigHolder.kt deleted file mode 100644 index 23c72ea0d..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchBigHolder.kt +++ /dev/null @@ -1,70 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.holder - -import android.view.KeyEvent -import android.view.View -import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.DataHolder -import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity -import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView -import kotlinx.android.synthetic.main.control_dark_big_switch.view.* - -/** - * 暗黑主题大按钮:布尔类型 - */ -class ControlDarkSwitchBigHolder : CRecyclerView.CViewHolder { - - constructor(itemView: View) : super(itemView) - - override fun show(position: Int) {//1125*1482 - entity?.run { - itemView.tv_dark_big_switch_text.text = if (getValue() == "1") { - itemView.iv_dark_big_switch.setImageResource(R.drawable.icon_control_dark_switch_on_1) - "$name:${getString(R.string.on)}" - } else { - itemView.iv_dark_big_switch.setImageResource(R.drawable.icon_control_dark_switch_off_1) - "$name:${getString(R.string.off)}" - } - DataHolder.instance.get("device")?.let { - if (it.online == 1) { - itemView.tab_dark_switch.setOnTouchListener { v, event -> - when (event.action) { - KeyEvent.ACTION_DOWN -> { - if (getValue() == "1") - itemView.iv_dark_big_switch.setImageResource(R.drawable.icon_control_dark_switch_on_2) - else - itemView.iv_dark_big_switch.setImageResource(R.drawable.icon_control_dark_switch_off_2) - } - KeyEvent.ACTION_UP -> { - if (getValue() == "1") - itemView.iv_dark_big_switch.setImageResource(R.drawable.icon_control_dark_switch_on_1) - else - itemView.iv_dark_big_switch.setImageResource(R.drawable.icon_control_dark_switch_off_1) - recyclerItemView?.doAction( - this@ControlDarkSwitchBigHolder, - v, - position - ) - - } - } - true - } - } - } - } - - } - - private fun dp2px(dp: Int): Int { - return (itemView.resources.displayMetrics.density * dp + 0.5).toInt() - } - - private fun ivHeight(): Int { - return ivWidth() * 1482 / 1125 - } - - private fun ivWidth(): Int { - return itemView.resources.displayMetrics.widthPixels - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchLongHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchLongHolder.kt deleted file mode 100644 index 3b7361894..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ControlDarkSwitchLongHolder.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.holder - -import android.content.Context -import android.view.ViewGroup -import com.tencent.iot.explorer.link.kitlink.entity.DevicePropertyEntity -import com.tencent.iot.explorer.link.DataHolder -import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity -import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView -import kotlinx.android.synthetic.main.control_dark_long_switch.view.* - -/** - * 暗黑主题长按钮:布尔类型 - */ -class ControlDarkSwitchLongHolder : CRecyclerView.CViewHolder { - - constructor(context: Context, parent: ViewGroup, resId: Int) : super(context, parent, resId) - - override fun show(position: Int) { - entity?.run { - itemView.tv_dark_long_switch_name.text = name - itemView.dark_long_switch.isChecked = (getValue() == "1") - } - itemView.dark_long_switch.isEnabled = - DataHolder.instance.get("device")?.online ?: 0 == 1 - itemView.dark_long_switch.setOnClickListener { - recyclerItemView?.doAction(this, it, position) - } - } - -} \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_scene.xml b/app/src/main/res/layout/fragment_scene.xml deleted file mode 100644 index f64c49ef6..000000000 --- a/app/src/main/res/layout/fragment_scene.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/socket/JWebSocketClient1.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/socket/JWebSocketClient1.kt deleted file mode 100644 index 79466341b..000000000 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/socket/JWebSocketClient1.kt +++ /dev/null @@ -1,117 +0,0 @@ -package com.tencent.iot.explorer.link.core.auth.socket - -import com.tencent.iot.explorer.link.core.log.L -import org.java_websocket.client.WebSocketClient -import org.java_websocket.handshake.ServerHandshake -import java.net.URI - -class JWebSocketClient1(serverUri: URI?, handler: DispatchMsgHandler) : WebSocketClient(serverUri) { - - var isConnected = false - var connectListener: ConnectListener? = null - private var dispatchMsgHandler = handler - - //保活相关参数 - private var heartBack = true - private var isKeep = false - private var keepLiveThread: Thread? = null - private var delayMillis = 60 * 1000L - private var param = "{\"action\":\"Hello\",\"reqId\":-1}" - - override fun send(text: String?) { - try { - super.send(text) - } catch (e: Exception) { - disconnect() - e.printStackTrace() - } - } - - private fun sendHeart() { - this.send(param) - } - - override fun onOpen(handshakedata: ServerHandshake?) { - } - - override fun onClose(code: Int, reason: String?, remote: Boolean) { - disconnect() - } - - override fun onMessage(message: String?) { - L.d("JWebSocketClient", message ?: "") - dispatchMsgHandler.dispatch(message ?: "") - keepLive() - reconnected() - } - - @Synchronized - private fun reconnected() { - if (!isConnected) {//重连 - isConnected = true - connectListener?.connected() - } - } - - override fun onError(ex: Exception?) { - disconnect() - } - - /** - * 保活 - */ - private fun keepLive() { - if (keepLiveThread == null) { - isKeep = true - keepLiveThread = Thread(KeepLiveRunnable()) - keepLiveThread?.start() - } - } - - /** - * 取消保活 - */ - private fun removeKeepLive() { - isKeep = false - keepLiveThread?.let { - it.interrupt() - keepLiveThread = null - } - } - - fun destroy() { - isConnected = false - removeKeepLive() - this.close() - } - - private fun disconnect() { - isConnected = false - connectListener?.disconnected() - } - - inner class KeepLiveRunnable : Runnable { - override fun run() { - try { - while (isKeep) { - if (!heartBack) { - disconnect() - } - sendHeart() - heartBack = false - Thread.sleep(delayMillis) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - } - - interface ConnectListener { - - fun connected() - - fun disconnected() - } - -} \ No newline at end of file diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/socket/WSClientManager1.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/socket/WSClientManager1.kt deleted file mode 100644 index 82cdf1ff6..000000000 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/socket/WSClientManager1.kt +++ /dev/null @@ -1,283 +0,0 @@ -package com.auth.socket - -import android.text.TextUtils -import com.tencent.iot.explorer.link.core.auth.message.payload.Payload -import com.tencent.iot.explorer.link.core.auth.message.resp.RespFailMessage -import com.tencent.iot.explorer.link.core.auth.message.resp.RespSuccessMessage -import com.tencent.iot.explorer.link.core.auth.message.upload.IotMsg -import com.tencent.iot.explorer.link.core.auth.socket.DispatchMsgHandler -import com.tencent.iot.explorer.link.core.auth.socket.JWebSocketClient1 -import com.tencent.iot.explorer.link.core.auth.socket.callback.ActivePushCallback -import com.tencent.iot.explorer.link.core.auth.socket.callback.DispatchCallback -import com.tencent.iot.explorer.link.core.auth.socket.callback.MessageCallback -import com.tencent.iot.explorer.link.core.auth.socket.entity.RequestEntity -import com.tencent.iot.explorer.link.core.auth.util.WifiUtil -import com.tencent.iot.explorer.link.core.log.L -import java.net.URI -import java.util.* - -/** - * JWebsocketClient管理 - */ -internal class WSClientManager1 private constructor() { - - private var hasListener = false - //标记是否可以重新创建 - private var client: JWebSocketClient1? = null - private var networkStateThread: Thread? = null - @Volatile - private var requestSuq = 0 //请求序号 - - //消息响应分发 - private val handler = DispatchMsgHandler() - - private val host = "wss://iot.cloud.tencent.com/ws/explorer" - - private val messageList = LinkedList() - private val requestQueue = LinkedList() - private val confirmQueue = LinkedList() - - private val activePushCallbacks = LinkedList() - - /** - * 单例 - */ - companion object { - - private var debugTag = "" - - val INSTANCE: WSClientManager1 by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) { - WSClientManager1() - } - - /** - * 设置日志tag - */ - fun setDebugTag(tag: String) { - debugTag = if (TextUtils.isEmpty(tag)) { - tag - } else { - "?uin=$tag" - } - } - } - - /** - * 响应数据解析回调 - */ - private val callback = object : DispatchCallback { - override fun yunMessage(reqId: Int, message: String, response: RespSuccessMessage) { - getRequestEntity(reqId)?.run { - confirmQueue.remove(this) - messageCallback?.success(reqId, message, response) - } - } - - override fun yunMessageFail(reqId: Int, message: String, response: RespFailMessage) { - getRequestEntity(reqId)?.run { - confirmQueue.remove(this) - messageCallback?.fail(reqId, message, response) - } - } - - override fun payloadMessage(payload: Payload) { - activePushCallbacks.forEach { - it?.success(payload) - } - } - - override fun payloadUnknownMessage(json: String, errorMessage: String) { - activePushCallbacks.forEach { - it?.unknown(json, errorMessage) - } - } - - override fun unknownMessage(reqId: Int, json: String) { - getRequestEntity(reqId)?.run { - confirmQueue.remove(this) - messageCallback?.unknownMessage(reqId, json) - } - } - } - - init { - handler.dispatchCallback = callback - createSocketClient() - L.d("The SDK initialized successfully") - } - - /** - * 创建JWebSocketClient - */ - @Synchronized - private fun createSocketClient() { - val myHost = if (debugTag.isNotEmpty()) - host + debugTag - else - host - //创建WebSocket - client = JWebSocketClient1(URI(myHost), handler) - client!!.connect() - } - - /** - * 注册网络重连监听 - */ - private fun registerNetworkListener() { - if (networkStateThread == null) { - hasListener = true - networkStateThread = Thread(NetworkStateRunnable()) - networkStateThread?.start() - } - } - - /** - * 反注册网络重连监听 - */ - private fun unregisterNetworkListener() { - hasListener = false - networkStateThread?.interrupt() - networkStateThread = null - } - - /** - * 连接监听 - */ - private val connectListener = object : JWebSocketClient1.ConnectListener { - @Synchronized - override fun connected() { - resend() - unregisterNetworkListener() - } - - @Synchronized - override fun disconnected() { - client?.destroy() - client = null - registerNetworkListener() - } - } - - /** - * 添加监听器 - */ - fun addActivePushCallback(callback: ActivePushCallback) { - if (activePushCallbacks.size > 30) {//最多30个 - activePushCallbacks.removeFirst() - } - activePushCallbacks.addLast(callback) - } - - /** - * 移除监听器 - */ - fun removeActivePushCallback(callback: ActivePushCallback) { - activePushCallbacks.remove(callback) - } - - /** - * 移除所有监听器 - */ - fun removeAllActivePushCallback() { - activePushCallbacks.clear() - } - - /** - * 发送消息,不做消息回复确认 - */ - fun sendMessage(message: String) { - client?.run { - if (isConnected) { - send(message) - return - } - } - messageList.addLast(message) - } - - /** - * 发送请求消息 - */ - @Synchronized - fun sendRequestMessage(iotMsg: IotMsg, messageCallback: MessageCallback?) { - if (requestSuq >= Int.MAX_VALUE - 1000) - requestSuq = 0 - val entity = RequestEntity(requestSuq++, iotMsg) - entity.messageCallback = messageCallback - client?.run { - if (isConnected) { - confirmQueue.addLast(entity) - send(iotMsg.toString()) - return - } - } - requestQueue.addLast(entity) - } - - /** - * 只重发一次 - */ - @Synchronized - private fun resend() { - client?.run { - confirmQueue.forEach { - send(it.iotMsg.toString()) - } - while (requestQueue.isNotEmpty()) { - send(requestQueue.poll()?.iotMsg.toString()) - } - while (messageList.isNotEmpty()) { - send(messageList.poll()) - } - } - } - - /** - * 获得请求对象 - */ - @Synchronized - private fun getRequestEntity(reqId: Int): RequestEntity? { - val iterator = confirmQueue.iterator() - while (iterator.hasNext()) { - if (iterator.next().reqId == reqId) { - return iterator.next() - } - } - return null - } - - /** - * 重连 - */ - fun reconnect() { - connectListener.disconnected() - } - - /** - * 销毁 - */ - fun destroy() { - removeAllActivePushCallback() - client?.destroy() - client = null - unregisterNetworkListener() - } - - /** - * 通过ping外网的方式判断网络连接 - */ - inner class NetworkStateRunnable : Runnable { - override fun run() { - try { - while (hasListener) { - if (WifiUtil.ping("www.baidu.com")) { - createSocketClient() - } - Thread.sleep(1000) - } - } catch (e: Exception) { - e.printStackTrace() - } - } - } -} \ No newline at end of file From ff89e7c16c5c0eae8c20926471072e0d9e159726 Mon Sep 17 00:00:00 2001 From: archurtan Date: Thu, 22 Oct 2020 19:03:45 +0800 Subject: [PATCH 038/804] =?UTF-8?q?Link=20response=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I0b90b5197ddcfcff78ab6f219e09c27461ceebdb --- .../link/kitlink/activity/AddRoomActivity.kt | 2 +- .../link/kitlink/activity/MemberActivity.kt | 2 +- .../kitlink/activity/ShareUserListActivity.kt | 4 +-- .../link/kitlink/fragment/DeviceFragment.kt | 12 +++---- .../link/kitlink/fragment/MessageFragment.kt | 4 +-- .../kitlink/holder/MemberListViewHolder.kt | 2 +- .../kitlink/holder/MsgDeviceViewHolder.kt | 2 +- .../kitlink/holder/MsgFamilyViewHolder.kt | 2 +- .../kitlink/holder/MsgNotifyViewHolder.kt | 2 +- .../link/kitlink/holder/ShareUserHolder.kt | 2 +- .../kitlink/response/AppCosAuthResponse.kt | 19 ---------- .../kitlink/response/CreateFamilyResponse.kt | 13 ------- .../kitlink/response/FamilyInfoResponse.kt | 12 ------- .../response/ModifyAliasNameResponse.kt | 12 ------- .../response/ShareDeviceListResponse.kt | 1 + .../explorer/link/mvp/model/FamilyModel.kt | 8 ++--- .../link/mvp/model/HomeFragmentModel.kt | 2 +- .../explorer/link/mvp/model/MessageModel.kt | 4 +-- .../explorer/link/mvp/model/UploadModel.kt | 2 +- .../link/mvp/presenter/MessagePresenter.kt | 2 +- .../core/auth/response}/AppCosAuthResponse.kt | 36 +++++++++---------- .../core/auth}/response/CreateRoomResponse.kt | 2 +- .../core/auth/response/FamilyInfoResponse.kt | 12 +++++++ .../core/auth}/response/MemberListResponse.kt | 4 +-- .../auth}/response/MessageListResponse.kt | 4 +-- .../core/auth}/response/ShareUserResponse.kt | 4 +-- .../core/link}/entity/FamilyInfoEntity.kt | 2 +- .../link/core/link}/entity/MemberEntity.kt | 2 +- .../link/core/link}/entity/MessageEntity.kt | 2 +- .../link/core/link}/entity/ShareUserEntity.kt | 2 +- .../link/core/demo/activity/FamilyActivity.kt | 8 ++--- .../link/core/demo/activity/MemberActivity.kt | 4 +-- .../core/demo/activity/MessageActivity.kt | 6 ++-- .../demo/activity/ShareUserListActivity.kt | 6 ++-- .../link/core/demo/adapter/MemberAdapter.kt | 4 +-- .../link/core/demo/adapter/MessageAdapter.kt | 8 ++--- .../link/core/demo/entity/FamilyInfo.kt | 11 ------ .../link/core/demo/entity/IotMessage.kt | 28 --------------- .../explorer/link/core/demo/entity/Member.kt | 13 ------- .../link/core/demo/entity/ShareUser.kt | 10 ------ .../link/core/demo/holder/MemberHolder.kt | 4 +-- .../core/demo/holder/MessageDeviceHolder.kt | 4 +-- .../core/demo/holder/MessageFamilyHolder.kt | 4 +-- .../core/demo/holder/MessageNotifyHolder.kt | 4 +-- .../link/core/demo/holder/ShareUserHolder.kt | 4 +-- .../core/demo/response/FamilyInfoResponse.kt | 12 ------- .../core/demo/response/MemberListResponse.kt | 12 ------- .../core/demo/response/MessageListResponse.kt | 17 --------- .../core/demo/response/ShareUserResponse.kt | 9 ----- .../link/core/demo/upload/UploadService.kt | 1 + 50 files changed, 95 insertions(+), 253 deletions(-) delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/AppCosAuthResponse.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/CreateFamilyResponse.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/FamilyInfoResponse.kt delete mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ModifyAliasNameResponse.kt rename {sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/upload => sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response}/AppCosAuthResponse.kt (81%) rename {app/src/main/java/com/tencent/iot/explorer/link/kitlink => sdk/src/main/java/com/tencent/iot/explorer/link/core/auth}/response/CreateRoomResponse.kt (67%) create mode 100644 sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/FamilyInfoResponse.kt rename {app/src/main/java/com/tencent/iot/explorer/link/kitlink => sdk/src/main/java/com/tencent/iot/explorer/link/core/auth}/response/MemberListResponse.kt (54%) rename {app/src/main/java/com/tencent/iot/explorer/link/kitlink => sdk/src/main/java/com/tencent/iot/explorer/link/core/auth}/response/MessageListResponse.kt (62%) rename {app/src/main/java/com/tencent/iot/explorer/link/kitlink => sdk/src/main/java/com/tencent/iot/explorer/link/core/auth}/response/ShareUserResponse.kt (52%) rename {app/src/main/java/com/tencent/iot/explorer/link/kitlink => sdk/src/main/java/com/tencent/iot/explorer/link/core/link}/entity/FamilyInfoEntity.kt (72%) rename {app/src/main/java/com/tencent/iot/explorer/link/kitlink => sdk/src/main/java/com/tencent/iot/explorer/link/core/link}/entity/MemberEntity.kt (66%) rename {app/src/main/java/com/tencent/iot/explorer/link/kitlink => sdk/src/main/java/com/tencent/iot/explorer/link/core/link}/entity/MessageEntity.kt (86%) rename {app/src/main/java/com/tencent/iot/explorer/link/kitlink => sdk/src/main/java/com/tencent/iot/explorer/link/core/link}/entity/ShareUserEntity.kt (73%) delete mode 100644 sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/entity/FamilyInfo.kt delete mode 100644 sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/entity/IotMessage.kt delete mode 100644 sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/entity/Member.kt delete mode 100644 sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/entity/ShareUser.kt delete mode 100644 sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/FamilyInfoResponse.kt delete mode 100644 sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/MemberListResponse.kt delete mode 100644 sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/MessageListResponse.kt delete mode 100644 sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/ShareUserResponse.kt diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt index 991d88029..b35beb1b3 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/AddRoomActivity.kt @@ -4,7 +4,7 @@ import android.text.TextUtils import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.response.CreateRoomResponse +import com.tencent.iot.explorer.link.core.auth.response.CreateRoomResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MemberActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MemberActivity.kt index 4c862fba1..2d49c511d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MemberActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/MemberActivity.kt @@ -6,7 +6,7 @@ import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.MemberEntity +import com.tencent.iot.explorer.link.core.link.entity.MemberEntity import com.tencent.iot.explorer.link.kitlink.popup.CommonPopupWindow import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareUserListActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareUserListActivity.kt index f36d45a34..4146ca608 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareUserListActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ShareUserListActivity.kt @@ -6,11 +6,11 @@ import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.ShareUserEntity +import com.tencent.iot.explorer.link.core.link.entity.ShareUserEntity import com.tencent.iot.explorer.link.kitlink.holder.ShareUserFootHolder import com.tencent.iot.explorer.link.kitlink.holder.ShareUserHeadHolder import com.tencent.iot.explorer.link.kitlink.holder.ShareUserHolder -import com.tencent.iot.explorer.link.kitlink.response.ShareUserResponse +import com.tencent.iot.explorer.link.core.auth.response.ShareUserResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt index 238e3fa12..a76f03939 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/DeviceFragment.kt @@ -40,7 +40,6 @@ class DeviceFragment() : BaseFragment(), MyCallback, AdapterView.OnItemClickList private var mContext : Context? = null private var devicesGridView : FullGridView? = null private var recommendDevicesGridView : FullGridView? = null - private var categoryList = arrayListOf() private var productList = arrayListOf() private var isRecommDeviceClicked = false @Volatile @@ -91,7 +90,6 @@ class DeviceFragment() : BaseFragment(), MyCallback, AdapterView.OnItemClickList if (split_line != null) split_line.visibility = View.GONE if (gv_recommend_devices != null) gv_recommend_devices.visibility = View.GONE } - categoryList = CategoryList if (devicesGridView != null && mContext != null) { devicesGridView!!.adapter = GridAdapter(mContext!!, CategoryList, false) } @@ -105,16 +103,15 @@ class DeviceFragment() : BaseFragment(), MyCallback, AdapterView.OnItemClickList val wifiConfigTypeList = config.WifiConfTypeList var productId = "" if (!TextUtils.isEmpty(config.profile)) { - var jsonProFile = JSON.parseObject(config.profile) + val jsonProFile = JSON.parseObject(config.profile) if (jsonProFile != null && jsonProFile.containsKey("ProductId") && !TextUtils.isEmpty(jsonProFile.getString("ProductId"))) { productId = jsonProFile.getString("ProductId") } } - if (wifiConfigTypeList.equals("{}") || TextUtils.isEmpty(wifiConfigTypeList)) { + if (wifiConfigTypeList == "{}" || TextUtils.isEmpty(wifiConfigTypeList)) { startActivityWithExtra(SmartConnectActivity::class.java, productId) - } else if (wifiConfigTypeList.contains("[")) { val typeList = JsonManager.parseArray(wifiConfigTypeList) if (typeList.size > 0 && typeList[0] == "softap") { @@ -130,7 +127,7 @@ class DeviceFragment() : BaseFragment(), MyCallback, AdapterView.OnItemClickList } private fun startActivityWithExtra(cls: Class<*>?, productId: String) { - var intent = Intent(context, cls) + val intent = Intent(context, cls) if (!TextUtils.isEmpty(productId)) { intent.putExtra(CommonField.LOAD_VIEW_TXT_TYPE, LoadViewTxtType.LoadRemoteViewTxt.ordinal) intent.putExtra(CommonField.PRODUCT_ID, productId) @@ -140,7 +137,6 @@ class DeviceFragment() : BaseFragment(), MyCallback, AdapterView.OnItemClickList override fun onItemClick(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { if (view != null && parent != null) { - if(ContextCompat.checkSelfPermission(mContext!!, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){ when (parent.id) { @@ -155,7 +151,7 @@ class DeviceFragment() : BaseFragment(), MyCallback, AdapterView.OnItemClickList requestPermissions(permissions,1) } else { when (parent.id) { - R.id.gv_recommend_devices->{ + R.id.gv_recommend_devices->{ // 根据推荐设备的配网方式,跳转到SmartConfig或者SoftAp配网界面 val productsList = arrayListOf() productsList.add(productList[position].ProductId) HttpRequest.instance.getProductsConfig(productsList, this) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MessageFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MessageFragment.kt index 59b91f461..05f70c122 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MessageFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/MessageFragment.kt @@ -6,11 +6,11 @@ import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.MessageEntity +import com.tencent.iot.explorer.link.core.link.entity.MessageEntity import com.tencent.iot.explorer.link.kitlink.holder.MsgDeviceViewHolder import com.tencent.iot.explorer.link.kitlink.holder.MsgFamilyViewHolder import com.tencent.iot.explorer.link.kitlink.holder.MsgNotifyViewHolder -import com.tencent.iot.explorer.link.kitlink.response.MessageListResponse +import com.tencent.iot.explorer.link.core.auth.response.MessageListResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MemberListViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MemberListViewHolder.kt index ff6cc3f4c..a0ce58abf 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MemberListViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MemberListViewHolder.kt @@ -3,7 +3,7 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.MemberEntity +import com.tencent.iot.explorer.link.core.link.entity.MemberEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager import kotlinx.android.synthetic.main.item_member.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgDeviceViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgDeviceViewHolder.kt index f6f6589c3..d31d05815 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgDeviceViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgDeviceViewHolder.kt @@ -2,7 +2,7 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.view.View import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.MessageEntity +import com.tencent.iot.explorer.link.core.link.entity.MessageEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.util.DateUtils import kotlinx.android.synthetic.main.item_message_device.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgFamilyViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgFamilyViewHolder.kt index 5164cbd91..6abd9c969 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgFamilyViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgFamilyViewHolder.kt @@ -2,7 +2,7 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.view.View import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.MessageEntity +import com.tencent.iot.explorer.link.core.link.entity.MessageEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.util.DateUtils import kotlinx.android.synthetic.main.item_message_family.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgNotifyViewHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgNotifyViewHolder.kt index 00e6bead7..f03d5297b 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgNotifyViewHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/MsgNotifyViewHolder.kt @@ -1,7 +1,7 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.view.View -import com.tencent.iot.explorer.link.kitlink.entity.MessageEntity +import com.tencent.iot.explorer.link.core.link.entity.MessageEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.util.DateUtils import kotlinx.android.synthetic.main.item_message_notify.view.* diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ShareUserHolder.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ShareUserHolder.kt index 3fc889f82..5eddebad5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ShareUserHolder.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/holder/ShareUserHolder.kt @@ -3,7 +3,7 @@ package com.tencent.iot.explorer.link.kitlink.holder import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.kitlink.entity.ShareUserEntity +import com.tencent.iot.explorer.link.core.link.entity.ShareUserEntity import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.util.DateUtils import com.tencent.iot.explorer.link.kitlink.util.picture.imp.ImageManager diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/AppCosAuthResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/AppCosAuthResponse.kt deleted file mode 100644 index f1c0d1ecb..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/AppCosAuthResponse.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.response - -import com.alibaba.fastjson.JSONObject - -class AppCosAuthResponse { - - var expiredTime = 0L - var expiration = "" - var credentials: JSONObject? = null - var requestId = "" - var startTime = 0L - var cosConfig: CosConfig? = null - - class CosConfig { - var bucket = "" - var region = "" - var path = "" - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/CreateFamilyResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/CreateFamilyResponse.kt deleted file mode 100644 index c19966e98..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/CreateFamilyResponse.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.response - -/** - * 新增家庭响应实体 - */ -class CreateFamilyResponse { - - var Data = FamilyID() - - inner class FamilyID { - var FamilyId = "" - } -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/FamilyInfoResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/FamilyInfoResponse.kt deleted file mode 100644 index 8af1ca913..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/FamilyInfoResponse.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.response - -import com.tencent.iot.explorer.link.kitlink.entity.FamilyInfoEntity - -/** - * 家庭详情信息响应实体 - */ -class FamilyInfoResponse { - - var Data: FamilyInfoEntity? = null - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ModifyAliasNameResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ModifyAliasNameResponse.kt deleted file mode 100644 index 5bc9101a5..000000000 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ModifyAliasNameResponse.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tencent.iot.explorer.link.kitlink.response - -import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity - -/** - * 修改设备别名响应实体 - */ -class ModifyAliasNameResponse { - - var Data: DeviceEntity? = null - -} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ShareDeviceListResponse.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ShareDeviceListResponse.kt index b44bc725f..067df45f1 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ShareDeviceListResponse.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ShareDeviceListResponse.kt @@ -2,6 +2,7 @@ package com.tencent.iot.explorer.link.kitlink.response import com.tencent.iot.explorer.link.kitlink.entity.ShareDeviceEntity + class ShareDeviceListResponse { var Total = 0 var RequestId = "" diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/FamilyModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/FamilyModel.kt index aa028f530..65998ebc1 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/FamilyModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/FamilyModel.kt @@ -1,10 +1,10 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.FamilyInfoEntity -import com.tencent.iot.explorer.link.kitlink.entity.MemberEntity -import com.tencent.iot.explorer.link.kitlink.response.FamilyInfoResponse -import com.tencent.iot.explorer.link.kitlink.response.MemberListResponse +import com.tencent.iot.explorer.link.core.link.entity.FamilyInfoEntity +import com.tencent.iot.explorer.link.core.link.entity.MemberEntity +import com.tencent.iot.explorer.link.core.auth.response.FamilyInfoResponse +import com.tencent.iot.explorer.link.core.auth.response.MemberListResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt index 60f5f1254..89e2d49ed 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt @@ -7,7 +7,6 @@ import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L import com.tencent.iot.explorer.link.kitlink.entity.ShareDeviceEntity import com.tencent.iot.explorer.link.kitlink.entity.WeatherEntity -import com.tencent.iot.explorer.link.kitlink.response.* import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode @@ -17,6 +16,7 @@ import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.core.auth.entity.RoomEntity import com.tencent.iot.explorer.link.core.auth.response.* +import com.tencent.iot.explorer.link.kitlink.response.ShareDeviceListResponse class HomeFragmentModel(view: HomeFragmentView) : ParentModel(view), MyCallback { diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/MessageModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/MessageModel.kt index 24b68759f..bfca4b92a 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/MessageModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/MessageModel.kt @@ -2,8 +2,8 @@ package com.tencent.iot.explorer.link.mvp.model import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.entity.MessageEntity -import com.tencent.iot.explorer.link.kitlink.response.MessageListResponse +import com.tencent.iot.explorer.link.core.link.entity.MessageEntity +import com.tencent.iot.explorer.link.core.auth.response.MessageListResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.util.RequestCode diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/UploadModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/UploadModel.kt index 1ee9ba612..794aba9dc 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/UploadModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/UploadModel.kt @@ -3,7 +3,7 @@ package com.tencent.iot.explorer.link.mvp.model import android.content.Context import android.text.TextUtils import com.alibaba.fastjson.JSONObject -import com.tencent.iot.explorer.link.kitlink.response.AppCosAuthResponse +import com.tencent.iot.explorer.link.core.auth.response.AppCosAuthResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.view.UploadView diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/presenter/MessagePresenter.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/presenter/MessagePresenter.kt index 02701f943..0ab528a1b 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/presenter/MessagePresenter.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/presenter/MessagePresenter.kt @@ -1,6 +1,6 @@ package com.tencent.iot.explorer.link.mvp.presenter -import com.tencent.iot.explorer.link.kitlink.entity.MessageEntity +import com.tencent.iot.explorer.link.core.link.entity.MessageEntity import com.tencent.iot.explorer.link.mvp.ParentPresenter import com.tencent.iot.explorer.link.mvp.model.MessageModel import com.tencent.iot.explorer.link.mvp.view.MessageView diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/upload/AppCosAuthResponse.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/AppCosAuthResponse.kt similarity index 81% rename from sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/upload/AppCosAuthResponse.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/AppCosAuthResponse.kt index 4b5f10a92..28cb1e8c6 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/upload/AppCosAuthResponse.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/AppCosAuthResponse.kt @@ -1,19 +1,19 @@ -package com.tencent.iot.explorer.link.core.demo.upload - -import com.alibaba.fastjson.JSONObject - -class AppCosAuthResponse { - - var expiredTime = 0L - var expiration = "" - var credentials: JSONObject? = null - var requestId = "" - var startTime = 0L - var cosConfig: CosConfig? = null - - class CosConfig { - var bucket = "" - var region = "" - var path = "" - } +package com.tencent.iot.explorer.link.core.auth.response + +import com.alibaba.fastjson.JSONObject + +class AppCosAuthResponse { + + var expiredTime = 0L + var expiration = "" + var credentials: JSONObject? = null + var requestId = "" + var startTime = 0L + var cosConfig: CosConfig? = null + + class CosConfig { + var bucket = "" + var region = "" + var path = "" + } } \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/CreateRoomResponse.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/CreateRoomResponse.kt similarity index 67% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/CreateRoomResponse.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/CreateRoomResponse.kt index 47678122d..dcf345610 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/CreateRoomResponse.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/CreateRoomResponse.kt @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.kitlink.response +package com.tencent.iot.explorer.link.core.auth.response /** * 新增房间响应实体 diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/FamilyInfoResponse.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/FamilyInfoResponse.kt new file mode 100644 index 000000000..84d602826 --- /dev/null +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/FamilyInfoResponse.kt @@ -0,0 +1,12 @@ +package com.tencent.iot.explorer.link.core.auth.response + +import com.tencent.iot.explorer.link.core.link.entity.FamilyInfoEntity + +/** + * 家庭详情信息响应实体 + */ +class FamilyInfoResponse { + + var Data: FamilyInfoEntity? = null + +} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/MemberListResponse.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/MemberListResponse.kt similarity index 54% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/MemberListResponse.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/MemberListResponse.kt index b0e1ef4d5..08a5c8dad 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/MemberListResponse.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/MemberListResponse.kt @@ -1,6 +1,6 @@ -package com.tencent.iot.explorer.link.kitlink.response +package com.tencent.iot.explorer.link.core.auth.response -import com.tencent.iot.explorer.link.kitlink.entity.MemberEntity +import com.tencent.iot.explorer.link.core.link.entity.MemberEntity /** * 家庭成员列表响应实体 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/MessageListResponse.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/MessageListResponse.kt similarity index 62% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/MessageListResponse.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/MessageListResponse.kt index 0c49f17a7..68045d289 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/MessageListResponse.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/MessageListResponse.kt @@ -1,6 +1,6 @@ -package com.tencent.iot.explorer.link.kitlink.response +package com.tencent.iot.explorer.link.core.auth.response -import com.tencent.iot.explorer.link.kitlink.entity.MessageEntity +import com.tencent.iot.explorer.link.core.link.entity.MessageEntity /** * 消息列表响应实体 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ShareUserResponse.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/ShareUserResponse.kt similarity index 52% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ShareUserResponse.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/ShareUserResponse.kt index 93a229c9a..d139ec9eb 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/response/ShareUserResponse.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/response/ShareUserResponse.kt @@ -1,6 +1,6 @@ -package com.tencent.iot.explorer.link.kitlink.response +package com.tencent.iot.explorer.link.core.auth.response -import com.tencent.iot.explorer.link.kitlink.entity.ShareUserEntity +import com.tencent.iot.explorer.link.core.link.entity.ShareUserEntity /** * 分享用户响应实体 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/FamilyInfoEntity.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/entity/FamilyInfoEntity.kt similarity index 72% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/FamilyInfoEntity.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/link/entity/FamilyInfoEntity.kt index d9a8182fd..02cccd706 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/FamilyInfoEntity.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/entity/FamilyInfoEntity.kt @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.kitlink.entity +package com.tencent.iot.explorer.link.core.link.entity /** * 家庭详情信息实体 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/MemberEntity.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/entity/MemberEntity.kt similarity index 66% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/MemberEntity.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/link/entity/MemberEntity.kt index bbe954c0b..0cb1cfb77 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/MemberEntity.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/entity/MemberEntity.kt @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.kitlink.entity +package com.tencent.iot.explorer.link.core.link.entity /** * 家庭成员实体 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/MessageEntity.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/entity/MessageEntity.kt similarity index 86% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/MessageEntity.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/link/entity/MessageEntity.kt index 51f0e7069..595f1f1e8 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/MessageEntity.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/entity/MessageEntity.kt @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.kitlink.entity +package com.tencent.iot.explorer.link.core.link.entity /** * 消息实体 diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ShareUserEntity.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/entity/ShareUserEntity.kt similarity index 73% rename from app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ShareUserEntity.kt rename to sdk/src/main/java/com/tencent/iot/explorer/link/core/link/entity/ShareUserEntity.kt index 85e21fe0b..e05801ca0 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/entity/ShareUserEntity.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/link/entity/ShareUserEntity.kt @@ -1,4 +1,4 @@ -package com.tencent.iot.explorer.link.kitlink.entity +package com.tencent.iot.explorer.link.core.link.entity /** * 分享用户实体 diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/FamilyActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/FamilyActivity.kt index 36d9924bd..43430dab3 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/FamilyActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/FamilyActivity.kt @@ -10,14 +10,14 @@ import com.tencent.iot.explorer.link.core.auth.callback.MyCallback import com.tencent.iot.explorer.link.core.auth.consts.RequestCode import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse +import com.tencent.iot.explorer.link.core.auth.response.FamilyInfoResponse +import com.tencent.iot.explorer.link.core.auth.response.MemberListResponse import com.tencent.iot.explorer.link.core.demo.R import com.tencent.iot.explorer.link.core.demo.adapter.MemberAdapter import com.tencent.iot.explorer.link.core.demo.adapter.OnItemListener -import com.tencent.iot.explorer.link.core.demo.entity.FamilyInfo import com.tencent.iot.explorer.link.core.demo.holder.BaseHolder import com.tencent.iot.explorer.link.core.demo.log.L -import com.tencent.iot.explorer.link.core.demo.response.FamilyInfoResponse -import com.tencent.iot.explorer.link.core.demo.response.MemberListResponse +import com.tencent.iot.explorer.link.core.link.entity.FamilyInfoEntity import kotlinx.android.synthetic.main.activity_family.* import kotlinx.android.synthetic.main.menu_back_layout.* @@ -31,7 +31,7 @@ class FamilyActivity : BaseActivity(), MyCallback { private var family: FamilyEntity? = null private val memberList = arrayListOf() - private val familyInfo = FamilyInfo() + private val familyInfo = FamilyInfoEntity() private var editPopupWindow: EditPopupWindow? = null private var deleteFamilyPopup: CommonPopupWindow? = null diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/MemberActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/MemberActivity.kt index 151b1cd85..de9151aea 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/MemberActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/MemberActivity.kt @@ -10,8 +10,8 @@ import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.demo.App import com.tencent.iot.explorer.link.core.demo.R -import com.tencent.iot.explorer.link.core.demo.entity.Member import com.tencent.iot.explorer.link.core.demo.log.L +import com.tencent.iot.explorer.link.core.link.entity.MemberEntity import kotlinx.android.synthetic.main.activity_member.* import kotlinx.android.synthetic.main.menu_back_layout.* @@ -22,7 +22,7 @@ class MemberActivity : BaseActivity(), MyCallback { private var deleteMemberPopup: CommonPopupWindow? = null - private var member: Member? = null + private var member: MemberEntity? = null private var role = 0 override fun getContentView(): Int { diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/MessageActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/MessageActivity.kt index bc363f1d8..f00023356 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/MessageActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/MessageActivity.kt @@ -7,13 +7,13 @@ import com.tencent.iot.explorer.link.core.auth.IoTAuth import com.tencent.iot.explorer.link.core.auth.callback.MyCallback import com.tencent.iot.explorer.link.core.auth.consts.RequestCode import com.tencent.iot.explorer.link.core.auth.response.BaseResponse +import com.tencent.iot.explorer.link.core.auth.response.MessageListResponse import com.tencent.iot.explorer.link.core.demo.R import com.tencent.iot.explorer.link.core.demo.adapter.MessageAdapter import com.tencent.iot.explorer.link.core.demo.adapter.OnItemListener -import com.tencent.iot.explorer.link.core.demo.entity.IotMessage import com.tencent.iot.explorer.link.core.demo.holder.BaseHolder import com.tencent.iot.explorer.link.core.demo.log.L -import com.tencent.iot.explorer.link.core.demo.response.MessageListResponse +import com.tencent.iot.explorer.link.core.link.entity.MessageEntity import kotlinx.android.synthetic.main.activity_message.* import kotlinx.android.synthetic.main.menu_back_layout.* @@ -22,7 +22,7 @@ import kotlinx.android.synthetic.main.menu_back_layout.* */ class MessageActivity : BaseActivity(), MyCallback { - val messageList = arrayListOf() + val messageList = arrayListOf() //1设备 2家庭 3通知 private var msgCategory = 1 private lateinit var adapter: MessageAdapter diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ShareUserListActivity.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ShareUserListActivity.kt index 6768b3835..5f71d3f2e 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ShareUserListActivity.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/activity/ShareUserListActivity.kt @@ -7,13 +7,13 @@ import com.tencent.iot.explorer.link.core.auth.callback.MyCallback import com.tencent.iot.explorer.link.core.auth.consts.RequestCode import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse +import com.tencent.iot.explorer.link.core.auth.response.ShareUserResponse import com.tencent.iot.explorer.link.core.demo.R import com.tencent.iot.explorer.link.core.demo.adapter.OnItemListener import com.tencent.iot.explorer.link.core.demo.adapter.ShareUserAdapter -import com.tencent.iot.explorer.link.core.demo.entity.ShareUser import com.tencent.iot.explorer.link.core.demo.holder.BaseHolder import com.tencent.iot.explorer.link.core.demo.log.L -import com.tencent.iot.explorer.link.core.demo.response.ShareUserResponse +import com.tencent.iot.explorer.link.core.link.entity.ShareUserEntity import kotlinx.android.synthetic.main.activity_share_user_list.* import kotlinx.android.synthetic.main.menu_back_layout.* @@ -25,7 +25,7 @@ class ShareUserListActivity : BaseActivity(), MyCallback { private lateinit var adapter: ShareUserAdapter private var device: DeviceEntity? = null - private val userList = arrayListOf() + private val userList = arrayListOf() override fun getContentView(): Int { return R.layout.activity_share_user_list diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/MemberAdapter.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/MemberAdapter.kt index 65d0a5763..f8882f026 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/MemberAdapter.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/MemberAdapter.kt @@ -3,16 +3,16 @@ package com.tencent.iot.explorer.link.core.demo.adapter import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.core.demo.R -import com.tencent.iot.explorer.link.core.demo.entity.Member import com.tencent.iot.explorer.link.core.demo.holder.BaseHolder import com.tencent.iot.explorer.link.core.demo.holder.MemberHolder +import com.tencent.iot.explorer.link.core.link.entity.MemberEntity class MemberAdapter : BaseAdapter { constructor(context: Context, list: List) : super(context, list) override fun getItemViewType(position: Int): Int { - return if (data(position) is Member) { + return if (data(position) is MemberEntity) { 1 } else { 0 diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/MessageAdapter.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/MessageAdapter.kt index 2ff94f57b..01bcd4aaa 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/MessageAdapter.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/adapter/MessageAdapter.kt @@ -3,19 +3,19 @@ package com.tencent.iot.explorer.link.core.demo.adapter import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.core.demo.R -import com.tencent.iot.explorer.link.core.demo.entity.IotMessage import com.tencent.iot.explorer.link.core.demo.holder.BaseHolder import com.tencent.iot.explorer.link.core.demo.holder.MessageDeviceHolder import com.tencent.iot.explorer.link.core.demo.holder.MessageFamilyHolder import com.tencent.iot.explorer.link.core.demo.holder.MessageNotifyHolder +import com.tencent.iot.explorer.link.core.link.entity.MessageEntity class MessageAdapter : BaseAdapter { - constructor(context: Context, list: List) : super(context, list) + constructor(context: Context, list: List) : super(context, list) override fun getItemViewType(position: Int): Int { - return when ((data(position) as IotMessage).Attachments == null) { - true -> when ((data(position) as IotMessage).Category) { + return when ((data(position) as MessageEntity).Attachments == null) { + true -> when ((data(position) as MessageEntity).Category) { 1, 2 -> 0 else -> 2 } diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/entity/FamilyInfo.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/entity/FamilyInfo.kt deleted file mode 100644 index ae8fe80a4..000000000 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/entity/FamilyInfo.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.tencent.iot.explorer.link.core.demo.entity - -class FamilyInfo { - - var FamilyId = "" - var FamilyName = "" - var Address = "" - var CreateTime = 0L - var UpdateTime = 0L - -} \ No newline at end of file diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/entity/IotMessage.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/entity/IotMessage.kt deleted file mode 100644 index 8d207f801..000000000 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/entity/IotMessage.kt +++ /dev/null @@ -1,28 +0,0 @@ -package com.tencent.iot.explorer.link.core.demo.entity - -/** - * 消息实体 - */ -class IotMessage { - - var UserID = "" - var FromUserID = "" - var MsgID = "" - var Category = 1 // 1设备,2家庭,3通知 - var MsgType = 0 - var MsgTitle = "" - var MsgContent = "" - var MsgTimestamp = 0L - var ProductId = "" - var DeviceName = "" - var DeviceAlias = "" - var FamilyId = "" - var FamilyName = "" - var RelateUserID = "" - var Attachments: Attachment? = null - var CreateAt = "" - - class Attachment { - var ShareToken = "" - } -} \ No newline at end of file diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/entity/Member.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/entity/Member.kt deleted file mode 100644 index 99e38ca61..000000000 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/entity/Member.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.tencent.iot.explorer.link.core.demo.entity - -/** - * 家庭成员 - */ -class Member { - - var UserID = "" - var NickName = "" - var Avatar = "" - var Role = 0 - -} \ No newline at end of file diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/entity/ShareUser.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/entity/ShareUser.kt deleted file mode 100644 index dcc148323..000000000 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/entity/ShareUser.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.tencent.iot.explorer.link.core.demo.entity - -class ShareUser { - var UserID= "" - var CountryCode= "" - var PhoneNumber= "" - var NickName= "" - var Avatar= "" - var BindTime= 0L -} \ No newline at end of file diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/MemberHolder.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/MemberHolder.kt index 361012b30..46cc8c798 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/MemberHolder.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/MemberHolder.kt @@ -5,10 +5,10 @@ import android.text.TextUtils import android.view.ViewGroup import com.squareup.picasso.Picasso import com.tencent.iot.explorer.link.core.demo.R -import com.tencent.iot.explorer.link.core.demo.entity.Member +import com.tencent.iot.explorer.link.core.link.entity.MemberEntity import kotlinx.android.synthetic.main.item_member.view.* -class MemberHolder : BaseHolder { +class MemberHolder : BaseHolder { constructor(context: Context, root: ViewGroup, resLayout: Int) : super(context, root, resLayout) diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/MessageDeviceHolder.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/MessageDeviceHolder.kt index b76437e84..a2214edc0 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/MessageDeviceHolder.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/MessageDeviceHolder.kt @@ -3,14 +3,14 @@ package com.tencent.iot.explorer.link.core.demo.holder import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.core.demo.R -import com.tencent.iot.explorer.link.core.demo.entity.IotMessage import com.tencent.iot.explorer.link.core.demo.util.DateFormatUtil +import com.tencent.iot.explorer.link.core.link.entity.MessageEntity import kotlinx.android.synthetic.main.item_message_device.view.* /** * 设备类型消息 */ -class MessageDeviceHolder : BaseHolder { +class MessageDeviceHolder : BaseHolder { constructor(context: Context, root: ViewGroup, resLayout: Int) : super(context, root, resLayout) diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/MessageFamilyHolder.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/MessageFamilyHolder.kt index 3713b729a..8ca939f0b 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/MessageFamilyHolder.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/MessageFamilyHolder.kt @@ -3,14 +3,14 @@ package com.tencent.iot.explorer.link.core.demo.holder import android.content.Context import android.view.ViewGroup import com.tencent.iot.explorer.link.core.demo.R -import com.tencent.iot.explorer.link.core.demo.entity.IotMessage import com.tencent.iot.explorer.link.core.demo.util.DateFormatUtil +import com.tencent.iot.explorer.link.core.link.entity.MessageEntity import kotlinx.android.synthetic.main.item_message_family.view.* /** * 家庭类型消息 */ -class MessageFamilyHolder : BaseHolder { +class MessageFamilyHolder : BaseHolder { constructor(context: Context, root: ViewGroup, resLayout: Int) : super(context, root, resLayout) override fun show(holder: BaseHolder<*>, position: Int) { diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/MessageNotifyHolder.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/MessageNotifyHolder.kt index 7fd7ff1e9..091208c08 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/MessageNotifyHolder.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/MessageNotifyHolder.kt @@ -2,14 +2,14 @@ package com.tencent.iot.explorer.link.core.demo.holder import android.content.Context import android.view.ViewGroup -import com.tencent.iot.explorer.link.core.demo.entity.IotMessage import com.tencent.iot.explorer.link.core.demo.util.DateFormatUtil +import com.tencent.iot.explorer.link.core.link.entity.MessageEntity import kotlinx.android.synthetic.main.item_message_notify.view.* /** * 通知类型消息 */ -class MessageNotifyHolder : BaseHolder { +class MessageNotifyHolder : BaseHolder { constructor(context: Context, root: ViewGroup, resLayout: Int) : super(context, root, resLayout) override fun show(holder: BaseHolder<*>, position: Int) { diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/ShareUserHolder.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/ShareUserHolder.kt index 56dddb010..a041d5b6c 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/ShareUserHolder.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/holder/ShareUserHolder.kt @@ -4,11 +4,11 @@ import android.content.Context import android.text.TextUtils import android.view.ViewGroup import com.squareup.picasso.Picasso -import com.tencent.iot.explorer.link.core.demo.entity.ShareUser import com.tencent.iot.explorer.link.core.demo.util.DateFormatUtil +import com.tencent.iot.explorer.link.core.link.entity.ShareUserEntity import kotlinx.android.synthetic.main.item_share_user.view.* -class ShareUserHolder : BaseHolder { +class ShareUserHolder : BaseHolder { constructor(context: Context, root: ViewGroup, resLayout: Int) : super(context, root, resLayout) override fun show(holder: BaseHolder<*>, position: Int) { diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/FamilyInfoResponse.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/FamilyInfoResponse.kt deleted file mode 100644 index 697d5d095..000000000 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/FamilyInfoResponse.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tencent.iot.explorer.link.core.demo.response - -import com.tencent.iot.explorer.link.core.demo.entity.FamilyInfo - -/** - * 家庭详情信息响应实体 - */ -class FamilyInfoResponse { - - var Data: FamilyInfo? = null - -} \ No newline at end of file diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/MemberListResponse.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/MemberListResponse.kt deleted file mode 100644 index a08825bbd..000000000 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/MemberListResponse.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tencent.iot.explorer.link.core.demo.response - -import com.tencent.iot.explorer.link.core.demo.entity.Member - -/** - * 家庭成员列表响应实体 - */ -class MemberListResponse { - var MemberList = arrayListOf() - var Total =0 - var RequestId ="" -} \ No newline at end of file diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/MessageListResponse.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/MessageListResponse.kt deleted file mode 100644 index 69adf658a..000000000 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/MessageListResponse.kt +++ /dev/null @@ -1,17 +0,0 @@ -package com.tencent.iot.explorer.link.core.demo.response - -import com.tencent.iot.explorer.link.core.demo.entity.IotMessage - -/** - * 消息列表响应实体 - */ -class MessageListResponse { - - var Data = MessageData() - var RequestId = "" - - inner class MessageData { - var Listover = true - var Msgs = arrayListOf() - } -} \ No newline at end of file diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/ShareUserResponse.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/ShareUserResponse.kt deleted file mode 100644 index 1a5a9b531..000000000 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/response/ShareUserResponse.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.tencent.iot.explorer.link.core.demo.response - -import com.tencent.iot.explorer.link.core.demo.entity.ShareUser - -class ShareUserResponse { - var Users: List? = null - var RequestId = "" - var Total = 0 -} \ No newline at end of file diff --git a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/upload/UploadService.kt b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/upload/UploadService.kt index 9d5508c22..826386487 100644 --- a/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/upload/UploadService.kt +++ b/sdkdemo/src/main/java/com/tencent/iot/explorer/link/core/demo/upload/UploadService.kt @@ -17,6 +17,7 @@ import com.tencent.qcloud.core.auth.QCloudCredentialProvider import com.tencent.qcloud.core.auth.QCloudCredentials import com.tencent.qcloud.core.auth.SessionQCloudCredentials import com.tencent.iot.explorer.link.core.auth.callback.MyCallback +import com.tencent.iot.explorer.link.core.auth.response.AppCosAuthResponse import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.auth.service.BaseService import com.tencent.iot.explorer.link.core.auth.util.JsonManager From 72853da1753498eb79d449bdd1533e149474b461 Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Thu, 22 Oct 2020 21:10:13 +0800 Subject: [PATCH 039/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E8=AF=84=E6=B5=8B=E6=A8=A1=E5=9D=97=E5=8F=8D=E9=A6=88=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://docs.qq.com/doc/DRW54TFBCY3ZaTWlE Change-Id: I663ad9bf1d92d23f46c15e49e07197cb3eb06466 --- .../link/customview/home/MenuItemView.java | 5 +++-- .../kitlink/activity/CommentDetailsActivity.kt | 17 +++++++++++++++-- .../link/kitlink/fragment/CommentFragment.kt | 18 +++++++++++++----- .../explorer/link/kitlink/util/WeChatLogin.kt | 2 +- app/src/main/res/layout/fragment_comment.xml | 12 ++++-------- .../res/layout/popup_share_option_layout.xml | 3 +-- app/src/main/res/values/strings.xml | 2 ++ 7 files changed, 39 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/customview/home/MenuItemView.java b/app/src/main/java/com/tencent/iot/explorer/link/customview/home/MenuItemView.java index e73d13be0..f657a4855 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/customview/home/MenuItemView.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/customview/home/MenuItemView.java @@ -39,7 +39,7 @@ private void initView() { tvTitle = new TextView(getContext()); tvTitle.setId(View.generateViewId()); tvTitle.setGravity(Gravity.CENTER_HORIZONTAL); - tvTitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 11); + tvTitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 13); LayoutParams lptv = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); lptv.bottomMargin = (int) getContext().getResources().getDisplayMetrics().density * 3; lptv.topMargin = (int) getContext().getResources().getDisplayMetrics().density * 5; @@ -47,10 +47,11 @@ private void initView() { lptv.addRule(CENTER_HORIZONTAL); addView(tvTitle, lptv); ivIcon = new ImageView(getContext()); - LayoutParams lpiv = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); + LayoutParams lpiv = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT); lpiv.topMargin = (int) getContext().getResources().getDisplayMetrics().density * 4; lpiv.addRule(ABOVE, tvTitle.getId()); lpiv.addRule(CENTER_HORIZONTAL); + ivIcon.setAdjustViewBounds(true); addView(ivIcon, lpiv); } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt index 780fa2caa..4de52a041 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt @@ -1,7 +1,9 @@ package com.tencent.iot.explorer.link.kitlink.activity import android.net.Uri +import android.os.Build import android.text.TextUtils +import android.util.Log import android.view.KeyEvent import android.view.View import android.view.ViewGroup @@ -23,6 +25,7 @@ import com.tencent.iot.explorer.link.kitlink.webview.JSBridgeKt import kotlinx.android.synthetic.main.activity_comment_detail.* import kotlinx.android.synthetic.main.menu_back_layout.* + class CommentDetailsActivity: BaseActivity(), View.OnClickListener, MyCallback { val TAG = this.javaClass.simpleName @@ -40,6 +43,7 @@ class CommentDetailsActivity: BaseActivity(), View.OnClickListener, MyCallback { override fun initView() { initWebView() iv_back.setColorFilter(R.color.black_333333) + tv_title.setText("") } //构建 webView 的数据内容 @@ -61,6 +65,13 @@ class CommentDetailsActivity: BaseActivity(), View.OnClickListener, MyCallback { comment_detail_web.settings.builtInZoomControls = true comment_detail_web.settings.displayZoomControls = false comment_detail_web.settings.cacheMode = WebSettings.LOAD_NO_CACHE // 不缓存 + comment_detail_web.settings.allowContentAccess = true + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + comment_detail_web.settings.setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE); + } + + comment_detail_web.settings.setBlockNetworkImage(false); dialog = ShareOptionDialog(this@CommentDetailsActivity) dialog?.setOnDismisListener(onDismisListener) @@ -82,7 +93,7 @@ class CommentDetailsActivity: BaseActivity(), View.OnClickListener, MyCallback { override fun onCopyLinkClicked() { Utils.copy(this@CommentDetailsActivity, this@CommentDetailsActivity.url2Load) - T.show(getString(R.string.copy)) + T.show(getString(R.string.copyed)) } } @@ -183,8 +194,10 @@ class CommentDetailsActivity: BaseActivity(), View.OnClickListener, MyCallback { override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { if (url.contains("onArticleShare?")) { dialog?.show() + return false + } else { + return false } - return true } } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt index bd5eff739..4105cd114 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt @@ -2,6 +2,8 @@ package com.tencent.iot.explorer.link.kitlink.fragment import android.content.Intent import android.net.Uri +import android.os.Build +import android.util.Log import android.view.View import android.view.ViewGroup import android.webkit.* @@ -21,7 +23,9 @@ import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.webview.BridgeImpl import com.tencent.iot.explorer.link.kitlink.webview.JSBridgeKt import com.tencent.iot.explorer.link.mvp.IPresenter +import kotlinx.android.synthetic.main.activity_comment_detail.* import kotlinx.android.synthetic.main.fragment_comment.* +import kotlinx.android.synthetic.main.menu_back_layout.* /** * 评测界面 @@ -44,12 +48,8 @@ class CommentFragment : BaseFragment(), View.OnClickListener, MyCallback { getAppGetTokenTicket() } - // 每次刷新显示,重新获取一次 override fun onHiddenChanged(hidden: Boolean) { super.onHiddenChanged(hidden) - if (!hidden) { - getAppGetTokenTicket() - } } override fun startHere(view: View) { @@ -61,6 +61,8 @@ class CommentFragment : BaseFragment(), View.OnClickListener, MyCallback { } private fun initView() { + tv_title.setText(R.string.main_tab_4) + iv_back.visibility = View.INVISIBLE val drawable = resources.getDrawable(R.drawable.progress_bar_states, null) progressbar = ProgressBar(context, null, android.R.attr.progressBarStyleHorizontal) var params = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 5) @@ -78,6 +80,12 @@ class CommentFragment : BaseFragment(), View.OnClickListener, MyCallback { web_comment.settings.builtInZoomControls = true web_comment.settings.displayZoomControls = false web_comment.settings.cacheMode = WebSettings.LOAD_NO_CACHE // 不缓存 + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + web_comment.settings.setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE); + } + + web_comment.settings.setBlockNetworkImage(false); } override fun onClick(v: View?) { @@ -140,7 +148,7 @@ class CommentFragment : BaseFragment(), View.OnClickListener, MyCallback { intent.putExtra(CommonField.EXTRA_INFO, url) startActivity(intent) } - return true + return false } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeChatLogin.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeChatLogin.kt index 9b5fefd87..4710c81c6 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeChatLogin.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/WeChatLogin.kt @@ -113,7 +113,7 @@ class WeChatLogin { }).start() } else { - T.show(context.resources.getString(R.string.not_wechat_client)) + T.show(context.resources.getString(R.string.not_install_wechat_client)) } } diff --git a/app/src/main/res/layout/fragment_comment.xml b/app/src/main/res/layout/fragment_comment.xml index c103015cc..c127f6d01 100644 --- a/app/src/main/res/layout/fragment_comment.xml +++ b/app/src/main/res/layout/fragment_comment.xml @@ -5,18 +5,14 @@ android:layout_height="match_parent" android:background="@color/white"> - + diff --git a/app/src/main/res/layout/popup_share_option_layout.xml b/app/src/main/res/layout/popup_share_option_layout.xml index cd2eba97a..cfe5b39ac 100644 --- a/app/src/main/res/layout/popup_share_option_layout.xml +++ b/app/src/main/res/layout/popup_share_option_layout.xml @@ -12,7 +12,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:background="@drawable/background_top_radius_cell" - android:paddingTop="15dp" + android:paddingTop="0dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -25,7 +25,6 @@ android:layout_width="1dp" android:layout_height="1dp" app:layout_constraintTop_toTopOf="parent" - android:layout_marginTop="22dp" /> 返回首页 问题反馈 已复制 + 已复制到剪切板 请打开 WIFI 下载成功 下载失败 @@ -54,6 +55,7 @@ 验证码已经发送到您的手机: 验证码已经发送到您的邮箱: 未安装微信客户端 + 微信未安装,请安装后重试 取消授权 From b3994c16f6c6009cfdd06a6238b8f8c5d11b20f8 Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Mon, 26 Oct 2020 21:38:40 +0800 Subject: [PATCH 040/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E8=AF=84=E6=B5=8B=E6=A8=A1=E5=9D=97=E5=8F=8D=E9=A6=88=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=88=E8=A1=A5=E5=85=85=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://docs.qq.com/doc/DRW54TFBCY3ZaTWlE Change-Id: I19e21b7d158443faafd4380a74953a2ec92e3b21 --- .../activity/CommentDetailsActivity.kt | 25 ++++++++++++------- .../link/kitlink/fragment/CommentFragment.kt | 2 +- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt index 4de52a041..0cd7ba48a 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt @@ -34,6 +34,8 @@ class CommentDetailsActivity: BaseActivity(), View.OnClickListener, MyCallback { @Volatile private var url2Load: String? = null @Volatile + private var pathUrl: String? = null + @Volatile private var itemJSON: JSONObject? = null override fun getContentView(): Int { @@ -103,12 +105,21 @@ class CommentDetailsActivity: BaseActivity(), View.OnClickListener, MyCallback { } override fun fail(msg: String?, reqCode: Int) { + T.show(msg) } override fun success(response: BaseResponse, reqCode: Int) { + if (response.code !== 0) { + T.show(response.msg) + return + } var js = JSON.parse(response.data.toString()) as JSONObject - url2Load = url2Load + "&ticket=" + js[CommonField.TOKEN_TICKET] - comment_detail_web.loadUrl(url2Load) + + var weburl = CommonField.H5_BASE_URL + "?uin=${Utils.getAndroidID(this)}#" + pathUrl + "&ticket=${js[CommonField.TOKEN_TICKET]}" + url2Load = CommonField.H5_BASE_URL + "?uin=${Utils.getAndroidID(this)}#" + pathUrl + var itemJsonStr = Utils.getUrlParamValue(pathUrl!!, "item") + itemJSON = JSON.parseObject(itemJsonStr) + comment_detail_web.loadUrl(weburl) } private fun loadContent() { @@ -123,12 +134,8 @@ class CommentDetailsActivity: BaseActivity(), View.OnClickListener, MyCallback { comment_detail_web.webViewClient = webViewClient comment_detail_web.webChromeClient = webChromeClient + pathUrl = json.getString(CommonField.KEY_URL) getAppGetTokenTicket() - - var pathUrl = json.getString(CommonField.KEY_URL) - url2Load = CommonField.H5_BASE_URL + "#" + pathUrl - var itemJsonStr = Utils.getUrlParamValue(url2Load!!, "item") - itemJSON = JSON.parseObject(itemJsonStr) } } @@ -194,9 +201,9 @@ class CommentDetailsActivity: BaseActivity(), View.OnClickListener, MyCallback { override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { if (url.contains("onArticleShare?")) { dialog?.show() - return false + return true } else { - return false + return true } } } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt index 4105cd114..f1407e230 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt @@ -45,7 +45,6 @@ class CommentFragment : BaseFragment(), View.OnClickListener, MyCallback { override fun onResume() { super.onResume() initView() - getAppGetTokenTicket() } override fun onHiddenChanged(hidden: Boolean) { @@ -53,6 +52,7 @@ class CommentFragment : BaseFragment(), View.OnClickListener, MyCallback { } override fun startHere(view: View) { + getAppGetTokenTicket() setListener() } From 6801424e78b2f5444280c05eb21039de42ae8e62 Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Tue, 27 Oct 2020 14:10:41 +0800 Subject: [PATCH 041/804] =?UTF-8?q?=E9=A2=84=E5=9F=8B=20jsbridge=20?= =?UTF-8?q?=E7=9A=84=20pageshow=20=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I83f104454083ba607fd4a5d8c32be92c3f9fcec3 --- .../link/kitlink/fragment/CommentFragment.kt | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt index f1407e230..3e39789ba 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/CommentFragment.kt @@ -22,8 +22,10 @@ import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.kitlink.webview.BridgeImpl import com.tencent.iot.explorer.link.kitlink.webview.JSBridgeKt +import com.tencent.iot.explorer.link.kitlink.webview.WebCallBack import com.tencent.iot.explorer.link.mvp.IPresenter import kotlinx.android.synthetic.main.activity_comment_detail.* +import kotlinx.android.synthetic.main.activity_help_feedback.* import kotlinx.android.synthetic.main.fragment_comment.* import kotlinx.android.synthetic.main.menu_back_layout.* @@ -32,6 +34,7 @@ import kotlinx.android.synthetic.main.menu_back_layout.* */ class CommentFragment : BaseFragment(), View.OnClickListener, MyCallback { private var progressbar: ProgressBar? = null + private var callback: WebCallBack? = null override fun getContentView(): Int { return R.layout.fragment_comment @@ -44,14 +47,26 @@ class CommentFragment : BaseFragment(), View.OnClickListener, MyCallback { // 每次窗口返回刷新一次 override fun onResume() { super.onResume() - initView() + refreshListContent() + } + + private fun refreshListContent() { + if (callback != null) { + val jsObject = JSONObject() + jsObject.put(CommonField.HANDLER_NAME, "pageShow") + callback?.apply(jsObject) + } } override fun onHiddenChanged(hidden: Boolean) { super.onHiddenChanged(hidden) + if (!hidden) { + refreshListContent() + } } override fun startHere(view: View) { + initView() getAppGetTokenTicket() setListener() } @@ -85,7 +100,8 @@ class CommentFragment : BaseFragment(), View.OnClickListener, MyCallback { web_comment.settings.setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE); } - web_comment.settings.setBlockNetworkImage(false); + web_comment.settings.setBlockNetworkImage(false) + callback = WebCallBack(web_comment) } override fun onClick(v: View?) { From 9575cb42c364941093c81407bdf22249a7a0ee94 Mon Sep 17 00:00:00 2001 From: archurtan Date: Mon, 26 Oct 2020 15:18:45 +0800 Subject: [PATCH 042/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dfirebase=20crash?= =?UTF-8?q?=EF=BC=88=E6=95=B0=E7=BB=84=E8=B6=8A=E7=95=8C=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://console.firebase.google.com/project/tencent-iot/crashlytics/app/android:com.tencent.iot.explorer.link/issues/0bc946187d43f5a781e64b9333899ae8?time=last-thirty-days&sessionEventKey=5F8EA18B025600017C2DB4A59FCD74EE_1464065712068893106 Change-Id: I4e77fdc9f532c0b6cf8a6f06d3942c573aa2691e --- .../explorer/link/mvp/model/HomeFragmentModel.kt | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt index 89e2d49ed..0f6aaec90 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/HomeFragmentModel.kt @@ -129,10 +129,10 @@ class HomeFragmentModel(view: HomeFragmentView) : ParentModel( /** * 获取设备在线状态 */ - private fun getDeviceOnlineStatus(index: Int, size: Int) { + private fun getDeviceOnlineStatus(index: Int) { var productId = "" val deviceIds = arrayListOf() - for (i in index until size) { + for (i in index until deviceList.size) { App.data.deviceList[i].let { if (TextUtils.isEmpty(productId)) { productId = it.ProductId @@ -150,7 +150,7 @@ class HomeFragmentModel(view: HomeFragmentView) : ParentModel( if (response.isSuccess()) { response.parse(DeviceOnlineResponse::class.java)?.run { if (!DeviceStatuses.isNullOrEmpty()) { - for (i in index until size) { + for (i in index until deviceList.size) { deviceList[i].run { run check@{ DeviceStatuses!!.forEach { @@ -273,10 +273,7 @@ class HomeFragmentModel(view: HomeFragmentView) : ParentModel( refreshShareDeviceList() } //在线状态 - getDeviceOnlineStatus( - deviceList.size - DeviceList.size, - deviceList.size - ) + getDeviceOnlineStatus(deviceList.size - DeviceList.size) } } } @@ -302,10 +299,7 @@ class HomeFragmentModel(view: HomeFragmentView) : ParentModel( shareDeviceListEnd ) //在线状态 - getDeviceOnlineStatus( - deviceList.size - ShareDevices.size, - deviceList.size - ) + getDeviceOnlineStatus(deviceList.size - ShareDevices.size) } } } From 2e75723ba5fe11899072e4114d9d11f728b5a443 Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Wed, 28 Oct 2020 16:59:36 +0800 Subject: [PATCH 043/804] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ida35fa73e712da93f793ac9b785a82d05c67ca1f --- config.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config.gradle b/config.gradle index 5d3116cde..fe69d48d4 100644 --- a/config.gradle +++ b/config.gradle @@ -1,12 +1,12 @@ def gitCommitShortHash = 'git log -1 --pretty=%h'.execute([], project.rootDir).text.trim() -def versionNamePrefix = "1.0.0" -def versionAppName = "1.0.0" +def versionNamePrefix = "1.1.0" +def versionAppName = "1.1.0" ext { android = [ versionNameStr: versionNamePrefix, versionName: versionAppName, - versionCode: 2 + versionCode: 3 ] configPath = "" From 33576a94318bb94f5d5ca42a001183657ab99380 Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Wed, 28 Oct 2020 19:35:17 +0800 Subject: [PATCH 044/804] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7=E5=88=A4=E6=96=AD=E5=8D=87=E7=BA=A7=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E7=9A=84=E6=BC=8F=E6=B4=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I5de5d9caf0ea98efcf4d178aeedda0e3e6d68296 --- .../java/com/tencent/iot/explorer/link/App.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/App.kt b/app/src/main/java/com/tencent/iot/explorer/link/App.kt index 7f254b57f..1d9b46471 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/App.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/App.kt @@ -3,6 +3,7 @@ package com.tencent.iot.explorer.link import android.app.Application import android.content.Intent import android.text.TextUtils +import android.util.Log import androidx.multidex.MultiDex import com.tencent.android.tpush.XGPushConfig import com.tencent.iot.explorer.link.core.auth.IoTAuth @@ -59,16 +60,22 @@ class App : Application() { fun needUpgrade(newVersion: String): Boolean { if (TextUtils.isEmpty(newVersion)) return false var currentVersion = BuildConfig.VERSION_NAME + // 如果是主干版本,强制升级 if (currentVersion.startsWith(MUST_UPGRADE_TAG)) return true var newVerArr = newVersion.split(".") var curVerArr = currentVersion.split(".") for (i in 0..2) { - if (i < newVerArr.size && i < curVerArr.size && - Utils.getFirstSeriesNumFromStr(newVerArr.get(i)) > - Utils.getFirstSeriesNumFromStr(curVerArr.get(i))) { - return true + // 按照顺序新版本只要有一位小于当前版本,直接认为无需升级 + if (i < newVerArr.size && i < curVerArr.size ) { + if (Utils.getFirstSeriesNumFromStr(newVerArr.get(i)) < + Utils.getFirstSeriesNumFromStr(curVerArr.get(i))) { + return false + } else if (Utils.getFirstSeriesNumFromStr(newVerArr.get(i)) > + Utils.getFirstSeriesNumFromStr(curVerArr.get(i))) { + return true + } } } return false From e042e6cd50ccabc95615b75a6fd82c0c378dbad6 Mon Sep 17 00:00:00 2001 From: archurtan Date: Wed, 28 Oct 2020 11:09:14 +0800 Subject: [PATCH 045/804] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89H5=E5=B1=95=E7=A4=BA=E9=A1=B5=E9=9D=A2=E4=BB=A5?= =?UTF-8?q?=E5=8F=8AH5=E4=B8=8ENative=E4=BA=92=E8=B0=83=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit http://tapd.oa.com/NEW_IOT/prong/stories/view/1020393192859862773?url_cache_key=902ccc67f07dde9df8a93930d337ce74&action_entry_type=stories Change-Id: I90f62f8664aabbce89140e2f193ab5b672da5d0e --- app/src/main/AndroidManifest.xml | 52 ++-- .../java/com/tencent/iot/explorer/link/App.kt | 47 ++- .../com/tencent/iot/explorer/link/AppData.kt | 1 + .../kitlink/activity/ControlPanelActivity.kt | 1 - .../kitlink/activity/DevicePanelActivity.kt | 268 ++++++++++++++++++ .../kitlink/activity/FeedbackForH5Activity.kt | 104 +++++++ .../link/kitlink/fragment/HomeFragment.kt | 50 +++- .../main/res/layout/activity_device_panel.xml | 29 ++ .../res/layout/activity_feedback_for_h5.xml | 18 ++ .../link/core/auth/entity/DeviceEntity.kt | 1 + 10 files changed, 538 insertions(+), 33 deletions(-) create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FeedbackForH5Activity.kt create mode 100644 app/src/main/res/layout/activity_device_panel.xml create mode 100644 app/src/main/res/layout/activity_feedback_for_h5.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e67d49e89..534ef48af 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ + xmlns:tools="http://schemas.android.com/tools" + package="com.tencent.iot.explorer.link"> @@ -42,16 +42,16 @@ + android:name=".App" + android:allowBackup="false" + android:icon="@mipmap/ic_launcher" + android:label="@string/app_name" + android:roundIcon="@mipmap/ic_launcher_round" + android:supportsRtl="true" + android:theme="@style/AppTheme" + android:usesCleartextTraffic="true" + android:requestLegacyExternalStorage="true" + tools:replace="android:allowBackup"> + android:name="org.apache.http.legacy" + android:required="false" /> @@ -90,7 +90,7 @@ + android:name=".kitlink.activity.GuideActivity"> @@ -117,8 +117,8 @@ + android:name=".kitlink.activity.FeedbackActivity" + android:windowSoftInputMode="adjustPan" /> @@ -128,13 +128,15 @@ + + + android:name=".kitlink.wxapi.WXEntryActivity" + android:exported="true" + android:label="@string/app_name" + android:launchMode="singleTask" + android:taskAffinity="com.tencent.iot.explorer.link.kitlink" + android:theme="@android:style/Theme.Translucent.NoTitleBar" /> + android:name="TencentMapSDK" + android:value="${MAP_SDK_VALUE}" /> () diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ControlPanelActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ControlPanelActivity.kt index ac9602bbd..88bd49a6f 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ControlPanelActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ControlPanelActivity.kt @@ -289,5 +289,4 @@ class ControlPanelActivity : PActivity(), ControlPanelView, CRecyclerView.Recycl job?.cancel() super.onDestroy() } - } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt new file mode 100644 index 000000000..4b99267cb --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt @@ -0,0 +1,268 @@ +package com.tencent.iot.explorer.link.kitlink.activity + +import android.annotation.SuppressLint +import android.content.Intent +import android.net.Uri +import android.os.Build +import android.text.TextUtils +import android.view.View +import android.webkit.* +import com.alibaba.fastjson.JSON +import com.alibaba.fastjson.JSONObject +import com.tencent.iot.explorer.link.App +import com.tencent.iot.explorer.link.AppLifeCircleListener +import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse +import com.tencent.iot.explorer.link.core.log.L +import com.tencent.iot.explorer.link.core.utils.Utils +import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.popup.EditPopupWindow +import com.tencent.iot.explorer.link.kitlink.util.HttpRequest +import com.tencent.iot.explorer.link.kitlink.util.MyCallback +import com.tencent.iot.explorer.link.kitlink.util.RequestCode +import com.tencent.iot.explorer.link.kitlink.webview.WebCallBack +import kotlinx.android.synthetic.main.activity_device_details.* +import kotlinx.android.synthetic.main.activity_device_panel.* +import kotlinx.android.synthetic.main.menu_back_layout.* + +class DevicePanelActivity: BaseActivity(), View.OnClickListener, MyCallback, AppLifeCircleListener { + + private val H5_PANEL_BASE_URL = "https://iot.cloud.tencent.com/scf/h5panel/" + private var callback: WebCallBack? = null + private var deviceEntity: DeviceEntity? = null + private var editPopupWindow: EditPopupWindow? = null + + override fun getContentView(): Int { + return R.layout.activity_device_panel + } + + override fun initView() { + iv_back.setColorFilter(R.color.black_333333) + tv_title.text = "" + deviceEntity = get("device") + getAppGetTokenTicket() + } + + private fun getAppGetTokenTicket() { + HttpRequest.instance.getOneTimeTokenTicket(this) + } + + override fun setListener() { + iv_back.setOnClickListener { finish() } + } + + override fun onClick(v: View?) { + } + + override fun fail(msg: String?, reqCode: Int) { + msg?.let { L.e(it) } + } + + override fun success(response: BaseResponse, reqCode: Int) { + when (reqCode) { + RequestCode.token_ticket -> { + if (response.isSuccess()) { + val ticketResponse = JSON.parse(response.data.toString()) as JSONObject + var url = H5_PANEL_BASE_URL + + "?deviceId=${deviceEntity?.DeviceId}" + + "&familyId=${deviceEntity?.FamilyId}" + + "&roomId=${deviceEntity?.RoomId}" + + "&familyType=0" + + "&lid=${App.data.appLifeCircleId}" + + "&quid=${Utils.getAndroidID(this)}" + + "&ticket=${ticketResponse[CommonField.TOKEN_TICKET]}" + + "&appID=${T.getContext().applicationInfo.packageName}" + + "&platform=android" + + "®ionId=${App.data.regionId}" + if (deviceEntity?.FromUserID?.length!! > 0) { + url += "&isShareDevice=true" + } + showUrl(url) + } else { + T.show(response.msg) + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + device_panel_webview.clearHistory() + device_panel_webview.clearCache(true) + device_panel_webview.loadUrl("about:blank") + } + + override fun onResume() { + super.onResume() + callback?.apply(buildEventByName("pageShow")) + } + + override fun onPause() { + super.onPause() + callback?.apply(buildEventByName("pageHide")) + } + + override fun onAppGoforeground() { + callback?.apply(buildEventByName("appShow")) + } + + override fun onAppGoBackground() { + callback?.apply(buildEventByName("appHide")) + } + + @SuppressLint("SetJavaScriptEnabled") + private fun showUrl(url: String) { + device_panel_webview.settings.javaScriptEnabled = true // 设置js支持 + device_panel_webview.settings.domStorageEnabled = true // 开启 DOM storage API 功能 + device_panel_webview.settings.textZoom = 100 // 设置网页字体不跟随系统字体发生改变 + device_panel_webview.settings.useWideViewPort = true // 缩放至屏幕的大小 + device_panel_webview.settings.loadWithOverviewMode = true + device_panel_webview.settings.setSupportZoom(true) // 是否支持缩放 + device_panel_webview.settings.builtInZoomControls = true + device_panel_webview.settings.displayZoomControls = false + device_panel_webview.settings.cacheMode = WebSettings.LOAD_NO_CACHE // 不缓存 + device_panel_webview.settings.allowContentAccess = true + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + device_panel_webview.settings.mixedContentMode = WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE; + } + device_panel_webview.settings.blockNetworkImage = false + device_panel_webview.loadUrl(url) + device_panel_webview.webViewClient = webViewClient + device_panel_webview.webChromeClient = webChromeClient + + callback = WebCallBack(device_panel_webview) + } + + private val webChromeClient = object: WebChromeClient() { + override fun onShowFileChooser ( + webView: WebView, + filePathCallback: ValueCallback>, + fileChooserParams: FileChooserParams?): Boolean { + return true + } + + override fun onReceivedTitle(view: WebView?, title: String?) { + super.onReceivedTitle(view, title) + tv_title.text = title + } + + override fun onReceivedTouchIconUrl(view: WebView?, url: String?, precomposed: Boolean) { } + + override fun onJsPrompt(view: WebView, url: String, message: String, defaultValue: String, result: JsPromptResult): Boolean { + return true + } + } + + private val webViewClient = object: WebViewClient() { + override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { + L.e("shouldOverrideUrlLoading: " + url) + when { + url.contains("goDeviceDetailPage") -> { + jumpActivity(DeviceDetailsActivity::class.java) + } + url.contains("goFeedBackPage") -> { + jumpActivity(FeedbackForH5Activity::class.java) + } + url.contains("goDeviceInfoPage") -> { + callBackToH5(getCallbackId(url)) + jumpActivity(DeviceInfoActivity::class.java) + } + url.contains("goEditDeviceNamePage") -> { + callBackToH5(getCallbackId(url)) + showEditPopup() + } + url.contains("goRoomSettingPage") -> { + callBackToH5(getCallbackId(url)) + jumpActivity(SelectRoomActivity::class.java) + } + url.contains("goShareDevicePage") -> { + callBackToH5(getCallbackId(url)) + jumpActivity(ShareUserListActivity::class.java) + } + url.contains("navBack") -> { + callBackToH5(getCallbackId(url)) + App.data.setRefreshLevel(2) // 2: 刷新设备列表 + backToMain() + } + url.contains("reloadAfterUnmount") -> { + callBackToH5(getCallbackId(url)) + } + url.contains("setShareConfig") -> { + callBackToH5(getCallbackId(url)) + } + url.contains("goFirmwareUpgradePage") -> { + callBackToH5(getCallbackId(url)) + } + } + return true + } + } + + private fun callBackToH5(id: String) { + if (callback != null) { + val jsonObject1 = JSONObject() + val jsonObject2 = JSONObject() + jsonObject2["result"] = "true" + jsonObject2["callbackId"] = id + jsonObject1[CommonField.HANDLER_NAME] = "callResult" + jsonObject1["data"] = jsonObject2 + callback?.apply(jsonObject1) + } + } + + private fun getCallbackId(url: String): String { + val uri = Uri.parse(url) + val param = JSON.parseObject(uri.query) + return param["callbackId"].toString() + } + + private fun showEditPopup() { + if (editPopupWindow == null) { + editPopupWindow = EditPopupWindow(this) + } + deviceEntity?.run { + editPopupWindow?.setShowData(getString(R.string.device_name), AliasName) + } + editPopupWindow?.show(device_panel) + editPopupWindow?.onVerifyListener = object : EditPopupWindow.OnVerifyListener { + override fun onVerify(text: String) { + commitAlias(text) + } + } + } + + private fun commitAlias(aliasName: String) { + if (TextUtils.isEmpty(aliasName)) return + deviceEntity?.let { + HttpRequest.instance.modifyDeviceAliasName(it.ProductId, it.DeviceName, aliasName, + object : MyCallback { + override fun fail(msg: String?, reqCode: Int) { + L.e(msg ?: "") + } + + override fun success(response: BaseResponse, reqCode: Int) { + if (response.isSuccess()) { + deviceEntity?.AliasName = aliasName + } else { + if (!TextUtils.isEmpty(response.msg)) + T.show(response.msg) + } + editPopupWindow?.dismiss() + } + } + ) + } + } + + private fun buildEventByName(name: String): JSONObject { + val jsonObject1 = JSONObject() + val jsonObject2 = JSONObject() + jsonObject2["name"] = name + jsonObject1[CommonField.HANDLER_NAME] = "emitEvent" + jsonObject1["data"] = jsonObject2 + return jsonObject1 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FeedbackForH5Activity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FeedbackForH5Activity.kt new file mode 100644 index 000000000..228d80e88 --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/FeedbackForH5Activity.kt @@ -0,0 +1,104 @@ +package com.tencent.iot.explorer.link.kitlink.activity + +import android.annotation.SuppressLint +import android.net.Uri +import android.os.Build +import android.view.View +import android.webkit.* +import com.alibaba.fastjson.JSON +import com.alibaba.fastjson.JSONObject +import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse +import com.tencent.iot.explorer.link.core.log.L +import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.util.HttpRequest +import com.tencent.iot.explorer.link.kitlink.util.MyCallback +import com.tencent.iot.explorer.link.kitlink.webview.WebCallBack +import kotlinx.android.synthetic.main.activity_device_panel.* +import kotlinx.android.synthetic.main.activity_feedback_for_h5.* +import kotlinx.android.synthetic.main.menu_back_layout.* + +class FeedbackForH5Activity : BaseActivity(), View.OnClickListener, MyCallback { + + override fun getContentView(): Int { + return R.layout.activity_feedback_for_h5 + } + + override fun initView() { + iv_back.setColorFilter(R.color.black_333333) + tv_title.text = "" + getAppGetTokenTicket() + } + + override fun setListener() { + iv_back.setOnClickListener { finish() } + } + + override fun onClick(v: View?) { } + + override fun fail(msg: String?, reqCode: Int) { + msg?.let { L.e(it) } + } + + override fun success(response: BaseResponse, reqCode: Int) { + if (response.isSuccess()) { + val ticketResponse = JSON.parse(response.data.toString()) as JSONObject + val url = "https://iot.cloud.tencent.com/explorer-h5/help-center/?" + + "&appID=${T.getContext().applicationInfo.packageName}" + + "&ticket=${ticketResponse[CommonField.TOKEN_TICKET]}" + + "#/pages/User/Feedback/Feedback" + showUrl(url) + } else { + L.e(response.msg) + } + } + + private fun getAppGetTokenTicket() { + HttpRequest.instance.getOneTimeTokenTicket(this) + } + + @SuppressLint("SetJavaScriptEnabled") + private fun showUrl(url: String) { + feedback_detail_web.settings.javaScriptEnabled = true // 设置js支持 + feedback_detail_web.settings.domStorageEnabled = true // 开启 DOM storage API 功能 + feedback_detail_web.settings.textZoom = 100 // 设置网页字体不跟随系统字体发生改变 + feedback_detail_web.settings.useWideViewPort = true // 缩放至屏幕的大小 + feedback_detail_web.settings.loadWithOverviewMode = true + feedback_detail_web.settings.setSupportZoom(true) // 是否支持缩放 + feedback_detail_web.settings.builtInZoomControls = true + feedback_detail_web.settings.displayZoomControls = false + feedback_detail_web.settings.cacheMode = WebSettings.LOAD_NO_CACHE // 不缓存 + feedback_detail_web.settings.allowContentAccess = true + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + feedback_detail_web.settings.mixedContentMode = WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE; + } + feedback_detail_web.settings.blockNetworkImage = false + feedback_detail_web.webChromeClient = webChromeClient + feedback_detail_web.webViewClient = webViewClient + feedback_detail_web.loadUrl(url) + } + + private val webChromeClient = object: WebChromeClient() { + override fun onShowFileChooser ( + webView: WebView, + filePathCallback: ValueCallback>, + fileChooserParams: FileChooserParams?): Boolean { + return true + } + override fun onReceivedTitle(view: WebView?, title: String?) { + super.onReceivedTitle(view, title) + tv_title.text = title + } + override fun onReceivedTouchIconUrl(view: WebView?, url: String?, precomposed: Boolean) { } + override fun onJsPrompt(view: WebView, url: String, message: String, defaultValue: String, result: JsPromptResult): Boolean { + return true + } + } + private val webViewClient = object: WebViewClient() { + override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { + return true + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/HomeFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/HomeFragment.kt index 782e024e5..4199cc128 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/HomeFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/HomeFragment.kt @@ -1,11 +1,14 @@ package com.tencent.iot.explorer.link.kitlink.fragment import android.graphics.Rect +import android.text.TextUtils import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.alibaba.fastjson.JSON +import com.alibaba.fastjson.JSONObject import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.activity.ControlPanelActivity @@ -16,18 +19,29 @@ import com.tencent.iot.explorer.link.mvp.presenter.HomeFragmentPresenter import com.tencent.iot.explorer.link.mvp.view.HomeFragmentView import com.scwang.smart.refresh.layout.api.RefreshLayout import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener +import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.core.auth.entity.DeviceEntity import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse +import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.core.log.L +import com.tencent.iot.explorer.link.core.utils.Utils import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerDivider import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView +import com.tencent.iot.explorer.link.kitlink.activity.DevicePanelActivity +import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.entity.ProdConfigDetailEntity +import com.tencent.iot.explorer.link.kitlink.response.ProductsConfigResponse +import com.tencent.iot.explorer.link.kitlink.util.HttpRequest +import com.tencent.iot.explorer.link.kitlink.util.MyCallback +import com.tencent.iot.explorer.link.kitlink.util.RequestCode import kotlinx.android.synthetic.main.fragment_home.* import kotlinx.android.synthetic.main.head_home.* /** * 设备界面 */ -class HomeFragment : BaseFragment(), HomeFragmentView, CRecyclerView.RecyclerItemView { +class HomeFragment : BaseFragment(), HomeFragmentView, CRecyclerView.RecyclerItemView, MyCallback { private lateinit var presenter: HomeFragmentPresenter @@ -322,11 +336,41 @@ class HomeFragment : BaseFragment(), HomeFragmentView, CRecyclerView.RecyclerIte clickView: View, position: Int ) { - put("device", presenter.getDeviceEntity(position)) - jumpActivity(ControlPanelActivity::class.java) + val device = presenter.getDeviceEntity(position) + put("device", device) + val productList = arrayListOf() + productList.add(device.ProductId) + HttpRequest.instance.getProductsConfig(productList, this) } interface PopupListener { fun onPopupListener(familyList: List) } + + override fun fail(msg: String?, reqCode: Int) { + msg?.let { L.e(it) } + } + + override fun success(response: BaseResponse, reqCode: Int) { + when (reqCode) { + RequestCode.get_products_config -> { + if (response.isSuccess()) { + response.parse(ProductsConfigResponse::class.java)?.run { + val config = JsonManager.parseJson( + Data[0].Config, + ProdConfigDetailEntity::class.java + ) + val panelInfo = JSON.parseObject(config.Panel) + if (panelInfo["type"] == "h5") { + jumpActivity(DevicePanelActivity::class.java) + } else if (panelInfo["type"] == "standard") { + jumpActivity(ControlPanelActivity::class.java) + } + } + } else { + T.show(response.msg) + } + } + } + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_device_panel.xml b/app/src/main/res/layout/activity_device_panel.xml new file mode 100644 index 000000000..f7346cff7 --- /dev/null +++ b/app/src/main/res/layout/activity_device_panel.xml @@ -0,0 +1,29 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_feedback_for_h5.xml b/app/src/main/res/layout/activity_feedback_for_h5.xml new file mode 100644 index 000000000..27385ae62 --- /dev/null +++ b/app/src/main/res/layout/activity_feedback_for_h5.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceEntity.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceEntity.kt index 313f83bda..137e87b4f 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceEntity.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/DeviceEntity.kt @@ -16,6 +16,7 @@ open class DeviceEntity { var DeviceType = "" var CreateTime = 0L var UpdateTIme = 0L + var FromUserID = "" //在线状态 var online = 0 From 8850ae0bd2cf146c942d075774858ad9cf7723c5 Mon Sep 17 00:00:00 2001 From: archurtan Date: Fri, 30 Oct 2020 16:59:26 +0800 Subject: [PATCH 046/804] =?UTF-8?q?=E4=BC=98=E5=8C=96=E2=80=98=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E6=98=AF=E5=90=A6=E6=98=AF=E5=85=B1=E4=BA=AB=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E2=80=99=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I3871aafe881ac63e41cd81ed52862c3a91f5314d --- .../iot/explorer/link/kitlink/activity/DevicePanelActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt index 4b99267cb..0077394f8 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt @@ -76,7 +76,7 @@ class DevicePanelActivity: BaseActivity(), View.OnClickListener, MyCallback, App "&appID=${T.getContext().applicationInfo.packageName}" + "&platform=android" + "®ionId=${App.data.regionId}" - if (deviceEntity?.FromUserID?.length!! > 0) { + if (deviceEntity?.shareDevice!!) { url += "&isShareDevice=true" } showUrl(url) From ccb175ffe1610c9d932d3d531c7aac983e7ed50b Mon Sep 17 00:00:00 2001 From: archurtan Date: Thu, 29 Oct 2020 18:04:58 +0800 Subject: [PATCH 047/804] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=9B=9E=E8=B0=83H5?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit http://tapd.oa.com/NEW_IOT/prong/stories/view/1020393192859862773?url_cache_key=902ccc67f07dde9df8a93930d337ce74&action_entry_type=stories Change-Id: I5a4966ac1e7834d4867ece9c4cd27be479026202 --- .../link/kitlink/activity/DevicePanelActivity.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt index 0077394f8..bbd75d525 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt @@ -161,9 +161,11 @@ class DevicePanelActivity: BaseActivity(), View.OnClickListener, MyCallback, App L.e("shouldOverrideUrlLoading: " + url) when { url.contains("goDeviceDetailPage") -> { + callBackToH5(getCallbackId(url)) jumpActivity(DeviceDetailsActivity::class.java) } url.contains("goFeedBackPage") -> { + callBackToH5(getCallbackId(url)) jumpActivity(FeedbackForH5Activity::class.java) } url.contains("goDeviceInfoPage") -> { @@ -202,7 +204,7 @@ class DevicePanelActivity: BaseActivity(), View.OnClickListener, MyCallback, App } private fun callBackToH5(id: String) { - if (callback != null) { + if (callback != null && id.isNotEmpty()) { val jsonObject1 = JSONObject() val jsonObject2 = JSONObject() jsonObject2["result"] = "true" @@ -216,7 +218,11 @@ class DevicePanelActivity: BaseActivity(), View.OnClickListener, MyCallback, App private fun getCallbackId(url: String): String { val uri = Uri.parse(url) val param = JSON.parseObject(uri.query) - return param["callbackId"].toString() + return if (param["callbackId"] != null) { + param["callbackId"].toString() + } else { + "" + } } private fun showEditPopup() { From d382b94c49cee20ce1b5ab1ba97d557d72af25e8 Mon Sep 17 00:00:00 2001 From: archurtan Date: Fri, 30 Oct 2020 17:36:06 +0800 Subject: [PATCH 048/804] =?UTF-8?q?=E8=B0=83=E6=95=B4UIN=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E4=B8=BA=E8=AE=BE=E5=A4=87=E6=A0=87=E8=AF=86=E7=AC=A6=E5=B9=B6?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=8E=B7=E5=8F=96familyType?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit http://tapd.oa.com/NEW_IOT/prong/stories/view/1020393192859862773?url_cache_key=902ccc67f07dde9df8a93930d337ce74&action_entry_type=stories Change-Id: I4bdacb3c6cd50842c18bc62177199e704ab27e88 --- .../iot/explorer/link/kitlink/activity/DevicePanelActivity.kt | 3 ++- .../iot/explorer/link/kitlink/fragment/HomeFragment.kt | 4 ---- .../iot/explorer/link/core/auth/entity/FamilyEntity.kt | 1 + 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt index bbd75d525..c6073d558 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/DevicePanelActivity.kt @@ -68,8 +68,9 @@ class DevicePanelActivity: BaseActivity(), View.OnClickListener, MyCallback, App var url = H5_PANEL_BASE_URL + "?deviceId=${deviceEntity?.DeviceId}" + "&familyId=${deviceEntity?.FamilyId}" + + "&uin=${Utils.getAndroidID(this)}" + "&roomId=${deviceEntity?.RoomId}" + - "&familyType=0" + + "&familyType=${App.data.getCurrentFamily().FamilyType}" + "&lid=${App.data.appLifeCircleId}" + "&quid=${Utils.getAndroidID(this)}" + "&ticket=${ticketResponse[CommonField.TOKEN_TICKET]}" + diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/HomeFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/HomeFragment.kt index 4199cc128..f59d67919 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/HomeFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/HomeFragment.kt @@ -1,14 +1,12 @@ package com.tencent.iot.explorer.link.kitlink.fragment import android.graphics.Rect -import android.text.TextUtils import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.alibaba.fastjson.JSON -import com.alibaba.fastjson.JSONObject import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.kitlink.activity.ControlPanelActivity @@ -25,11 +23,9 @@ import com.tencent.iot.explorer.link.core.auth.entity.FamilyEntity import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.core.utils.Utils import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerDivider import com.tencent.iot.explorer.link.customview.recyclerview.CRecyclerView import com.tencent.iot.explorer.link.kitlink.activity.DevicePanelActivity -import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.entity.ProdConfigDetailEntity import com.tencent.iot.explorer.link.kitlink.response.ProductsConfigResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest diff --git a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/FamilyEntity.kt b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/FamilyEntity.kt index 6aa8297a5..196143b1c 100644 --- a/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/FamilyEntity.kt +++ b/sdk/src/main/java/com/tencent/iot/explorer/link/core/auth/entity/FamilyEntity.kt @@ -6,6 +6,7 @@ package com.tencent.iot.explorer.link.core.auth.entity */ class FamilyEntity { var FamilyId = "" + var FamilyType = 0 var FamilyName = "" var Role = 0 // 1:自己是管理员 0:普通成员 var CreateTime = 0L From 3f3bbfdb55af38365a5653a48f96543a7cb8cdfa Mon Sep 17 00:00:00 2001 From: archurtan Date: Thu, 29 Oct 2020 20:09:45 +0800 Subject: [PATCH 049/804] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=89=93Release?= =?UTF-8?q?=E5=8C=85=E6=97=B6versionCode=E8=87=AA=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ie970098391d4ed152d9ee05a7f7dab81c7175757 --- .github/scripts/updateVersionCodeForRelease.sh | 16 ++++++++++++++++ .github/workflows/tencent_official.yml | 1 + 2 files changed, 17 insertions(+) create mode 100644 .github/scripts/updateVersionCodeForRelease.sh diff --git a/.github/scripts/updateVersionCodeForRelease.sh b/.github/scripts/updateVersionCodeForRelease.sh new file mode 100644 index 000000000..6aebbb283 --- /dev/null +++ b/.github/scripts/updateVersionCodeForRelease.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +#当前时间 +curTime=$(date +%s) +echo "当前时间---$curTime" + +#基准差值 +baseTime=$(date -d "2020-10-29 00:00:00" +%s) +timeStamp=$((curTime-baseTime)) +echo "基准差值---$timeStamp" + +#版本号 +buildTime=$((timeStamp/(86400*7)+4)) +echo "版本号---$buildTime" + +sed -i 's#versionCode: 3#versionCode: '$buildTime'#g' config.gradle \ No newline at end of file diff --git a/.github/workflows/tencent_official.yml b/.github/workflows/tencent_official.yml index 7d4c12355..6a07b594c 100644 --- a/.github/workflows/tencent_official.yml +++ b/.github/workflows/tencent_official.yml @@ -43,6 +43,7 @@ jobs: export KEY_ID_OF_SIGN=$IOT_GPG_KEYNAME export PASSWORD_OF_SIGN=$IOT_GPG_PASSPHRASE sh .github/scripts/updateValuesForSign.sh + sh .github/scripts/updateVersionCodeForRelease.sh - name: Adapt build.gradle from debug to release run: | sed -i 's#opensource_keystore#tencent_official_keystore#g' app/build.gradle From 656fa78abdf749b3d2a8b7c6bee12d667aa60667 Mon Sep 17 00:00:00 2001 From: archurtan Date: Fri, 30 Oct 2020 21:49:24 +0800 Subject: [PATCH 050/804] =?UTF-8?q?=E8=B0=83=E6=95=B4CI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I571fd899c17905b44463866c97e46d48b9828ce9 --- .github/workflows/tencent_official.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/tencent_official.yml b/.github/workflows/tencent_official.yml index 6a07b594c..054fcd662 100644 --- a/.github/workflows/tencent_official.yml +++ b/.github/workflows/tencent_official.yml @@ -43,6 +43,8 @@ jobs: export KEY_ID_OF_SIGN=$IOT_GPG_KEYNAME export PASSWORD_OF_SIGN=$IOT_GPG_PASSPHRASE sh .github/scripts/updateValuesForSign.sh + - name: Update VersionCode + run: | sh .github/scripts/updateVersionCodeForRelease.sh - name: Adapt build.gradle from debug to release run: | From bea19ffea1856583a691ac8e719ef89422648da0 Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Fri, 30 Oct 2020 22:25:36 +0800 Subject: [PATCH 051/804] =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I4549489bee2c8a86b8b902d10410d1a7e9c7f5f0 --- .../iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt index 0cd7ba48a..cbff11da5 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt @@ -44,6 +44,7 @@ class CommentDetailsActivity: BaseActivity(), View.OnClickListener, MyCallback { override fun initView() { initWebView() + Log.e("XXX", "---------1") iv_back.setColorFilter(R.color.black_333333) tv_title.setText("") } From 79697c20117a611c6763c7fbfff947a236afa090 Mon Sep 17 00:00:00 2001 From: sevenhhe Date: Fri, 30 Oct 2020 22:24:52 +0800 Subject: [PATCH 052/804] =?UTF-8?q?Revert=20"=E6=B5=8B=E8=AF=95"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit bea19ffea1856583a691ac8e719ef89422648da0. Reason for revert: Change-Id: Ic68fd537a120ab370fca875eef41051a0e12e1bc --- .../iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt index cbff11da5..0cd7ba48a 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/CommentDetailsActivity.kt @@ -44,7 +44,6 @@ class CommentDetailsActivity: BaseActivity(), View.OnClickListener, MyCallback { override fun initView() { initWebView() - Log.e("XXX", "---------1") iv_back.setColorFilter(R.color.black_333333) tv_title.setText("") } From db602a5d1a99619c44fa7272d93e47be970d6c21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?v=5Fvweisun=28=E5=AD=99=E4=BC=9F=29?= <532125505@qq.com> Date: Wed, 28 Oct 2020 09:30:32 +0800 Subject: [PATCH 053/804] =?UTF-8?q?=E3=80=90=E8=85=BE=E8=AE=AF=E8=BF=9E?= =?UTF-8?q?=E8=BF=9EAPP=E3=80=91=E5=AE=89=E5=8D=93=E9=85=8D=E7=BD=91?= =?UTF-8?q?=E8=A7=86=E8=A7=89=E4=B8=8Eios=E5=90=8C=E6=AD=A5=E9=9C=80?= =?UTF-8?q?=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit http://tapd.oa.com/NEW_IOT/prong/stories/view/1020393192860444833 Change-Id: Ia04a9616bf5bd9413cabb141f855856370d38db3 --- app/src/main/AndroidManifest.xml | 3 + .../customview/dialog/ConnectWifiDialog.java | 189 ++++++++++++++ .../progress/HorizontalStepView.java | 151 +++++++++++ .../HorizontalStepsViewIndicator.java | 236 +++++++++++++++++ .../customview/progress/bean/StepBean.java | 23 ++ .../activity/ConfigNetFailedActivity.kt | 81 ++++++ .../activity/ConfigNetSuccessActivity.kt | 48 ++++ .../kitlink/activity/HelpWebViewActivity.kt | 9 + .../kitlink/activity/SmartConnectActivity.kt | 63 ++--- .../link/kitlink/activity/SoftApActivity.kt | 55 ++-- .../link/kitlink/consts/CommonField.kt | 2 + .../fragment/ConnectProgressFragment.kt | 237 +++++++++++------ .../link/kitlink/fragment/SCStepFragment.kt | 2 +- .../kitlink/fragment/SoftHotspotFragment.kt | 66 +---- .../link/kitlink/fragment/WifiFragment.kt | 89 ++++--- .../util/picture/utils/BitmapUtils.java | 34 +++ .../explorer/link/mvp/model/ConnectModel.kt | 2 +- app/src/main/res/drawable/background_cell.xml | 13 + app/src/main/res/drawable/btn_style.xml | 5 + app/src/main/res/drawable/circle_shape.xml | 14 + .../res/drawable/circle_uncomplete_shape.xml | 14 + .../res/layout/activity_config_net_failed.xml | 142 ++++++++++ .../layout/activity_config_net_success.xml | 114 ++++++++ .../res/layout/activity_smart_connect.xml | 102 ++++---- app/src/main/res/layout/activity_soft_ap.xml | 107 ++++---- .../res/layout/fragment_connect_progress.xml | 144 ++++++++-- .../res/layout/fragment_smart_config_step.xml | 108 ++++---- .../main/res/layout/fragment_soft_ap_step.xml | 116 +++++---- .../main/res/layout/fragment_soft_hotspot.xml | 148 ++++------- app/src/main/res/layout/fragment_wifi.xml | 6 +- app/src/main/res/layout/item_wifi_info.xml | 48 ++++ .../main/res/layout/popup_connect_layout.xml | 98 +++++++ .../res/layout/popup_smart_config_network.xml | 139 ++++++++++ .../main/res/layout/smart_config_second.xml | 246 ++++++++++++------ .../layout/widget_horizontal_stepsview.xml | 18 ++ .../res/mipmap-hdpi/config_net_progress.png | Bin 0 -> 6959 bytes .../res/mipmap-hdpi/image_smart_config.png | Bin 0 -> 239572 bytes app/src/main/res/mipmap-hdpi/info.png | Bin 0 -> 918 bytes app/src/main/res/mipmap-hdpi/loading.png | Bin 0 -> 1861 bytes app/src/main/res/mipmap-hdpi/lock.png | Bin 0 -> 800 bytes app/src/main/res/mipmap-hdpi/more_wifi.png | Bin 0 -> 422 bytes app/src/main/res/mipmap-hdpi/right.png | Bin 0 -> 3297 bytes app/src/main/res/mipmap-hdpi/success.png | Bin 0 -> 1618 bytes app/src/main/res/mipmap-hdpi/warning.png | Bin 0 -> 3328 bytes app/src/main/res/mipmap-hdpi/wifi.png | Bin 0 -> 1107 bytes .../main/res/mipmap-hdpi/wifi_selected.png | Bin 0 -> 573 bytes .../res/mipmap-mdpi/config_net_progress.png | Bin 0 -> 6959 bytes .../res/mipmap-mdpi/image_smart_config.png | Bin 0 -> 239572 bytes app/src/main/res/mipmap-mdpi/info.png | Bin 0 -> 918 bytes app/src/main/res/mipmap-mdpi/loading.png | Bin 0 -> 1861 bytes app/src/main/res/mipmap-mdpi/lock.png | Bin 0 -> 800 bytes app/src/main/res/mipmap-mdpi/more_wifi.png | Bin 0 -> 422 bytes app/src/main/res/mipmap-mdpi/right.png | Bin 0 -> 3297 bytes app/src/main/res/mipmap-mdpi/success.png | Bin 0 -> 1618 bytes app/src/main/res/mipmap-mdpi/warning.png | Bin 0 -> 3328 bytes app/src/main/res/mipmap-mdpi/wifi.png | Bin 0 -> 1107 bytes .../main/res/mipmap-mdpi/wifi_selected.png | Bin 0 -> 573 bytes .../res/mipmap-xhdpi/config_net_progress.png | Bin 0 -> 6959 bytes .../res/mipmap-xhdpi/image_smart_config.png | Bin 0 -> 239572 bytes app/src/main/res/mipmap-xhdpi/info.png | Bin 0 -> 918 bytes app/src/main/res/mipmap-xhdpi/loading.png | Bin 0 -> 1861 bytes app/src/main/res/mipmap-xhdpi/lock.png | Bin 0 -> 800 bytes app/src/main/res/mipmap-xhdpi/more_wifi.png | Bin 0 -> 422 bytes app/src/main/res/mipmap-xhdpi/right.png | Bin 0 -> 3297 bytes app/src/main/res/mipmap-xhdpi/success.png | Bin 0 -> 1618 bytes app/src/main/res/mipmap-xhdpi/warning.png | Bin 0 -> 3328 bytes app/src/main/res/mipmap-xhdpi/wifi.png | Bin 0 -> 1107 bytes .../main/res/mipmap-xhdpi/wifi_selected.png | Bin 0 -> 573 bytes .../res/mipmap-xxhdpi/config_net_progress.png | Bin 0 -> 6959 bytes .../res/mipmap-xxhdpi/image_smart_config.png | Bin 0 -> 239572 bytes app/src/main/res/mipmap-xxhdpi/info.png | Bin 0 -> 918 bytes app/src/main/res/mipmap-xxhdpi/loading.png | Bin 0 -> 1861 bytes app/src/main/res/mipmap-xxhdpi/lock.png | Bin 0 -> 800 bytes app/src/main/res/mipmap-xxhdpi/more_wifi.png | Bin 0 -> 422 bytes app/src/main/res/mipmap-xxhdpi/right.png | Bin 0 -> 3297 bytes app/src/main/res/mipmap-xxhdpi/success.png | Bin 0 -> 1618 bytes app/src/main/res/mipmap-xxhdpi/warning.png | Bin 0 -> 3328 bytes app/src/main/res/mipmap-xxhdpi/wifi.png | Bin 0 -> 1107 bytes .../main/res/mipmap-xxhdpi/wifi_selected.png | Bin 0 -> 573 bytes .../mipmap-xxxhdpi/config_net_progress.png | Bin 0 -> 6959 bytes .../res/mipmap-xxxhdpi/image_smart_config.png | Bin 31431 -> 239572 bytes app/src/main/res/mipmap-xxxhdpi/info.png | Bin 0 -> 918 bytes app/src/main/res/mipmap-xxxhdpi/loading.png | Bin 0 -> 1861 bytes app/src/main/res/mipmap-xxxhdpi/lock.png | Bin 0 -> 800 bytes app/src/main/res/mipmap-xxxhdpi/more_wifi.png | Bin 0 -> 422 bytes app/src/main/res/mipmap-xxxhdpi/right.png | Bin 0 -> 3297 bytes app/src/main/res/mipmap-xxxhdpi/success.png | Bin 0 -> 1618 bytes app/src/main/res/mipmap-xxxhdpi/warning.png | Bin 0 -> 3328 bytes app/src/main/res/mipmap-xxxhdpi/wifi.png | Bin 0 -> 1107 bytes .../main/res/mipmap-xxxhdpi/wifi_selected.png | Bin 0 -> 573 bytes app/src/main/res/values-en-rUS/strings.xml | 61 ++++- app/src/main/res/values-zh-rCN/strings.xml | 14 +- app/src/main/res/values/strings.xml | 49 +++- .../iot/explorer/link/core/utils/PingUtil.kt | 2 + 94 files changed, 2331 insertions(+), 667 deletions(-) create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/customview/dialog/ConnectWifiDialog.java create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/customview/progress/HorizontalStepView.java create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/customview/progress/HorizontalStepsViewIndicator.java create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/customview/progress/bean/StepBean.java create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ConfigNetFailedActivity.kt create mode 100644 app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ConfigNetSuccessActivity.kt create mode 100644 app/src/main/res/drawable/background_cell.xml create mode 100644 app/src/main/res/drawable/btn_style.xml create mode 100644 app/src/main/res/drawable/circle_shape.xml create mode 100644 app/src/main/res/drawable/circle_uncomplete_shape.xml create mode 100644 app/src/main/res/layout/activity_config_net_failed.xml create mode 100644 app/src/main/res/layout/activity_config_net_success.xml create mode 100644 app/src/main/res/layout/item_wifi_info.xml create mode 100644 app/src/main/res/layout/popup_connect_layout.xml create mode 100644 app/src/main/res/layout/popup_smart_config_network.xml create mode 100644 app/src/main/res/layout/widget_horizontal_stepsview.xml create mode 100644 app/src/main/res/mipmap-hdpi/config_net_progress.png create mode 100644 app/src/main/res/mipmap-hdpi/image_smart_config.png create mode 100644 app/src/main/res/mipmap-hdpi/info.png create mode 100644 app/src/main/res/mipmap-hdpi/loading.png create mode 100644 app/src/main/res/mipmap-hdpi/lock.png create mode 100644 app/src/main/res/mipmap-hdpi/more_wifi.png create mode 100644 app/src/main/res/mipmap-hdpi/right.png create mode 100644 app/src/main/res/mipmap-hdpi/success.png create mode 100644 app/src/main/res/mipmap-hdpi/warning.png create mode 100644 app/src/main/res/mipmap-hdpi/wifi.png create mode 100644 app/src/main/res/mipmap-hdpi/wifi_selected.png create mode 100644 app/src/main/res/mipmap-mdpi/config_net_progress.png create mode 100644 app/src/main/res/mipmap-mdpi/image_smart_config.png create mode 100644 app/src/main/res/mipmap-mdpi/info.png create mode 100644 app/src/main/res/mipmap-mdpi/loading.png create mode 100644 app/src/main/res/mipmap-mdpi/lock.png create mode 100644 app/src/main/res/mipmap-mdpi/more_wifi.png create mode 100644 app/src/main/res/mipmap-mdpi/right.png create mode 100644 app/src/main/res/mipmap-mdpi/success.png create mode 100644 app/src/main/res/mipmap-mdpi/warning.png create mode 100644 app/src/main/res/mipmap-mdpi/wifi.png create mode 100644 app/src/main/res/mipmap-mdpi/wifi_selected.png create mode 100644 app/src/main/res/mipmap-xhdpi/config_net_progress.png create mode 100644 app/src/main/res/mipmap-xhdpi/image_smart_config.png create mode 100644 app/src/main/res/mipmap-xhdpi/info.png create mode 100644 app/src/main/res/mipmap-xhdpi/loading.png create mode 100644 app/src/main/res/mipmap-xhdpi/lock.png create mode 100644 app/src/main/res/mipmap-xhdpi/more_wifi.png create mode 100644 app/src/main/res/mipmap-xhdpi/right.png create mode 100644 app/src/main/res/mipmap-xhdpi/success.png create mode 100644 app/src/main/res/mipmap-xhdpi/warning.png create mode 100644 app/src/main/res/mipmap-xhdpi/wifi.png create mode 100644 app/src/main/res/mipmap-xhdpi/wifi_selected.png create mode 100644 app/src/main/res/mipmap-xxhdpi/config_net_progress.png create mode 100644 app/src/main/res/mipmap-xxhdpi/image_smart_config.png create mode 100644 app/src/main/res/mipmap-xxhdpi/info.png create mode 100644 app/src/main/res/mipmap-xxhdpi/loading.png create mode 100644 app/src/main/res/mipmap-xxhdpi/lock.png create mode 100644 app/src/main/res/mipmap-xxhdpi/more_wifi.png create mode 100644 app/src/main/res/mipmap-xxhdpi/right.png create mode 100644 app/src/main/res/mipmap-xxhdpi/success.png create mode 100644 app/src/main/res/mipmap-xxhdpi/warning.png create mode 100644 app/src/main/res/mipmap-xxhdpi/wifi.png create mode 100644 app/src/main/res/mipmap-xxhdpi/wifi_selected.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/config_net_progress.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/info.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/loading.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/lock.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/more_wifi.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/right.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/success.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/warning.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/wifi.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/wifi_selected.png diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 534ef48af..927c1b0f7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -114,6 +114,9 @@ + + mStepBeanList; + private Map showTxts = new HashMap<>(); + private int mComplectingPosition = 0; + private int mUnComplectedTextColor = getResources().getColor(R.color.uncomplete_progress);//定义默认未完成文字的颜色; + private int mComplectedTextColor = getResources().getColor(R.color.complete_progress);//定义默认完成文字的颜色; + private int mTextSize = 14; //默认文字尺寸 + + public int getCurrentStep() { + if (mStepsViewIndicator == null) { + return -1; + } + return mStepsViewIndicator.getCurrentStep(); + } + + public void setCurrentStep(int currentStep) { + if (mStepsViewIndicator != null) { + mStepsViewIndicator.setCurrentStep(currentStep); + } + } + + public HorizontalStepView(Context context) { + this(context, null); + } + + public HorizontalStepView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public HorizontalStepView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + private void init() { + View rootView = LayoutInflater.from(getContext()).inflate(R.layout.widget_horizontal_stepsview, this); + mStepsViewIndicator = rootView.findViewById(R.id.steps_indicator); + mStepsViewIndicator.setOnDrawListener(this); + mTextContainer = rootView.findViewById(R.id.rl_text_container); + } + + // 设置显示的文字 + public void setStepViewTexts(List stepsBeanList) { + mStepBeanList = stepsBeanList; + mStepsViewIndicator.setStepNum(mStepBeanList); + } + + public void refreshStepViewState() { + mStepsViewIndicator.invalidate(); + } + + // 设置未完成文字的颜色 + public void setStepViewUnComplectedTextColor(int unComplectedTextColor) { + mUnComplectedTextColor = unComplectedTextColor; + } + + // 设置完成文字的颜色 + public void setStepViewComplectedTextColor(int complectedTextColor) { + this.mComplectedTextColor = complectedTextColor; + } + + // 设置StepsViewIndicator未完成线的颜色 + public void setStepsViewIndicatorUnCompletedLineColor(int unCompletedLineColor) { + mStepsViewIndicator.setUnCompletedLineColor(unCompletedLineColor); + } + + // 设置StepsViewIndicator完成线的颜色 + public void setStepsViewIndicatorCompletedLineColor(int completedLineColor) { + mStepsViewIndicator.setCompletedLineColor(completedLineColor); + } + + // 设置StepsViewIndicator默认图片 + public void setStepsViewIndicatorDefaultIcon(Drawable defaultIcon) { + mStepsViewIndicator.setDefaultIcon(defaultIcon); + } + + // 设置StepsViewIndicator已完成图片 + public void setStepsViewIndicatorCompleteIcon(Drawable completeIcon) { + mStepsViewIndicator.setCompleteIcon(completeIcon); + } + + public void setTextSize(int textSize) { + if (textSize > 0) mTextSize = textSize; + } + + @Override + public void ondrawIndicator() { + if (mTextContainer != null) { + List complectedXPosition = mStepsViewIndicator.getCircleCenterPointPositionList(); + + if (mStepBeanList != null && complectedXPosition != null && complectedXPosition.size() > 0) { + for(int i = 0; i < mStepBeanList.size(); i++) { + TextView text = showTxts.get(i); + if (text == null) { + text = new TextView(getContext()); + } else { + mTextContainer.removeView(text); + } + + // 设置尺寸,显示位置 + text.setTextSize(TypedValue.COMPLEX_UNIT_SP, mTextSize); + text.setText(mStepBeanList.get(i).getName()); + int spec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); + text.measure(spec, spec); + text.setPadding(0,10,0,0); + int measuredWidth = text.getMeasuredWidth(); + text.setX(complectedXPosition.get(i) - measuredWidth / 2); + text.setLayoutParams(new ViewGroup.LayoutParams( + ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); + + // 设置字体颜色 + if (i < getCurrentStep()) { + text.setTypeface(null, Typeface.BOLD); + text.setTextColor(mComplectedTextColor); + } else { + text.setTextColor(mUnComplectedTextColor); + } + + showTxts.put(i, text); + mTextContainer.addView(text); + } + } + + mStepsViewIndicator.refreshDrawableState(); + } + } +} diff --git a/app/src/main/java/com/tencent/iot/explorer/link/customview/progress/HorizontalStepsViewIndicator.java b/app/src/main/java/com/tencent/iot/explorer/link/customview/progress/HorizontalStepsViewIndicator.java new file mode 100644 index 000000000..b89b961b8 --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/customview/progress/HorizontalStepsViewIndicator.java @@ -0,0 +1,236 @@ +package com.tencent.iot.explorer.link.customview.progress; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Rect; +import android.graphics.RectF; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.view.View; + +import androidx.core.content.ContextCompat; + +import com.tencent.iot.explorer.link.R; +import com.tencent.iot.explorer.link.customview.progress.bean.StepBean; +import com.tencent.iot.explorer.link.kitlink.util.picture.utils.BitmapUtils; + +import java.util.ArrayList; +import java.util.List; + +public class HorizontalStepsViewIndicator extends View { + //定义默认的高度 + private int defaultStepIndicatorNum = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 30, getResources().getDisplayMetrics()); + private float mCompletedLineHeight; //完成线的高度 + private float mCircleRadius; //圆的半径 + + private Drawable mCompleteIcon; //完成的默认图片 + private Drawable mDefaultIcon; //默认的背景图 + private float mCenterY; //该view的Y轴中间位置 + private float mLeftY; //左上方的Y位置 + private float mRightY; //右下方的位置 + private int mCircleTextSize = 0; // 节点中字体大小 + + private List mStepBeanList; //当前有几部流程 + private int mStepNum = 0; + private float mLinePadding; //两个节点之间的距离 + + private List mCircleCenterPointPositionList; //定义所有圆的圆心点位置的集合 + private Paint mUnCompletedPaint; //未完成Paint + private Paint mCompletedPaint; //完成paint + private int mUnCompletedLineColor = getResources().getColor(R.color.uncomplete_progress); //定义默认未完成线的颜色 + private int mCompletedLineColor = getResources().getColor(R.color.complete_progress); //定义默认完成线的颜色 + private int mComplectingPosition; //正在进行的位置 + + private OnDrawIndicatorListener mOnDrawListener; + private int screenWidth; //屏幕宽度 + + public int getCurrentStep() { + return mComplectingPosition; + } + + public void setCurrentStep(int currentStep) { + mComplectingPosition = currentStep; + } + + public void setOnDrawListener(OnDrawIndicatorListener onDrawListener) { + mOnDrawListener = onDrawListener; + } + + // 圆的半径 + public float getCircleRadius() { + return mCircleRadius; + } + + public HorizontalStepsViewIndicator(Context context) { + this(context, null); + } + + public HorizontalStepsViewIndicator(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public HorizontalStepsViewIndicator(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + init(); + } + + private Paint createPaint(int color) { + Paint paint = new Paint(); + paint.setAntiAlias(true); + paint.setColor(color); + paint.setStrokeWidth(2); + paint.setStyle(Paint.Style.FILL_AND_STROKE); + return paint; + } + + private void init() { + mStepBeanList = new ArrayList<>(); + mCircleCenterPointPositionList = new ArrayList<>();//初始化 + + mUnCompletedPaint = createPaint(mUnCompletedLineColor); + mCompletedPaint = createPaint(mCompletedLineColor); + + mCompletedLineHeight = 0.12f * defaultStepIndicatorNum; //已经完成线的宽高 + mCircleRadius = 0.4f * defaultStepIndicatorNum; //圆的半径 + mCompleteIcon = ContextCompat.getDrawable(getContext(), R.drawable.circle_shape); //已经完成的icon + mDefaultIcon = ContextCompat.getDrawable(getContext(), R.drawable.circle_uncomplete_shape); //未完成的icon + } + + @Override + protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + if (MeasureSpec.UNSPECIFIED != MeasureSpec.getMode(widthMeasureSpec)) { + screenWidth = MeasureSpec.getSize(widthMeasureSpec); + mLinePadding = (screenWidth - ((mStepNum + 3) * mCircleRadius * 2)) / (mStepNum - 1); + } + int height = defaultStepIndicatorNum; + if (MeasureSpec.UNSPECIFIED != MeasureSpec.getMode(heightMeasureSpec)) { + height = Math.min(height, MeasureSpec.getSize(heightMeasureSpec)); + } + int width = (int) (mStepNum * mCircleRadius * 2 - (mStepNum - 1) * mLinePadding); + setMeasuredDimension(width, height); + } + + @Override + protected void onSizeChanged(int w, int h, int oldw, int oldh) { + super.onSizeChanged(w, h, oldw, oldh); + //获取中间的高度,目的是为了让该view绘制的线和圆在该view垂直居中 + mCenterY = 0.5f * getHeight(); + + mLeftY = mCenterY - mCompletedLineHeight / 2; //获取左上方Y的位置,获取该点的意义是为了方便画矩形左上的Y位置 + mRightY = mCenterY + mCompletedLineHeight / 2; //获取右下方Y的位置,获取该点的意义是为了方便画矩形右下的Y位置 + mCircleCenterPointPositionList.clear(); + for (int i = 0; i < mStepNum; i++) { + //先计算全部最左边的padding值(getWidth()-(圆形直径+两圆之间距离)*2) + float paddingLeft = (screenWidth - mStepNum * mCircleRadius * 2 - (mStepNum - 1) * mLinePadding) / 2; + mCircleCenterPointPositionList.add(paddingLeft + mCircleRadius + i * mCircleRadius * 2 + i * mLinePadding); + } + + if (mOnDrawListener != null) { + mOnDrawListener.ondrawIndicator(); + } + } + + @Override + protected synchronized void onDraw(Canvas canvas) { + super.onDraw(canvas); + if (mOnDrawListener != null) { + mOnDrawListener.ondrawIndicator(); + } + + // 绘制进度条的实线部分 + for (int i = 0; i < mCircleCenterPointPositionList.size() - 1; i++) { + final float preComplectedXPosition = mCircleCenterPointPositionList.get(i); //前一个ComplectedXPosition + final float afterComplectedXPosition = mCircleCenterPointPositionList.get(i + 1); //后一个ComplectedXPosition + + RectF line = new RectF(preComplectedXPosition + mCircleRadius - 10, mLeftY, + afterComplectedXPosition - mCircleRadius + 10, mRightY); + //判断在完成之前的所有点 + if (i < mComplectingPosition - 1) { + canvas.drawRect(line, mCompletedPaint); + } else { + canvas.drawRect(line, mUnCompletedPaint); + } + } + + // 绘制节点 + for (int i = 0; i < mCircleCenterPointPositionList.size(); i++) { + final float currentComplectedXPosition = mCircleCenterPointPositionList.get(i); + Rect rect = new Rect((int) (currentComplectedXPosition - mCircleRadius), (int) (mCenterY - mCircleRadius), + (int) (currentComplectedXPosition + mCircleRadius), (int) (mCenterY + mCircleRadius)); + if (i == 0) { + mCircleTextSize = getMostFitTextSize(String.valueOf(i), (int)mCircleRadius * 2); + } + + Bitmap bitmap; + if (i >= mComplectingPosition) { + bitmap = BitmapUtils.createWaterMark(mDefaultIcon, String.valueOf(i + 1), (int)mCircleRadius * 2, mCircleTextSize); + } else { + bitmap = BitmapUtils.createWaterMark(mCompleteIcon, String.valueOf(i + 1), (int)mCircleRadius * 2, mCircleTextSize); + } + Drawable showDrawable = new BitmapDrawable(bitmap); + showDrawable.setBounds(rect); + showDrawable.draw(canvas); + } + } + + private int getMostFitTextSize(String txt, int targetWidth) { + int textSize = 5; // 初始估计值 + int step = 5; // 估计值测试使用的步长 + int checkTargetWidth = targetWidth - 20; // 修正临界宽度,避免刚好填充整个圈 + return getTextSize(txt, checkTargetWidth, textSize, step); + } + + private int getTextSize(String txt, int targetWidth, int currentSize, int step) { + Paint p = new Paint(); + p.setTextSize(currentSize); + float len = p.measureText(txt); + float hei = Math.abs(p.ascent() + p.descent()); + if (len < targetWidth && hei < targetWidth) { + currentSize += step; + return getTextSize(txt, targetWidth, currentSize, step); + } else { + return currentSize - step; + } + } + + // 得到所有圆点所在的位置 + public List getCircleCenterPointPositionList() { + return mCircleCenterPointPositionList; + } + + // 设置流程步数 + public void setStepNum(List stepsBeanList) { + this.mStepBeanList = stepsBeanList; + mStepNum = mStepBeanList.size(); + requestLayout(); + } + + // 设置未完成线的颜色 + public void setUnCompletedLineColor(int unCompletedLineColor) { + this.mUnCompletedLineColor = unCompletedLineColor; + } + + // 设置已完成线的颜色 + public void setCompletedLineColor(int completedLineColor) { + this.mCompletedLineColor = completedLineColor; + } + + // 设置默认图片 + public void setDefaultIcon(Drawable defaultIcon) { + this.mDefaultIcon = defaultIcon; + } + + // 设置已完成图片 + public void setCompleteIcon(Drawable completeIcon) { + this.mCompleteIcon = completeIcon; + } + + // 设置对view监听 + public interface OnDrawIndicatorListener { + void ondrawIndicator(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/customview/progress/bean/StepBean.java b/app/src/main/java/com/tencent/iot/explorer/link/customview/progress/bean/StepBean.java new file mode 100644 index 000000000..cddbdc80d --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/customview/progress/bean/StepBean.java @@ -0,0 +1,23 @@ +package com.tencent.iot.explorer.link.customview.progress.bean; + +public class StepBean +{ + + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public StepBean() { + this(""); + } + + public StepBean(String name) { + this.name = name; + } +} diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ConfigNetFailedActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ConfigNetFailedActivity.kt new file mode 100644 index 000000000..ba8affb56 --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ConfigNetFailedActivity.kt @@ -0,0 +1,81 @@ +package com.tencent.iot.explorer.link.kitlink.activity + +import android.content.Intent +import android.util.Log +import android.view.View +import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.fragment.WifiFragment +import kotlinx.android.synthetic.main.activity_config_net_failed.* + +class ConfigNetFailedActivity : BaseActivity() { + var type = WifiFragment.smart_config + + override fun getContentView(): Int { + return R.layout.activity_config_net_failed + } + + override fun initView() { + type = intent.getIntExtra(CommonField.CONFIG_NET_TYPE, WifiFragment.smart_config) + + when (type) { + + WifiFragment.smart_config -> { + tv_config_net_failed_title.setText(R.string.smart_config_config_network) + tv_config_net_failed_reason.setText(R.string.reson_config_net_info) + tv_soft_first_commit.setText(R.string.switch_softap) + } + + WifiFragment.soft_ap -> { + tv_config_net_failed_title.setText(R.string.softap_config_network) + tv_config_net_failed_reason.setText(R.string.softap_reson_config_net_info) + tv_soft_first_commit.setText(R.string.switch_smart_config) + } + } + } + + override fun setListener() { + tv_soft_first_commit.setOnClickListener(listener) + tv_retry.setOnClickListener(listener) + tv_config_net_failed_back.setOnClickListener(listener) + tv_more_reason.setOnClickListener(listener) + } + + var listener = object: View.OnClickListener { + override fun onClick(v: View?) { + when(v) { + tv_soft_first_commit -> { + if (type == WifiFragment.soft_ap) { + jumpActivity(SmartConnectActivity::class.java) + } else { + jumpActivity(SoftApActivity::class.java) + } + this@ConfigNetFailedActivity.finish() + } + + tv_retry -> { + if (type == WifiFragment.soft_ap) { + jumpActivity(SoftApActivity::class.java) + } else { + jumpActivity(SmartConnectActivity::class.java) + } + this@ConfigNetFailedActivity.finish() + } + + tv_more_reason -> { + var intent = Intent(this@ConfigNetFailedActivity, HelpWebViewActivity::class.java) + intent.putExtra(CommonField.CONFIG_QUESTION_LIST, true) + startActivity(intent) + } + + tv_config_net_failed_back -> { + this@ConfigNetFailedActivity.finish() + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + } +} diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ConfigNetSuccessActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ConfigNetSuccessActivity.kt new file mode 100644 index 000000000..a05a245c8 --- /dev/null +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/ConfigNetSuccessActivity.kt @@ -0,0 +1,48 @@ +package com.tencent.iot.explorer.link.kitlink.activity + +import android.view.View +import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.fragment.WifiFragment +import kotlinx.android.synthetic.main.activity_config_net_success.* + +class ConfigNetSuccessActivity : BaseActivity() { + var type = WifiFragment.smart_config + var deviceName = "" + + override fun getContentView(): Int { + return R.layout.activity_config_net_success + } + + override fun initView() { + type = intent.getIntExtra(CommonField.CONFIG_NET_TYPE, WifiFragment.smart_config) + deviceName = intent.getStringExtra(CommonField.DEVICE_NAME) + var str2Show = resources.getString(R.string.device_name) + + resources.getString(R.string.splite_from_name) + deviceName + tv_config_net_sucess_reason_tip.setText(str2Show) + } + + override fun setListener() { + tv_finish.setOnClickListener(listener) + tv_add_other.setOnClickListener(listener) + tv_config_net_sucess_back.setOnClickListener(listener) + } + + var listener = object: View.OnClickListener { + override fun onClick(v: View?) { + when (v) { + tv_finish -> { + backToMain() + } + tv_add_other -> { +// if (type == WifiFragment.soft_ap) { +// jumpActivity(SoftApActivity::class.java) +// } else { +// jumpActivity(SmartConnectActivity::class.java) +// } + } + } + finish() + } + } +} diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/HelpWebViewActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/HelpWebViewActivity.kt index e0001d56c..111e990da 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/HelpWebViewActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/HelpWebViewActivity.kt @@ -8,6 +8,7 @@ import android.content.pm.PackageManager import android.graphics.BitmapFactory import android.net.Uri import android.os.Build +import android.text.TextUtils import android.view.KeyEvent import android.view.View import android.view.ViewGroup @@ -47,12 +48,17 @@ class HelpWebViewActivity: BaseActivity(), MyCallback, View.OnClickListener { private val FILE_CHOOSER_RESULT_CODE = 10000 private val FILE_CAMERA_RESULT_CODE = 9999 + private var configQuestionList = false + override fun getContentView(): Int { return R.layout.activity_help_feedback } override fun initView() { webStatus = 0 + if (intent.hasExtra(CommonField.CONFIG_QUESTION_LIST)) { + configQuestionList = intent.getBooleanExtra(CommonField.CONFIG_QUESTION_LIST, false) + } initWebView() iv_back.setColorFilter(R.color.black_333333) getAppGetTokenTicket() @@ -139,6 +145,9 @@ class HelpWebViewActivity: BaseActivity(), MyCallback, View.OnClickListener { if (!App.isOEMApp()) { url += "&appID=" + T.getContext().applicationInfo.packageName } + if (configQuestionList) { + url += "/#/pages/Functional/HelpCenter/QnAList/QnAList?genCateID=config7" + } help_web.loadUrl(url) } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SmartConnectActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SmartConnectActivity.kt index 582339b39..6b87bd86e 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SmartConnectActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SmartConnectActivity.kt @@ -3,14 +3,18 @@ package com.tencent.iot.explorer.link.kitlink.activity import android.text.TextUtils import com.tencent.iot.explorer.link.R import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.consts.CommonField -import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType -import com.tencent.iot.explorer.link.kitlink.fragment.* +import com.tencent.iot.explorer.link.customview.progress.bean.StepBean +import com.tencent.iot.explorer.link.kitlink.fragment.BaseFragment +import com.tencent.iot.explorer.link.kitlink.fragment.ConnectProgressFragment +import com.tencent.iot.explorer.link.kitlink.fragment.SCStepFragment +import com.tencent.iot.explorer.link.kitlink.fragment.WifiFragment import com.tencent.iot.explorer.link.kitlink.popup.CommonPopupWindow import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.mvp.presenter.GetBindDeviceTokenPresenter import com.tencent.iot.explorer.link.mvp.view.GetBindDeviceTokenView import com.tencent.iot.explorer.link.core.utils.LocationUtil +import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType import kotlinx.android.synthetic.main.activity_smart_connect.* /** @@ -32,23 +36,37 @@ class SmartConnectActivity : BaseActivity(), GetBindDeviceTokenView { return R.layout.activity_smart_connect } + private fun showProgress() { + val stepsBeanList = ArrayList() + stepsBeanList.add(StepBean(getString(R.string.config_hardware))) + stepsBeanList.add(StepBean(getString(R.string.select_wifi))) + stepsBeanList.add(StepBean(getString(R.string.start_config_network))) + smart_config_step_progress.currentStep = 1 + smart_config_step_progress.setStepViewTexts(stepsBeanList) + smart_config_step_progress.setTextSize(12) + } + override fun initView() { loadViewTextType = intent.getIntExtra(CommonField.LOAD_VIEW_TXT_TYPE, LoadViewTxtType.LoadLocalViewTxt.ordinal) if (loadViewTextType != LoadViewTxtType.LoadLocalViewTxt.ordinal) { productId = intent.getStringExtra(CommonField.PRODUCT_ID) } + showProgress() + presenter = GetBindDeviceTokenPresenter(this) - scStepFragment = SCStepFragment(loadViewTextType, productId) + scStepFragment = SCStepFragment() scStepFragment.onNextListener = object : SCStepFragment.OnNextListener { override fun onNext() { + smart_config_step_progress.currentStep = 2 + smart_config_step_progress.refreshStepViewState() showFragment(wifiFragment, scStepFragment) if (!LocationUtil.isLocationServiceEnable(this@SmartConnectActivity)) { T.showLonger(getString(R.string.open_location_service_for_wifi)) //请您打开手机位置以便获取WIFI名称 } } } - wifiFragment = WifiFragment(WifiFragment.smart_config) + wifiFragment = WifiFragment(WifiFragment.smart_config,false) wifiFragment.onCommitWifiListener = object : WifiFragment.OnCommitWifiListener { override fun commitWifi(ssid: String, bssid: String?, password: String) { if (TextUtils.isEmpty(bssid)) { @@ -61,40 +79,28 @@ class SmartConnectActivity : BaseActivity(), GetBindDeviceTokenView { } } connectProgressFragment = ConnectProgressFragment(WifiFragment.smart_config, loadViewTextType, productId) - connectProgressFragment.onRestartListener = - object : ConnectProgressFragment.OnRestartListener { - override fun restart() { - showFragment(scStepFragment, connectProgressFragment) - showTitle( - getString(R.string.smart_config), - getString(R.string.close) - ) - } + connectProgressFragment.onRestartListener = object : ConnectProgressFragment.OnRestartListener { + override fun restart() { + showFragment(scStepFragment, connectProgressFragment) } + } supportFragmentManager.beginTransaction() .add(R.id.container_smart_connect, scStepFragment) .commit() } - private fun showTitle(title: String, cancel: String) { - tv_smart_connect_title.text = title - tv_smart_connect_cancel.text = cancel - } - private fun showFragment(showFragment: BaseFragment, hideFragment: BaseFragment) { val transaction = this.supportFragmentManager.beginTransaction() if (showFragment.isAdded) { - transaction.show(showFragment).hide(hideFragment) - .commit() + transaction.show(showFragment).hide(hideFragment).commit() + } else { - transaction.add(R.id.container_smart_connect, showFragment) - .hide(hideFragment) - .commit() + transaction.add(R.id.container_smart_connect, showFragment).hide(hideFragment).commit() } } override fun setListener() { - tv_smart_connect_cancel.setOnClickListener { + tv_smart_config_back.setOnClickListener { if (connectProgressFragment.isVisible) { showPopup() } else { @@ -139,11 +145,8 @@ class SmartConnectActivity : BaseActivity(), GetBindDeviceTokenView { } override fun onSuccess(token: String) { - L.e("getToken onSuccess token:" + token) - showTitle( - getString(R.string.smart_config_third_connect_progress) - , getString(R.string.close) - ) + smart_config_step_progress.currentStep = 3 + smart_config_step_progress.refreshStepViewState() showFragment(connectProgressFragment, wifiFragment) } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SoftApActivity.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SoftApActivity.kt index f21a30152..3d87dea40 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SoftApActivity.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/activity/SoftApActivity.kt @@ -11,7 +11,9 @@ import com.tencent.iot.explorer.link.mvp.presenter.GetBindDeviceTokenPresenter import com.tencent.iot.explorer.link.mvp.view.GetBindDeviceTokenView import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.core.utils.LocationUtil +import com.tencent.iot.explorer.link.customview.progress.bean.StepBean import kotlinx.android.synthetic.main.activity_soft_ap.* +import java.util.ArrayList class SoftApActivity : PActivity(), GetBindDeviceTokenView { @@ -22,6 +24,7 @@ class SoftApActivity : PActivity(), GetBindDeviceTokenView { private lateinit var softAppStepFragment: SoftAppStepFragment private lateinit var wifiFragment: WifiFragment + private lateinit var devWifiFragment: WifiFragment private lateinit var softHotspotFragment: SoftHotspotFragment private lateinit var connectProgressFragment: ConnectProgressFragment private var loadViewTextType = LoadViewTxtType.LoadLocalViewTxt.ordinal // 0 加载本地文案 1 尝试加载远端配置文案 @@ -34,7 +37,19 @@ class SoftApActivity : PActivity(), GetBindDeviceTokenView { return R.layout.activity_soft_ap } + private fun showProgress() { + val stepsBeanList = ArrayList() + stepsBeanList.add(StepBean(getString(R.string.config_hardware))) + stepsBeanList.add(StepBean(getString(R.string.set_target_wifi))) + stepsBeanList.add(StepBean(getString(R.string.connect_device))) + stepsBeanList.add(StepBean(getString(R.string.start_config_network))) + softap_step_progress.currentStep = 1 + softap_step_progress.setStepViewTexts(stepsBeanList) + softap_step_progress.setTextSize(12) + } + override fun initView() { + showProgress() loadViewTextType = intent.getIntExtra(CommonField.LOAD_VIEW_TXT_TYPE, LoadViewTxtType.LoadLocalViewTxt.ordinal) if (loadViewTextType != LoadViewTxtType.LoadLocalViewTxt.ordinal) { productId = intent.getStringExtra(CommonField.PRODUCT_ID) @@ -42,7 +57,8 @@ class SoftApActivity : PActivity(), GetBindDeviceTokenView { presenter = GetBindDeviceTokenPresenter(this) softAppStepFragment = SoftAppStepFragment(loadViewTextType, productId) - wifiFragment = WifiFragment(WifiFragment.soft_ap) + wifiFragment = WifiFragment(WifiFragment.soft_ap, false) + devWifiFragment = WifiFragment(WifiFragment.soft_ap, true) softHotspotFragment = SoftHotspotFragment(loadViewTextType, productId) connectProgressFragment = ConnectProgressFragment(WifiFragment.soft_ap, loadViewTextType, productId) @@ -62,10 +78,8 @@ class SoftApActivity : PActivity(), GetBindDeviceTokenView { } softAppStepFragment.onNextListener = object : SoftAppStepFragment.OnNextListener { override fun onNext() { - showTitle( - getString(R.string.smart_config_second_title), - getString(R.string.cancel) - ) + softap_step_progress.currentStep = 2 + softap_step_progress.refreshStepViewState() showFragment(wifiFragment, softAppStepFragment) if (!LocationUtil.isLocationServiceEnable(this@SoftApActivity)) { T.showLonger(resources.getString(R.string.open_location_tip)) @@ -84,32 +98,27 @@ class SoftApActivity : PActivity(), GetBindDeviceTokenView { } softHotspotFragment.onNextListener = object : SoftHotspotFragment.OnNextListener { override fun onNext() { - connectProgressFragment.setWifiInfo(ssid, bssid, password) - showFragment(connectProgressFragment, softHotspotFragment) - showTitle( - getString(R.string.smart_config_third_connect_progress) - , getString(R.string.close) - ) + showFragment(devWifiFragment, softHotspotFragment) + } + } + devWifiFragment.onCommitWifiListener = object: WifiFragment.OnCommitWifiListener { + override fun commitWifi(ssid: String, bssid: String?, password: String) { + softap_step_progress.currentStep = 4 + softap_step_progress.refreshStepViewState() + connectProgressFragment.setWifiInfo(this@SoftApActivity.ssid, + this@SoftApActivity.bssid, this@SoftApActivity.password) + showFragment(connectProgressFragment, devWifiFragment) } } connectProgressFragment.onRestartListener = object : ConnectProgressFragment.OnRestartListener { override fun restart() { showFragment(softAppStepFragment, connectProgressFragment) - showTitle( - getString(R.string.soft_ap), - getString(R.string.close) - ) } } } - private fun showTitle(title: String, cancel: String) { - tv_soft_ap_title.text = title - tv_soft_ap_cancel.text = cancel - } - private fun showFragment(showFragment: BaseFragment, hideFragment: BaseFragment) { if (showFragment.isAdded) { this.supportFragmentManager.beginTransaction() @@ -165,11 +174,9 @@ class SoftApActivity : PActivity(), GetBindDeviceTokenView { } override fun onSuccess(token: String) { + softap_step_progress.currentStep = 3 + softap_step_progress.refreshStepViewState() showFragment(softHotspotFragment, wifiFragment) - showTitle( - getString(R.string.soft_ap), - getString(R.string.close) - ) L.e("getToken onSuccess token:" + token) } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt index d6eb181f6..b1d8e342d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/consts/CommonField.kt @@ -38,6 +38,7 @@ object CommonField { const val TICKET = "ticket" const val HANDLER_NAME = "handlerName" const val MSG_TYPE = "msgType" + const val CONFIG_QUESTION_LIST = "configQuestionList" const val FIREBASE_USER_ID = "UserID" const val LOAD_VIEW_TXT_TYPE = "loadViewTxtType" const val HARD_WARE_GUIDE = "hardwareGuide" @@ -111,6 +112,7 @@ object CommonField { const val PRODUCTS = "Products" const val DATA_TEMPLATE = "DataTemplate" const val PROPERTIES = "properties" + const val CONFIG_NET_TYPE = "configNetType" /***********请求类型标记参数************/ const val NULL_STR = "null" diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/ConnectProgressFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/ConnectProgressFragment.kt index 1a3325845..fbdfc0116 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/ConnectProgressFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/ConnectProgressFragment.kt @@ -1,22 +1,23 @@ package com.tencent.iot.explorer.link.kitlink.fragment import android.content.Intent -import android.text.TextUtils +import android.graphics.Color +import android.util.Log import android.view.View +import android.view.animation.Animation +import android.view.animation.LinearInterpolator +import android.view.animation.RotateAnimation import com.tencent.iot.explorer.link.App import com.tencent.iot.explorer.link.R -import com.tencent.iot.explorer.link.core.log.L -import com.tencent.iot.explorer.link.kitlink.activity.HelpCenterActivity -import com.tencent.iot.explorer.link.kitlink.activity.SoftApActivity +import com.tencent.iot.explorer.link.core.link.entity.SmartConfigStep +import com.tencent.iot.explorer.link.core.link.entity.SoftAPStep +import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.mvp.presenter.ConnectPresenter import com.tencent.iot.explorer.link.mvp.view.ConnectView import com.tencent.iot.explorer.link.T -import com.tencent.iot.explorer.link.customview.progress.WaveProgress -import com.tencent.iot.explorer.link.kitlink.activity.SmartConnectActivity -import com.tencent.iot.explorer.link.kitlink.consts.CommonField +import com.tencent.iot.explorer.link.kitlink.activity.* import kotlinx.android.synthetic.main.connected.* -import kotlinx.android.synthetic.main.connecting.* import kotlinx.android.synthetic.main.fragment_connect_progress.* import kotlinx.android.synthetic.main.unconnected.* @@ -32,13 +33,28 @@ class ConnectProgressFragment(type: Int, loadType: Int, productId: String) : Bas private var wifiPassword = "" private var loadType: Int private var productId: String + private var rotate = RotateAnimation(0f, 360f, + Animation.RELATIVE_TO_SELF, 0.5f, + Animation.RELATIVE_TO_SELF, 0.5f) var onRestartListener: OnRestartListener? = null + @Volatile + private var state = ConnectProgressState.Init; + + enum class ConnectProgressState (val id:Int) { + Init(0), MobileAndDeviceConnectSuccess(1), SendMessageToDeviceSuccess(2), DeviceConnectServiceSuccess(3),InitSuccess(4); + } init { this.type = type this.loadType = loadType this.productId = productId + val lin = LinearInterpolator() + rotate.setInterpolator(lin) + rotate.setDuration(2000) //设置动画持续周期 + rotate.setRepeatCount(-1) //设置重复次数 + rotate.setFillAfter(true) //动画执行完后是否停留在执行完的状态 + rotate.setStartOffset(10) //执行前的等待时间 } fun setWifiInfo(ssid: String, bssid: String, wifiPassword: String) { @@ -57,7 +73,6 @@ class ConnectProgressFragment(type: Int, loadType: Int, productId: String) : Bas } } - override fun getPresenter(): IPresenter? { return presenter } @@ -67,42 +82,99 @@ class ConnectProgressFragment(type: Int, loadType: Int, productId: String) : Bas } override fun startHere(view: View) { - showConnecting() - setListener() + refreshView() presenter = ConnectPresenter(this) presenter.setWifiInfo(ssid, bssid, wifiPassword) presenter.initService(type, context!!) presenter.startConnect() } - private fun setListener() { - tv_connect_again.setOnClickListener(this) - tv_tab_connect_way.setOnClickListener(this) - tv_add_new_device.setOnClickListener(this) - tv_back_to_home_page.setOnClickListener(this) - tv_connect_more_cause.setOnClickListener(this) - - wp_connected.setOnIncreaseListener(object : WaveProgress.OnIncreaseListener { - override fun finish(view: WaveProgress, progress: Int) { - activity?.runOnUiThread { - tv_progress?.run { - text = "$progress" - if (progress >= 100) { - progress_bg.setBackgroundResource(R.drawable.bg_progress_100) - showConnectSuccess() - } + private fun refreshView() { + activity?.run { + runOnUiThread { + when (state) { + ConnectProgressState.Init -> { //初始状态 + iv_phone_connect_device.animation = rotate + iv_phone_send_device.animation = rotate + iv_device_connect_cloud.animation = rotate + iv_init_success.animation = rotate + tv_phone_connect_device.setTextColor(resources.getColor(R.color.uncomplete_progress)) + tv_phone_send_device.setTextColor(resources.getColor(R.color.uncomplete_progress)) + tv_device_connect_cloud.setTextColor(resources.getColor(R.color.uncomplete_progress)) + tv_init_success.setTextColor(resources.getColor(R.color.uncomplete_progress)) + } + ConnectProgressState.MobileAndDeviceConnectSuccess -> { //手机与设备连接成功状态 + iv_phone_connect_device.animation = null + iv_phone_send_device.animation = rotate + iv_device_connect_cloud.animation = rotate + iv_init_success.animation = rotate + iv_phone_connect_device.setImageResource(R.mipmap.wifi_selected) + iv_phone_send_device.setImageResource(R.mipmap.loading) + iv_device_connect_cloud.setImageResource(R.mipmap.loading) + iv_init_success.setImageResource(R.mipmap.loading) + tv_phone_connect_device.setTextColor(Color.BLACK) + tv_phone_send_device.setTextColor(resources.getColor(R.color.uncomplete_progress)) + tv_device_connect_cloud.setTextColor(resources.getColor(R.color.uncomplete_progress)) + tv_init_success.setTextColor(resources.getColor(R.color.uncomplete_progress)) + } + ConnectProgressState.SendMessageToDeviceSuccess -> { //手机与设备连接成功,向设备发送消息成功状态 + iv_phone_connect_device.animation = null + iv_phone_send_device.animation = null + iv_device_connect_cloud.animation = rotate + iv_init_success.animation = rotate + iv_phone_connect_device.setImageResource(R.mipmap.wifi_selected) + iv_phone_send_device.setImageResource(R.mipmap.wifi_selected) + iv_device_connect_cloud.setImageResource(R.mipmap.loading) + iv_init_success.setImageResource(R.mipmap.loading) + tv_phone_connect_device.setTextColor(Color.BLACK) + tv_phone_send_device.setTextColor(Color.BLACK) + tv_device_connect_cloud.setTextColor(resources.getColor(R.color.uncomplete_progress)) + tv_init_success.setTextColor(resources.getColor(R.color.uncomplete_progress)) + } + ConnectProgressState.DeviceConnectServiceSuccess -> {//手机与设备连接成功,向设备发送消息成功,设备连接云端成功状态 + iv_phone_connect_device.animation = null + iv_phone_send_device.animation = null + iv_device_connect_cloud.animation = null + iv_init_success.animation = rotate + iv_phone_connect_device.setImageResource(R.mipmap.wifi_selected) + iv_phone_send_device.setImageResource(R.mipmap.wifi_selected) + iv_device_connect_cloud.setImageResource(R.mipmap.wifi_selected) + iv_init_success.setImageResource(R.mipmap.loading) + tv_phone_connect_device.setTextColor(Color.BLACK) + tv_phone_send_device.setTextColor(Color.BLACK) + tv_device_connect_cloud.setTextColor(Color.BLACK) + tv_init_success.setTextColor(resources.getColor(R.color.uncomplete_progress)) + } + ConnectProgressState.InitSuccess -> {//手机与设备连接成功,向设备发送消息成功,设备连接云端成功,初始化成功状态 + iv_phone_connect_device.animation = null + iv_phone_send_device.animation = null + iv_device_connect_cloud.animation = null + iv_init_success.animation = null + iv_phone_connect_device.setImageResource(R.mipmap.wifi_selected) + iv_phone_send_device.setImageResource(R.mipmap.wifi_selected) + iv_device_connect_cloud.setImageResource(R.mipmap.wifi_selected) + iv_init_success.setImageResource(R.mipmap.wifi_selected) + tv_phone_connect_device.setTextColor(Color.BLACK) + tv_phone_send_device.setTextColor(Color.BLACK) + tv_device_connect_cloud.setTextColor(Color.BLACK) + tv_init_success.setTextColor(Color.BLACK) + App.data.setRefreshLevel(2) + + var successIntent = Intent(context, ConfigNetSuccessActivity::class.java) + successIntent.putExtra(CommonField.CONFIG_NET_TYPE, type) + successIntent.putExtra(CommonField.DEVICE_NAME, presenter.model?.deviceInfo?.deviceName) + startActivity(successIntent) + finish() } } } - }) + } } override fun onClick(v: View?) { when (v) { tv_connect_again -> { presenter.stopConnect() - wp_connected.setProgress(0) - showConnecting() onRestartListener?.restart() } // 切换连接方式 @@ -126,6 +198,7 @@ class ConnectProgressFragment(type: Int, loadType: Int, productId: String) : Bas // jumpActivity(SmartConnectActivity::class.java) startActivityWithExtra(SmartConnectActivity::class.java, loadType, productId) } + jumpActivity(SoftApActivity::class.java) } tv_back_to_home_page -> { backToMain() @@ -143,33 +216,54 @@ class ConnectProgressFragment(type: Int, loadType: Int, productId: String) : Bas startActivity(intent) } - override fun connectSuccess() { - activity?.run { - runOnUiThread { - wp_connected.setProgress(100, true) - App.data.setRefreshLevel(2) - } - } - } + override fun connectSuccess() {} + // 根据回调,处理界面的进度步骤 override fun connectStep(step: Int) { - activity?.run { - runOnUiThread { - L.e("progress=${step * 100 / 5}") - wp_connected.setProgress(step * 100 / 5, true) - progress_bg.setBackgroundResource(R.drawable.bg_progress) + if (type == WifiFragment.smart_config) { + when (step) { + SmartConfigStep.STEP_DEVICE_CONNECTED_TO_WIFI.ordinal -> { + state = ConnectProgressState.MobileAndDeviceConnectSuccess + refreshView() + } + SmartConfigStep.STEP_GOT_DEVICE_INFO.ordinal -> { + state = ConnectProgressState.SendMessageToDeviceSuccess + refreshView() + } + SmartConfigStep.STEP_DEVICE_BOUND.ordinal -> { + state = ConnectProgressState.DeviceConnectServiceSuccess + refreshView() + } + SmartConfigStep.STEP_LINK_SUCCESS.ordinal -> { + state = ConnectProgressState.InitSuccess + refreshView() + } + } + + } else { + when (step) { + SoftAPStep.STEP_SEND_WIFI_INFO.ordinal -> { + state = ConnectProgressState.MobileAndDeviceConnectSuccess + refreshView() + } + SoftAPStep.STEP_GOT_DEVICE_INFO.ordinal -> { + state = ConnectProgressState.SendMessageToDeviceSuccess + refreshView() + } + SoftAPStep.STEP_DEVICE_BOUND.ordinal -> { + state = ConnectProgressState.DeviceConnectServiceSuccess + refreshView() + } + SoftAPStep.STEP_LINK_SUCCESS.ordinal -> { + state = ConnectProgressState.InitSuccess + refreshView() + } } } } override fun deviceConnectToWifiFail() { - activity?.run { - runOnUiThread { - wp_connected?.setProgress(0) - T.show(getString(R.string.connect_failed_check_password)) - showConnectFail() - } - } + showfailedReason() } override fun softApConnectToWifiFail(ssid: String) { @@ -179,43 +273,22 @@ class ConnectProgressFragment(type: Int, loadType: Int, productId: String) : Bas } override fun connectFail(code: String, message: String) { - activity?.run { - runOnUiThread { - showConnectFail() - if (!TextUtils.isEmpty(message)) - T.show(message) - L.e("connectFail:$message") - } - } - } - - - private fun showConnecting() { - if (connecting != null) { - connecting.visibility = View.VISIBLE - connected.visibility = View.GONE - unconnected.visibility = View.GONE - } + showfailedReason() } - private fun showConnectSuccess() { - if (connecting != null) { - connecting.visibility = View.GONE - connected.visibility = View.VISIBLE - unconnected.visibility = View.GONE - } + interface OnRestartListener { + fun restart() } - private fun showConnectFail() { - if (connecting != null) { - connecting.visibility = View.GONE - connected.visibility = View.GONE - unconnected.visibility = View.VISIBLE + private fun showfailedReason() { + activity?.run { + runOnUiThread { + var failedIntent = Intent(context, ConfigNetFailedActivity::class.java) + failedIntent.putExtra(CommonField.CONFIG_NET_TYPE, type) + startActivity(failedIntent) + finish() + } } } - interface OnRestartListener { - fun restart() - } - } \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt index 3a862aa9f..601050890 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SCStepFragment.kt @@ -120,7 +120,7 @@ class SCStepFragment(type: Int, productId: String) : BaseFragment() { // 网络请求成功且返回标准内容 private fun loadViewStandradInfo() { - nextBtn?.setText(R.string.smart_config_first_title) + nextBtn?.setText(R.string.next) tipContent?.setText(R.string.smart_config_first_hint2) pic?.setImageResource(R.mipmap.image_smart_config) } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftHotspotFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftHotspotFragment.kt index a12f3e95a..f780a268d 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftHotspotFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/SoftHotspotFragment.kt @@ -1,13 +1,11 @@ package com.tencent.iot.explorer.link.kitlink.fragment -import android.content.Context -import android.content.Intent -import android.net.wifi.WifiManager -import android.provider.Settings import android.text.TextUtils import android.view.View import com.alibaba.fastjson.JSONObject import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.T +import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import com.tencent.iot.explorer.link.core.auth.util.JsonManager import com.tencent.iot.explorer.link.kitlink.consts.CommonField import com.tencent.iot.explorer.link.kitlink.consts.LoadViewTxtType @@ -17,14 +15,11 @@ import com.tencent.iot.explorer.link.kitlink.response.ProductsConfigResponse import com.tencent.iot.explorer.link.kitlink.util.HttpRequest import com.tencent.iot.explorer.link.kitlink.util.MyCallback import com.tencent.iot.explorer.link.mvp.IPresenter -import com.tencent.iot.explorer.link.T -import com.tencent.iot.explorer.link.core.auth.response.BaseResponse import kotlinx.android.synthetic.main.fragment_soft_hotspot.* class SoftHotspotFragment(type: Int, productId: String) : BaseFragment() { var onNextListener: OnNextListener? = null - private var isFirst = true private var type: Int private var productId: String @@ -41,35 +36,6 @@ class SoftHotspotFragment(type: Int, productId: String) : BaseFragment() { return R.layout.fragment_soft_hotspot } - override fun onResume() { - super.onResume() - showButton() - } - - private fun showConnect() { - tv_soft_connect_hotspot.visibility = View.VISIBLE - tv_soft_reconnect_hotspot.visibility = View.GONE - tv_soft_connect_confirm.visibility = View.GONE - } - - private fun showReconnect() { - tv_soft_connect_hotspot.visibility = View.GONE - tv_soft_reconnect_hotspot.visibility = View.VISIBLE - tv_soft_connect_confirm.visibility = View.VISIBLE - } - - private fun showButton() { - if (isFirst) return - val wifiManager = - context!!.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager - if (wifiManager.connectionInfo.bssid != null) { - showReconnect() - } else { - showConnect() - } - isFirst = false - } - override fun startHere(view: View) { // 加载本地文案 if (type == LoadViewTxtType.LoadLocalViewTxt.ordinal) { @@ -78,18 +44,19 @@ class SoftHotspotFragment(type: Int, productId: String) : BaseFragment() { loadViewInfo() } - setListener() + tv_soft_connect_hotspot.setOnClickListener { + if (onNextListener != null) { + onNextListener?.onNext() + } + } } private fun loadViewStandradInfo() { - tv_hotspot_hint.visibility = View.VISIBLE - tv_hotspot_hint.setText(R.string.soft_ap_hotspot_step_1) tv_soft_connect_hotspot_tip.visibility = View.VISIBLE - tv_soft_connect_hotspot_tip.setText(R.string.soft_ap_hotspot_step_2) + tv_soft_connect_hotspot_tip.setText(R.string.soft_ap_hotspot_step_1) } private fun loadViewInfo() { - tv_hotspot_hint.visibility = View.GONE tv_soft_connect_hotspot_tip.visibility = View.VISIBLE if (TextUtils.isEmpty(productId)) { return @@ -122,24 +89,7 @@ class SoftHotspotFragment(type: Int, productId: String) : BaseFragment() { }) } - private fun setListener() { - tv_soft_connect_hotspot.setOnClickListener { - startActivity(Intent(Settings.ACTION_WIFI_SETTINGS)) - isFirst = false - } - tv_soft_reconnect_hotspot.setOnClickListener { - startActivity(Intent(Settings.ACTION_WIFI_SETTINGS)) - } - tv_soft_connect_confirm.setOnClickListener { - onNextListener?.onNext() - isFirst = true - showConnect() - } - } - interface OnNextListener { fun onNext() } - - } \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/WifiFragment.kt b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/WifiFragment.kt index 2540a0580..72184a845 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/WifiFragment.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/fragment/WifiFragment.kt @@ -5,33 +5,39 @@ import android.content.Intent import android.net.wifi.WifiInfo import android.net.wifi.WifiManager import android.text.Editable +import android.text.TextUtils import android.text.TextWatcher import android.view.View +import androidx.appcompat.content.res.AppCompatResources.getDrawable import com.tencent.iot.explorer.link.R +import com.tencent.iot.explorer.link.T import com.tencent.iot.explorer.link.customview.dialog.WifiHelperDialog import com.tencent.iot.explorer.link.mvp.IPresenter import com.tencent.iot.explorer.link.core.utils.LocationUtil import com.tencent.iot.explorer.link.core.utils.KeyBoardUtils +import com.tencent.iot.explorer.link.kitlink.consts.CommonField import kotlinx.android.synthetic.main.fragment_wifi.* import kotlinx.android.synthetic.main.smart_config_second.* /** * 输入wifi密码 */ -class WifiFragment(): BaseFragment() { +class WifiFragment() : BaseFragment() { private var type = 0 private var wifiInfo: WifiInfo? = null - private var showPwd = false + private var bssid = "" + var showTipTag = false + + constructor(type: Int, showTag: Boolean) : this() { + this.type = type + showTipTag = showTag + } var onCommitWifiListener: OnCommitWifiListener? = null var openWifiDialog: WifiHelperDialog? = null var openLocationServiceDialog: WifiHelperDialog? = null - constructor(type: Int):this(){ - this.type = type - } - companion object { const val smart_config = 0 const val soft_ap = 1 @@ -46,9 +52,9 @@ class WifiFragment(): BaseFragment() { */ private fun showWifiInfo() { context?.let { - val wifiManager = - it.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager + val wifiManager = it.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager wifiInfo = wifiManager.connectionInfo + if (wifiInfo == null || wifiInfo!!.bssid == null) { tv_select_wifi.hint = getString(R.string.not_network) tv_wifi_commit.isEnabled = false @@ -62,9 +68,24 @@ class WifiFragment(): BaseFragment() { openLocationServiceDialog?.show() } tv_select_wifi.setText(ssid2Set) + if (tv_select_wifi.text.contains(CommonField.SSID_UNKNOWN)) { + T.show(getString(R.string.open_location_tip)) + } + bssid = wifiInfo!!.bssid + } + tv_select_wifi.isEnabled = type == soft_ap + isNextClickable() + + if (showTipTag) { + tv_method.visibility = View.VISIBLE + tv_method_tip.visibility = View.VISIBLE + tv_tip_wifi.setText(R.string.connect_dev_wifi) + } else { + tv_method.visibility = View.GONE + tv_method_tip.visibility = View.GONE + tv_tip_wifi.setText(R.string.input_wifi_pwd) } - tv_select_wifi.isEnabled = false } } @@ -87,7 +108,6 @@ class WifiFragment(): BaseFragment() { override fun onOkClicked() { startActivity(Intent(android.provider.Settings.ACTION_WIFI_SETTINGS)) } - override fun onCancelClicked() {} }) openLocationServiceDialog = WifiHelperDialog(context, getString(R.string.please_open_location_service)) @@ -95,23 +115,14 @@ class WifiFragment(): BaseFragment() { override fun onOkClicked() { startActivity(Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)) } - override fun onCancelClicked() {} }) showWifiInfo() et_select_wifi_pwd.addClearImage(iv_wifi_eye_clear) - et_select_wifi_pwd.addShowImage( - iv_wifi_eye, - R.mipmap.icon_visible, - R.mipmap.icon_invisible - ) + et_select_wifi_pwd.addShowImage(iv_wifi_eye, R.mipmap.icon_visible, R.mipmap.icon_invisible) tv_select_wifi.addTextChangedListener(object : TextWatcher { - override fun afterTextChanged(s: Editable?) { - s?.let { - tv_wifi_commit.isEnabled = it.isNotEmpty() - } - } + override fun afterTextChanged(s: Editable?) {} override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } @@ -132,33 +143,29 @@ class WifiFragment(): BaseFragment() { et_select_wifi_pwd ) } - /*iv_wifi_eye.setOnClickListener { - showPwd = !showPwd - et_select_wifi_pwd.inputType = if (showPwd) { - InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD - } else { - InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD - } - iv_wifi_eye.setImageResource( - if (showPwd) { - R.mipmap.icon_invisible - } else { - R.mipmap.icon_visible - } - ) - et_select_wifi_pwd.setSelection(et_select_wifi_pwd.length()) - }*/ + container_wifi.setOnClickListener { - KeyBoardUtils.hideKeyBoard( - context, - et_select_wifi_pwd - ) + KeyBoardUtils.hideKeyBoard(context, et_select_wifi_pwd) } + iv_select_wifi.setOnClickListener { startActivity(Intent(android.provider.Settings.ACTION_WIFI_SETTINGS)) } } + private fun isNextClickable() { + if (tv_select_wifi.text != null && (TextUtils.isEmpty(tv_select_wifi.text.toString())) || + tv_select_wifi.text.toString().equals(CommonField.SSID_UNKNOWN)) { + tv_wifi_commit.isClickable = false + tv_wifi_commit.background = getDrawable(context!!, R.drawable.bg_edit) + return + } + + tv_wifi_commit.isClickable = true + tv_wifi_commit.background = getDrawable(context!!, R.drawable.btn_bg) + } + + interface OnCommitWifiListener { fun commitWifi(ssid: String, bssid: String?, password: String) } diff --git a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/BitmapUtils.java b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/BitmapUtils.java index cbbe61737..b3843bd40 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/BitmapUtils.java +++ b/app/src/main/java/com/tencent/iot/explorer/link/kitlink/util/picture/utils/BitmapUtils.java @@ -3,6 +3,9 @@ import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.util.Log; @@ -225,4 +228,35 @@ public static Bitmap getBitmap(Resources resources, int resID, int width, int he opts.inJustDecodeBounds = false; return BitmapFactory.decodeResource(resources, resID, opts); } + + public static Bitmap convertToBitmap(Drawable drawable, int widthPixels) { + Bitmap mutableBitmap = Bitmap.createBitmap(widthPixels, widthPixels, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(mutableBitmap); + drawable.setBounds(0, 0, widthPixels, widthPixels); + drawable.draw(canvas); + return mutableBitmap; + } + + public static Bitmap createWaterMark(Bitmap target, String mark, int width, int textSize) { + Bitmap bmp = Bitmap.createBitmap(width, width, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bmp); + + Paint p = new Paint(); + p.setColor(Color.WHITE); // 水印的颜色 + p.setTextSize(textSize); // 水印的字体大小 + p.setAntiAlias(true); // 去锯齿 + canvas.drawBitmap(target, 0, 0, p); + float len = p.measureText(mark); + float hei = Math.abs(p.ascent() + p.descent()); + // 在左边的中间位置开始添加水印 + canvas.drawText(mark, width / 2 - len / 2, width / 2 + hei / 2, p); + canvas.save(); + canvas.restore(); + return bmp; + } + + public static Bitmap createWaterMark(Drawable drawable, String mark, int width, int textSize) { + Bitmap target = convertToBitmap(drawable, width); + return createWaterMark(target, mark, width, textSize); + } } \ No newline at end of file diff --git a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ConnectModel.kt b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ConnectModel.kt index 37dd6ec73..708ffe40e 100644 --- a/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ConnectModel.kt +++ b/app/src/main/java/com/tencent/iot/explorer/link/mvp/model/ConnectModel.kt @@ -39,7 +39,7 @@ class ConnectModel(view: ConnectView) : ParentModel(view), MyCallba var password = "" @Volatile var checkDeviceBindTokenStateStarted = false - private var deviceInfo: DeviceInfo? = null + var deviceInfo: DeviceInfo? = null var type = WifiFragment.smart_config diff --git a/app/src/main/res/drawable/background_cell.xml b/app/src/main/res/drawable/background_cell.xml new file mode 100644 index 000000000..7f63fc033 --- /dev/null +++ b/app/src/main/res/drawable/background_cell.xml @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/btn_style.xml b/app/src/main/res/drawable/btn_style.xml new file mode 100644 index 000000000..9a69b20af --- /dev/null +++ b/app/src/main/res/drawable/btn_style.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/app/src/main/res/drawable/circle_shape.xml b/app/src/main/res/drawable/circle_shape.xml new file mode 100644 index 000000000..daf7194ac --- /dev/null +++ b/app/src/main/res/drawable/circle_shape.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/circle_uncomplete_shape.xml b/app/src/main/res/drawable/circle_uncomplete_shape.xml new file mode 100644 index 000000000..76bcff7f0 --- /dev/null +++ b/app/src/main/res/drawable/circle_uncomplete_shape.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_config_net_failed.xml b/app/src/main/res/layout/activity_config_net_failed.xml new file mode 100644 index 000000000..c6ad2884f --- /dev/null +++ b/app/src/main/res/layout/activity_config_net_failed.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_config_net_success.xml b/app/src/main/res/layout/activity_config_net_success.xml new file mode 100644 index 000000000..e884e5495 --- /dev/null +++ b/app/src/main/res/layout/activity_config_net_success.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_smart_connect.xml b/app/src/main/res/layout/activity_smart_connect.xml index e129238af..1ff64738e 100644 --- a/app/src/main/res/layout/activity_smart_connect.xml +++ b/app/src/main/res/layout/activity_smart_connect.xml @@ -1,66 +1,74 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:id="@+id/smart_config" + android:background="@color/white" + tools:context=".kitlink.activity.SmartConnectActivity"> + android:id="@+id/sbhv_smart_connect" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + app:layout_constraintTop_toTopOf="parent" + app:use_type="use_padding_top"> + android:layout_width="match_parent" + android:layout_height="44dp"> - + + android:id="@+id/tv_smart_connect_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:gravity="center" + android:text="@string/smart_config_config_network" + android:textStyle="bold" + android:textColor="@color/black_333333" + android:textSize="@dimen/ts_20" /> + + + android:id="@+id/container_smart_connect" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@+id/smart_config_step_progress" + app:layout_constraintVertical_bias="0.0" + tools:layout_editor_absoluteX="0dp" /> + android:id="@+id/smart_config_bg" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:alpha="0.7" + android:background="@color/black" + android:visibility="gone" /> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_soft_ap.xml b/app/src/main/res/layout/activity_soft_ap.xml index 1eb985a28..bb2f959ce 100644 --- a/app/src/main/res/layout/activity_soft_ap.xml +++ b/app/src/main/res/layout/activity_soft_ap.xml @@ -1,69 +1,78 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:id="@+id/soft_ap" + android:background="@color/white" + tools:context=".kitlink.activity.SoftApActivity"> + android:id="@+id/sbhv_soft_ap" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + app:layout_constraintTop_toTopOf="parent" + app:use_type="use_padding_top"> + android:layout_width="match_parent" + android:layout_height="44dp"> - + + android:id="@+id/tv_soft_ap_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:gravity="center" + android:text="@string/soft_config_network" + android:textStyle="bold" + android:textColor="@color/black_333333" + android:textSize="@dimen/ts_20" /> + android:layout_width="match_parent" + android:layout_height="1dp" + android:layout_alignParentBottom="true" + android:background="@color/gray_e6e6e6" /> + + + android:id="@+id/container_soft_ap" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@+id/softap_step_progress" /> + android:id="@+id/soft_ap_bg" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:alpha="0.7" + android:background="@color/black" + android:visibility="gone" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_connect_progress.xml b/app/src/main/res/layout/fragment_connect_progress.xml index 8636f3fe6..c3bd09d84 100644 --- a/app/src/main/res/layout/fragment_connect_progress.xml +++ b/app/src/main/res/layout/fragment_connect_progress.xml @@ -1,21 +1,133 @@ - - - - - - + android:layout_height="match_parent" + xmlns:app="http://schemas.android.com/apk/res-auto"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_smart_config_step.xml b/app/src/main/res/layout/fragment_smart_config_step.xml index c08d70710..61ab117af 100644 --- a/app/src/main/res/layout/fragment_smart_config_step.xml +++ b/app/src/main/res/layout/fragment_smart_config_step.xml @@ -1,68 +1,64 @@ - + android:layout_height="match_parent"> - - + - + - - + - - + - + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_soft_ap_step.xml b/app/src/main/res/layout/fragment_soft_ap_step.xml index d87e129b7..c568cb387 100644 --- a/app/src/main/res/layout/fragment_soft_ap_step.xml +++ b/app/src/main/res/layout/fragment_soft_ap_step.xml @@ -1,71 +1,73 @@ + android:layout_height="wrap_content"> - - - - + + android:orientation="vertical" + > - + - - + - + - + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_soft_hotspot.xml b/app/src/main/res/layout/fragment_soft_hotspot.xml index 72f8ba8a9..bba55503e 100644 --- a/app/src/main/res/layout/fragment_soft_hotspot.xml +++ b/app/src/main/res/layout/fragment_soft_hotspot.xml @@ -1,113 +1,69 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent"> - - + android:layout_width="match_parent" + android:layout_height="wrap_content"> + android:id="@+id/tip_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="20dp" + android:layout_marginTop="35dp" + android:text="@string/soft_ap_hotspot_set" + android:textColor="@color/black_333333" + android:textSize="@dimen/ts_20" + android:textStyle="bold" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toTopOf="parent" /> - - - - + android:id="@+id/iv_soft_hotspot" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="22dp" + android:src="@mipmap/image_wifi_list" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toBottomOf="@+id/tip_title" /> + android:id="@+id/tv_soft_connect_hotspot_tip" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="20dp" + android:layout_marginTop="25dp" + android:layout_marginEnd="20dp" + android:text="@string/soft_ap_hotspot_step" + android:textColor="@color/black_333333" + android:textSize="@dimen/ts_16" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toBottomOf="@+id/iv_soft_hotspot" /> + android:id="@+id/tv_soft_connect_hotspot" + android:layout_width="match_parent" + android:layout_height="48dp" + android:layout_marginStart="20dp" + android:layout_marginTop="22dp" + android:layout_marginEnd="20dp" + android:background="@drawable/btn_rad4_color_0052d9" + android:gravity="center" + android:text="@string/next" + android:textColor="@color/white" + android:textSize="@dimen/ts_20" + app:layout_constraintTop_toBottomOf="@+id/tv_soft_connect_hotspot_tip" /> + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintTop_toBottomOf="@+id/tv_soft_connect_hotspot" + android:layout_marginTop="50dp"/> diff --git a/app/src/main/res/layout/fragment_wifi.xml b/app/src/main/res/layout/fragment_wifi.xml index cfd61340c..2dc033b40 100644 --- a/app/src/main/res/layout/fragment_wifi.xml +++ b/app/src/main/res/layout/fragment_wifi.xml @@ -1,8 +1,8 @@ + android:id="@+id/container_wifi" + android:layout_width="match_parent" + android:layout_height="match_parent"> diff --git a/app/src/main/res/layout/item_wifi_info.xml b/app/src/main/res/layout/item_wifi_info.xml new file mode 100644 index 000000000..177ae1a1c --- /dev/null +++ b/app/src/main/res/layout/item_wifi_info.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/popup_connect_layout.xml b/app/src/main/res/layout/popup_connect_layout.xml new file mode 100644 index 000000000..e6decba02 --- /dev/null +++ b/app/src/main/res/layout/popup_connect_layout.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/popup_smart_config_network.xml b/app/src/main/res/layout/popup_smart_config_network.xml new file mode 100644 index 000000000..f399a1178 --- /dev/null +++ b/app/src/main/res/layout/popup_smart_config_network.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/smart_config_second.xml b/app/src/main/res/layout/smart_config_second.xml index 6a59abe5f..c0a7439d5 100644 --- a/app/src/main/res/layout/smart_config_second.xml +++ b/app/src/main/res/layout/smart_config_second.xml @@ -1,105 +1,183 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + + + + android:id="@+id/tv_select_wifi" + android:layout_width="0dp" + android:layout_height="48dp" + android:background="@color/translucent" + android:maxLines="1" + android:textColor="@color/black_333333" + android:textSize="18sp" + android:enabled="false" + app:layout_constraintBottom_toBottomOf="@+id/smart_second_line" + app:layout_constraintLeft_toRightOf="@+id/tv_wifi_tip" + app:layout_constraintRight_toLeftOf="@+id/iv_select_wifi" /> + + + + + android:id="@+id/iv_select_wifi" + android:layout_width="40dp" + android:layout_height="40dp" + android:padding="11dp" + android:layout_marginEnd="15dp" + android:src="@mipmap/more_wifi" + app:layout_constraintTop_toTopOf="@+id/tv_select_wifi" + app:layout_constraintBottom_toBottomOf="@+id/tv_select_wifi" + app:layout_constraintRight_toRightOf="parent"/> + android:id="@+id/smart_second_line" + android:layout_width="match_parent" + android:layout_height="1dp" + android:layout_marginTop="67dp" + android:background="@color/gray_dddddd" + app:layout_constraintTop_toBottomOf="@+id/tv_tip_wifi" + /> + android:id="@+id/smart_second_wifi_pwd" + android:layout_width="match_parent" + android:layout_height="1dp" + android:layout_marginTop="65dp" + android:background="@color/gray_dddddd" + app:layout_constraintTop_toBottomOf="@+id/smart_second_line" /> + android:id="@+id/et_select_wifi_pwd" + android:layout_width="0dp" + android:layout_height="48dp" + android:background="@color/translucent" + android:textCursorDrawable="@drawable/edit_blue_cursor" + android:hint="@string/smart_config_second_hint" + android:imeOptions="actionNone" + android:inputType="textPassword" + android:maxLines="1" + android:singleLine="true" + android:textColorHint="#BABABA" + android:textColor="@color/black" + android:textSize="@dimen/ts_18" + app:layout_constraintBottom_toBottomOf="@+id/smart_second_wifi_pwd" + app:layout_constraintLeft_toRightOf="@+id/tv_pwd_tip" + app:layout_constraintRight_toLeftOf="@+id/iv_wifi_eye" /> + + + + + android:id="@+id/iv_wifi_eye_clear" + android:layout_width="40dp" + android:layout_height="40dp" + android:padding="11dp" + android:src="@mipmap/icon_clear" + android:visibility="visible" + app:layout_constraintBottom_toBottomOf="@+id/et_select_wifi_pwd" + app:layout_constraintRight_toLeftOf="@+id/iv_wifi_eye" + app:layout_constraintTop_toTopOf="@id/et_select_wifi_pwd" /> + android:id="@+id/iv_wifi_eye" + android:layout_width="40dp" + android:layout_height="40dp" + android:padding="11dp" + android:layout_marginEnd="15dp" + android:src="@mipmap/icon_invisible" + app:layout_constraintTop_toTopOf="@+id/et_select_wifi_pwd" + app:layout_constraintBottom_toBottomOf="@+id/et_select_wifi_pwd" + app:layout_constraintRight_toRightOf="parent" + /> + + + android:id="@+id/tv_method" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="10dp" + android:text="@string/method_step" + android:textSize="16sp" + android:layout_marginStart="20dp" + android:layout_marginEnd="20dp" + android:visibility="gone" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toBottomOf="@+id/tv_method_tip"/> + + \ No newline at end of file diff --git a/app/src/main/res/layout/widget_horizontal_stepsview.xml b/app/src/main/res/layout/widget_horizontal_stepsview.xml new file mode 100644 index 000000000..774060457 --- /dev/null +++ b/app/src/main/res/layout/widget_horizontal_stepsview.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/config_net_progress.png b/app/src/main/res/mipmap-hdpi/config_net_progress.png new file mode 100644 index 0000000000000000000000000000000000000000..f9931ae7d8a2209386c20a0d6a022bd8f359f1f2 GIT binary patch literal 6959 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 z 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ⅆ<({3CM$>?vxU_mO0&(p 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
      CH5?t7EGU=L$$iUFS_iH}7 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
      $&c*aYn=ZK` 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