83 lines
2.0 KiB
Java
83 lines
2.0 KiB
Java
package max.music_cyclon;
|
|
|
|
import android.support.v4.app.Fragment;
|
|
import android.support.v4.app.FragmentManager;
|
|
import android.support.v4.app.FragmentStatePagerAdapter;
|
|
|
|
import org.json.JSONException;
|
|
|
|
import java.io.IOException;
|
|
import java.io.OutputStream;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
public class PagerAdapter extends FragmentStatePagerAdapter {
|
|
|
|
|
|
private final List<String> configs = new ArrayList<>();
|
|
|
|
private final Map<String, Config> configData = new HashMap<>();
|
|
|
|
public PagerAdapter(List<Config> configs , FragmentManager fm) {
|
|
super(fm);
|
|
|
|
|
|
for (Config config : configs) {
|
|
this.configs.add(config.getName());
|
|
this.configData.put(config.getName(), config);
|
|
}
|
|
}
|
|
|
|
public void save(OutputStream os) throws JSONException, IOException {
|
|
Config.save(configData.values(), os);
|
|
}
|
|
|
|
public boolean add(String name) {
|
|
configData.put(name, new Config(name));
|
|
return configs.add(name);
|
|
}
|
|
|
|
public void remove(String name) {
|
|
configData.remove(name);
|
|
configs.remove(name);
|
|
}
|
|
|
|
@Override
|
|
public Fragment getItem(int i) {
|
|
SynchronizeConfigFragment fragment = new SynchronizeConfigFragment();
|
|
|
|
String name = getConfigs().get(i);
|
|
|
|
fragment.setName(name);
|
|
fragment.setPagerAdapter(this);
|
|
fragment.setConfig(configData.get(name));
|
|
return fragment;
|
|
}
|
|
|
|
@Override
|
|
public int getCount() {
|
|
return getConfigs().size();
|
|
}
|
|
|
|
@Override
|
|
public int getItemPosition(Object object) {
|
|
// http://stackoverflow.com/a/10399127
|
|
return PagerAdapter.POSITION_NONE;
|
|
}
|
|
|
|
public List<String> getConfigs() {
|
|
return configs;
|
|
}
|
|
|
|
public List<Config> getConfigData() {
|
|
return new ArrayList<>(configData.values());
|
|
}
|
|
|
|
@Override
|
|
public CharSequence getPageTitle(int position) {
|
|
return getConfigs().get(position);
|
|
}
|
|
}
|