1816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko/* 2816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Copyright (C) 2015 The Android Open Source Project 3816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * 4816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Licensed under the Apache License, Version 2.0 (the "License"); 5816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * you may not use this file except in compliance with the License. 6816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * You may obtain a copy of the License at 7816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * 8816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * http://www.apache.org/licenses/LICENSE-2.0 9816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * 10816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Unless required by applicable law or agreed to in writing, software 11816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * distributed under the License is distributed on an "AS IS" BASIS, 12816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * See the License for the specific language governing permissions and 14816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * limitations under the License. 15816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko */ 16816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 17816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkopackage com.android.tv.ui.sidepanel.parentalcontrols; 18816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 19816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.database.ContentObserver; 20816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.media.tv.TvContract; 21816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.net.Uri; 22816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.os.Bundle; 23816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.os.Handler; 24816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.v17.leanback.widget.VerticalGridView; 25816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.view.KeyEvent; 26816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.view.LayoutInflater; 27816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.view.View; 28816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.view.ViewGroup; 29816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.widget.TextView; 30816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 31816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.R; 32816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.data.Channel; 33816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.data.ChannelNumber; 3407b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalkoimport com.android.tv.ui.OnRepeatedKeyInterceptListener; 35816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.ui.sidepanel.ActionItem; 36816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.ui.sidepanel.ChannelCheckItem; 37816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.ui.sidepanel.DividerItem; 38816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.ui.sidepanel.Item; 39816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport com.android.tv.ui.sidepanel.SideFragment; 40816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 41816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport java.util.ArrayList; 42816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport java.util.Collections; 43816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport java.util.Comparator; 44816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport java.util.List; 45816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 46816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkopublic class ChannelsBlockedFragment extends SideFragment { 47816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private static final String TRACKER_LABEL = "Channels blocked"; 48816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private int mBlockedChannelCount; 49816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private final List<Channel> mChannels = new ArrayList<>(); 50816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private long mLastFocusedChannelId = Channel.INVALID_ID; 51816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private int mSelectedPosition = INVALID_POSITION; 52816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private final ContentObserver mProgramUpdateObserver = new ContentObserver(new Handler()) { 53816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 54816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public void onChange(boolean selfChange, Uri uri) { 55816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko notifyItemsChanged(); 56816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 57816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko }; 58816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private final Item mLockAllItem = new BlockAllItem(); 59816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private final List<Item> mItems = new ArrayList<>(); 60816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 61816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 62816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public View onCreateView(LayoutInflater inflater, ViewGroup container, 63816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko Bundle savedInstanceState) { 64816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko View view = super.onCreateView(inflater, container, savedInstanceState); 65816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko if (mSelectedPosition != INVALID_POSITION) { 66816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko setSelectedPosition(mSelectedPosition); 67816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 68816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko VerticalGridView listView = (VerticalGridView) view.findViewById(R.id.side_panel_list); 6907b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko listView.setOnKeyInterceptListener(new OnRepeatedKeyInterceptListener(listView) { 7007b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko @Override 7107b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko public boolean onInterceptKeyEvent(KeyEvent event) { 7207b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko // In order to send tune operation once for continuous channel up/down events, 7307b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko // we only call the moveToChannel method on ACTION_UP event of channel switch keys. 7407b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko if (event.getAction() == KeyEvent.ACTION_UP) { 7507b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko switch (event.getKeyCode()) { 7607b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko case KeyEvent.KEYCODE_DPAD_UP: 7707b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko case KeyEvent.KEYCODE_DPAD_DOWN: 7807b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko if (mLastFocusedChannelId != Channel.INVALID_ID) { 7907b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko getMainActivity().tuneToChannel( 8007b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko getChannelDataManager().getChannel(mLastFocusedChannelId)); 8107b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko } 8207b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko break; 8307b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko } 8407b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko } 8507b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko return super.onInterceptKeyEvent(event); 8607b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko } 8707b043dc3db83d6d20f0e8513b946830ab00e37bNick Chalko }); 88816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko getActivity().getContentResolver().registerContentObserver(TvContract.Programs.CONTENT_URI, 89816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko true, mProgramUpdateObserver); 90816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko getMainActivity().startShrunkenTvView(true, true); 91816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko return view; 92816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 93816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 94816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 95816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public void onDestroyView() { 96816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko getActivity().getContentResolver().unregisterContentObserver(mProgramUpdateObserver); 97816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko getChannelDataManager().applyUpdatedValuesToDb(); 98816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko getMainActivity().endShrunkenTvView(); 99816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko super.onDestroyView(); 100816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 101816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 102816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 103816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko protected String getTitle() { 104816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko return getString(R.string.option_channels_locked); 105816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 106816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 107816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 108816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public String getTrackerLabel() { 109816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko return TRACKER_LABEL; 110816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 111816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 112816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 113816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko protected List<Item> getItemList() { 114816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mItems.clear(); 115816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mItems.add(mLockAllItem); 116816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mChannels.clear(); 117816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mChannels.addAll(getChannelDataManager().getChannelList()); 118816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko Collections.sort(mChannels, new Comparator<Channel>() { 119816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 120816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public int compare(Channel lhs, Channel rhs) { 121816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko if (lhs.isBrowsable() != rhs.isBrowsable()) { 122816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko return lhs.isBrowsable() ? -1 : 1; 123816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 124816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko return ChannelNumber.compare(lhs.getDisplayNumber(), rhs.getDisplayNumber()); 125816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 126816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko }); 127816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 128816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko final long currentChannelId = getMainActivity().getCurrentChannelId(); 129816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko boolean hasHiddenChannels = false; 130816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko for (Channel channel : mChannels) { 131816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko if (!channel.isBrowsable() && !hasHiddenChannels) { 132816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mItems.add(new DividerItem( 133816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko getString(R.string.option_channels_subheader_hidden))); 134816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko hasHiddenChannels = true; 135816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 136816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mItems.add(new ChannelBlockedItem(channel)); 137816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko if (channel.isLocked()) { 138816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko ++mBlockedChannelCount; 139816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 140816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko if (channel.getId() == currentChannelId) { 141816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mSelectedPosition = mItems.size() - 1; 142816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 143816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 144816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko return mItems; 145816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 146816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 147816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private class BlockAllItem extends ActionItem { 148816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private TextView mTextView; 149816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 150816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public BlockAllItem() { 151816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko super(null); 152816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 153816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 154816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 155816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko protected void onBind(View view) { 156816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko super.onBind(view); 157816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mTextView = (TextView) view.findViewById(R.id.title); 158816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 159816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 160816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 161816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko protected void onUpdate() { 162816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko super.onUpdate(); 163816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko updateText(); 164816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 165816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 166816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 167816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko protected void onUnbind() { 168816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko super.onUnbind(); 169816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mTextView = null; 170816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 171816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 172816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 173816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko protected void onSelected() { 174816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko boolean lock = !areAllChannelsBlocked(); 175816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko for (Channel channel : mChannels) { 176816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko getChannelDataManager().updateLocked(channel.getId(), lock); 177816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 178816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mBlockedChannelCount = lock ? mChannels.size() : 0; 179816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko notifyItemsChanged(); 180816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 181816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 182816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 183816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko protected void onFocused() { 184816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko super.onFocused(); 185816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mLastFocusedChannelId = Channel.INVALID_ID; 186816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 187816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 188816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private void updateText() { 189816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mTextView.setText(getString(areAllChannelsBlocked() ? 190816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko R.string.option_channels_unlock_all : R.string.option_channels_lock_all)); 191816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 192816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 193816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private boolean areAllChannelsBlocked() { 194816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko return mBlockedChannelCount == mChannels.size(); 195816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 196816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 197816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 198816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private class ChannelBlockedItem extends ChannelCheckItem { 199816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private ChannelBlockedItem(Channel channel) { 200816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko super(channel, getChannelDataManager(), getProgramDataManager()); 201816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 202816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 203816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 204816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko protected int getResourceId() { 205816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko return R.layout.option_item_channel_lock; 206816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 207816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 208816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 209816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko protected void onUpdate() { 210816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko super.onUpdate(); 211816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko setChecked(getChannel().isLocked()); 212816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 213816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 214816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 215816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko protected void onSelected() { 216816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko super.onSelected(); 217816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko getChannelDataManager().updateLocked(getChannel().getId(), isChecked()); 218816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mBlockedChannelCount += isChecked() ? 1 : -1; 219816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko notifyItemChanged(mLockAllItem); 220816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 221816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 222816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 223816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko protected void onFocused() { 224816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko super.onFocused(); 225816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mLastFocusedChannelId = getChannel().getId(); 226816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 227816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 228816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko} 229