package com.video.ui.view.user;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.Toast;
import com.tv.ui.metro.model.Constants;
import com.video.ui.R;
import com.video.ui.SettingActivity;
import com.video.ui.idata.iDataORM;
import com.video.ui.tinyui.AlbumActivity;
import com.video.ui.tinyui.OfflineMediaActivity;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
/**
*@author tangfuling
*
*/
public class MyVideoFragment extends Fragment {
private Activity mContext;
public static final int TAG_LOCAL_MEDIA = 0;
public static final int TAG_MY_FAVORITE = 1;
public static final int TAG_MY_OFFLINE = 2;
public static final int TAG_PLAY_HIS = 3;
public static final int TAG_SHARE_DEVICE = 4;
public static final int TAG_ADDON = 5;
public static final int TAG_SETTING = 6;
public static class MyVideoItem {
public int itemIconResId;
public String itemName = "";
public String mDesc = "";
public int tag;
}
//UI
private View mContentView;
private UserHeadView mUserHeadView;
private ListView mListView;
private MyVideoAdapter mAdapter;
private List<MyVideoItem> mMyVideoItems = new LinkedList<MyVideoItem>();
private MyVideoItem mLocalMediaItem;
private MyVideoItem mMyFavoriteItem;
private MyVideoItem mMyOfflineItem;
private MyVideoItem mPlayHistoryItem;
private MyVideoItem mShareDeviceItem;
private MyVideoItem mAddonItem;
private MyVideoItem mSettingItem;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mContentView = inflater.inflate(R.layout.my_video, container, false);
return mContentView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mContext = (Activity) getActivity();
init();
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onDestroy() {
super.onDestroy();
}
//init
private void init() {
initDataSupply();
initUI();
}
private void initDataSupply() {
}
private void initUI() {
initHeadView();
initMyVideoItems();
initListView();
refreshListView();
}
private void initHeadView() {
mUserHeadView = new UserHeadView(getActivity());
mUserHeadView.setPadding(0, getResources().getDimensionPixelOffset(R.dimen.my_video_list_margin_top),
0, getResources().getDimensionPixelSize(R.dimen.my_video_avatar_padding_bottom));
mUserHeadView.setOnClickListener(mOnClickListener);
}
private String getCountDesc(int count){
String str = mContext.getResources().getString(R.string.gong_count_ge);
str = formatString(str, count);
return str;
}
public static String formatString(String format, Object... args){
try{
return String.format(format, args);
}catch(Exception e){
}
return "";
}
private void initMyVideoItems() {
mLocalMediaItem = new MyVideoItem();
mLocalMediaItem.itemName = mContext.getResources().getString(R.string.local_video);
mLocalMediaItem.itemIconResId = R.drawable.icon_my_video_local;
mLocalMediaItem.tag = TAG_LOCAL_MEDIA;
mMyVideoItems.add(mLocalMediaItem);
mMyFavoriteItem = new MyVideoItem();
mMyFavoriteItem.itemName = mContext.getResources().getString(R.string.my_favorite);
mMyFavoriteItem.itemIconResId = R.drawable.icon_my_video_favorite;
mMyFavoriteItem.tag = TAG_MY_FAVORITE;
mMyFavoriteItem.mDesc = getCountDesc(iDataORM.getInstance(getActivity()).getFavoritesCount(getActivity(), "video", iDataORM.FavorAction));
mMyVideoItems.add(mMyFavoriteItem);
mMyOfflineItem = new MyVideoItem();
mMyOfflineItem.itemName = mContext.getResources().getString(R.string.my_offline);
mMyOfflineItem.itemIconResId = R.drawable.icon_my_video_offline;
mMyOfflineItem.mDesc = getCountDesc(iDataORM.getInstance(getActivity()).getDownloadCount(getActivity()));
mMyOfflineItem.tag = TAG_MY_OFFLINE;
mMyVideoItems.add(mMyOfflineItem);
mPlayHistoryItem = new MyVideoItem();
mPlayHistoryItem.itemName = mContext.getResources().getString(R.string.play_history);
mPlayHistoryItem.itemIconResId = R.drawable.icon_my_video_play_his;
mPlayHistoryItem.mDesc = getCountDesc(iDataORM.getInstance(getActivity()).getFavoritesCount(getActivity(), "video", iDataORM.HistoryAction));
mPlayHistoryItem.tag = TAG_PLAY_HIS;
mMyVideoItems.add(mPlayHistoryItem);
mShareDeviceItem = new MyVideoItem();
mShareDeviceItem.itemName = mContext.getResources().getString(R.string.share_device);
mShareDeviceItem.itemIconResId = R.drawable.icon_my_video_share_device;
mShareDeviceItem.tag = TAG_SHARE_DEVICE;
mMyVideoItems.add(mShareDeviceItem);
mAddonItem = new MyVideoItem();
mAddonItem.itemName = mContext.getResources().getString(R.string.addon);
mAddonItem.itemIconResId = R.drawable.icon_my_video_addon;
mAddonItem.tag = TAG_ADDON;
mMyVideoItems.add(mAddonItem);
mSettingItem = new MyVideoItem();
mSettingItem.itemName = mContext.getResources().getString(R.string.setting);
mSettingItem.itemIconResId = R.drawable.icon_my_set_up;
mSettingItem.tag = TAG_SETTING;
mMyVideoItems.add(mSettingItem);
}
private void initListView() {
mListView = (ListView) mContentView.findViewById(R.id.my_video_list);
mAdapter = new MyVideoAdapter(mContext);
mAdapter.setOnMyVideoClickListener(mOnMyVideoClickListener);
mListView.setSelector(R.drawable.transparent);
mListView.setDivider(null);
mListView.setAdapter(mAdapter);
mListView.addHeaderView(mUserHeadView);
}
private void refreshListView() {
if(!isAdded()){
return;
}
refreshMyVideoItems();
mAdapter.setGroup(mMyVideoItems);
}
private void refreshMyVideoItems() {
}
//UI callback
private MyVideoView.OnMyVideoClickListener mOnMyVideoClickListener = new MyVideoView.OnMyVideoClickListener() {
@Override
public void onMyVideoClick(MyVideoView view, MyVideoItem myVideoItem) {
int tag = myVideoItem.tag;
switch (tag){
case TAG_LOCAL_MEDIA:
Intent local = new Intent(getActivity(), AlbumActivity.class);
local.putExtra(Constants.Local_Video, true);
getActivity().startActivity(local);
break;
case TAG_SETTING:
Intent setting = new Intent(getActivity(), SettingActivity.class);
getActivity().startActivity(setting);
break;
case TAG_MY_FAVORITE:
Intent favorIntent = new Intent(getActivity(), AlbumActivity.class);
favorIntent.putExtra(Constants.Favor_Video, true);
getActivity().startActivity(favorIntent);
break;
case TAG_PLAY_HIS:
Intent history = new Intent(getActivity(), AlbumActivity.class);
history.putExtra(Constants.History_Video, true);
getActivity().startActivity(history);
break;
case TAG_MY_OFFLINE:
Intent offline = new Intent(getActivity(), OfflineMediaActivity.class);
offline.putExtra(Constants.Offline_Video, true);
getActivity().startActivity(offline);
break;
}
Toast.makeText(getActivity(), "not support", Toast.LENGTH_LONG).show();
}
};
private OnClickListener mOnClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
if(v == mUserHeadView) {
AccountManager mAccountManager = AccountManager.get(getActivity());
Account[] account = mAccountManager.getAccountsByType("com.xiaomi");
if(account.length == 0) {
mAccountManager.addAccount("com.xiaomi", (String)null, (String[])null, (Bundle)null, getActivity(), null, (Handler)null);
}else {
Intent intent = new Intent("android.settings.XIAOMI_ACCOUNT_SYNC_SETTINGS");
mContext.startActivity(intent);
}
}
}
};
public abstract class BaseGroupAdapter<T> extends BaseAdapter {
protected Context mContext;
protected List<T> mGroup = new ArrayList<T>();
@Override
public boolean areAllItemsEnabled() {
return true;
}
@Override
public boolean isEnabled(int position) {
return true;
}
public BaseGroupAdapter(Context context) {
this.mContext = context;
}
public int getCount() {
return mGroup.size();
}
public T getItem(int position) {
if (position < 0 || position >= mGroup.size()) {
return null;
}
return mGroup.get(position);
}
public long getItemId(int position) {
return position;
}
public boolean isEmpty() {
return mGroup.isEmpty();
}
public void clear() {
mGroup.clear();
notifyDataSetChanged();
}
public void setGroup(List<T> list) {
mGroup.clear();
if (list != null && list.size() > 0) {
mGroup.addAll(list);
}
notifyDataSetChanged();
}
public void setGroup(T[] array) {
if(array != null) {
setGroup(Arrays.asList(array));
} else {
List<T> list = null;
setGroup(list);
}
}
public void addGroup(List<T> list) {
if (list != null) {
for (T item : list) {
if (item != null) {
mGroup.add(item);
}
}
notifyDataSetChanged();
}
}
public void addGroup(T[] array) {
if(array != null) {
addGroup(Arrays.asList(array));
} else {
List<T> list = null;
addGroup(list);
}
}
public void refresh() {
notifyDataSetChanged();
}
}
public class MyVideoAdapter extends BaseGroupAdapter<MyVideoFragment.MyVideoItem> {
private Context mContext;
private MyVideoView.OnMyVideoClickListener mListener;
public MyVideoAdapter(Context context) {
super(context);
this.mContext = context;
}
public void setOnMyVideoClickListener(MyVideoView.OnMyVideoClickListener listener) {
this.mListener = listener;
}
private class ViewHolder {
MyVideoView myVideoView1;
MyVideoView myVideoView2;
}
@Override
public int getCount() {
int rows = (int) Math.ceil(mGroup.size() / 2f);
return rows;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if(convertView == null) {
View view = View.inflate(mContext, R.layout.my_video_item, null);
viewHolder = new ViewHolder();
viewHolder.myVideoView1 = (MyVideoView) view.findViewById(R.id.my_video_item_1);
viewHolder.myVideoView2 = (MyVideoView) view.findViewById(R.id.my_video_item_2);
viewHolder.myVideoView1.setOnMyVideoClickListener(mListener);
viewHolder.myVideoView2.setOnMyVideoClickListener(mListener);
convertView = view;
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
MyVideoFragment.MyVideoItem myVideoItem1 = null;
MyVideoFragment.MyVideoItem myVideoItem2 = null;
if(position * 2 < mGroup.size()) {
myVideoItem1 = mGroup.get(position * 2);
}
if(position * 2 + 1 < mGroup.size()) {
myVideoItem2 = mGroup.get(position * 2 + 1);
}
viewHolder.myVideoView1.setItem(myVideoItem1);
viewHolder.myVideoView2.setItem(myVideoItem2);
return convertView;
}
}
}