package app.create.rpg;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import app.create.rpg.file.CachedFile;
import app.create.rpg.file.CachedFile.User;
public abstract class AbstractFragmentPage extends Fragment implements User {
private String mName;
protected Helper mHelper;
private boolean mFlag;
private List<CachedFile> files = new ArrayList<CachedFile> ();
@Override
public void onOpen(CachedFile file) { }
@Override
public void onUpdate(CachedFile file) { }
@Override
public void onClosed(CachedFile file) { }
protected ActivityProject getProject () {
return (ActivityProject) getActivity();
}
protected CachedFile require (String name) {
CachedFile file = getProject().require(this, name);
files.add(file);
return file;
}
@Override
public void onDestroyView() {
super.onDestroyView();
for (CachedFile f : files)
f.terminate();
}
@Override
public void onAttach(Activity act) {
mHelper = new Helper(act);
super.onAttach(act);
}
@Override
public void onActivityCreated(Bundle state) {
super.onActivityCreated(state);
setName ((state != null && state.containsKey("page_name")) ? state.getString("page_name") : (mName == null ? ".." : mName));
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if (mName != null)
outState.putString("page_name", mName);
}
protected void setName (String name) {
mName = name;
if (mFlag)
name += " *";
ActionBar bar = ((ActionBarActivity) getActivity()).getSupportActionBar();
for (int i = 0; i < bar.getTabCount(); ++i) {
ActionBar.Tab tab = bar.getTabAt(i);
if (((CustomPagerAdapter.FragmentCreator)tab.getTag()).isFromThis(this)) {
tab.setText(name);
}
}
}
public void flag (boolean bEdit) {
mFlag = bEdit;
setName(mName);
}
public boolean hasChanged () {
return mFlag;
}
public String getName () {
return mName;
}
}