package com.metis.base.fragment; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.metis.base.ActivityDispatcher; import com.metis.base.R; import com.metis.base.activity.CacheActivity; import com.metis.base.activity.FeedbackActivity; import com.metis.base.activity.SettingActivity; import com.metis.base.activity.SubscriptionActivity; import com.metis.base.activity.VipActivity; import com.metis.base.manager.AccountManager; import com.metis.base.manager.DisplayManager; import com.metis.base.module.User; import com.metis.base.utils.Log; import com.metis.base.widget.IconTextView; import com.metis.base.widget.TitleBar; import com.metis.base.widget.adapter.MeAdapter; import com.metis.base.widget.adapter.delegate.MeHeaderDelegate; import com.metis.base.widget.dock.DockBar; import com.pgyersdk.feedback.PgyFeedback; /** * Created by Beak on 2015/8/24. */ public class MeTabFragment extends DockFragment implements AccountManager.OnUserChangeListener, View.OnClickListener{ private static final String TAG = MeTabFragment.class.getSimpleName(); private DockBar.Dock mDock = null; private TitleBar mTitleBar = null; private RelativeLayout mProfileLayout; private ImageView mProfileIv = null; private TextView mNameTv = null; private TextView mFollowsTv = null, mFansTv = null; private IconTextView mCollectionItv, mCacheItv, mSubscriptionItv, mVipItv, mFeedbackItv, mSettingItv; private View mErrorTv = null; private HomePageFragment mHomePageFragment = null; private User mMe = null; @Override public DockBar.Dock getDock(Context context) { if (mDock == null) { mDock = new DockBar.Dock(context, R.id.dock_item_id_me, R.drawable.ic_me_sel, R.string.dock_item_me_title, this); } return mDock; } @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_me, null, true); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mTitleBar = (TitleBar)view.findViewById(R.id.me_title_bar); mTitleBar.setTitleCenter(R.string.text_title_me); mErrorTv = view.findViewById(R.id.me_home_page_error_tip); mProfileLayout = (RelativeLayout)view.findViewById(R.id.me_profile_container); mProfileIv = (ImageView)view.findViewById(R.id.me_profile); mNameTv = (TextView)view.findViewById(R.id.me_name); mFollowsTv = (TextView)view.findViewById(R.id.me_extras_follows); mFansTv = (TextView)view.findViewById(R.id.me_extras_fans); mCollectionItv = (IconTextView)view.findViewById(R.id.me_collection); mCacheItv = (IconTextView)view.findViewById(R.id.me_cache); mSubscriptionItv = (IconTextView)view.findViewById(R.id.me_subscription); mVipItv = (IconTextView)view.findViewById(R.id.me_vip); mFeedbackItv = (IconTextView)view.findViewById(R.id.me_feedback); mSettingItv = (IconTextView)view.findViewById(R.id.me_setting); mSettingItv.setOnClickListener(this); mHomePageFragment = (HomePageFragment)getChildFragmentManager().findFragmentById(R.id.me_home_page_fragment); mHomePageFragment.setUser(AccountManager.getInstance(getActivity()).getMe()); AccountManager.getInstance(getActivity()).registerOnUserChangeListener(this); final User me = AccountManager.getInstance(getContext()).getMe(); if (me == null) { ActivityDispatcher.loginActivityWhenAlreadyIn(getContext()); return; } } @Override public void onResume() { super.onResume(); final User me = AccountManager.getInstance(getContext()).getMe(); if (me == null) { mErrorTv.setVisibility(View.VISIBLE); mErrorTv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ActivityDispatcher.loginActivityWhenAlreadyIn(getContext()); } }); return; } mErrorTv.setVisibility(View.GONE); mErrorTv.setOnClickListener(null); setMe(me); } private void setMe (final User me) { if (me != null) { mMe = me; DisplayManager.getInstance(getContext()).display(me.getAvailableAvatar(), mProfileIv, DisplayManager.getInstance(getContext()).makeRoundDisplayImageOptions( getContext().getResources().getDimensionPixelSize(R.dimen.profile_size_big) )); mProfileLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ActivityDispatcher.userActivity(getContext(), me); } }); mNameTv.setText(me.name); mFollowsTv.setText(getString(R.string.text_follows_count, me.focusNum)); mFansTv.setText(getString(R.string.text_fans_count, me.fansNum)); mFollowsTv.setOnClickListener(this); mFansTv.setOnClickListener(this); mCollectionItv.setOnClickListener(this); mCacheItv.setOnClickListener(this); mSubscriptionItv.setOnClickListener(this); mVipItv.setOnClickListener(this); mFeedbackItv.setOnClickListener(this); mSettingItv.setOnClickListener(this); } } @Override public void onDestroy() { super.onDestroy(); AccountManager.getInstance(getActivity()).unregisterOnUserChangeListener(this); } @Override public void onUserChanged(User user, boolean onLine) { //Toast.makeText(getActivity(), "onUserChanged", Toast.LENGTH_SHORT).show(); mHomePageFragment.setUser(AccountManager.getInstance(getActivity()).getMe()); } @Override public void onUserInfoChanged(User user) { Log.v(TAG, "onUserInfoChanged " + user.userId); setMe(user); } @Override public void onUserLogout() { } @Override public void onClick(View v) { final int id = v.getId(); if (id == mFollowsTv.getId()) { ActivityDispatcher.followsActivity(getContext(), mMe.userId); } else if (id == mFansTv.getId()) { ActivityDispatcher.fansActivity(getContext(), mMe.userId); } else if (id == mCollectionItv.getId()) { } else if (id == mCacheItv.getId()) { startActivity(new Intent(getContext(), CacheActivity.class)); } else if (id == mSubscriptionItv.getId()) { startActivity(new Intent(getContext(), SubscriptionActivity.class)); } else if (id == mVipItv.getId()) { startActivity(new Intent(getContext(), VipActivity.class)); } else if (id == mSettingItv.getId()) { startActivity(new Intent(getContext(), SettingActivity.class)); } else if (id == mFeedbackItv.getId()) { //startActivity(new Intent(getContext(), FeedbackActivity.class)); // 以对话框的形式弹出 PgyFeedback.getInstance().showDialog(getContext()); // 以Activity的形式打开,这种情况下必须在AndroidManifest.xml配置FeedbackActivity // 打开沉浸式,默认为false // FeedbackActivity.setBarImmersive(true); //PgyFeedback.getInstance().showActiivty(MainActivity.this); }/* else if (id == mSetttingItv.getId()) { }*/ } }