Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit a9d2ef9

Browse files
authored
Merge pull request #338 from code-troopers/feature/dismissListener
add dismiss listener to all pickers
2 parents 3b5f425 + 581ec03 commit a9d2ef9

26 files changed

+954
-153
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.codetroopers.betterpickers;
2+
3+
import android.content.DialogInterface;
4+
5+
public interface OnDialogDismissListener {
6+
7+
void onDialogDismiss(DialogInterface dialoginterface);
8+
}

library/src/main/java/com/codetroopers/betterpickers/calendardatepicker/CalendarDatePickerDialogFragment.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import android.widget.TextView;
4242

4343
import com.codetroopers.betterpickers.HapticFeedbackController;
44+
import com.codetroopers.betterpickers.OnDialogDismissListener;
4445
import com.codetroopers.betterpickers.R;
4546
import com.codetroopers.betterpickers.Utils;
4647
import com.codetroopers.betterpickers.calendardatepicker.MonthAdapter.CalendarDay;
@@ -144,11 +145,6 @@ public interface OnDateChangedListener {
144145
public void onDateChanged();
145146
}
146147

147-
public static interface OnDialogDismissListener {
148-
149-
public abstract void onDialogDismiss(DialogInterface dialoginterface);
150-
}
151-
152148
public CalendarDatePickerDialogFragment() {
153149
// Empty constructor required for dialog fragment.
154150
mStyleResId = R.style.BetterPickersRadialTimePickerDialog_PrimaryColor;

library/src/main/java/com/codetroopers/betterpickers/datepicker/DatePickerBuilder.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import android.support.v4.app.FragmentTransaction;
66
import android.util.Log;
77

8+
import com.codetroopers.betterpickers.OnDialogDismissListener;
89
import com.codetroopers.betterpickers.datepicker.DatePickerDialogFragment.DatePickerDialogHandler;
910

1011
import java.util.Vector;
@@ -23,6 +24,7 @@ public class DatePickerBuilder {
2324
private Boolean yearOptional = false;
2425
private int mReference = -1;
2526
private Vector<DatePickerDialogHandler> mDatePickerDialogHandlers = new Vector<DatePickerDialogHandler>();
27+
private OnDialogDismissListener mOnDismissListener;
2628

2729
/**
2830
* Attach a FragmentManager. This is required for creation of the Fragment.
@@ -141,6 +143,12 @@ public DatePickerBuilder removeDatePickerDialogHandler(DatePickerDialogHandler h
141143
return this;
142144
}
143145

146+
147+
public DatePickerBuilder setOnDismissListener(OnDialogDismissListener onDismissListener) {
148+
this.mOnDismissListener = onDismissListener;
149+
return this;
150+
}
151+
144152
/**
145153
* Instantiate and show the Picker
146154
*/
@@ -163,6 +171,7 @@ public void show() {
163171
fragment.setTargetFragment(targetFragment, 0);
164172
}
165173
fragment.setDatePickerDialogHandlers(mDatePickerDialogHandlers);
174+
fragment.setOnDismissListener(mOnDismissListener);
166175
fragment.show(ft, "date_dialog");
167176
}
168177
}

library/src/main/java/com/codetroopers/betterpickers/datepicker/DatePickerDialogFragment.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.codetroopers.betterpickers.datepicker;
22

33
import android.app.Activity;
4+
import android.content.DialogInterface;
45
import android.content.res.ColorStateList;
56
import android.content.res.TypedArray;
67
import android.os.Bundle;
@@ -11,6 +12,7 @@
1112
import android.view.ViewGroup;
1213
import android.widget.Button;
1314

15+
import com.codetroopers.betterpickers.OnDialogDismissListener;
1416
import com.codetroopers.betterpickers.R;
1517

