/*
* Copyright (C) 2013 The MoKee OpenSource Project
* Modifications Copyright (C) 2014 The NamelessRom Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.namelessrom.devicecontrol.modules.wizard.setup;
import android.content.Context;
import android.os.Bundle;
import org.namelessrom.devicecontrol.modules.tasker.TaskerItem;
import java.util.ArrayList;
public abstract class AbstractSetupData implements SetupDataCallbacks {
protected Context mContext;
private ArrayList<SetupDataCallbacks> mListeners = new ArrayList<>();
private PageList mPageList;
private TaskerItem item = new TaskerItem();
public AbstractSetupData(Context context) {
mContext = context;
mPageList = onNewPageList();
}
protected abstract PageList onNewPageList();
@Override public void onPageLoaded(Page page) {
for (SetupDataCallbacks mListener : mListeners) {
mListener.onPageLoaded(page);
}
}
@Override public void onPageTreeChanged() {
for (SetupDataCallbacks mListener : mListeners) {
mListener.onPageTreeChanged();
}
}
@Override public void onPageFinished(Page page) {
for (SetupDataCallbacks mListener : mListeners) {
mListener.onPageFinished(page);
}
}
@Override public Page getPage(String key) {
return findPage(key);
}
@Override public void setSetupData(final TaskerItem item) {
this.item = item;
}
@Override public TaskerItem getSetupData() {
return item;
}
public Page findPage(String key) {
return mPageList.findPage(key);
}
public void load(Bundle savedValues) {
for (String key : savedValues.keySet()) {
mPageList.findPage(key).resetData(savedValues.getBundle(key));
}
}
public Bundle save() {
Bundle bundle = new Bundle();
for (Page page : getPageList()) {
bundle.putBundle(page.getKey(), page.getData());
}
return bundle;
}
public void addPage(int index, Page page) {
mPageList.add(index, page);
onPageTreeChanged();
}
public void removePage(Page page) {
mPageList.remove(page);
onPageTreeChanged();
}
public void registerListener(SetupDataCallbacks listener) {
mListeners.add(listener);
}
public PageList getPageList() {
return mPageList;
}
public void unregisterListener(SetupDataCallbacks listener) {
mListeners.remove(listener);
}
}