List of usage examples for android.preference Preference getOnPreferenceClickListener
public OnPreferenceClickListener getOnPreferenceClickListener()
From source file:de.azapps.mirakel.settings.model_settings.special_list.helper.SpecialListsConditionAdapter.java
public static SpecialListsConditionAdapter setUpListView(final @NonNull SpecialList list, final @NonNull DragSortListView listView, final @NonNull Activity activity, final @NonNull FragmentManager fm, final @NonNull ArrayList<Integer> backStack, @NonNull final EditDialogFragment.OnPropertyEditListener listener, @NonNull final Button add, final @NonNull List<Preference> topPrefernces) { final List<SpecialListsBaseProperty> conditions = new ArrayList<>(); final SpecialListsConjunctionList rootProperty = getRootProperty(list.getWhere(), conditions, backStack); final List<SpecialListsViewHelper> data = new ArrayList<>( Collections2.transform(topPrefernces, new Function<Preference, SpecialListsViewHelper>() { @Override//from ww w. jav a 2s .c o m public SpecialListsViewHelper apply(Preference input) { return new SpecialListsViewHelper(input, activity); } })); data.addAll(getTransformedCondition(activity, conditions)); final SpecialListsConditionAdapter adapter = new SpecialListsConditionAdapter(activity, 0, data); listView.setAdapter(adapter); listView.setDragEnabled(true); listView.setParts(topPrefernces.size()); listView.setRemoveListener(new DragSortListView.RemoveListener() { @Override public void remove(final int which) { adapter.cancleUndo(backStack); final SpecialListsBaseProperty property = adapter.getData().get(which).getCondition().get();// only conditions can be removed, so its safe to call this here final SpecialList listToSave = EditDialogFragment.execOnTree(list, backStack, new EditDialogFragment.WorkOnTree() { @Override public void onTreeExists(final int position, @NonNull final SpecialListsConjunctionList currentProperty) { currentProperty.getChilds().remove(which - adapter.preferencesCount); } @NonNull @Override public Optional<SpecialListsBaseProperty> onTreeNotExists() { return absent(); } }, 0); listToSave.save(); adapter.setNewList(listToSave, backStack); backStack.add(which - adapter.preferencesCount); if (backStack.size() < 2) { final UndoBarController.UndoBar undo = new UndoBarController.UndoBar(activity); adapter.setUndo(of(undo)); undo.message(activity.getString(R.string.Undo)) .listener(new UndoBarController.AdvancedUndoListener() { @Override public void onHide(final Parcelable parcelable) { adapter.cancleUndo(backStack); } @Override public void onClear() { } @Override public void onUndo(final Parcelable parcelable) { final SpecialList listToSave = EditDialogFragment.execOnTree(list, backStack, new EditDialogFragment.WorkOnTree() { @Override public void onTreeExists(final int position, @NonNull final SpecialListsConjunctionList currentProperty) { final List<SpecialListsBaseProperty> childs = new ArrayList<>(); final List<SpecialListsBaseProperty> oldChilds = currentProperty .getChilds(); boolean added = false; for (int j = 0; j < oldChilds.size(); j++) { if (!added && (j == backStack.get(position))) { childs.add(property); added = true; } childs.add(oldChilds.get(j)); } if (!added) { childs.add(property); } currentProperty.setChilds(childs); } @NonNull @Override public Optional<SpecialListsBaseProperty> onTreeNotExists() { return of(property); } }, 1); listToSave.save(); adapter.cancleUndo(backStack); adapter.setNewList(listToSave, backStack); } }).show(); } } }); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { final SpecialListsViewHelper item = adapter.getItem(position); if (item.getType() == SpecialListsViewHelper.Type.CONDITION) { adapter.cancleUndo(backStack); backStack.add(position - adapter.preferencesCount); final SpecialListsBaseProperty property = item.getCondition().get(); EditDialogFragment.newInstance(list, property, backStack, listener, rootProperty).show(fm, "editdialog"); } else { final Preference pref = item.getPreference().get(); if (pref.getOnPreferenceClickListener() != null) { pref.getOnPreferenceClickListener().onPreferenceClick(pref); } } } }); add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { adapter.cancleUndo(backStack); final SpecialListsDoneProperty property = new SpecialListsDoneProperty(false); backStack.add(NEW_PROPERTY); EditDialogFragment.newInstance(list, property, backStack, listener, rootProperty).show(fm, "editdialog"); } }); return adapter; }