/* * 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.dialog; import android.app.Dialog; import android.app.DialogFragment; import android.content.Context; import android.os.Bundle; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import com.android.tv.MainActivity; import com.android.tv.R; /** Dialog fragment with full screen. */ public class FullscreenDialogFragment extends SafeDismissDialogFragment { public static final String DIALOG_TAG = FullscreenDialogFragment.class.getSimpleName(); public static final String VIEW_LAYOUT_ID = "viewLayoutId"; public static final String TRACKER_LABEL = "trackerLabel"; /** * Creates a FullscreenDialogFragment. View class of viewLayoutResId should implement {@link * DialogView}. */ public static FullscreenDialogFragment newInstance(int viewLayoutResId, String trackerLabel) { FullscreenDialogFragment f = new FullscreenDialogFragment(); Bundle args = new Bundle(); args.putInt(VIEW_LAYOUT_ID, viewLayoutResId); args.putString(TRACKER_LABEL, trackerLabel); f.setArguments(args); return f; } private String mTrackerLabel; private DialogView mDialogView; @Override public Dialog onCreateDialog(Bundle savedInstanceState) { FullscreenDialog dialog = new FullscreenDialog(getActivity(), R.style.Theme_TV_dialog_Fullscreen); LayoutInflater inflater = LayoutInflater.from(getActivity()); Bundle args = getArguments(); mTrackerLabel = args.getString(TRACKER_LABEL); int viewLayoutResId = args.getInt(VIEW_LAYOUT_ID); View v = inflater.inflate(viewLayoutResId, null); dialog.setContentView(v); mDialogView = (DialogView) v; mDialogView.initialize((MainActivity) getActivity(), dialog); return dialog; } @Override public void onDestroy() { super.onDestroy(); mDialogView.onDestroy(); } @Override public String getTrackerLabel() { return mTrackerLabel; } private class FullscreenDialog extends Dialog { public FullscreenDialog(Context context, int theme) { super(context, theme); } @Override public void setContentView(View dialogView) { super.setContentView(dialogView); mDialogView = (DialogView) dialogView; } @Override public boolean dispatchKeyEvent(KeyEvent event) { boolean handled = super.dispatchKeyEvent(event); return handled || ((View) mDialogView).dispatchKeyEvent(event); } @Override public void onBackPressed() { mDialogView.onBackPressed(); } } /** Interface for the view of {@link FullscreenDialogFragment}. */ public interface DialogView { /** Called after the view is inflated and attached to the dialog. */ void initialize(MainActivity activity, Dialog dialog); /** Called when a back key is pressed. */ void onBackPressed(); /** Called when {@link DialogFragment#onDestroy} is called. */ void onDestroy(); } }