SeekBarBindingAdapter.java revision 716ba89e7f459f49ea85070d4710c1d79d715298
1/*
2 * Copyright (C) 2015 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package android.databinding.adapters;
17
18import android.databinding.BindingAdapter;
19import android.widget.SeekBar;
20import android.widget.SeekBar.OnSeekBarChangeListener;
21
22public class SeekBarBindingAdapter {
23    @BindingAdapter("android:onProgressChanged")
24    public static void setListener(SeekBar view, OnProgressChanged listener) {
25        setListener(view, null, null, listener);
26    }
27
28    @BindingAdapter("android:onStartTrackingTouch")
29    public static void setListener(SeekBar view, OnStartTrackingTouch listener) {
30        setListener(view, listener, null, null);
31    }
32
33    @BindingAdapter("android:onStopTrackingTouch")
34    public static void setListener(SeekBar view, OnStopTrackingTouch listener) {
35        setListener(view, null, listener, null);
36    }
37
38    @BindingAdapter({"android:onStartTrackingTouch", "android:onStopTrackingTouch"})
39    public static void setListener(SeekBar view, final OnStartTrackingTouch start,
40            final OnStopTrackingTouch stop) {
41        setListener(view, start, stop, null);
42    }
43
44    @BindingAdapter({"android:onStartTrackingTouch", "android:onProgressChanged"})
45    public static void setListener(SeekBar view, final OnStartTrackingTouch start,
46            final OnProgressChanged progressChanged) {
47        setListener(view, start, null, progressChanged);
48    }
49
50    @BindingAdapter({"android:onStopTrackingTouch", "android:onProgressChanged"})
51    public static void setListener(SeekBar view, final OnStopTrackingTouch stop,
52            final OnProgressChanged progressChanged) {
53        setListener(view, null, stop, progressChanged);
54    }
55
56    @BindingAdapter({"android:onStartTrackingTouch", "android:onStopTrackingTouch", "android:onProgressChanged"})
57    public static void setListener(SeekBar view, final OnStartTrackingTouch start,
58            final OnStopTrackingTouch stop, final OnProgressChanged progressChanged) {
59        if (start == null && stop == null && progressChanged == null) {
60            view.setOnSeekBarChangeListener(null);
61        } else {
62            view.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
63                @Override
64                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
65                    if (progressChanged != null) {
66                        progressChanged.onProgressChanged(seekBar, progress, fromUser);
67                    }
68                }
69
70                @Override
71                public void onStartTrackingTouch(SeekBar seekBar) {
72                    if (start != null) {
73                        start.onStartTrackingTouch(seekBar);
74                    }
75                }
76
77                @Override
78                public void onStopTrackingTouch(SeekBar seekBar) {
79                    if (stop != null) {
80                        stop.onStopTrackingTouch(seekBar);
81                    }
82                }
83            });
84        }
85    }
86
87    public interface OnStartTrackingTouch {
88        void onStartTrackingTouch(SeekBar seekBar);
89    }
90
91    public interface OnStopTrackingTouch {
92        void onStopTrackingTouch(SeekBar seekBar);
93    }
94
95    public interface OnProgressChanged {
96        void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser);
97    }
98}
99