public void show(KrollDict options) { AlertDialog dialog = (AlertDialog) dialogWrapper.getDialog(); if (dialog == null) { if (dialogWrapper.getActivity() == null) { TiBaseActivity dialogActivity = (TiBaseActivity) getCurrentActivity(); dialogWrapper.setActivity(new WeakReference<TiBaseActivity>(dialogActivity)); } // processProperties(proxy.getProperties()); getBuilder() .setOnCancelListener( new OnCancelListener() { @Override public void onCancel(DialogInterface dlg) { int cancelIndex = (proxy.hasProperty(TiC.PROPERTY_CANCEL)) ? TiConvert.toInt(proxy.getProperty(TiC.PROPERTY_CANCEL)) : -1; Log.d( TAG, "onCancelListener called. Sending index: " + cancelIndex + ", hideOnClick: " + hideOnClick, Log.DEBUG_MODE); handleEvent(cancelIndex, false); if (hideOnClick == true) hide(null); } }); dialog = getBuilder().create(); dialog.setOnShowListener( new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface dialog) { TiApplication.getInstance().cancelPauseEvent(); } }); dialog.setCancelable(hideOnClick); dialog.setCanceledOnTouchOutside(tapToDismiss); dialog.setOnKeyListener( new Dialog.OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) { if (proxy.hasListeners(TiC.EVENT_ANDROID_BACK)) { proxy.fireEvent(TiC.EVENT_ANDROID_BACK); } else if (hideOnClick) { handleEvent(cancelIndex, false); hide(null); } } return true; } }); // Initially apply accessibility properties here, the first time // the dialog actually becomes available. After this, propertyChanged // can also be used. ListView listView = dialog.getListView(); if (listView != null) { listView.setContentDescription(composeContentDescription()); int importance = ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_AUTO; if (proxy != null) { Object propertyValue = proxy.getProperty(TiC.PROPERTY_ACCESSIBILITY_HIDDEN); if (propertyValue != null && TiConvert.toBoolean(propertyValue)) { importance = ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_NO; } } ViewCompat.setImportantForAccessibility(listView, importance); } dialogWrapper.setDialog(dialog); builder = null; } try { Activity dialogActivity = dialogWrapper.getActivity(); if (dialogActivity != null && !dialogActivity.isFinishing()) { if (dialogActivity instanceof TiBaseActivity) { // add dialog to its activity so we can clean it up later to prevent memory leak. ((TiBaseActivity) dialogActivity).addDialog(dialogWrapper); dialog.show(); setButtonsListeners(dialog); fireEvent(TiC.EVENT_OPEN, null, false); } } else { dialog = null; Log.w( TAG, "Dialog activity is destroyed, unable to show dialog with message: " + TiConvert.toString(proxy.getProperty(TiC.PROPERTY_MESSAGE))); } } catch (Throwable t) { Log.w(TAG, "Context must have gone away: " + t.getMessage(), t); } }
@Override public void propertySet(String key, Object newValue, Object oldValue, boolean changedProperty) { AlertDialog dialog = (AlertDialog) dialogWrapper.getDialog(); if (key.startsWith(TiC.PROPERTY_ACCESSIBILITY_PREFIX)) { if (dialog != null) { ListView listView = dialog.getListView(); if (listView != null) { if (key.equals(TiC.PROPERTY_ACCESSIBILITY_HIDDEN)) { int importance = ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_AUTO; if (newValue != null && TiConvert.toBoolean(newValue)) { importance = ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_NO; } ViewCompat.setImportantForAccessibility(listView, importance); } else { listView.setContentDescription(composeContentDescription()); } } } return; } switch (key) { case TiC.PROPERTY_TITLE: if (dialog != null) { dialog.setTitle(Html.fromHtml((String) newValue)); } else { getBuilder().setTitle(Html.fromHtml(TiConvert.toString(newValue))); } break; case TiC.PROPERTY_MESSAGE: if (dialog != null) { dialog.setMessage(Html.fromHtml((String) newValue)); } else { getBuilder().setMessage(Html.fromHtml(TiConvert.toString(newValue))); } break; case TiC.PROPERTY_BUTTON_NAMES: clearDialog(); processButtons(TiConvert.toStringArray(newValue)); break; case TiC.PROPERTY_OK: clearDialog(); processButtons(new String[] {TiConvert.toString(newValue)}); break; case TiC.PROPERTY_CUSTOM_VIEW: clearDialog(); processView(newValue); break; case TiC.PROPERTY_PERSISTENT: dialogWrapper.setPersistent(TiConvert.toBoolean(newValue)); break; case TiC.PROPERTY_CANCEL: cancelIndex = TiConvert.toInt(newValue, -1); break; case TiC.PROPERTY_OPTIONS: { mProcessUpdateFlags |= TIFLAG_NEEDS_OPTIONS; break; } case TiC.PROPERTY_SELECTED_INDEX: { mProcessUpdateFlags |= TIFLAG_NEEDS_OPTIONS; break; } case TiC.PROPERTY_HIDE_ON_CLICK: hideOnClick = TiConvert.toBoolean(newValue); if (dialog != null) { dialog.setCancelable(hideOnClick); } break; case TiC.PROPERTY_TAP_OUT_DISMISS: tapToDismiss = TiConvert.toBoolean(newValue); if (dialog != null) { dialog.setCanceledOnTouchOutside(tapToDismiss); } break; default: super.propertySet(key, newValue, oldValue, changedProperty); break; } }
@Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { kanal = DRData.instans.grunddata.kanalFraKode.get(getArguments().getString(Kanal_frag.P_kode)); udsendelse = DRData.instans.udsendelseFraSlug.get(getArguments().getString(DRJson.Slug.name())); if (udsendelse == null) { if (!App.PRODUKTION) Log.rapporterFejl( new IllegalStateException("afbrydManglerData " + getArguments().toString())); afbrydManglerData(); return rod; } if (kanal == null) kanal = udsendelse.getKanal(); if ("".equals(kanal.slug)) { Log.d("Kender ikke kanalen"); } if (App.fejlsøgning) App.kortToast(udsendelse.programserieSlug); blokerVidereNavigering = getArguments().getBoolean(BLOKER_VIDERE_NAVIGERING); if (DRData.instans.programserieSlugFindesIkke.contains(udsendelse.programserieSlug)) { blokerVidereNavigering = true; } Log.d("onCreateView " + this); rod = inflater.inflate(R.layout.udsendelse_frag, container, false); final AQuery aq = new AQuery(rod); listView = aq.id(R.id.listView).adapter(adapter).getListView(); listView.setEmptyView(aq.id(R.id.tom).typeface(App.skrift_gibson).getView()); listView.setOnItemClickListener(this); listView.setContentDescription( udsendelse.titel + " - " + (udsendelse.startTid == null ? "" : DRJson.datoformat.format(udsendelse.startTid))); DRData.instans.hentedeUdsendelser.tjekOmHentet(udsendelse); hentStreams.run(); setHasOptionsMenu(true); bygListe(); afspiller.observatører.add(this); DRData.instans.hentedeUdsendelser.observatører.add(this); DRData.instans.favoritter.observatører.add(opdaterFavoritter); udvikling_checkDrSkrifter(rod, this + " rod"); /* ListViewScrollObserver listViewScrollObserver = new ListViewScrollObserver(listView); listViewScrollObserver.setOnScrollUpAndDownListener(new ListViewScrollObserver.OnListViewScrollListener() { boolean actionBarSkjult = false; @Override public void onScrollUpDownChanged(int delta, int scrollPosition, boolean exact) { Log.d("scrollPosition="+scrollPosition + " delta="+delta); boolean nyActionBarSkjult = scrollPosition>0; if (actionBarSkjult == nyActionBarSkjult) return; actionBarSkjult = nyActionBarSkjult; if (actionBarSkjult) { ((Basisaktivitet) getActivity()).getSupportActionBar().hide(); } else { ((Basisaktivitet) getActivity()).getSupportActionBar().show(); } } @Override public void onScrollIdle() { } }); listView.setOnScrollListener(new AbsListView.OnScrollListener() { boolean actionBarSkjult = false; @Override public void onScrollStateChanged(AbsListView view, int scrollState) { Log.d("onScrollStateChanged "+scrollState); } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { Log.d("onScroll " + firstVisibleItem+ " " +visibleItemCount+ " " +totalItemCount); boolean nyActionBarSkjult = firstVisibleItem>0; if (actionBarSkjult == nyActionBarSkjult) return; actionBarSkjult = nyActionBarSkjult; if (actionBarSkjult) { ((Basisaktivitet) getActivity()).getSupportActionBar().hide();; } else { ((Basisaktivitet) getActivity()).getSupportActionBar().show(); } } }); */ return rod; }