diff options
Diffstat (limited to 'src/com/android/tv/ui/sidepanel/SettingsFragment.java')
-rw-r--r-- | src/com/android/tv/ui/sidepanel/SettingsFragment.java | 137 |
1 files changed, 82 insertions, 55 deletions
diff --git a/src/com/android/tv/ui/sidepanel/SettingsFragment.java b/src/com/android/tv/ui/sidepanel/SettingsFragment.java index e8033a22..6a5b510c 100644 --- a/src/com/android/tv/ui/sidepanel/SettingsFragment.java +++ b/src/com/android/tv/ui/sidepanel/SettingsFragment.java @@ -16,18 +16,25 @@ package com.android.tv.ui.sidepanel; +import static com.android.tv.Features.TUNER; + +import android.app.ApplicationErrorReport; +import android.content.Intent; +import android.media.tv.TvInputInfo; import android.view.View; import android.widget.Toast; import com.android.tv.MainActivity; import com.android.tv.R; import com.android.tv.TvApplication; +import com.android.tv.customization.TvCustomizationManager; import com.android.tv.dialog.PinDialogFragment; -import com.android.tv.dialog.WebDialogFragment; -import com.android.tv.license.LicenseUtils; -import com.android.tv.ui.sidepanel.parentalcontrols.ParentalControlsFragment; +import com.android.tv.license.LicenseSideFragment; +import com.android.tv.license.Licenses; +import com.android.tv.tuner.TunerPreferences; import com.android.tv.util.PermissionUtils; import com.android.tv.util.SetupUtils; +import com.android.tv.util.Utils; import java.util.ArrayList; import java.util.List; @@ -38,33 +45,6 @@ import java.util.List; public class SettingsFragment extends SideFragment { private static final String TRACKER_LABEL = "settings"; - private final long mCurrentChannelId; - - public SettingsFragment(long currentChannelId) { - mCurrentChannelId = currentChannelId; - } - - /** - * Opens a dialog showing open source licenses. - */ - public static final class LicenseActionItem extends ActionItem { - public final static String DIALOG_TAG = LicenseActionItem.class.getSimpleName(); - public static final String TRACKER_LABEL = "Open Source Licenses"; - private final MainActivity mMainActivity; - - public LicenseActionItem(MainActivity mainActivity) { - super(mainActivity.getString(R.string.settings_menu_licenses)); - mMainActivity = mainActivity; - } - - @Override - protected void onSelected() { - WebDialogFragment dialog = WebDialogFragment.newInstance(LicenseUtils.LICENSE_FILE, - mMainActivity.getString(R.string.dialog_title_licenses), TRACKER_LABEL); - mMainActivity.getOverlayManager().showDialogFragment(DIALOG_TAG, dialog, false); - } - } - @Override protected String getTitle() { return getResources().getString(R.string.side_panel_title_settings); @@ -80,11 +60,11 @@ public class SettingsFragment extends SideFragment { List<Item> items = new ArrayList<>(); final Item customizeChannelListItem = new SubMenuItem( getString(R.string.settings_channel_source_item_customize_channels), - getString(R.string.settings_channel_source_item_customize_channels_description), 0, + getString(R.string.settings_channel_source_item_customize_channels_description), getMainActivity().getOverlayManager().getSideFragmentManager()) { @Override protected SideFragment getFragment() { - return new CustomizeChannelListFragment(mCurrentChannelId); + return new CustomizeChannelListFragment(); } @Override @@ -122,25 +102,11 @@ public class SettingsFragment extends SideFragment { : R.string.option_toggle_parental_controls_off)) { @Override protected void onSelected() { - final MainActivity tvActivity = getMainActivity(); - final SideFragmentManager sideFragmentManager = tvActivity.getOverlayManager() - .getSideFragmentManager(); - sideFragmentManager.hideSidePanel(true); - PinDialogFragment fragment = new PinDialogFragment( - PinDialogFragment.PIN_DIALOG_TYPE_ENTER_PIN, - new PinDialogFragment.ResultListener() { - @Override - public void done(boolean success) { - if (success) { - sideFragmentManager - .show(new ParentalControlsFragment(), false); - sideFragmentManager.showSidePanel(true); - } else { - sideFragmentManager.hideAll(false); - } - } - }); - tvActivity.getOverlayManager() + getMainActivity().getOverlayManager() + .getSideFragmentManager().hideSidePanel(true); + PinDialogFragment fragment = PinDialogFragment + .create(PinDialogFragment.PIN_DIALOG_TYPE_ENTER_PIN); + getMainActivity().getOverlayManager() .showDialogFragment(PinDialogFragment.DIALOG_TAG, fragment, true); } }); @@ -149,12 +115,73 @@ public class SettingsFragment extends SideFragment { // But, we may be able to turn on channel lock feature regardless of the permission. // It's TBD. } - if (LicenseUtils.hasLicenses(activity.getAssets())) { - items.add(new LicenseActionItem(activity)); + boolean showTrickplaySetting = false; + if (TUNER.isEnabled(getContext())) { + for (TvInputInfo inputInfo : TvApplication.getSingletons(getContext()) + .getTvInputManagerHelper().getTvInputInfos(true, true)) { + if (Utils.isInternalTvInput(getContext(), inputInfo.getId())) { + showTrickplaySetting = true; + break; + } + } + if (showTrickplaySetting) { + showTrickplaySetting = + TvCustomizationManager.getTrickplayMode(getContext()) + == TvCustomizationManager.TRICKPLAY_MODE_ENABLED; + } + } + if (showTrickplaySetting) { + items.add( + new SwitchItem(getString(R.string.settings_trickplay), + getString(R.string.settings_trickplay), + getString(R.string.settings_trickplay_description), + getResources().getInteger(R.integer.trickplay_description_max_lines)) { + @Override + protected void onUpdate() { + super.onUpdate(); + boolean enabled = TunerPreferences.getTrickplaySetting(getContext()) + != TunerPreferences.TRICKPLAY_SETTING_DISABLED; + setChecked(enabled); + } + + @Override + protected void onSelected() { + super.onSelected(); + @TunerPreferences.TrickplaySetting int setting = + isChecked() ? TunerPreferences.TRICKPLAY_SETTING_ENABLED + : TunerPreferences.TRICKPLAY_SETTING_DISABLED; + TunerPreferences.setTrickplaySetting(getContext(), setting); + } + }); + } + items.add(new ActionItem(getString(R.string.settings_send_feedback)) { + @Override + protected void onSelected() { + Intent intent = new Intent(Intent.ACTION_APP_ERROR); + ApplicationErrorReport report = new ApplicationErrorReport(); + report.packageName = report.processName = getContext().getPackageName(); + report.time = System.currentTimeMillis(); + report.type = ApplicationErrorReport.TYPE_NONE; + intent.putExtra(Intent.EXTRA_BUG_REPORT, report); + startActivityForResult(intent, 0); + } + }); + if (Licenses.hasLicenses(getContext())) { + items.add( + new SubMenuItem( + getString(R.string.settings_menu_licenses), + getMainActivity().getOverlayManager().getSideFragmentManager()) { + @Override + protected SideFragment getFragment() { + return new LicenseSideFragment(); + } + }); } // Show version. - items.add(new SimpleItem(getString(R.string.settings_menu_version), - ((TvApplication) activity.getApplicationContext()).getVersionName())); + SimpleActionItem version = new SimpleActionItem(getString(R.string.settings_menu_version), + ((TvApplication) activity.getApplicationContext()).getVersionName()); + version.setClickable(false); + items.add(version); return items; } |