blob: f6612fdb1b796014d8d05904eb5e6a32a6e9555b [file] [log] [blame]
/*
* Copyright (C) 2015 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.tv.ui.sidepanel.parentalcontrols;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.ImageView;
import com.android.tv.R;
import com.android.tv.parental.ContentRatingSystem;
import com.android.tv.parental.ContentRatingSystem.Rating;
import com.android.tv.parental.ContentRatingSystem.SubRating;
import com.android.tv.ui.sidepanel.CheckBoxItem;
import com.android.tv.ui.sidepanel.DividerItem;
import com.android.tv.ui.sidepanel.Item;
import com.android.tv.ui.sidepanel.SideFragment;
import java.util.ArrayList;
import java.util.List;
public class SubRatingsFragment extends SideFragment {
private static final String TRACKER_LABEL = "Sub ratings";
private final ContentRatingSystem mContentRatingSystem;
private final Rating mRating;
private final List<SubRatingItem> mSubRatingItems = new ArrayList<>();
public SubRatingsFragment(ContentRatingSystem contentRatingSystem, Rating rating) {
mContentRatingSystem = contentRatingSystem;
mRating = rating;
}
@Override
protected String getTitle() {
return getString(R.string.option_subrating_title, mRating.getTitle());
}
@Override
public String getTrackerLabel() {
return TRACKER_LABEL;
}
@Override
protected List<Item> getItemList() {
List<Item> items = new ArrayList<>();
items.add(new RatingItem());
items.add(new DividerItem(getString(R.string.option_subrating_header)));
mSubRatingItems.clear();
for (SubRating subRating : mRating.getSubRatings()) {
mSubRatingItems.add(new SubRatingItem(subRating));
}
items.addAll(mSubRatingItems);
return items;
}
private class RatingItem extends CheckBoxItem {
private RatingItem() {
super(mRating.getTitle(), mRating.getDescription());
}
@Override
protected void onBind(View view) {
super.onBind(view);
CompoundButton button = (CompoundButton) view.findViewById(getCompoundButtonId());
button.setButtonDrawable(R.drawable.btn_lock_material_anim);
button.setVisibility(View.VISIBLE);
Drawable icon = mRating.getIcon();
ImageView imageView = (ImageView) view.findViewById(R.id.icon);
if (icon != null) {
imageView.setVisibility(View.VISIBLE);
imageView.setImageDrawable(icon);
} else {
imageView.setVisibility(View.GONE);
}
}
@Override
protected void onUpdate() {
super.onUpdate();
setChecked(isRatingEnabled());
}
@Override
protected void onSelected() {
super.onSelected();
boolean checked = isChecked();
setRatingEnabled(checked);
if (checked) {
// If the rating is checked, check and disable all the sub rating items.
for (SubRating subRating : mRating.getSubRatings()) {
setSubRatingEnabled(subRating, true);
}
for (SubRatingItem item : mSubRatingItems) {
item.setChecked(true);
item.setEnabled(false);
}
} else {
// If the rating is unchecked, just enable all the sub rating items and do not
// change the check state.
for (SubRatingItem item : mSubRatingItems) {
item.setEnabled(true);
}
}
}
@Override
protected int getResourceId() {
return R.layout.option_item_rating;
}
}
private class SubRatingItem extends CheckBoxItem {
private final SubRating mSubRating;
private SubRatingItem(SubRating subRating) {
super(subRating.getTitle(), subRating.getDescription());
mSubRating = subRating;
}
@Override
protected void onBind(View view) {
super.onBind(view);
CompoundButton button = (CompoundButton) view.findViewById(getCompoundButtonId());
button.setButtonDrawable(R.drawable.btn_lock_material_anim);
button.setVisibility(View.VISIBLE);
Drawable icon = mSubRating.getIcon();
ImageView imageView = (ImageView) view.findViewById(R.id.icon);
if (icon != null) {
imageView.setVisibility(View.VISIBLE);
imageView.setImageDrawable(icon);
} else {
imageView.setVisibility(View.GONE);
}
}
@Override
protected void onUpdate() {
super.onUpdate();
setChecked(isSubRatingEnabled(mSubRating));
setEnabled(!isRatingEnabled());
}
@Override
protected void onSelected() {
super.onSelected();
setSubRatingEnabled(mSubRating, isChecked());
}
@Override
protected int getResourceId() {
return R.layout.option_item_rating;
}
}
private boolean isRatingEnabled() {
return getMainActivity().getParentalControlSettings()
.isRatingBlocked(mContentRatingSystem, mRating);
}
private boolean isSubRatingEnabled(SubRating subRating) {
return getMainActivity().getParentalControlSettings()
.isSubRatingEnabled(mContentRatingSystem, mRating, subRating);
}
private void setRatingEnabled(boolean enabled) {
getMainActivity().getParentalControlSettings()
.setRatingBlocked(mContentRatingSystem, mRating, enabled);
}
private void setSubRatingEnabled(SubRating subRating, boolean enabled) {
getMainActivity().getParentalControlSettings()
.setSubRatingBlocked(mContentRatingSystem, mRating, subRating, enabled);
}
}