UserInfoSettingActivity.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  1. package com.edufound.reader.activity;
  2. import android.annotation.SuppressLint;
  3. import android.app.Activity;
  4. import android.content.Context;
  5. import android.content.Intent;
  6. import android.graphics.Color;
  7. import android.text.InputFilter;
  8. import android.text.TextUtils;
  9. import android.view.KeyEvent;
  10. import android.view.View;
  11. import android.view.inputmethod.EditorInfo;
  12. import android.view.inputmethod.InputMethodManager;
  13. import android.widget.EditText;
  14. import android.widget.FrameLayout;
  15. import android.widget.ImageView;
  16. import android.widget.LinearLayout;
  17. import android.widget.TextView;
  18. import android.widget.Toast;
  19. import com.baidu.duer.bot.directive.payload.AmountInfo;
  20. import com.baidu.duer.botsdk.BotIntent;
  21. import com.edufound.reader.R;
  22. import com.edufound.reader.annotation.BindView;
  23. import com.edufound.reader.application.EApplication;
  24. import com.edufound.reader.base.BaseMvpActivity;
  25. import com.edufound.reader.bean.ChannelCodeEnum;
  26. import com.edufound.reader.bean.UserBean;
  27. import com.edufound.reader.botsdk.BotRegisterListener;
  28. import com.edufound.reader.contract.UserInfoSettingContract;
  29. import com.edufound.reader.cusview.CusToast;
  30. import com.edufound.reader.listener.PopUtilClickListener;
  31. import com.edufound.reader.popwindow.PopWindowUtil;
  32. import com.edufound.reader.presenter.UserInfoSettingPresenter;
  33. import com.edufound.reader.util.Consts;
  34. import com.edufound.reader.util.EfunboxUtil;
  35. import com.edufound.reader.util.GlideUtils;
  36. import com.edufound.reader.util.SizeUtils;
  37. import com.jakewharton.rxbinding4.view.RxView;
  38. import com.orhanobut.logger.Logger;
  39. import java.util.HashMap;
  40. import androidx.annotation.NonNull;
  41. import io.reactivex.rxjava3.annotations.Nullable;
  42. public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPresenter> implements UserInfoSettingContract.View {
  43. Activity mActivity;
  44. @BindView(id = R.id.activity_userinfo_setting_back)
  45. ImageView mBack;
  46. @BindView(id = R.id.activity_userinfo_setting_loginout_layout)
  47. LinearLayout mLoginOut;
  48. @BindView(id = R.id.activity_userinfo_setting_privservices_layout)
  49. LinearLayout mPrivServices;
  50. @BindView(id = R.id.activity_userinfo_setting_services_layout)
  51. LinearLayout mAgreementServices;
  52. @BindView(id = R.id.activity_userinfo_setting_cancellation_layout)
  53. LinearLayout mCancellationLayout;
  54. @BindView(id = R.id.activity_userinfo_setting_bindwechat_layout)
  55. LinearLayout mBindWeChat;
  56. @BindView(id = R.id.activity_userinfo_setting_switchuser_layout)
  57. LinearLayout mSwitchLayout;
  58. @BindView(id = R.id.activity_userinfo_setting_nickname)
  59. EditText mNickName;
  60. @BindView(id = R.id.activity_userinfo_setting_gender_male)
  61. FrameLayout mGenderMale;
  62. @BindView(id = R.id.activity_userinfo_setting_gender_female)
  63. FrameLayout mGenderFeMale;
  64. @BindView(id = R.id.activity_userinfo_setting_grade)
  65. TextView mGrade;
  66. @BindView(id = R.id.activity_userinfo_setting_userhead)
  67. ImageView mUserHead;
  68. @BindView(id = R.id.activity_userinfo_setting_userhead_num)
  69. TextView mUserNum;
  70. @Override
  71. public int getLayoutId() {
  72. return R.layout.activity_userinfo_setting;
  73. }
  74. @SuppressLint("AutoDispose")
  75. @Override
  76. public void initView() {
  77. mActivity = this;
  78. mPresenter = new UserInfoSettingPresenter();
  79. mPresenter.attachView(this);
  80. addUiClickListener(mBack, o -> {
  81. mNickName.clearFocus();
  82. hideSoftInput();
  83. mActivity.finish();
  84. });
  85. addUiClickListener(mPrivServices, o -> {
  86. if (mNickName.hasFocus()) {
  87. mNickName.clearFocus();
  88. return;
  89. }
  90. Intent intent = new Intent(getActivity(), WebActivity.class);
  91. intent.putExtra("loadUrl", Consts.getPrivServiceUrl());
  92. getActivity().startActivity(intent);
  93. });
  94. addUiClickListener(mAgreementServices, o -> {
  95. if (mNickName.hasFocus()) {
  96. mNickName.clearFocus();
  97. return;
  98. }
  99. Intent intent = new Intent(getActivity(), WebActivity.class);
  100. intent.putExtra("loadUrl", Consts.getAgreementServicesUrl());
  101. getActivity().startActivity(intent);
  102. });
  103. if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
  104. //百度渠道,隐藏注销和退出登录按钮
  105. mCancellationLayout.setVisibility(View.GONE);
  106. mLoginOut.setVisibility(View.GONE);
  107. } else if (Consts.getUmengChannel().equals(ChannelCodeEnum.YIFANG.getChannelCode())) {
  108. //义方渠道
  109. mCancellationLayout.setVisibility(View.VISIBLE);
  110. mLoginOut.setVisibility(View.VISIBLE);
  111. }
  112. addUiClickListener(mLoginOut, o -> {
  113. Logger.e("mLoginOut");
  114. if (mNickName.hasFocus()) {
  115. mNickName.clearFocus();
  116. return;
  117. }
  118. PopWindowUtil.showExitLoginWindow(mActivity, getRootView(), new PopUtilClickListener() {
  119. @Override
  120. public void clickCancel() {
  121. }
  122. @Override
  123. public void clickSubmit(Object obj) {
  124. Toast.makeText(mActivity, "退出账号", Toast.LENGTH_SHORT).show();
  125. mPresenter.loginOut();
  126. }
  127. });
  128. });
  129. addUiClickListener(mCancellationLayout, o -> {
  130. Logger.e("註銷按鈕");
  131. if (mNickName.hasFocus()) {
  132. mNickName.clearFocus();
  133. return;
  134. }
  135. PopWindowUtil.showCancellationAccountWindow(mActivity, getRootView(), new PopUtilClickListener() {
  136. @Override
  137. public void clickCancel() {
  138. }
  139. @Override
  140. public void clickSubmit(Object obj) {
  141. Toast.makeText(mActivity, "注销账号", Toast.LENGTH_SHORT).show();
  142. mPresenter.userCancellation();
  143. }
  144. });
  145. });
  146. addUiClickListener(mBindWeChat, o -> {
  147. if (mNickName.hasFocus()) {
  148. mNickName.clearFocus();
  149. return;
  150. }
  151. PopWindowUtil.showBindWeChatWindow(mActivity, getRootView(), null);
  152. });
  153. addUiClickListener(mSwitchLayout, o -> {
  154. if (mNickName.hasFocus()) {
  155. mNickName.clearFocus();
  156. return;
  157. }
  158. EfunboxUtil.userLogin(getActivity());
  159. });
  160. addUiClickListener(mGenderMale, o -> {
  161. if (mNickName.hasFocus()) {
  162. mNickName.clearFocus();
  163. return;
  164. }
  165. mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
  166. mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
  167. mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
  168. });
  169. addUiClickListener(mGenderFeMale, o -> {
  170. if (mNickName.hasFocus()) {
  171. mNickName.clearFocus();
  172. return;
  173. }
  174. mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
  175. mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
  176. mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
  177. });
  178. addUiClickListener(mGrade, o -> {
  179. if (mNickName.hasFocus()) {
  180. mNickName.clearFocus();
  181. return;
  182. }
  183. PopWindowUtil.showSelectGradeWindow(getActivity(), getRootView(), EfunboxUtil.getIndexGradeByEnum(mPresenter.getGradeEnum()), new PopUtilClickListener() {
  184. @Override
  185. public void clickCancel() {
  186. }
  187. @Override
  188. public void clickSubmit(Object object) {
  189. // Toast.makeText(getActivity(), "选择了:" + EfunboxUtil.getEnumByCNGrade(object.toString()), Toast.LENGTH_SHORT).show();
  190. Consts.getmConstsUserBean().setGrade(EfunboxUtil.getEnumByCNGrade(object.toString()));
  191. mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
  192. }
  193. });
  194. });
  195. RxView.focusChanges(mNickName).subscribe(hasFocus -> {
  196. if (!hasFocus) {
  197. if (TextUtils.isEmpty(mNickName.getText().toString())) {
  198. // Toast.makeText(getActivity(), "请输入昵称", Toast.LENGTH_SHORT).show();
  199. return;
  200. }
  201. hideSoftInput();
  202. Consts.getmConstsUserBean().setNickName(mNickName.getText().toString().trim());
  203. mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
  204. } else {
  205. mNickName.setFilters(new InputFilter[]{new InputFilter.LengthFilter(6)});
  206. }
  207. });
  208. mNickName.setOnEditorActionListener(new TextView.OnEditorActionListener() {
  209. @Override
  210. public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
  211. if (actionId == KeyEvent.ACTION_DOWN || actionId == EditorInfo.IME_ACTION_DONE) {
  212. if (TextUtils.isEmpty(mNickName.getText().toString())) {
  213. // CusToast.getInstance(mActivity).show("请输入昵称", 2000);
  214. Toast.makeText(mActivity, "请输入昵称", Toast.LENGTH_SHORT).show();
  215. return true;
  216. }
  217. hideSoftInput();
  218. Consts.getmConstsUserBean().setNickName(mNickName.getText().toString().trim());
  219. mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
  220. mNickName.clearFocus();
  221. return true;
  222. }
  223. return false;
  224. }
  225. });
  226. if (Consts.getmConstsBaiDuUserBean() != null) {
  227. mUserNum.setText("账号:" + Consts.getmConstsBaiDuUserBean().getUserInfo().getUserId());
  228. }
  229. mPresenter.getMyInfo();
  230. }
  231. private void hideSoftInput() {
  232. InputMethodManager manager = ((InputMethodManager) Consts.getmApplicAtion().getSystemService(Context.INPUT_METHOD_SERVICE));
  233. if (manager != null) {
  234. manager.hideSoftInputFromWindow(mNickName.getWindowToken(), 0);
  235. }
  236. }
  237. @Override
  238. public void onGetDisconnect() {
  239. }
  240. @Override
  241. public void onGetMobileConnect() {
  242. }
  243. @Override
  244. public void onGetWifiConnect() {
  245. }
  246. @Override
  247. public void showLoading() {
  248. }
  249. @Override
  250. public void hideLoading() {
  251. }
  252. @Override
  253. public void onError(String errMessage) {
  254. }
  255. @Override
  256. public Activity getActivity() {
  257. return mActivity;
  258. }
  259. @Override
  260. public void getUserInfoSuccess(UserBean bean) {
  261. if (bean.getNickName().length() <= 6) {
  262. mNickName.setFilters(new InputFilter[]{new InputFilter.LengthFilter(6)});
  263. } else {
  264. mNickName.setFilters(new InputFilter[]{new InputFilter.LengthFilter(11)});
  265. }
  266. mNickName.setText(bean.getNickName());
  267. mGrade.setText(EfunboxUtil.getCNGradeByEnum(bean.getGrade()));
  268. if (bean.getGender().equals("1")) {
  269. //男孩子
  270. mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
  271. mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
  272. GlideUtils.loadImage(getActivity(), R.drawable.activity_userinfo_setting_boy, mUserHead);
  273. } else if (bean.getGender().equals("0")) {
  274. //女孩子
  275. mGenderMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_bg);
  276. mGenderFeMale.setBackgroundResource(R.drawable.activity_userinfo_setting_item_sex_true_bg);
  277. GlideUtils.loadImage(getActivity(), R.drawable.activity_userinfo_setting_girl, mUserHead);
  278. }
  279. if (bean.getAvatar() == null || bean.getAvatar().equals("")) {
  280. } else {
  281. GlideUtils.loadCircleWithBorderImage(getActivity(), bean.getAvatar(), mUserHead, SizeUtils.px2dp(getActivity(), 10), Color.WHITE);
  282. }
  283. }
  284. @Override
  285. public void loginOutSuccess() {
  286. for (int i = 0; i < EApplication.mActivityList.size(); i++) {
  287. EApplication.mActivityList.get(i).finish();
  288. }
  289. Intent intent = new Intent(getActivity(), MainActivity.class);
  290. intent.putExtra("defaultIndex", 1);
  291. startActivity(intent);
  292. }
  293. @Override
  294. protected void onDestroy() {
  295. mPresenter.activityDestory();
  296. super.onDestroy();
  297. }
  298. @Override
  299. protected void botHandleIntent(BotIntent intent, String customData) {
  300. super.botHandleIntent(intent, customData);
  301. Logger.e(getLocalClassName() + "botHandleIntent");
  302. }
  303. @Override
  304. protected void botOnClickLink(String url, HashMap<String, String> paramMap) {
  305. super.botOnClickLink(url, paramMap);
  306. Logger.e(getLocalClassName() + "botOnClickLink");
  307. }
  308. @Override
  309. protected void botOnHandleScreenNavigatorEvent(int event) {
  310. super.botOnHandleScreenNavigatorEvent(event);
  311. Logger.e(getLocalClassName() + "botOnHandleScreenNavigatorEvent");
  312. }
  313. @Override
  314. protected void botOnLinkAccountSucceed(String s, String s1) {
  315. super.botOnLinkAccountSucceed(s, s1);
  316. Logger.e(getLocalClassName() + "botOnLinkAccountSucceed");
  317. // RequestBotSdkUtil.requestBuyProduct();
  318. }
  319. @Override
  320. protected void botOnChargeStatusUpdated(String purchaseResult, AmountInfo authorizationAmount, AmountInfo capturedAmount, long creationTimestamp, String baiduOrderReferenceId, String sellerOrderId, String msg) {
  321. super.botOnChargeStatusUpdated(purchaseResult, authorizationAmount, capturedAmount, creationTimestamp, baiduOrderReferenceId, sellerOrderId, msg);
  322. Logger.e(getLocalClassName() + "botOnChargeStatusUpdated");
  323. }
  324. @Override
  325. protected void botOnBuyStatusUpdated(@NonNull String purchaseResult, @NonNull String productId, @NonNull String baiduOrderId, @NonNull String sellerOrderId, @Nullable String msg, String token) {
  326. super.botOnBuyStatusUpdated(purchaseResult, productId, baiduOrderId, sellerOrderId, msg, token);
  327. Logger.e(getLocalClassName() + "botOnBuyStatusUpdated");
  328. }
  329. @Override
  330. protected void refUserInfo(UserBean bean) {
  331. super.refUserInfo(bean);
  332. getUserInfoSuccess(bean);
  333. }
  334. }