Simpler data structure
parent
4c085a2b75
commit
839758f0a4
|
@ -9,52 +9,76 @@ import org.json.JSONException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds the fragments for the configuration of all {@link SynchronizeConfig}s
|
* Holds the fragments for the configuration of all {@link SynchronizeConfig}s
|
||||||
*/
|
*/
|
||||||
public class PagerAdapter extends FragmentStatePagerAdapter {
|
public class PagerAdapter extends FragmentStatePagerAdapter {
|
||||||
|
|
||||||
private final List<String> configs = new ArrayList<>();
|
private final List<SynchronizeConfig> configs = new ArrayList<>();
|
||||||
|
|
||||||
private final Map<String, SynchronizeConfig> configData = new HashMap<>();
|
public PagerAdapter(Collection<SynchronizeConfig> configs , FragmentManager fm) {
|
||||||
|
|
||||||
public PagerAdapter(List<SynchronizeConfig> configs , FragmentManager fm) {
|
|
||||||
super(fm);
|
super(fm);
|
||||||
|
|
||||||
|
this.configs.addAll(configs);
|
||||||
for (SynchronizeConfig config : configs) {
|
|
||||||
this.configs.add(config.getName());
|
|
||||||
this.configData.put(config.getName(), config);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void save(OutputStream os) throws JSONException, IOException {
|
public void save(OutputStream os) throws JSONException, IOException {
|
||||||
SynchronizeConfig.save(configData.values(), os);
|
SynchronizeConfig.save(configs, os);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean add(String name) {
|
public void add(String name) {
|
||||||
configData.put(name, new SynchronizeConfig(name));
|
configs.add(new SynchronizeConfig(name));
|
||||||
return configs.add(name);
|
notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void remove(String name) {
|
public void remove(String name) {
|
||||||
configData.remove(name);
|
int index = indexOf(name);
|
||||||
configs.remove(name);
|
|
||||||
|
if (index < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
configs.remove(index);
|
||||||
|
notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void rename(String name, String newName) {
|
||||||
|
int index = indexOf(name);
|
||||||
|
|
||||||
|
if (index < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SynchronizeConfig config = configs.get(index);
|
||||||
|
|
||||||
|
config.setName(newName);
|
||||||
|
|
||||||
|
notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int indexOf(String name) {
|
||||||
|
for (int i = 0, size = configs.size(); i < size; i++) {
|
||||||
|
SynchronizeConfig config = configs.get(i);
|
||||||
|
if (config.getName().equals(name)) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Fragment getItem(int i) {
|
public Fragment getItem(int i) {
|
||||||
SynchronizeConfigFragment fragment = new SynchronizeConfigFragment();
|
SynchronizeConfigFragment fragment = new SynchronizeConfigFragment();
|
||||||
|
|
||||||
String name = getConfigs().get(i);
|
SynchronizeConfig config = getConfigs().get(i);
|
||||||
|
|
||||||
fragment.setName(name);
|
fragment.setName(config.getName());
|
||||||
fragment.setPagerAdapter(this);
|
fragment.setPagerAdapter(this);
|
||||||
fragment.setConfig(configData.get(name));
|
fragment.setConfig(config);
|
||||||
return fragment;
|
return fragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,16 +93,12 @@ public class PagerAdapter extends FragmentStatePagerAdapter {
|
||||||
return PagerAdapter.POSITION_NONE;
|
return PagerAdapter.POSITION_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getConfigs() {
|
public List<SynchronizeConfig> getConfigs() {
|
||||||
return configs;
|
return configs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<SynchronizeConfig> getConfigData() {
|
|
||||||
return new ArrayList<>(configData.values());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CharSequence getPageTitle(int position) {
|
public CharSequence getPageTitle(int position) {
|
||||||
return getConfigs().get(position);
|
return configs.get(position).getName();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue