/* © 2010 Stephan Reichholf <stephan at reichholf dot net> * * Licensed under the Create-Commons Attribution-Noncommercial-Share Alike 3.0 Unported * http://creativecommons.org/licenses/by-nc-sa/3.0/ */ package net.reichholf.dreamdroid.fragment.dialogs; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.BottomSheetBehavior; import android.support.v7.app.AlertDialog; import android.support.v7.widget.Toolbar; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import net.reichholf.dreamdroid.R; import net.reichholf.dreamdroid.helpers.ExtendedHashMap; import net.reichholf.dreamdroid.helpers.Statics; import net.reichholf.dreamdroid.helpers.enigma2.Event; import java.util.HashMap; /** * @author sre */ public class EpgDetailDialog extends BottomSheetActionDialog { private ExtendedHashMap mCurrentItem; public EpgDetailDialog() { } @Override public void onDestroyView() { if (getDialog() != null && getRetainInstance()) getDialog().setDismissMessage(null); super.onDestroyView(); } @Override public void onSaveInstanceState(Bundle outState) { outState.putString("WORKAROUND_FOR_BUG_19917_KEY", "WORKAROUND_FOR_BUG_19917_VALUE"); super.onSaveInstanceState(outState); } @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Dialog dialog; Bundle args = getArguments(); mCurrentItem = new ExtendedHashMap((HashMap<String, Object>) args.get("currentItem")); final boolean isNext = args.getBoolean("showNext", false); String prefix = ""; if (isNext) prefix = Event.PREFIX_NEXT; String servicename = mCurrentItem.getString(Event.KEY_SERVICE_NAME); String title = mCurrentItem.getString(prefix + Event.KEY_EVENT_TITLE); String date = mCurrentItem.getString(prefix + Event.KEY_EVENT_START_READABLE); if (!"N/A".equals(title) && date != null) { dialog = super.onCreateDialog(savedInstanceState); date = date.concat(" (" + mCurrentItem.getString(prefix + Event.KEY_EVENT_DURATION_READABLE) + " " + getText(R.string.minutes_short) + ")"); String descShort = mCurrentItem.getString(prefix + Event.KEY_EVENT_DESCRIPTION, ""); String descEx = mCurrentItem.getString(prefix + Event.KEY_EVENT_DESCRIPTION_EXTENDED); View view = View.inflate(getContext(), R.layout.epg_item_dialog, null); Toolbar tb = (Toolbar) view.findViewById(R.id.toolbar_epg_detail); tb.setTitle(title); TextView textServiceName = (TextView) view.findViewById(R.id.service_name); textServiceName.setText(servicename); TextView textShort = (TextView) view.findViewById(R.id.epg_short); if ("".equals(descShort)) textShort.setVisibility(View.GONE); else textShort.setText(descShort); TextView textTime = (TextView) view.findViewById(R.id.epg_time); textTime.setText(date); TextView textDescEx = (TextView) view.findViewById(R.id.epg_description_extended); textDescEx.setText(descEx); Button buttonSetTimer = (Button) view.findViewById(R.id.ButtonSetTimer); buttonSetTimer.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finishDialog(Statics.ACTION_SET_TIMER, isNext); } }); Button buttonEditTimer = (Button) view.findViewById(R.id.ButtonEditTimer); buttonEditTimer.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finishDialog(Statics.ACTION_EDIT_TIMER, isNext); } }); Button buttonIMDb = (Button) view.findViewById(R.id.ButtonImdb); buttonIMDb.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finishDialog(Statics.ACTION_IMDB, isNext); } }); Button buttonSimilar = (Button) view.findViewById(R.id.ButtonSimilar); buttonSimilar.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finishDialog(Statics.ACTION_FIND_SIMILAR, isNext); } }); dialog.setContentView(view); BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(((View) view.getParent())); if (bottomSheetBehavior != null) { bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED); } } else { dialog = new AlertDialog.Builder(getContext()) .setTitle(R.string.not_available) .setMessage(R.string.no_epg_available) .setPositiveButton(R.string.close, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dismiss(); } }).create(); } return dialog; } }