1694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritzepackage com.android.settings.search;
2694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze
3694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritzeimport android.content.Intent;
4694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritzeimport android.os.Parcel;
5694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritzeimport android.os.Parcelable;
6694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze
7694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze/**
8694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze * Payload for settings which are selected from multiple values. For example, Location can be
9694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze * set to multiple degrees of accuracy.
10694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze */
11694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritzepublic class InlineListPayload extends InlinePayload {
12694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze
13694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze    /**
14694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze     * Number of selections in the list.
15694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze     */
16694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze    private int mNumOptions;
17694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze
18694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze    public InlineListPayload(String key, @PayloadType int payloadType, Intent intent,
19458bb887e130926f36d8926ea8462ecfbfd1e0efMatthew Fritze            boolean isDeviceSupported, int numOptions, int defaultValue) {
20458bb887e130926f36d8926ea8462ecfbfd1e0efMatthew Fritze        super(key, payloadType, intent, isDeviceSupported, defaultValue);
21694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze        mNumOptions = numOptions;
22694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze    }
23694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze
24694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze    private InlineListPayload(Parcel in) {
25694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze        super(in);
26694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze        mNumOptions = in.readInt();
27694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze    }
28694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze
29694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze    @Override
30694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze    public void writeToParcel(Parcel dest, int flags) {
31694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze        super.writeToParcel(dest, flags);
32694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze        dest.writeInt(mNumOptions);
33694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze    }
34694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze
35694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze    @Override
36694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze    protected int standardizeInput(int input) throws IllegalArgumentException {
37694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze        if (input < 0 || input >= mNumOptions) {
38694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze            throw new IllegalArgumentException(
39694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze                    "Invalid argument for ListSelect. Expected between 0 and "
40694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze                            + mNumOptions + " but found: " + input);
41694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze        }
42694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze        return input;
43694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze    }
44694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze
45694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze    @Override
46694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze    @PayloadType public int getType() {
47694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze        return PayloadType.INLINE_LIST;
48694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze    }
49694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze
50694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze    public static final Parcelable.Creator<InlineListPayload> CREATOR =
51694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze            new Parcelable.Creator<InlineListPayload>() {
52694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze                @Override
53694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze                public InlineListPayload createFromParcel(Parcel in) {
54694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze                    return new InlineListPayload(in);
55694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze                }
56694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze
57694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze                @Override
58694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze                public InlineListPayload[] newArray(int size) {
59694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze                    return new InlineListPayload[size];
60694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze                }
61694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze            };
62694088075e57f031a36a1000d6c69e356fe52d51Matthew Fritze}
63