package com.tv.ui.metro.view;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.tv.ui.metro.R;
import com.tv.ui.metro.model.Album;
import com.tv.ui.metro.model.DisplayItem;
import com.tv.ui.metro.model.GenericAlbum;
public class MetroFragment extends Fragment {
private final String TAG = "MetroFragment";
public MetroLayout mMetroLayout;
SmoothHorizontalScrollView mHorizontalScrollView;
private int tab_count;
private int tab_index;
private GenericAlbum<DisplayItem> tab;
private boolean isUserTab = false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d(TAG, "onCreateView ="+this);
View v = inflater.inflate(R.layout.metrofragment, container, false);
mMetroLayout = (MetroLayout)v.findViewById(R.id.metrolayout);
mMetroLayout.setMetroCursorView((MetroCursorView)v.findViewById(R.id.metrocursor));
mHorizontalScrollView = (SmoothHorizontalScrollView)v.findViewById(R.id.horizontalScrollView);
mHorizontalScrollView.setFadingEdgeLength(getResources().getDimensionPixelSize(R.dimen.fading_edge));
mHorizontalScrollView.setSmoothScrollingEnabled(true);
mHorizontalScrollView.setFillViewport(true);
//setScrollerTime(400);
tab = (GenericAlbum) this.getArguments().getSerializable("tab");
mHorizontalScrollView.setTabIndex(tab_index = getArguments().getInt("index", -1));
mHorizontalScrollView.setTabCount(tab_count = getArguments().getInt("tab_count", -1));
isUserTab = getArguments().getBoolean("user_fragment", false);
initViews();
return v;
}
public View addView(View view, int celltype, int row){
return mMetroLayout.addItemView(view, celltype, row);
}
public View addView(View view, int celltype, int row, int padding){
return mMetroLayout.addItemView(view, celltype, row, padding);
}
public ArrayList<View> createUserView(){
return UserViewFactory.getInstance().createUserView(getActivity());
}
public void initViews(){
if(isUserTab == true){
ArrayList<View> views = createUserView();
for(View item: views){
addView(item, MetroLayout.Vertical, 0, UserViewFactory.getInstance().getPadding(getActivity()));
}
}
else if(tab != null && tab.items != null){
//
Collections.sort(tab.items);
for(DisplayItem item:tab.items){
int type = MetroLayout.Normal;
if(item._ui.layout.w == 2 && item._ui.layout.h ==1)
type = MetroLayout.Horizontal;
else if(item._ui.layout.w == 1 && item._ui.layout.h ==2)
type = MetroLayout.Vertical;
addView(new RecommendCardView(getActivity(), type).bindData(item), type, item._ui.layout.y-1);
}
}
}
private View lastPostionView;
public View getLastPositionView(){
return lastPostionView;
}
public void focusMoveToLeft(){
mMetroLayout.focusMoveToLeft();
}
public void focusMoveToRight(){
mMetroLayout.focusMoveToRight();
}
public void focusMoveToPreFocused(){
mMetroLayout.focusMoveToPreFocused();
}
public void scrollToLeft(boolean fullscroll){
if(fullscroll) {
mHorizontalScrollView.scrollTo(mMetroLayout.getRight(), 0);
mHorizontalScrollView.postDelayed(new Runnable() {
@Override
public void run() {
mHorizontalScrollView.smoothScrollTo(0, 0);
}
}, 200);
}else{
mHorizontalScrollView.smoothScrollTo(0, 0);
}
}
public void scrollToRight(boolean fullscroll){
if(fullscroll) {
mHorizontalScrollView.scrollTo(0, 0);
mHorizontalScrollView.postDelayed(new Runnable() {
@Override
public void run() {
mHorizontalScrollView.smoothScrollTo(mMetroLayout.getRight(), 0);
}
}, 200);
}else{
mHorizontalScrollView.smoothScrollTo(mMetroLayout.getRight(), 0);
}
}
}