Example usage for android.preference Preference getOnPreferenceClickListener

List of usage examples for android.preference Preference getOnPreferenceClickListener

Introduction

In this page you can find the example usage for android.preference Preference getOnPreferenceClickListener.

Prototype

public OnPreferenceClickListener getOnPreferenceClickListener() 

Source Link

Document

Returns the callback to be invoked when this Preference is clicked.

Usage

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;
}