package com.gettingmobile.android.app; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.Button; import com.gettingmobile.goodnews.Application; import com.gettingmobile.goodnews.R; import roboguice.RoboGuice; public final class AdaptiveDialogTabletFragment extends DialogFragment implements AdaptiveDialogInterface { private AdaptiveDialogHandler dlgHandler; private Dialog dlg = null; private AdaptiveDialogLayout layout = null; public AdaptiveDialogTabletFragment() { } /* * AdaptiveDialogInterface */ @Override public Button getRightButton() { return layout.rightButton; } @Override public Button getLeftButton() { return layout.leftButton; } @Override public Button getMiddleButton() { return layout.middleButton; } @Override public Application getApp() { return (Application) getActivity().getApplication(); } @Override public void setTitle(CharSequence title) { dlg.setTitle(title); } @Override public void setTitle(int titleId) { dlg.setTitle(titleId); } /* * lifecycle management */ @Override public Dialog onCreateDialog(Bundle savedInstanceState) { dlgHandler = AdaptiveDialogHandler.createDialogHandlerFromIntent(getActivity(), getActivity().getIntent()); dlgHandler.setDialog(this); dlg = new Dialog(getActivity()); final ViewGroup dlgLayout = (ViewGroup) dlg.getLayoutInflater().inflate(R.layout.dialog, null); layout = new AdaptiveDialogLayout(dlgLayout, dlgHandler); final ViewGroup view = (ViewGroup) dlgLayout.findViewById(R.id.dialog); getActivity().getLayoutInflater().inflate(dlgHandler.getLayoutId(), view); dlg.setContentView(dlgLayout); dlg.getWindow().setLayout(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.FILL_PARENT); RoboGuice.getInjector(getActivity()).injectMembersWithoutViews(dlgHandler); dlgHandler.onCreate(view); if (savedInstanceState != null) { dlgHandler.onRestoreInstanceState( savedInstanceState.getBundle(AdaptiveDialogHandler.EXTRA_KEY_HANDLER_EXTRAS)); } return dlg; } @Override public void onStart() { super.onStart(); dlgHandler.onStart(); } @Override public void onSaveInstanceState(Bundle outState) { final Bundle handlerBundle = new Bundle(); dlgHandler.onSaveInstanceState(handlerBundle); outState.putBundle(AdaptiveDialogHandler.EXTRA_KEY_HANDLER_EXTRAS, handlerBundle); super.onSaveInstanceState(outState); } /* * action handling */ @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); if (getActivity() != null) { getActivity().finish(); } } }