/*
* This file is part of Popcorn Time.
*
* Popcorn Time is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Popcorn Time is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Popcorn Time. If not, see <http://www.gnu.org/licenses/>.
*/
package pct.droid.base.content.preferences;
import android.content.Context;
import android.support.annotation.DrawableRes;
import android.support.annotation.StringRes;
import pct.droid.base.utils.PrefUtils;
public class PrefItem {
private Context mContext;
private int mIconRes;
private int mTitleRes;
private String mPrefKey;
private Object mDefaultValue;
private OnClickListener mOnClickListener;
private SubtitleGenerator mSubtitleGenerator;
private Boolean mHasNext = false;
public static Builder newBuilder(Context context) {
return new Builder(context);
}
protected PrefItem() {
}
public Object getValue() {
if (mDefaultValue instanceof Integer) {
return PrefUtils.get(mContext, mPrefKey, (Integer) mDefaultValue);
} else if (mDefaultValue instanceof Long) {
return PrefUtils.get(mContext, mPrefKey, (Long) mDefaultValue);
} else if (mDefaultValue instanceof Boolean) {
return PrefUtils.get(mContext, mPrefKey, (Boolean) mDefaultValue);
} else {
return PrefUtils.get(mContext, mPrefKey, mDefaultValue.toString());
}
}
public void saveValue(Object value) {
if (mDefaultValue instanceof Integer) {
PrefUtils.save(mContext, mPrefKey, (Integer) value);
} else if (mDefaultValue instanceof Long) {
PrefUtils.save(mContext, mPrefKey, (Long) value);
} else if (mDefaultValue instanceof Boolean) {
PrefUtils.save(mContext, mPrefKey, (Boolean) value);
} else {
PrefUtils.save(mContext, mPrefKey, value.toString());
}
}
public void clearValue() {
PrefUtils.remove(mContext, mPrefKey);
}
public int getIconResource() {
return mIconRes;
}
public String getTitle() {
return mContext.getResources().getString(mTitleRes);
}
public String getPrefKey() {
return mPrefKey;
}
public Object getDefaultValue() {
return mDefaultValue;
}
public String getSubtitle() {
if (mSubtitleGenerator != null) {
return mSubtitleGenerator.get(this);
}
return "";
}
public boolean isClickable() {
return mOnClickListener != null;
}
public boolean hasNext() {
return mHasNext;
}
public boolean isTitle() {
return mPrefKey == null;
}
public void onClick() {
if (mOnClickListener != null)
mOnClickListener.onClick(this);
}
public interface OnClickListener {
void onClick(PrefItem item);
}
public interface SubtitleGenerator {
String get(PrefItem item);
}
public static class Builder {
private PrefItem mItem;
public Builder(Context context) {
mItem = new PrefItem();
mItem.mContext = context;
}
public Builder setIconResource(@DrawableRes int iconRes) {
mItem.mIconRes = iconRes;
return this;
}
public Builder setTitleResource(@StringRes int titleRes) {
mItem.mTitleRes = titleRes;
return this;
}
public Builder setPreferenceKey(String prefKey) {
mItem.mPrefKey = prefKey;
return this;
}
public Builder setDefaultValue(Object defaultValue) {
mItem.mDefaultValue = defaultValue;
return this;
}
public Builder setOnClickListener(OnClickListener onClickListener) {
mItem.mOnClickListener = onClickListener;
return this;
}
public Builder setSubtitleGenerator(SubtitleGenerator subtitleGenerator) {
mItem.mSubtitleGenerator = subtitleGenerator;
return this;
}
public Builder hasNext(Boolean hasNext) {
mItem.mHasNext = hasNext;
return this;
}
public PrefItem build() {
return mItem;
}
}
}