1618
import java.util.Vector;
@@ -40,6 +42,7 @@ public class DatePickerDialogFragment extends DialogFragment {
4042
private ColorStateList mTextColor;
4143
private int mDialogBackgroundResId;
4244
private Vector<DatePickerDialogHandler> mDatePickerDialogHandlers = new Vector<DatePickerDialogHandler>();
45+
private OnDialogDismissListener mDismissCallback;
4346

4447
/**
4548
* Create an instance of the Picker (used internally)
@@ -52,7 +55,7 @@ public class DatePickerDialogFragment extends DialogFragment {
5255
* @return a Picker!
5356
*/
5457
public static DatePickerDialogFragment newInstance(int reference, int themeResId, Integer monthOfYear,
55-
Integer dayOfMonth, Integer year, Boolean yearOptional) {
58+
Integer dayOfMonth, Integer year, Boolean yearOptional) {
5659
final DatePickerDialogFragment frag = new DatePickerDialogFragment();
5760
Bundle args = new Bundle();
5861
args.putInt(REFERENCE_KEY, reference);
@@ -160,12 +163,16 @@ public void onClick(View view) {
160163
return view;
161164
}
162165

163-
/**
164-
* This interface allows objects to register for the Picker's set action.
165-
*/
166-
public interface DatePickerDialogHandler {
166+
@Override
167+
public void onDismiss(DialogInterface dialoginterface) {
168+
super.onDismiss(dialoginterface);
169+
if (mDismissCallback != null) {
170+
mDismissCallback.onDialogDismiss(dialoginterface);
171+
}
172+
}
167173

168-
void onDialogDateSet(int reference, int year, int monthOfYear, int dayOfMonth);
174+
public void setOnDismissListener(OnDialogDismissListener ondialogdismisslistener) {
175+
mDismissCallback = ondialogdismisslistener;
169176
}
170177

171178
/**
@@ -176,4 +183,12 @@ public interface DatePickerDialogHandler {
176183
public void setDatePickerDialogHandlers(Vector<DatePickerDialogHandler> handlers) {
177184
mDatePickerDialogHandlers = handlers;
178185
}
186+
187+
/**
188+
* This interface allows objects to register for the Picker's set action.
189+
*/
190+
public interface DatePickerDialogHandler {
191+
192+
void onDialogDateSet(int reference, int year, int monthOfYear, int dayOfMonth);
193+
}
179194
}

library/src/main/java/com/codetroopers/betterpickers/expirationpicker/ExpirationPickerBuilder.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import android.support.v4.app.FragmentTransaction;
66
import android.util.Log;
77

8+
import com.codetroopers.betterpickers.OnDialogDismissListener;
89
import com.codetroopers.betterpickers.expirationpicker.ExpirationPickerDialogFragment.ExpirationPickerDialogHandler;
910

1011
import java.util.Vector;
@@ -22,6 +23,7 @@ public class ExpirationPickerBuilder {
2223
private Integer year;
2324
private int mReference = -1;
2425
private Vector<ExpirationPickerDialogHandler> mExpirationPickerDialogHandlers = new Vector<ExpirationPickerDialogHandler>();
26+
private OnDialogDismissListener mOnDismissListener;
2527

2628
/**
2729
* Attach a FragmentManager. This is required for creation of the Fragment.
@@ -150,6 +152,12 @@ public void show() {
150152
fragment.setTargetFragment(targetFragment, 0);
151153
}
152154
fragment.setExpirationPickerDialogHandlers(mExpirationPickerDialogHandlers);
155+
fragment.setOnDismissListener(mOnDismissListener);
153156
fragment.show(ft, "expiration_dialog");
154157
}
158+
159+
public ExpirationPickerBuilder setOnDismissListener(OnDialogDismissListener onDismissListener) {
160+
this.mOnDismissListener = onDismissListener;
161+
return this;
162+
}
155163
}

library/src/main/java/com/codetroopers/betterpickers/expirationpicker/ExpirationPickerDialogFragment.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.codetroopers.betterpickers.expirationpicker;
22

33
import android.app.Activity;
4+
import android.content.DialogInterface;
45
import android.content.res.ColorStateList;
56
import android.content.res.TypedArray;
67
import android.os.Bundle;
@@ -11,6 +12,7 @@
1112
import android.view.ViewGroup;
1213
import android.widget.Button;
1314

15+
import com.codetroopers.betterpickers.OnDialogDismissListener;
1416
import com.codetroopers.betterpickers.R;
1517

1618
import java.util.Vector;
@@ -37,6 +39,7 @@ public class ExpirationPickerDialogFragment extends DialogFragment {
3739
private int mDialogBackgroundResId;
3840
private Vector<ExpirationPickerDialogHandler> mExpirationPickerDialogHandlers = new Vector<ExpirationPickerDialogHandler>();
3941
private ColorStateList mTextColor;
42+
private OnDialogDismissListener mDismissCallback;
4043

4144
/**
4245
* Create an instance of the Picker (used internally)
@@ -161,6 +164,19 @@ public void onClick(View view) {
161164
return view;
162165
}
163166

167+
168+
@Override
169+
public void onDismiss(DialogInterface dialoginterface) {
170+
super.onDismiss(dialoginterface);
171+
if (mDismissCallback != null) {
172+
mDismissCallback.onDialogDismiss(dialoginterface);
173+
}
174+
}
175+
176+
public void setOnDismissListener(OnDialogDismissListener ondialogdismisslistener) {
177+
mDismissCallback = ondialogdismisslistener;
178+
}
179+
164180
/**
165181
* This interface allows objects to register for the Picker's set action.
166182
*/

library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPickerBuilder.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import android.support.v4.app.FragmentTransaction;
66
import android.util.Log;
77

8+
import com.codetroopers.betterpickers.OnDialogDismissListener;
9+
810
import java.util.Vector;
911

1012
/**
@@ -21,6 +23,7 @@ public class HmsPickerBuilder {
2123
private int mMinutes;
2224
private int mSeconds;
2325
private Integer plusMinusVisibility;
26+
private OnDialogDismissListener mOnDismissListener;
2427

2528
/**
2629
* Set the visibility of the +/- button. This takes an int corresponding to Android's View.VISIBLE, View.INVISIBLE,
@@ -171,11 +174,16 @@ public void show() {
171174
if ((mHours | mMinutes | mSeconds) != 0) {
172175
fragment.setTime(mHours, mMinutes, mSeconds);
173176
}
174-
177+
fragment.setOnDismissListener(mOnDismissListener);
175178
fragment.show(ft, "hms_dialog");
176179
}
177180

178181
private static int bounded(int i, int min, int max) {
179182
return Math.min(Math.max(i, min), max);
180183
}
184+
185+
public HmsPickerBuilder setOnDismissListener(OnDialogDismissListener onDismissListener) {
186+
this.mOnDismissListener = onDismissListener;
187+
return this;
188+
}
181189
}

library/src/main/java/com/codetroopers/betterpickers/hmspicker/HmsPickerDialogFragment.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.codetroopers.betterpickers.hmspicker;
22

33
import android.app.Activity;
4+
import android.content.DialogInterface;
45
import android.content.res.ColorStateList;
56
import android.content.res.TypedArray;
67
import android.os.Bundle;
@@ -11,14 +12,15 @@
1112
import android.view.ViewGroup;
1213
import android.widget.Button;
1314

15+
import com.codetroopers.betterpickers.OnDialogDismissListener;
1416
import com.codetroopers.betterpickers.R;
1517

1618
import java.util.Vector;
1719

1820
/**
1921
* Dialog to set alarm time.
2022
*/
21-
public class HmsPickerDialogFragment extends DialogFragment {
23+
public class HmsPickerDialogFragment extends DialogFragment {
2224

2325
private static final String REFERENCE_KEY = "HmsPickerDialogFragment_ReferenceKey";
2426
private static final String THEME_RES_ID_KEY = "HmsPickerDialogFragment_ThemeResIdKey";
@@ -35,6 +37,7 @@ public class HmsPickerDialogFragment extends DialogFragment {
3537
private int mMinutes;
3638
private int mSeconds;
3739
private int mPlusMinusVisibility = View.INVISIBLE;
40+
private OnDialogDismissListener mDismissCallback;
3841

3942
/**
4043
* Create an instance of the Picker (used internally)
@@ -102,7 +105,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
102105
cancelButton.setOnClickListener(new View.OnClickListener() {
103106
@Override
104107
public void onClick(View view) {
105-
dismiss();
108+
HmsPickerDialogFragment.this.dismiss();
106109
}
107110
});
108111
doneButton.setTextColor(mTextColor);
@@ -141,14 +144,27 @@ public void onClick(View view) {
141144
return view;
142145
}
143146

147+
148+
@Override
149+
public void onDismiss(DialogInterface dialoginterface) {
150+
super.onDismiss(dialoginterface);
151+
if (mDismissCallback != null) {
152+
mDismissCallback.onDialogDismiss(dialoginterface);
153+
}
154+
}
155+
156+
public void setOnDismissListener(OnDialogDismissListener ondialogdismisslistener) {
157+
mDismissCallback = ondialogdismisslistener;
158+
}
159+
144160
public interface HmsPickerDialogHandlerV2 {
145161

146162
void onDialogHmsSet(int reference, boolean isNegative, int hours, int minutes, int seconds);
147163
}
148164

149165
/**
150166
* @param handlers a Vector of handlers
151-
* Attach a Vector of handlers to be notified in addition to the Fragment's Activity and target Fragment.
167+
* Attach a Vector of handlers to be notified in addition to the Fragment's Activity and target Fragment.
152168
*/
153169
public void setHmsPickerDialogHandlersV2(Vector<HmsPickerDialogHandlerV2> handlers) {
154170
mHmsPickerDialogHandlerV2s = handlers;

library/src/main/java/com/codetroopers/betterpickers/numberpicker/NumberPickerBuilder.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import android.support.v4.app.FragmentTransaction;
66
import android.util.Log;
77

8+
import com.codetroopers.betterpickers.OnDialogDismissListener;
89
import com.codetroopers.betterpickers.numberpicker.NumberPickerDialogFragment.NumberPickerDialogHandlerV2;
910

1011
import java.math.BigDecimal;
@@ -28,6 +29,7 @@ public class NumberPickerBuilder {
2829
private Integer currentNumberValue;
2930
private Double currentDecimalValue;
3031
private Integer currentSignValue;
32+
private OnDialogDismissListener mOnDismissListener;
3133

3234
/**
3335
* Attach a FragmentManager. This is required for creation of the Fragment.
@@ -220,6 +222,12 @@ public void show() {
220222
fragment.setTargetFragment(targetFragment, 0);
221223
}
222224
fragment.setNumberPickerDialogHandlersV2(mNumberPickerDialogHandlersV2);
225+
fragment.setOnDismissListener(mOnDismissListener);
223226
fragment.show(ft, "number_dialog");
224227
}
228+
229+
public NumberPickerBuilder setOnDismissListener(OnDialogDismissListener onDismissListener) {
230+
this.mOnDismissListener = onDismissListener;
231+
return this;
232+
}
225233
}

library/src/main/java/com/codetroopers/betterpickers/numberpicker/NumberPickerDialogFragment.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.codetroopers.betterpickers.numberpicker;
22

33
import android.app.Activity;
4+
import android.content.DialogInterface;
45
import android.content.res.ColorStateList;
56
import android.content.res.TypedArray;
67
import android.os.Bundle;
@@ -11,6 +12,7 @@
1112
import android.view.ViewGroup;
1213
import android.widget.Button;
1314

15+
import com.codetroopers.betterpickers.OnDialogDismissListener;
1416
import com.codetroopers.betterpickers.R;
1517

1618
import java.math.BigDecimal;
@@ -49,6 +51,8 @@ public class NumberPickerDialogFragment extends DialogFragment {
4951
private int mPlusMinusVisibility = View.VISIBLE;
5052
private int mDecimalVisibility = View.VISIBLE;
5153
private Vector<NumberPickerDialogHandlerV2> mNumberPickerDialogHandlersV2 = new Vector<NumberPickerDialogHandlerV2>();
54+
private OnDialogDismissListener mDismissCallback;
55+
5256

5357
/**
5458
* Create an instance of the Picker (used internally)
@@ -237,6 +241,18 @@ private boolean isSmaller(BigDecimal number) {
237241
return number.compareTo(mMinNumber) < 0;
238242
}
239243

244+
@Override
245+
public void onDismiss(DialogInterface dialoginterface) {
246+
super.onDismiss(dialoginterface);
247+
if (mDismissCallback != null) {
248+
mDismissCallback.onDialogDismiss(dialoginterface);
249+
}
250+
}
251+
252+
public void setOnDismissListener(OnDialogDismissListener ondialogdismisslistener) {
253+
mDismissCallback = ondialogdismisslistener;
254+
}
255+
240256
/**
241257
* This interface allows objects to register for the Picker's set action.
242258
*/
@@ -252,4 +268,9 @@ public interface NumberPickerDialogHandlerV2 {
252268
public void setNumberPickerDialogHandlersV2(Vector<NumberPickerDialogHandlerV2> handlers) {
253269
this.mNumberPickerDialogHandlersV2 = handlers;
254270
}
271+
272+
@Override
273+
public void onCancel(DialogInterface dialog) {
274+
super.onCancel(dialog);
275+
}
255276
}

0 commit comments

Comments
 (0)