package com.wangdaye.mysplash.common.ui.dialog; import android.annotation.SuppressLint; import android.app.AlertDialog; import android.app.Dialog; import android.os.Bundle; import android.support.design.widget.CoordinatorLayout; import android.support.v4.widget.NestedScrollView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; import com.github.rahatarmanahmed.cpv.CircularProgressView; import com.wangdaye.mysplash.R; import com.wangdaye.mysplash.common.data.entity.unsplash.User; import com.wangdaye.mysplash.common.data.service.UserService; import com.wangdaye.mysplash.common._basic.MysplashDialogFragment; import com.wangdaye.mysplash.common.utils.AnimUtils; import com.wangdaye.mysplash.common.utils.DisplayUtils; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import retrofit2.Call; import retrofit2.Response; /** * Profile dialog. * * This dialog is used to show user's profile. * * */ public class ProfileDialog extends MysplashDialogFragment implements UserService.OnRequestUserProfileListener { @BindView(R.id.dialog_profile_container) CoordinatorLayout container; @BindView(R.id.dialog_profile_progress) CircularProgressView progressView; @BindView(R.id.dialog_profile_scrollView) NestedScrollView scrollView; @BindView(R.id.dialog_profile_text) TextView contentTxt; private UserService service; private String username; @SuppressLint("InflateParams") @Override public Dialog onCreateDialog(Bundle savedInstanceState) { super.onCreateDialog(savedInstanceState); View view = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_profile, null, false); ButterKnife.bind(this, view); initData(); initWidget(); service.requestUserProfile(username, this); return new AlertDialog.Builder(getActivity()) .setView(view) .create(); } @Override public CoordinatorLayout getSnackbarContainer() { return container; } private void initData() { this.service = UserService.getService(); } private void initWidget() { scrollView.setVisibility(View.GONE); DisplayUtils.setTypeface(getActivity(), contentTxt); } public void setUsername(String username) { this.username = username; } // interface. // on click listener. @OnClick(R.id.dialog_profile_enterBtn) void enter() { dismiss(); } // on request user profile listener. @Override public void onRequestUserProfileSuccess(Call<User> call, Response<User> response) { if (response.isSuccessful() && response.body() != null) { User user = response.body(); contentTxt.setText( user.name + "\n\n" + user.bio + "\n\n" + user.total_photos + " " + getResources().getStringArray(R.array.user_tabs)[0] + "\n" + user.total_collections + " " + getResources().getStringArray(R.array.user_tabs)[1] + "\n" + user.total_likes + " " + getResources().getStringArray(R.array.user_tabs)[2] + "\n" + user.followers_count + " " + getResources().getStringArray(R.array.my_follow_tabs)[0] + "\n" + user.following_count + " " + getResources().getStringArray(R.array.my_follow_tabs)[1]); AnimUtils.animShow(scrollView); AnimUtils.animHide(progressView); } else { service.requestUserProfile(username, this); } } @Override public void onRequestUserProfileFailed(Call<User> call, Throwable t) { if (!TextUtils.isEmpty(username)) { service.requestUserProfile(username, this); } } }