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