package com.king.tv.mvp.fragment;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.king.base.adapter.ViewPagerFragmentAdapter;
import com.king.base.util.LogUtils;
import com.king.tv.R;
import com.king.tv.bean.Room;
import com.king.tv.mvp.base.BaseFragment;
import com.king.tv.mvp.presenter.RoomPresenter;
import com.king.tv.mvp.view.IRoomView;
import com.king.tv.util.DensityUtil;
import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
/**
* @author Jenly <a href="mailto:jenly1314@gmail.com">Jenly</a>
* @since 2017/3/7
*/
public class RoomFragment extends BaseFragment<IRoomView, RoomPresenter> implements IRoomView {
private VideoFragment videoFragment;
@BindView(R.id.frameVideo)
FrameLayout frameVideo;
@BindView(R.id.ivBack)
ImageView ivBack;
@BindView(R.id.ivShare)
ImageView ivShare;
@BindView(R.id.tvRoomTitle)
TextView tvRoomTitle;
@BindView(R.id.ivFullScreen)
ImageView ivFullScreen;
@BindView(R.id.rlRoomInfo)
RelativeLayout rlRoomInfo;
@BindView(R.id.llRoomChat)
LinearLayout llRoomChat;
@BindView(R.id.videoContent)
RelativeLayout videoContent;
@BindView(R.id.tabLayout)
TabLayout tabLayout;
@BindView(R.id.tvFollow)
TextView tvFollow;
@BindView(R.id.viewPager)
ViewPager viewPager;
private ViewPagerFragmentAdapter viewPagerFragmentAdapter;
private List<CharSequence> listTitle;
private List<Fragment> listData;
private Room room;
private String uid;
private AnchorInfoFragment anchorInfoFragment;
public static RoomFragment newInstance(String uid) {
Bundle args = new Bundle();
RoomFragment fragment = new RoomFragment();
fragment.uid = uid;
fragment.setArguments(args);
return fragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public int getRootViewId() {
return R.layout.fragment_room;
}
@Override
public void initUI() {
updateVideoLayoutParams();
listTitle = new ArrayList<>();
listTitle.add(getText(R.string.room_chat));
listTitle.add(getText(R.string.room_ranking));
listTitle.add(getText(R.string.room_anchor));
listData = new ArrayList<>();
listData.add(ChatFragment.newInstance());
listData.add(RankFragment.newInstance());
anchorInfoFragment = AnchorInfoFragment.newInstance(room);
listData.add(anchorInfoFragment);
viewPagerFragmentAdapter = new ViewPagerFragmentAdapter(getFragmentManager(), listData, listTitle);
viewPager.setAdapter(viewPagerFragmentAdapter);
tabLayout.setupWithViewPager(viewPager);
// tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
// @Override
// public void onTabSelected(TabLayout.Tab tab) {
// if(tab.getText().equals(getText(R.string.room_anchor))){
// anchorInfoFragment.onUpdateAnchor(room);
// }
// }
//
// @Override
// public void onTabUnselected(TabLayout.Tab tab) {
//
// }
//
// @Override
// public void onTabReselected(TabLayout.Tab tab) {
//
// }
// });
}
public void updateVideoLayoutParams(){
ViewGroup.LayoutParams lp = videoContent.getLayoutParams();
if(isLandscape()){
lp.height = DensityUtil.getDisplayMetrics(context).heightPixels;
}else{
lp.height = (int)(DensityUtil.getDisplayMetrics(context).widthPixels / 16.0f * 9.0f);
}
videoContent.setLayoutParams(lp);
}
@Override
public void initData() {
getPresenter().enterRoom(uid);
}
@Override
public RoomPresenter createPresenter() {
return new RoomPresenter(getApp());
}
@Override
public void enterRoom(Room room) {
this.room = room;
LogUtils.d("room");
anchorInfoFragment.onUpdateAnchor(room);
viewPagerFragmentAdapter.notifyDataSetChanged();
}
@Override
public void playUrl(String url) {
LogUtils.d("playUrl:" + url);
if (videoFragment == null) {
videoFragment = VideoFragment.newInstance(url,false);
}
replaceChildFragment(R.id.frameVideo, videoFragment);
}
@Override
public void showProgress() {
}
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
//-------------------------------
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(isLandscape()){
llRoomChat.setVisibility(View.GONE);
ivFullScreen.setVisibility(View.GONE);
}else{
llRoomChat.setVisibility(View.VISIBLE);
ivFullScreen.setVisibility(View.VISIBLE);
}
updateVideoLayoutParams();
}
//-------------------------------
public void clickFrameVideo(){
}
public void clickBack(){
if(isLandscape()){
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}else{
finish();
}
}
public void clickShare(){
}
public boolean isLandscape(){
return getActivity().getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
}
public void clickFullScreen(){
if(isLandscape()){
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}else{
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
public void clickFollow(){
startLogin();
}
@OnClick({R.id.frameVideo, R.id.ivBack, R.id.ivShare, R.id.ivFullScreen, R.id.videoContent, R.id.tvFollow})
public void onClick(View view) {
switch (view.getId()) {
case R.id.videoContent:
case R.id.frameVideo:
clickFrameVideo();
break;
case R.id.ivBack:
clickBack();
break;
case R.id.ivShare:
clickShare();
break;
case R.id.ivFullScreen:
clickFullScreen();
break;
case R.id.tvFollow:
clickFollow();
break;
}
}
}