Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ability to pass more information to callbacks. #136

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 21 additions & 17 deletions demo/src/main/java/com/avast/dialogs/DemoActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import android.widget.AbsListView;
import android.widget.Toast;

import com.avast.android.dialogs.core.BaseDialogFragment;
import com.avast.android.dialogs.fragment.DatePickerDialogFragment;
import com.avast.android.dialogs.fragment.ListDialogFragment;
import com.avast.android.dialogs.fragment.ProgressDialogFragment;
Expand Down Expand Up @@ -201,15 +202,16 @@ public void onClick(View v) {
// IListDialogListener

@Override
public void onListItemSelected(CharSequence value, int number, int requestCode) {
public void onListItemSelected(CharSequence value, int number, BaseDialogFragment dialog) {
final int requestCode = dialog.getRequestCode();
if (requestCode == REQUEST_LIST_SIMPLE || requestCode == REQUEST_LIST_SINGLE) {
Toast.makeText(c, "Selected: " + value, Toast.LENGTH_SHORT).show();
}
}

@Override
public void onListItemsSelected(CharSequence[] values, int[] selectedPositions, int requestCode) {
if (requestCode == REQUEST_LIST_MULTIPLE) {
public void onListItemsSelected(CharSequence[] values, int[] selectedPositions, BaseDialogFragment dialog) {
if (dialog.getRequestCode() == REQUEST_LIST_MULTIPLE) {
StringBuilder sb = new StringBuilder();
for (CharSequence value : values) {
if (sb.length() > 0) {
Expand All @@ -225,8 +227,8 @@ public void onListItemsSelected(CharSequence[] values, int[] selectedPositions,
// ISimpleDialogCancelListener

@Override
public void onCancelled(int requestCode) {
switch (requestCode) {
public void onCancelled(BaseDialogFragment dialog) {
switch (dialog.getRequestCode()) {
case REQUEST_SIMPLE_DIALOG:
Toast.makeText(c, "Dialog cancelled", Toast.LENGTH_SHORT).show();
break;
Expand All @@ -250,34 +252,35 @@ public void onCancelled(int requestCode) {
// ISimpleDialogListener

@Override
public void onPositiveButtonClicked(int requestCode) {
if (requestCode == REQUEST_SIMPLE_DIALOG) {
public void onPositiveButtonClicked(BaseDialogFragment dialog) {
if (dialog.getRequestCode() == REQUEST_SIMPLE_DIALOG) {
Toast.makeText(c, "Positive button clicked", Toast.LENGTH_SHORT).show();
}
}

@Override
public void onNegativeButtonClicked(int requestCode) {
if (requestCode == REQUEST_SIMPLE_DIALOG) {
public void onNegativeButtonClicked(BaseDialogFragment dialog) {
if (dialog.getRequestCode() == REQUEST_SIMPLE_DIALOG) {
Toast.makeText(c, "Negative button clicked", Toast.LENGTH_SHORT).show();
}
}

@Override
public void onNeutralButtonClicked(int requestCode) {
if (requestCode == REQUEST_SIMPLE_DIALOG) {
public void onNeutralButtonClicked(BaseDialogFragment dialog) {
if (dialog.getRequestCode() == REQUEST_SIMPLE_DIALOG) {
Toast.makeText(c, "Neutral button clicked", Toast.LENGTH_SHORT).show();
}
}

// IDateDialogListener

@Override
public void onNegativeButtonClicked(int resultCode, Date date) {
public void onNegativeButtonClicked(BaseDialogFragment dialog, Date date) {
String text = "";
if (resultCode == REQUEST_DATE_PICKER) {
final int requestCode = dialog.getRequestCode();
if (requestCode == REQUEST_DATE_PICKER) {
text = "Date ";
} else if (resultCode == REQUEST_TIME_PICKER) {
} else if (requestCode == REQUEST_TIME_PICKER) {
text = "Time ";
}

Expand All @@ -286,11 +289,12 @@ public void onNegativeButtonClicked(int resultCode, Date date) {
}

@Override
public void onPositiveButtonClicked(int resultCode, Date date) {
public void onPositiveButtonClicked(BaseDialogFragment dialog, Date date) {
String text = "";
if (resultCode == REQUEST_DATE_PICKER) {
final int requestCode = dialog.getRequestCode();
if (requestCode == REQUEST_DATE_PICKER) {
text = "Date ";
} else if (resultCode == REQUEST_TIME_PICKER) {
} else if (requestCode == REQUEST_TIME_PICKER) {
text = "Time ";
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public BaseDialogFragment.Builder build(BaseDialogFragment.Builder builder) {
@Override
public void onClick(View v) {
for (IPositiveButtonDialogListener listener : getPositiveButtonDialogListeners()) {
listener.onPositiveButtonClicked(mRequestCode);
listener.onPositiveButtonClicked(JayneHatDialogFragment.this);
}
dismiss();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public abstract class BaseDialogBuilder<T extends BaseDialogBuilder<T>> {

public final static String ARG_REQUEST_CODE = "request_code";
public final static String ARG_CANCELABLE_ON_TOUCH_OUTSIDE = "cancelable_oto";
public final static String ARG_EXTRAS = "extras";
public final static String DEFAULT_TAG = "simple_dialog";
private String mTag = DEFAULT_TAG;
public final static int DEFAULT_REQUEST_CODE = -42;
Expand All @@ -30,6 +31,7 @@ public abstract class BaseDialogBuilder<T extends BaseDialogBuilder<T>> {
private boolean mCancelableOnTouchOutside = true;
private boolean mUseDarkTheme = false;
private boolean mUseLightTheme = false;
private Bundle mExtras;

public BaseDialogBuilder(Context context, FragmentManager fragmentManager, Class<? extends BaseDialogFragment> clazz) {
mFragmentManager = fragmentManager;
Expand Down Expand Up @@ -80,6 +82,11 @@ public T useLightTheme() {
return self();
}

public T setExtras(Bundle extras) {
mExtras = extras == null ? null : new Bundle(extras);
return self();
}

private BaseDialogFragment create() {
final Bundle args = prepareArguments();

Expand All @@ -96,6 +103,12 @@ private BaseDialogFragment create() {
} else {
args.putInt(ARG_REQUEST_CODE, mRequestCode);
}

final Bundle extras = mExtras;
if (extras != null) {
args.putBundle(ARG_EXTRAS, extras);
}

fragment.setCancelable(mCancelable);
return fragment;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
*/
public abstract class BaseDialogFragment extends DialogFragment implements DialogInterface.OnShowListener {

protected int mRequestCode;
private int mRequestCode;

@NonNull
@Override
Expand Down Expand Up @@ -144,10 +144,14 @@ public void onShow(DialogInterface dialog) {
public void onCancel(DialogInterface dialog) {
super.onCancel(dialog);
for (ISimpleDialogCancelListener listener : getCancelListeners()) {
listener.onCancelled(mRequestCode);
listener.onCancelled(this);
}
}

public final int getRequestCode() {
return mRequestCode;
}

/**
* Get dialog cancel listeners.
* There might be more than one cancel listener.
Expand Down Expand Up @@ -501,4 +505,4 @@ private void set(TextView textView, CharSequence text, Typeface font) {
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
package com.avast.android.dialogs.fragment;

import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
Expand All @@ -13,11 +18,6 @@
import com.avast.android.dialogs.core.BaseDialogFragment;
import com.avast.android.dialogs.iface.IDateDialogListener;

import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;

/**
* Dialog with a date picker.
* <p/>
Expand Down Expand Up @@ -66,7 +66,7 @@ protected BaseDialogFragment.Builder build(BaseDialogFragment.Builder builder) {
@Override
public void onClick(View view) {
for (IDateDialogListener listener : getDialogListeners()) {
listener.onPositiveButtonClicked(mRequestCode, getDate());
listener.onPositiveButtonClicked(DatePickerDialogFragment.this, getDate());
}
dismiss();
}
Expand All @@ -80,7 +80,7 @@ public void onClick(View view) {
@Override
public void onClick(View view) {
for (IDateDialogListener listener : getDialogListeners()) {
listener.onNegativeButtonClicked(mRequestCode, getDate());
listener.onNegativeButtonClicked(DatePickerDialogFragment.this, getDate());
}
dismiss();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ private void buildNormalChoice(Builder builder) {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
for (IListDialogListener listener : getSingleDialogListeners()) {
listener.onListItemSelected(getItems()[position], position, mRequestCode);
listener.onListItemSelected(getItems()[position], position, ListDialogFragment.this);
}
dismiss();
}
Expand All @@ -151,7 +151,7 @@ protected Builder build(Builder builder) {
@Override
public void onClick(View view) {
for (ISimpleDialogCancelListener listener : getCancelListeners()) {
listener.onCancelled(mRequestCode);
listener.onCancelled(ListDialogFragment.this);
}
dismiss();
}
Expand All @@ -177,8 +177,8 @@ public void onClick(View view) {
}
}

for (IMultiChoiceListDialogListener listener : getMutlipleDialogListeners()) {
listener.onListItemsSelected(checkedValues, checkedPositions, mRequestCode);
for (IMultiChoiceListDialogListener listener : getMultipleDialogListeners()) {
listener.onListItemsSelected(checkedValues, checkedPositions, ListDialogFragment.this);
}
dismiss();
}
Expand All @@ -203,11 +203,12 @@ public void onClick(View view) {
// either item is selected or dialog is cancelled
if (selectedPosition != -1) {
for (IListDialogListener listener : getSingleDialogListeners()) {
listener.onListItemSelected(items[selectedPosition], selectedPosition, mRequestCode);
listener.onListItemSelected(items[selectedPosition], selectedPosition,
ListDialogFragment.this);
}
} else {
for (ISimpleDialogCancelListener listener : getCancelListeners()) {
listener.onCancelled(mRequestCode);
listener.onCancelled(ListDialogFragment.this);
}
}
dismiss();
Expand Down Expand Up @@ -263,7 +264,7 @@ private List<IListDialogListener> getSingleDialogListeners() {
* @return Dialog listeners
* @since 2.1.0
*/
private List<IMultiChoiceListDialogListener> getMutlipleDialogListeners() {
private List<IMultiChoiceListDialogListener> getMultipleDialogListeners() {
return getDialogListeners(IMultiChoiceListDialogListener.class);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@

package com.avast.android.dialogs.fragment;

import java.util.List;

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
Expand All @@ -30,8 +32,6 @@
import com.avast.android.dialogs.iface.INeutralButtonDialogListener;
import com.avast.android.dialogs.iface.IPositiveButtonDialogListener;

import java.util.List;


/**
* Dialog for displaying simple message, message with title or message with title and two buttons. Implement {@link
Expand Down Expand Up @@ -81,7 +81,7 @@ protected BaseDialogFragment.Builder build(BaseDialogFragment.Builder builder) {
@Override
public void onClick(View view) {
for (IPositiveButtonDialogListener listener : getPositiveButtonDialogListeners()) {
listener.onPositiveButtonClicked(mRequestCode);
listener.onPositiveButtonClicked(SimpleDialogFragment.this);
}
dismiss();
}
Expand All @@ -94,7 +94,7 @@ public void onClick(View view) {
@Override
public void onClick(View view) {
for (INegativeButtonDialogListener listener : getNegativeButtonDialogListeners()) {
listener.onNegativeButtonClicked(mRequestCode);
listener.onNegativeButtonClicked(SimpleDialogFragment.this);
}
dismiss();
}
Expand All @@ -107,7 +107,7 @@ public void onClick(View view) {
@Override
public void onClick(View view) {
for (INeutralButtonDialogListener listener : getNeutralButtonDialogListeners()) {
listener.onNeutralButtonClicked(mRequestCode);
listener.onNeutralButtonClicked(SimpleDialogFragment.this);
}
dismiss();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,16 @@

import java.util.Date;

import com.avast.android.dialogs.core.BaseDialogFragment;

/**
* Implement this interface in Activity or Fragment to react to positive and negative buttons of date/time dialog.
*
* @author David Vávra ([email protected])
*/
public interface IDateDialogListener {

public void onPositiveButtonClicked(int requestCode, Date date);
void onPositiveButtonClicked(BaseDialogFragment dialog, Date date);

public void onNegativeButtonClicked(int requestCode, Date date);
void onNegativeButtonClicked(BaseDialogFragment dialog, Date date);
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.avast.android.dialogs.iface;

import com.avast.android.dialogs.core.BaseDialogFragment;

/**
* Interface for ListDialogFragment in modes: CHOICE_MODE_NONE, CHOICE_MODE_SINGLE
* Implement it in Activity or Fragment to react to item selection.
*/
public interface IListDialogListener {

public void onListItemSelected(CharSequence value, int number, int requestCode);
void onListItemSelected(CharSequence value, int number, BaseDialogFragment dialog);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.avast.android.dialogs.iface;

import com.avast.android.dialogs.core.BaseDialogFragment;

/**
* Interface for ListDialogFragment in modes: CHOICE_MODE_MULTIPLE
* Implement it in Activity or Fragment to react to item selection.
Expand All @@ -8,5 +10,5 @@
*/
public interface IMultiChoiceListDialogListener {

public void onListItemsSelected(CharSequence[] values, int[] selectedPositions, int requestCode);
void onListItemsSelected(CharSequence[] values, int[] selectedPositions, BaseDialogFragment dialog);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.avast.android.dialogs.iface;

import com.avast.android.dialogs.core.BaseDialogFragment;

/**
* Implement this interface in Activity or Fragment to react to negative dialog buttons.
*
Expand All @@ -8,5 +10,5 @@
*/
public interface INegativeButtonDialogListener {

public void onNegativeButtonClicked(int requestCode);
void onNegativeButtonClicked(BaseDialogFragment dialog);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.avast.android.dialogs.iface;

import com.avast.android.dialogs.core.BaseDialogFragment;

/**
* Implement this interface in Activity or Fragment to react to neutral dialog buttons.
*
Expand All @@ -8,5 +10,5 @@
*/
public interface INeutralButtonDialogListener {

public void onNeutralButtonClicked(int requestCode);
void onNeutralButtonClicked(BaseDialogFragment dialog);
}
Loading