package com.imagepicker.utils;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.drawable.ColorDrawable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AlertDialog;
import android.widget.ArrayAdapter;
import com.facebook.react.bridge.ReadableMap;
import com.imagepicker.ImagePickerModule;
import com.imagepicker.R;
import java.lang.ref.WeakReference;
import java.util.List;
/**
* @author Alexander Ustinov
*/
public class UI
{
public static @NonNull AlertDialog chooseDialog(@Nullable final ImagePickerModule module,
@NonNull final ReadableMap options,
@Nullable final OnAction callback)
{
final Context context = module.getActivity();
if (context == null)
{
return null;
}
final WeakReference<ImagePickerModule> reference = new WeakReference<>(module);
final ButtonsHelper buttons = ButtonsHelper.newInstance(options);
final List<String> titles = buttons.getTitles();
final List<String> actions = buttons.getActions();
ArrayAdapter<String> adapter = new ArrayAdapter<>(
context,
R.layout.list_item,
titles
);
AlertDialog.Builder builder = new AlertDialog.Builder(context, module.getDialogThemeId() /*android.R.style.Theme_Holo_Light_Dialog*/);
if (ReadableMapUtils.hasAndNotEmptyString(options, "title"))
{
builder.setTitle(options.getString("title"));
}
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int index) {
final String action = actions.get(index);
switch (action) {
case "photo":
callback.onTakePhoto(reference.get());
break;
case "library":
callback.onUseLibrary(reference.get());
break;
case "cancel":
callback.onCancel(reference.get());
break;
default:
callback.onCustomButton(reference.get(), action);
}
}
});
builder.setNegativeButton(buttons.btnCancel.title, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialogInterface,
int i)
{
callback.onCancel(reference.get());
dialogInterface.dismiss();
}
});
final AlertDialog dialog = builder.create();
dialog.setOnCancelListener(new DialogInterface.OnCancelListener()
{
@Override
public void onCancel(@NonNull final DialogInterface dialog)
{
callback.onCancel(reference.get());
dialog.dismiss();
}
});
//dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
return dialog;
}
public interface OnAction
{
void onTakePhoto(@Nullable ImagePickerModule module);
void onUseLibrary(@Nullable ImagePickerModule module);
void onCancel(@Nullable ImagePickerModule module);
void onCustomButton(@Nullable ImagePickerModule module, String action);
}
}