diff options
author | cretin45 <cretin45@gmail.com> | 2015-01-15 16:04:44 -0800 |
---|---|---|
committer | cretin45 <cretin45@gmail.com> | 2015-01-15 16:04:44 -0800 |
commit | 0328b87bf68f6389049991c68caa515f4230f95f (patch) | |
tree | 556b0a23df4bb849eada991b01f4861c651f25e8 /src/com/cyanogenmod/setupwizard/setup/AbstractSetupData.java | |
download | packages_apps_SetupWizard-0328b87bf68f6389049991c68caa515f4230f95f.zip packages_apps_SetupWizard-0328b87bf68f6389049991c68caa515f4230f95f.tar.gz packages_apps_SetupWizard-0328b87bf68f6389049991c68caa515f4230f95f.tar.bz2 |
SetupWizard: Initial commit
Diffstat (limited to 'src/com/cyanogenmod/setupwizard/setup/AbstractSetupData.java')
-rw-r--r-- | src/com/cyanogenmod/setupwizard/setup/AbstractSetupData.java | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/src/com/cyanogenmod/setupwizard/setup/AbstractSetupData.java b/src/com/cyanogenmod/setupwizard/setup/AbstractSetupData.java new file mode 100644 index 0000000..fed8732 --- /dev/null +++ b/src/com/cyanogenmod/setupwizard/setup/AbstractSetupData.java @@ -0,0 +1,155 @@ +/* + * Copyright (C) 2013 The CyanogenMod 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 com.cyanogenmod.setupwizard.setup; + +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; + +import java.util.ArrayList; + +public abstract class AbstractSetupData implements SetupDataCallbacks { + + private static final String TAG = AbstractSetupData.class.getSimpleName(); + + protected Context mContext; + private ArrayList<SetupDataCallbacks> mListeners = new ArrayList<SetupDataCallbacks>(); + private PageList mPageList; + + private int mCurrentPageIndex = 0; + + public AbstractSetupData(Context context) { + mContext = context; + mPageList = onNewPageList(); + } + + protected abstract PageList onNewPageList(); + + @Override + public void onPageLoaded(Page page) { + for (int i = 0; i < mListeners.size(); i++) { + mListeners.get(i).onPageLoaded(page); + } + } + + @Override + public void onPageTreeChanged() { + for (int i = 0; i < mListeners.size(); i++) { + mListeners.get(i).onPageTreeChanged(); + } + } + + @Override + public void onFinish() { + for (int i = 0; i < mListeners.size(); i++) { + mListeners.get(i).onFinish(); + } + } + + @Override + public Page getPage(String key) { + return mPageList.getPage(key); + } + + @Override + public Page getPage(int index) { + return mPageList.getPage(index); + } + + public Page getCurrentPage() { + return mPageList.getPage(mCurrentPageIndex); + } + + public boolean isFirstPage() { + return mCurrentPageIndex == 0; + } + + public boolean isLastPage() { + return mCurrentPageIndex == mPageList.size() - 1; + } + + @Override + public void onNextPage() { + if (getCurrentPage().doNextAction() == false) { + if (advanceToNextUncompleted()) { + for (int i = 0; i < mListeners.size(); i++) { + mListeners.get(i).onNextPage(); + } + } + } + } + + @Override + public void onPreviousPage() { + if (getCurrentPage().doPreviousAction() == false) { + if (advanceToPreviousUncompleted()) { + for (int i = 0; i < mListeners.size(); i++) { + mListeners.get(i).onPreviousPage(); + } + } + } + } + + @Override + public void onPageViewCreated(LayoutInflater inflater, Bundle savedInstanceState, + int layoutResource) {} + + private boolean advanceToNextUncompleted() { + while (mCurrentPageIndex < mPageList.size()) { + mCurrentPageIndex++; + if (!getCurrentPage().isCompleted()) { + return true; + } + } + return false; + } + + private boolean advanceToPreviousUncompleted() { + while (mCurrentPageIndex > 0) { + mCurrentPageIndex--; + if (!getCurrentPage().isCompleted()) { + return true; + } + } + return false; + } + + public void load(Bundle savedValues) { + for (String key : savedValues.keySet()) { + Page page = mPageList.getPage(key); + if (page != null) { + page.resetData(savedValues.getBundle(key)); + } + } + } + + public Bundle save() { + Bundle bundle = new Bundle(); + for (Page page : mPageList.values()) { + bundle.putBundle(page.getKey(), page.getData()); + } + return bundle; + } + + public void registerListener(SetupDataCallbacks listener) { + mListeners.add(listener); + } + + public void unregisterListener(SetupDataCallbacks listener) { + mListeners.remove(listener); + } +} |