org.ioc.commons.impl.android.common.util.SaveInstanceStateHelper Maven / Gradle / Ivy
package org.ioc.commons.impl.android.common.util;
import java.io.Serializable;
import org.ioc.commons.ui.HasLoader;
import org.ioc.commons.ui.HasPendingOperationsLoader;
import org.ioc.commons.ui.HasValue;
import org.ioc.commons.ui.HasVisibility;
import org.ioc.commons.utils.Format;
import android.os.Bundle;
public class SaveInstanceStateHelper {
private Bundle outState;
private String keyPrefix;
public class Save {
private int idx;
private Save() {
}
public Save visible(HasVisibility... vs) {
for (HasVisibility v : vs) {
outState.putBoolean(Format.substitute("{0}_{1}", keyPrefix, (idx++)), v.isVisible());
}
return this;
}
public Save loader(HasLoader... elms) {
for (HasLoader elm : elms) {
outState.putBoolean(Format.substitute("{0}_{1}", keyPrefix, (idx++)), elm.isLoading());
}
return this;
}
public Save loader(HasPendingOperationsLoader... elms) {
for (HasPendingOperationsLoader elm : elms) {
outState.putInt(Format.substitute("{0}_{1}", keyPrefix, (idx++)), elm.getPendingOpCount());
}
return this;
}
public Save value(HasValue... elms) {
for (HasValue extends Serializable> elm : elms) {
outState.putSerializable(Format.substitute("{0}_{1}", keyPrefix, (idx++)), elm.getValue());
}
return this;
}
}
public class Restore {
private int idx;
private Restore() {
}
public Restore visible(HasVisibility... elms) {
for (HasVisibility elm : elms) {
elm.setVisible(outState.getBoolean(Format.substitute("{0}_{1}", keyPrefix, (idx++)), elm.isVisible()));
}
return this;
}
public Restore loader(HasLoader... elms) {
for (HasLoader elm : elms) {
elm.setLoading(outState.getBoolean(Format.substitute("{0}_{1}", keyPrefix, (idx++)), elm.isLoading()));
}
return this;
}
public Restore loader(HasPendingOperationsLoader... elms) {
for (HasPendingOperationsLoader elm : elms) {
int pendingOpCount = outState.getInt(Format.substitute("{0}_{1}", keyPrefix, (idx++)), elm.getPendingOpCount());
for(int i = elm.getPendingOpCount() ; i < pendingOpCount;i++) {
elm.operationBeginning();
}
for(int i = elm.getPendingOpCount() ; i > pendingOpCount;i--) {
elm.operationFinished();
}
}
return this;
}
@SuppressWarnings("unchecked")
public Restore value(HasValue... elms) {
for (HasValue elm : elms) {
elm.setValue((S)outState.getSerializable(Format.substitute("{0}_{1}", keyPrefix, (idx++))));
}
return this;
}
}
public Save save() {
return new Save();
}
public Restore restore() {
return new Restore();
}
public SaveInstanceStateHelper(String keyPrefix, Bundle outState) {
this.outState = outState;
this.keyPrefix = keyPrefix;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy