163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio/* 263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Copyright (C) 2014 The Android Open Source Project 363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * 463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Licensed under the Apache License, Version 2.0 (the "License"); 563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * you may not use this file except in compliance with the License. 663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * You may obtain a copy of the License at 763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * 863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * http://www.apache.org/licenses/LICENSE-2.0 963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * 1063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Unless required by applicable law or agreed to in writing, software 1163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * distributed under the License is distributed on an "AS IS" BASIS, 1263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * See the License for the specific language governing permissions and 1463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * limitations under the License. 1563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 1663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 1763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Megliopackage com.android.settings.dashboard; 1863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 1963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglioimport android.content.Intent; 2063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglioimport android.content.res.Resources; 2163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglioimport android.os.Bundle; 2263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglioimport android.os.Parcel; 2363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglioimport android.os.Parcelable; 242ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monkimport android.os.UserHandle; 2563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglioimport android.text.TextUtils; 2663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 272ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monkimport java.util.ArrayList; 282ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk 2963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio/** 3063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Description of a single dashboard tile that the user can select. 3163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 3263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Megliopublic class DashboardTile implements Parcelable { 3363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 3463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Default value for {@link com.android.settings.dashboard.DashboardTile#id DashboardTile.id} 3563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * indicating that no identifier value is set. All other values (including those below -1) 3663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * are valid. 3763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 3863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public static final long TILE_ID_UNDEFINED = -1; 3963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 4063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 4163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Identifier for this tile, to correlate with a new list when 4263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * it is updated. The default value is 4363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * {@link com.android.settings.dashboard.DashboardTile#TILE_ID_UNDEFINED}, meaning no id. 4463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * @attr ref android.R.styleable#PreferenceHeader_id 4563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 4663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public long id = TILE_ID_UNDEFINED; 4763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 4863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 4963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Resource ID of title of the tile that is shown to the user. 5063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * @attr ref android.R.styleable#PreferenceHeader_title 5163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 5263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public int titleRes; 5363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 5463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 5563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Title of the tile that is shown to the user. 5663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * @attr ref android.R.styleable#PreferenceHeader_title 5763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 5863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public CharSequence title; 5963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 6063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 6163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Resource ID of optional summary describing what this tile controls. 6263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * @attr ref android.R.styleable#PreferenceHeader_summary 6363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 6463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public int summaryRes; 6563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 6663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 6763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Optional summary describing what this tile controls. 6863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * @attr ref android.R.styleable#PreferenceHeader_summary 6963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 7063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public CharSequence summary; 7163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 7263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 7363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Optional icon resource to show for this tile. 7463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * @attr ref android.R.styleable#PreferenceHeader_icon 7563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 7663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public int iconRes; 7763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 7863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 792ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk * Optional package to pull the icon resource from. 802ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk */ 812ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk public String iconPkg; 822ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk 832ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk /** 8463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Full class name of the fragment to display when this tile is 8563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * selected. 8663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * @attr ref android.R.styleable#PreferenceHeader_fragment 8763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 8863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public String fragment; 8963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 9063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 9163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Optional arguments to supply to the fragment when it is 9263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * instantiated. 9363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 9463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public Bundle fragmentArguments; 9563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 9663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 9763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Intent to launch when the preference is selected. 9863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 9963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public Intent intent; 10063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 10163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 1022ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk * Optional list of user handles which the intent should be launched on. 1032ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk */ 1042ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk public ArrayList<UserHandle> userHandle = new ArrayList<>(); 1052ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk 1062ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk /** 10763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Optional additional data for use by subclasses of the activity 10863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 10963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public Bundle extras; 11063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 11163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public DashboardTile() { 11263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio // Empty 11363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 11463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 11563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 11663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Return the currently set title. If {@link #titleRes} is set, 11763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * this resource is loaded from <var>res</var> and returned. Otherwise 11863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * {@link #title} is returned. 11963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 12063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public CharSequence getTitle(Resources res) { 12163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio if (titleRes != 0) { 12263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio return res.getText(titleRes); 12363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 12463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio return title; 12563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 12663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 12763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 12863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Return the currently set summary. If {@link #summaryRes} is set, 12963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * this resource is loaded from <var>res</var> and returned. Otherwise 13063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * {@link #summary} is returned. 13163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 13263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public CharSequence getSummary(Resources res) { 13363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio if (summaryRes != 0) { 13463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio return res.getText(summaryRes); 13563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 13663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio return summary; 13763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 13863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 13963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio @Override 14063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public int describeContents() { 14163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio return 0; 14263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 14363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 14463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio @Override 14563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public void writeToParcel(Parcel dest, int flags) { 14663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeLong(id); 14763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeInt(titleRes); 14863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio TextUtils.writeToParcel(title, dest, flags); 14963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeInt(summaryRes); 15063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio TextUtils.writeToParcel(summary, dest, flags); 15163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeInt(iconRes); 1522ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk dest.writeString(iconPkg); 15363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeString(fragment); 15463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeBundle(fragmentArguments); 15563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio if (intent != null) { 15663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeInt(1); 15763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio intent.writeToParcel(dest, flags); 15863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } else { 15963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeInt(0); 16063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 1612ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk final int N = userHandle.size(); 1622ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk dest.writeInt(N); 1632ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk for (int i = 0; i < N; i++) { 1645dec877fb005eed46a3879f45e9980206e9a0904Jason Monk userHandle.get(i).writeToParcel(dest, flags); 1652ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk } 16663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeBundle(extras); 16763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 16863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 16963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public void readFromParcel(Parcel in) { 17063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio id = in.readLong(); 17163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio titleRes = in.readInt(); 17263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio title = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); 17363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio summaryRes = in.readInt(); 17463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio summary = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); 17563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio iconRes = in.readInt(); 1762ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk iconPkg = in.readString(); 17763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio fragment = in.readString(); 17863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio fragmentArguments = in.readBundle(); 17963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio if (in.readInt() != 0) { 18063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio intent = Intent.CREATOR.createFromParcel(in); 18163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 1822ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk final int N = in.readInt(); 1832ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk for (int i = 0; i < N; i++) { 1842ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk userHandle.add(UserHandle.CREATOR.createFromParcel(in)); 1852ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk } 18663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio extras = in.readBundle(); 18763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 18863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 18963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio DashboardTile(Parcel in) { 19063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio readFromParcel(in); 19163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 19263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 19363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public static final Creator<DashboardTile> CREATOR = new Creator<DashboardTile>() { 19463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public DashboardTile createFromParcel(Parcel source) { 19563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio return new DashboardTile(source); 19663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 19763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public DashboardTile[] newArray(int size) { 19863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio return new DashboardTile[size]; 19963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 20063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio }; 20163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio} 202