/* * 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.FileManagerApplication; import com.cyanogenmod.filemanager.R; import com.cyanogenmod.filemanager.model.FileSystemObject; import com.cyanogenmod.filemanager.util.FileHelper; import java.io.File; import java.util.ArrayList; import java.util.List; /** * A serializer/deserializer class for {@link "NavigationView"}. */ public class NavigationViewInfoParcelable extends HistoryNavigable { private static final long serialVersionUID = -3400094396685969235L; private int mId; private String mCurrentDir; private boolean mChRooted; private List<FileSystemObject> mFiles; private List<FileSystemObject> mSelectedFiles; /** * Constructor of <code>NavigationViewInfoParcelable</code>. */ public NavigationViewInfoParcelable() { super(); } /** * Constructor of <code>NavigationViewInfoParcelable</code>. * * @param in The parcel information */ public NavigationViewInfoParcelable(Parcel in) { readFromParcel(in); } /** * {@inheritDoc} */ @Override public String getTitle() { if (this.mCurrentDir.compareTo(FileHelper.ROOT_DIRECTORY) == 0) { FileManagerApplication.getInstance().getResources().getString( R.string.root_directory_name); } return new File(this.mCurrentDir).getName(); } /** * {@inheritDoc} */ @Override public String getDescription() { return this.mCurrentDir; } /** * Method that returns the identifier of the view. * * @return int The identifier of the view */ public int getId() { return this.mId; } /** * Method that sets the identifier of the view. * * @param id The identifier of the view */ public void setId(int id) { this.mId = id; } /** * Method that returns the current directory. * * @return String The current directory */ public String getCurrentDir() { return this.mCurrentDir; } /** * Method that sets the current directory. * * @param currentDir The current directory */ public void setCurrentDir(String currentDir) { this.mCurrentDir = currentDir; } /** * Method that returns if the view is in a ChRooted environment. * * @return boolean If the view is in a ChRooted environment */ public boolean getChRooted() { return this.mChRooted; } /** * Method that sets if the view is in a ChRooted environment. * * @param chRooted If the view is in a ChRooted environment */ public void setChRooted(boolean chRooted) { this.mChRooted = chRooted; } /** * Method that returns the current file list. * * @return List<FileSystemObject> The current file list */ public List<FileSystemObject> getFiles() { return this.mFiles; } /** * Method that sets the current file list. * * @param files The current file list */ public void setFiles(List<FileSystemObject> files) { this.mFiles = files; } /** * Method that returns the current selected file list. * * @return List<FileSystemObject> The current selected file list */ public List<FileSystemObject> getSelectedFiles() { return this.mSelectedFiles; } /** * Method that sets the current selected file list. * * @param selectedFiles The current selected file list */ public void setSelectedFiles(List<FileSystemObject> selectedFiles) { this.mSelectedFiles = selectedFiles; } /** * {@inheritDoc} */ @Override public int describeContents() { return 0; } /** * {@inheritDoc} */ @Override public void writeToParcel(Parcel dest, int flags) { //- 0 dest.writeInt(this.mId); //- 1 dest.writeInt(this.mCurrentDir == null ? 0 : 1); if (this.mCurrentDir != null) { dest.writeString(this.mCurrentDir); } //- 2 dest.writeInt(this.mChRooted ? 1 : 0); //- 3 dest.writeInt(this.mSelectedFiles == null ? 0 : 1); if (this.mSelectedFiles != null) { dest.writeList(this.mSelectedFiles); } //- 4 dest.writeInt(this.mFiles == null ? 0 : 1); if (this.mFiles != null) { dest.writeList(this.mFiles); } } /** * Fill the object from the parcel information. * * @param in The parcel information to recreate the object */ private void readFromParcel(Parcel in) { //- 0 this.mId = in.readInt(); //- 1 int hasCurrentDir = in.readInt(); if (hasCurrentDir == 1) { this.mCurrentDir = in.readString(); } //- 2 this.mChRooted = (in.readInt() == 1); //- 3 int hasSelectedFiles = in.readInt(); if (hasSelectedFiles == 1) { List<FileSystemObject> selectedFiles = new ArrayList<FileSystemObject>(); in.readList(selectedFiles, NavigationViewInfoParcelable.class.getClassLoader()); this.mSelectedFiles = new ArrayList<FileSystemObject>(selectedFiles); } //- 4 int hasFiles = in.readInt(); if (hasFiles == 1) { List<FileSystemObject> files = new ArrayList<FileSystemObject>(); in.readList(files, NavigationViewInfoParcelable.class.getClassLoader()); this.mFiles = new ArrayList<FileSystemObject>(files); } } /** * 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<NavigationViewInfoParcelable> CREATOR = new Parcelable.Creator<NavigationViewInfoParcelable>() { /** * {@inheritDoc} */ @Override public NavigationViewInfoParcelable createFromParcel(Parcel in) { return new NavigationViewInfoParcelable(in); } /** * {@inheritDoc} */ @Override public NavigationViewInfoParcelable[] newArray(int size) { return new NavigationViewInfoParcelable[size]; } }; }