package com.kedzie.vbox.machine.settings;
import java.util.ArrayList;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.actionbarsherlock.app.SherlockFragment;
import com.kedzie.vbox.R;
import com.kedzie.vbox.api.IMachine;
import com.kedzie.vbox.api.INetworkAdapter;
import com.kedzie.vbox.app.BundleBuilder;
import com.kedzie.vbox.app.FragmentElement;
import com.kedzie.vbox.app.PagerTabHost;
import com.kedzie.vbox.task.ActionBarTask;
public class NetworkFragment extends SherlockFragment {
private PagerTabHost mTabHost;
private IMachine _machine;
private ArrayList<INetworkAdapter> _adapters;
private int mSavedTab;
public static class DummyFragment extends SherlockFragment {
public DummyFragment() {
super();
}
}
/**
* Load all the network adapters and create a tab for each one
*/
class LoadDataTask extends ActionBarTask<IMachine, ArrayList<INetworkAdapter>> {
public LoadDataTask() {
super(getSherlockActivity(), _machine.getAPI());
}
@Override
protected ArrayList<INetworkAdapter> work(IMachine... params) throws Exception {
int maxNumAdapters = 4;
ArrayList<INetworkAdapter> adapters = new ArrayList<INetworkAdapter>(maxNumAdapters);
for(int i=0; i<maxNumAdapters; i++)
adapters.add(params[0].getNetworkAdapter(i));
Log.d(TAG, "Loaded " + adapters.size() + " network adapters");
return adapters;
}
@Override
protected void onSuccess(ArrayList<INetworkAdapter> result) {
super.onSuccess(result);
_adapters = result;
populate();
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelableArrayList("adapters", _adapters);
outState.putInt("tab", mTabHost.getCurrentTab());
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
_machine = (IMachine)getArguments().getParcelable(IMachine.BUNDLE);
if(savedInstanceState!=null) {
_adapters = savedInstanceState.getParcelableArrayList("adapters");
mSavedTab = savedInstanceState.getInt("tab", 0);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mTabHost = new PagerTabHost(getActivity());
mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent);
mTabHost.addTab(new FragmentElement("dummy", DummyFragment.class, new Bundle()));
return mTabHost;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if(_adapters==null)
new LoadDataTask().execute(_machine);
else
populate();
}
void populate() {
mTabHost.removeAllTabs();
for(int i=0; i<_adapters.size(); i++)
mTabHost.addTab(new FragmentElement("Adapter#"+(i+1), NetworkAdapterFragment.class,
new BundleBuilder().putParcelable(INetworkAdapter.BUNDLE, _adapters.get(i)).create()));
mTabHost.setCurrentTab(mSavedTab);
}
@Override
public void onDestroyView() {
super.onDestroyView();
mTabHost = null;
}
}