1 /*
2  * Copyright (C) 2014 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5  * in compliance with the License. You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software distributed under the License
10  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11  * or implied. See the License for the specific language governing permissions and limitations under
12  * the License.
13  */
14 package com.android.tv.quicksettings;
15 
16 import android.content.Intent;
17 import android.net.Uri;
18 import android.os.Parcel;
19 import android.os.Parcelable;
20 
21 import java.util.ArrayList;
22 import java.util.List;
23 
24 public class Setting implements Parcelable {
25 
26     static final int TYPE_UNKNOWN = 0;
27     static final int TYPE_INT = 1;
28     static final int TYPE_STRING = 2;
29 
30     private String mTitle;
31     private int mIntValue;
32     private String mStringValue;
33     private int mSettingType;
34 
35     private int mMaxValue;
36     private List<String> mStringChoices = new ArrayList<String>();
37 
Setting()38     public Setting() {
39     }
40 
Setting(String title)41     public Setting(String title) {
42         mTitle = title;
43         mSettingType = TYPE_UNKNOWN;
44     }
45 
Setting(String title, int value)46     public Setting(String title, int value) {
47         this(title, value, 0);
48     }
49 
Setting(String title, int value, int max)50     public Setting(String title, int value, int max) {
51         this(title);
52         mIntValue = value;
53         mMaxValue = max;
54         mSettingType = TYPE_INT;
55     }
56 
Setting(String title, String value)57     public Setting(String title, String value) {
58         this(title);
59         mStringValue = value;
60         mSettingType = TYPE_STRING;
61     }
62 
getType()63     public int getType() {
64         return mSettingType;
65     }
66 
getTitle()67     public String getTitle() {
68         return mTitle;
69     }
70 
setTitle(String title)71     public void setTitle(String title) {
72         mTitle = title;
73     }
74 
getMaxValue()75     public int getMaxValue() {
76         return mMaxValue;
77     }
78 
setMaxValue(int max)79     public void setMaxValue(int max) {
80         mMaxValue = max;
81         mSettingType = TYPE_INT;
82     }
83 
getStringChoices()84     public List<String> getStringChoices() {
85         return mStringChoices;
86     }
87 
setStringChoices(List<String> choices)88     public void setStringChoices(List<String> choices) {
89         mStringChoices = choices;
90         mSettingType = TYPE_STRING;
91     }
92 
addStringChoice(String choice)93     public void addStringChoice(String choice) {
94         mStringChoices.add(choice);
95     }
96 
getIntValue()97     public int getIntValue() {
98         return mIntValue;
99     }
100 
getStringValue()101     public String getStringValue() {
102         return mStringValue;
103     }
104 
setValue(int value)105     public void setValue(int value) {
106         mIntValue = value;
107         mSettingType = TYPE_INT;
108     }
109 
setValue(String value)110     public void setValue(String value) {
111         mStringValue = value;
112         mSettingType = TYPE_STRING;
113     }
114 
115     public static Parcelable.Creator<Setting> CREATOR = new Parcelable.Creator<Setting>() {
116         @Override
117         public Setting createFromParcel(Parcel source) {
118             Setting setting = new Setting();
119             setting.mTitle = source.readString();
120             setting.mIntValue = source.readInt();
121             setting.mStringValue = source.readString();
122             setting.mSettingType = source.readInt();
123             setting.mMaxValue = source.readInt();
124             source.readStringList(setting.mStringChoices);
125             return setting;
126         }
127 
128         @Override
129         public Setting[] newArray(int size) {
130             return new Setting[size];
131         }
132     };
133 
134     @Override
describeContents()135     public int describeContents() {
136         return 0;
137     }
138 
139     @Override
writeToParcel(Parcel dest, int flags)140     public void writeToParcel(Parcel dest, int flags) {
141         dest.writeString(mTitle);
142         dest.writeInt(mIntValue);
143         dest.writeString(mStringValue);
144         dest.writeInt(mSettingType);
145         dest.writeInt(mMaxValue);
146         dest.writeStringList(mStringChoices);
147     }
148 }
149