DashboardTile.java revision 63bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51b
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; 2463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglioimport android.text.TextUtils; 2563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 2663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio/** 2763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Description of a single dashboard tile that the user can select. 2863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 2963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Megliopublic class DashboardTile implements Parcelable { 3063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 3163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Default value for {@link com.android.settings.dashboard.DashboardTile#id DashboardTile.id} 3263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * indicating that no identifier value is set. All other values (including those below -1) 3363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * are valid. 3463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 3563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public static final long TILE_ID_UNDEFINED = -1; 3663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 3763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 3863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Identifier for this tile, to correlate with a new list when 3963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * it is updated. The default value is 4063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * {@link com.android.settings.dashboard.DashboardTile#TILE_ID_UNDEFINED}, meaning no id. 4163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * @attr ref android.R.styleable#PreferenceHeader_id 4263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 4363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public long id = TILE_ID_UNDEFINED; 4463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 4563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 4663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Resource ID of title of the tile that is shown to the user. 4763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * @attr ref android.R.styleable#PreferenceHeader_title 4863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 4963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public int titleRes; 5063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 5163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 5263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Title of the tile that is shown to the user. 5363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * @attr ref android.R.styleable#PreferenceHeader_title 5463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 5563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public CharSequence title; 5663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 5763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 5863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Resource ID of optional summary describing what this tile controls. 5963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * @attr ref android.R.styleable#PreferenceHeader_summary 6063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 6163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public int summaryRes; 6263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 6363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 6463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Optional summary describing what this tile controls. 6563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * @attr ref android.R.styleable#PreferenceHeader_summary 6663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 6763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public CharSequence summary; 6863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 6963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 7063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Optional icon resource to show for this tile. 7163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * @attr ref android.R.styleable#PreferenceHeader_icon 7263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 7363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public int iconRes; 7463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 7563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 7663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Full class name of the fragment to display when this tile is 7763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * selected. 7863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * @attr ref android.R.styleable#PreferenceHeader_fragment 7963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 8063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public String fragment; 8163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 8263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 8363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Optional arguments to supply to the fragment when it is 8463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * instantiated. 8563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 8663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public Bundle fragmentArguments; 8763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 8863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 8963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Intent to launch when the preference is selected. 9063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 9163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public Intent intent; 9263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 9363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 9463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Optional additional data for use by subclasses of the activity 9563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 9663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public Bundle extras; 9763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 9863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public DashboardTile() { 9963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio // Empty 10063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 10163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 10263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 10363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Return the currently set title. If {@link #titleRes} is set, 10463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * this resource is loaded from <var>res</var> and returned. Otherwise 10563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * {@link #title} is returned. 10663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 10763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public CharSequence getTitle(Resources res) { 10863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio if (titleRes != 0) { 10963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio return res.getText(titleRes); 11063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 11163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio return title; 11263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 11363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 11463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio /** 11563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * Return the currently set summary. If {@link #summaryRes} is set, 11663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * this resource is loaded from <var>res</var> and returned. Otherwise 11763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio * {@link #summary} is returned. 11863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio */ 11963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public CharSequence getSummary(Resources res) { 12063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio if (summaryRes != 0) { 12163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio return res.getText(summaryRes); 12263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 12363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio return summary; 12463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 12563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 12663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio @Override 12763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public int describeContents() { 12863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio return 0; 12963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 13063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 13163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio @Override 13263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public void writeToParcel(Parcel dest, int flags) { 13363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeLong(id); 13463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeInt(titleRes); 13563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio TextUtils.writeToParcel(title, dest, flags); 13663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeInt(summaryRes); 13763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio TextUtils.writeToParcel(summary, dest, flags); 13863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeInt(iconRes); 13963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeString(fragment); 14063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeBundle(fragmentArguments); 14163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio if (intent != null) { 14263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeInt(1); 14363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio intent.writeToParcel(dest, flags); 14463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } else { 14563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeInt(0); 14663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 14763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio dest.writeBundle(extras); 14863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 14963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 15063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public void readFromParcel(Parcel in) { 15163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio id = in.readLong(); 15263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio titleRes = in.readInt(); 15363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio title = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); 15463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio summaryRes = in.readInt(); 15563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio summary = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); 15663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio iconRes = in.readInt(); 15763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio fragment = in.readString(); 15863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio fragmentArguments = in.readBundle(); 15963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio if (in.readInt() != 0) { 16063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio intent = Intent.CREATOR.createFromParcel(in); 16163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 16263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio extras = in.readBundle(); 16363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 16463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 16563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio DashboardTile(Parcel in) { 16663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio readFromParcel(in); 16763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 16863bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio 16963bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public static final Creator<DashboardTile> CREATOR = new Creator<DashboardTile>() { 17063bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public DashboardTile createFromParcel(Parcel source) { 17163bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio return new DashboardTile(source); 17263bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 17363bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio public DashboardTile[] newArray(int size) { 17463bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio return new DashboardTile[size]; 17563bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio } 17663bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio }; 17763bbb8e4fef5d0d0a5fa9c7656daa7ea160fd51bFabrice Di Meglio} 178