| /* |
| * Copyright (C) 2014 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.settings.dashboard; |
| |
| import android.content.Intent; |
| import android.content.res.Resources; |
| import android.os.Bundle; |
| import android.os.Parcel; |
| import android.os.Parcelable; |
| import android.os.UserHandle; |
| import android.text.TextUtils; |
| |
| import java.util.ArrayList; |
| |
| /** |
| * Description of a single dashboard tile that the user can select. |
| */ |
| public class DashboardTile implements Parcelable { |
| /** |
| * Default value for {@link com.android.settings.dashboard.DashboardTile#id DashboardTile.id} |
| * indicating that no identifier value is set. All other values (including those below -1) |
| * are valid. |
| */ |
| public static final long TILE_ID_UNDEFINED = -1; |
| |
| /** |
| * Identifier for this tile, to correlate with a new list when |
| * it is updated. The default value is |
| * {@link com.android.settings.dashboard.DashboardTile#TILE_ID_UNDEFINED}, meaning no id. |
| * @attr ref android.R.styleable#PreferenceHeader_id |
| */ |
| public long id = TILE_ID_UNDEFINED; |
| |
| /** |
| * Resource ID of title of the tile that is shown to the user. |
| * @attr ref android.R.styleable#PreferenceHeader_title |
| */ |
| public int titleRes; |
| |
| /** |
| * Title of the tile that is shown to the user. |
| * @attr ref android.R.styleable#PreferenceHeader_title |
| */ |
| public CharSequence title; |
| |
| /** |
| * Resource ID of optional summary describing what this tile controls. |
| * @attr ref android.R.styleable#PreferenceHeader_summary |
| */ |
| public int summaryRes; |
| |
| /** |
| * Optional summary describing what this tile controls. |
| * @attr ref android.R.styleable#PreferenceHeader_summary |
| */ |
| public CharSequence summary; |
| |
| /** |
| * Optional icon resource to show for this tile. |
| * @attr ref android.R.styleable#PreferenceHeader_icon |
| */ |
| public int iconRes; |
| |
| /** |
| * Optional package to pull the icon resource from. |
| */ |
| public String iconPkg; |
| |
| /** |
| * Full class name of the fragment to display when this tile is |
| * selected. |
| * @attr ref android.R.styleable#PreferenceHeader_fragment |
| */ |
| public String fragment; |
| |
| /** |
| * Optional arguments to supply to the fragment when it is |
| * instantiated. |
| */ |
| public Bundle fragmentArguments; |
| |
| /** |
| * Intent to launch when the preference is selected. |
| */ |
| public Intent intent; |
| |
| /** |
| * Optional list of user handles which the intent should be launched on. |
| */ |
| public ArrayList<UserHandle> userHandle = new ArrayList<>(); |
| |
| /** |
| * Optional additional data for use by subclasses of the activity |
| */ |
| public Bundle extras; |
| |
| public DashboardTile() { |
| // Empty |
| } |
| |
| /** |
| * Return the currently set title. If {@link #titleRes} is set, |
| * this resource is loaded from <var>res</var> and returned. Otherwise |
| * {@link #title} is returned. |
| */ |
| public CharSequence getTitle(Resources res) { |
| if (titleRes != 0) { |
| return res.getText(titleRes); |
| } |
| return title; |
| } |
| |
| /** |
| * Return the currently set summary. If {@link #summaryRes} is set, |
| * this resource is loaded from <var>res</var> and returned. Otherwise |
| * {@link #summary} is returned. |
| */ |
| public CharSequence getSummary(Resources res) { |
| if (summaryRes != 0) { |
| return res.getText(summaryRes); |
| } |
| return summary; |
| } |
| |
| @Override |
| public int describeContents() { |
| return 0; |
| } |
| |
| @Override |
| public void writeToParcel(Parcel dest, int flags) { |
| dest.writeLong(id); |
| dest.writeInt(titleRes); |
| TextUtils.writeToParcel(title, dest, flags); |
| dest.writeInt(summaryRes); |
| TextUtils.writeToParcel(summary, dest, flags); |
| dest.writeInt(iconRes); |
| dest.writeString(iconPkg); |
| dest.writeString(fragment); |
| dest.writeBundle(fragmentArguments); |
| if (intent != null) { |
| dest.writeInt(1); |
| intent.writeToParcel(dest, flags); |
| } else { |
| dest.writeInt(0); |
| } |
| final int N = userHandle.size(); |
| dest.writeInt(N); |
| for (int i = 0; i < N; i++) { |
| userHandle.get(i).writeToParcel(dest, flags); |
| } |
| dest.writeBundle(extras); |
| } |
| |
| public void readFromParcel(Parcel in) { |
| id = in.readLong(); |
| titleRes = in.readInt(); |
| title = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); |
| summaryRes = in.readInt(); |
| summary = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); |
| iconRes = in.readInt(); |
| iconPkg = in.readString(); |
| fragment = in.readString(); |
| fragmentArguments = in.readBundle(); |
| if (in.readInt() != 0) { |
| intent = Intent.CREATOR.createFromParcel(in); |
| } |
| final int N = in.readInt(); |
| for (int i = 0; i < N; i++) { |
| userHandle.add(UserHandle.CREATOR.createFromParcel(in)); |
| } |
| extras = in.readBundle(); |
| } |
| |
| DashboardTile(Parcel in) { |
| readFromParcel(in); |
| } |
| |
| public static final Creator<DashboardTile> CREATOR = new Creator<DashboardTile>() { |
| public DashboardTile createFromParcel(Parcel source) { |
| return new DashboardTile(source); |
| } |
| public DashboardTile[] newArray(int size) { |
| return new DashboardTile[size]; |
| } |
| }; |
| } |