content: /*
   * Copyright (C) 2007 The Android Open Source 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.android.internal.telephony.cat;
  
  import android.annotation.UnsupportedAppUsage;
  import android.graphics.Bitmap;
  import android.os.Parcel;
  import android.os.Parcelable;
  
  import java.util.ArrayList;
  import java.util.List;
  
  /**
   * Container class for CAT menu (SET UP MENU, SELECT ITEM) parameters.
   *
   */
  public class Menu implements Parcelable {
      public List<Item> items;
      @UnsupportedAppUsage
      public List<TextAttribute> titleAttrs;
      public PresentationType presentationType;
      public String title;
      public Bitmap titleIcon;
      public int defaultItem;
      public boolean softKeyPreferred;
      public boolean helpAvailable;
      public boolean titleIconSelfExplanatory;
      public boolean itemsIconSelfExplanatory;
  
      public Menu() {
          // Create an empty list.
          items = new ArrayList<Item>();
          title = null;
          titleAttrs = null;
          defaultItem = 0;
          softKeyPreferred = false;
          helpAvailable = false;
          titleIconSelfExplanatory = false;
          itemsIconSelfExplanatory = false;
          titleIcon = null;
          // set default style to be navigation menu.
          presentationType = PresentationType.NAVIGATION_OPTIONS;
      }
  
      private Menu(Parcel in) {
          title = in.readString();
          titleIcon = in.readParcelable(null);
          // rebuild items list.
          items = new ArrayList<Item>();
          int size = in.readInt();
          for (int i=0; i<size; i++) {
              Item item = in.readParcelable(null);
              items.add(item);
          }
          defaultItem = in.readInt();
          softKeyPreferred = in.readInt() == 1 ? true : false;
          helpAvailable = in.readInt() == 1 ? true : false;
          titleIconSelfExplanatory = in.readInt() == 1 ? true : false;
          itemsIconSelfExplanatory = in.readInt() == 1 ? true : false;
          presentationType = PresentationType.values()[in.readInt()];
      }
  
      @Override
      public int describeContents() {
          return 0;
      }
  
      @Override
      public void writeToParcel(Parcel dest, int flags) {
          dest.writeString(title);
          dest.writeParcelable(titleIcon, flags);
          // write items list to the parcel.
          int size = items.size();
          dest.writeInt(size);
          for (int i=0; i<size; i++) {
              dest.writeParcelable(items.get(i), flags);
          }
          dest.writeInt(defaultItem);
          dest.writeInt(softKeyPreferred ? 1 : 0);
          dest.writeInt(helpAvailable ? 1 : 0);
          dest.writeInt(titleIconSelfExplanatory ? 1 : 0);
          dest.writeInt(itemsIconSelfExplanatory ? 1 : 0);
          dest.writeInt(presentationType.ordinal());
      }
  
      public static final Parcelable.Creator<Menu> CREATOR = new Parcelable.Creator<Menu>() {
          @Override
          public Menu createFromParcel(Parcel in) {
              return new Menu(in);
          }
  
          @Override
          public Menu[] newArray(int size) {
              return new Menu[size];
          }
      };
  }
  