/* * Copyright (C) 2012 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.filemanager.parcelables; import android.os.Parcel; import android.os.Parcelable; import com.cyanogenmod.filemanager.model.History; import java.util.ArrayList; import java.util.List; /** * A serializer/deserializer class for {@link "NavigationActivity"}. */ public class NavigationInfoParcelable implements Parcelable { private NavigationViewInfoParcelable[] mNavigationViews; private List<History> mHistoryInfo; /** * Constructor of <code>NavigationInfoParcelable</code>. */ public NavigationInfoParcelable() { super(); } /** * Constructor of <code>NavigationInfoParcelable</code>. * * @param in The parcel information */ public NavigationInfoParcelable(Parcel in) { readFromParcel(in); } /** * Method that returns the serialized navigation views info. * * @return NavigationViewInfoParcelable[] the serialized navigation views info */ public NavigationViewInfoParcelable[] getNavigationViews() { return this.mNavigationViews; } /** * Method that sets the serialized navigation views info. * * @param navigationViews The serialized navigation views info */ public void setNavigationViews(NavigationViewInfoParcelable[] navigationViews) { this.mNavigationViews = navigationViews; } /** * Method that returns the history information. * * @return SearchInfoParcelable The history information */ public List<History> getHistoryInfo() { return this.mHistoryInfo; } /** * Method that sets the history information. * * @param historyInfo The history information */ public void setHistoryInfo(List<History> historyInfo) { this.mHistoryInfo = historyInfo; } /** * {@inheritDoc} */ @Override public int describeContents() { return 0; } /** * {@inheritDoc} */ @Override public void writeToParcel(Parcel dest, int flags) { //- 0 dest.writeInt(this.mNavigationViews.length); int cc = this.mNavigationViews.length; for (int i = 0; i < cc; i++) { dest.writeParcelable(this.mNavigationViews[i], 0); } //- 1 dest.writeInt(this.mHistoryInfo == null ? 0 : this.mHistoryInfo.size()); if (this.mHistoryInfo != null) { dest.writeList(this.mHistoryInfo); } } /** * Fill the object from the parcel information. * * @param in The parcel information to recreate the object */ private void readFromParcel(Parcel in) { //- 0 int navigationViewsCount = in.readInt(); this.mNavigationViews = new NavigationViewInfoParcelable[navigationViewsCount]; for (int i = 0; i < navigationViewsCount; i++) { this.mNavigationViews[i] = in.readParcelable(NavigationInfoParcelable.class.getClassLoader()); } //- 1 int hasHistoryInfo = in.readInt(); if (hasHistoryInfo != 0) { List<History> history = new ArrayList<History>(hasHistoryInfo); in.readList(history, NavigationInfoParcelable.class.getClassLoader()); this.mHistoryInfo = new ArrayList<History>(history); } } /** * The {@link android.os.Parcelable.Creator}. * * This field is needed for Android to be able to * create new objects, individually or as arrays. */ public static final Parcelable.Creator<NavigationInfoParcelable> CREATOR = new Parcelable.Creator<NavigationInfoParcelable>() { /** * {@inheritDoc} */ @Override public NavigationInfoParcelable createFromParcel(Parcel in) { return new NavigationInfoParcelable(in); } /** * {@inheritDoc} */ @Override public NavigationInfoParcelable[] newArray(int size) { return new NavigationInfoParcelable[size]; } }; }