package org.horaapps.leafpic.util;
import android.content.Intent;
import android.graphics.PorterDuff;
import android.graphics.Typeface;
import android.net.Uri;
import android.support.annotation.StringRes;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.CardView;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.drew.lang.GeoLocation;
import org.horaapps.leafpic.R;
import org.horaapps.leafpic.activities.base.ThemedActivity;
import org.horaapps.leafpic.data.Media;
import org.horaapps.leafpic.data.base.MediaDetailsMap;
import java.lang.reflect.Field;
import java.util.Locale;
/**
* Created by dnld on 19/05/16.
*/
public class AlertDialogsHelper {
public static AlertDialog getInsertTextDialog(final ThemedActivity activity, AlertDialog.Builder dialogBuilder , EditText editText, @StringRes int title) {
View dialogLayout = activity.getLayoutInflater().inflate(org.horaapps.leafpic.R.layout.dialog_insert_text, null);
TextView textViewTitle = (TextView) dialogLayout.findViewById(org.horaapps.leafpic.R.id.rename_title);
((CardView) dialogLayout.findViewById(org.horaapps.leafpic.R.id.dialog_chose_provider_title)).setCardBackgroundColor(activity.getCardBackgroundColor());
textViewTitle.setBackgroundColor(activity.getPrimaryColor());
textViewTitle.setText(title);
ThemeHelper.setCursorDrawableColor(editText, activity.getTextColor());
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
editText.setLayoutParams(layoutParams);
editText.setSingleLine(true);
editText.getBackground().mutate().setColorFilter(activity.getTextColor(), PorterDuff.Mode.SRC_IN);
editText.setTextColor(activity.getTextColor());
try {
Field f = TextView.class.getDeclaredField("mCursorDrawableRes");
f.setAccessible(true);
f.set(editText, null);
} catch (Exception ignored) { }
((RelativeLayout) dialogLayout.findViewById(org.horaapps.leafpic.R.id.container_edit_text)).addView(editText);
dialogBuilder.setView(dialogLayout);
return dialogBuilder.create();
}
public static AlertDialog getTextDialog(final ThemedActivity activity, AlertDialog.Builder textDialogBuilder, @StringRes int title, @StringRes int Message){
View dialogLayout = activity.getLayoutInflater().inflate(org.horaapps.leafpic.R.layout.dialog_text, null);
TextView dialogTitle = (TextView) dialogLayout.findViewById(org.horaapps.leafpic.R.id.text_dialog_title);
TextView dialogMessage = (TextView) dialogLayout.findViewById(org.horaapps.leafpic.R.id.text_dialog_message);
((CardView) dialogLayout.findViewById(org.horaapps.leafpic.R.id.message_card)).setCardBackgroundColor(activity.getCardBackgroundColor());
dialogTitle.setBackgroundColor(activity.getPrimaryColor());
dialogTitle.setText(title);
dialogMessage.setText(Message);
dialogMessage.setTextColor(activity.getTextColor());
textDialogBuilder.setView(dialogLayout);
return textDialogBuilder.create();
}
public static AlertDialog getProgressDialog(final ThemedActivity activity, AlertDialog.Builder progressDialog, String title, String message){
View dialogLayout = activity.getLayoutInflater().inflate(org.horaapps.leafpic.R.layout.dialog_progress, null);
TextView dialogTitle = (TextView) dialogLayout.findViewById(org.horaapps.leafpic.R.id.progress_dialog_title);
TextView dialogMessage = (TextView) dialogLayout.findViewById(org.horaapps.leafpic.R.id.progress_dialog_text);
dialogTitle.setBackgroundColor(activity.getPrimaryColor());
((CardView) dialogLayout.findViewById(org.horaapps.leafpic.R.id.progress_dialog_card)).setCardBackgroundColor(activity.getCardBackgroundColor());
((ProgressBar) dialogLayout.findViewById(org.horaapps.leafpic.R.id.progress_dialog_loading)).getIndeterminateDrawable().setColorFilter(activity.getPrimaryColor(), android.graphics
.PorterDuff.Mode.SRC_ATOP);
dialogTitle.setText(title);
dialogMessage.setText(message);
dialogMessage.setTextColor(activity.getTextColor());
progressDialog.setCancelable(false);
progressDialog.setView(dialogLayout);
return progressDialog.create();
}
public static AlertDialog getDetailsDialog(final ThemedActivity activity, AlertDialog.Builder detailsDialogBuilder, final Media f) {
MediaDetailsMap<String, String> mainDetails = f.getMainDetails(activity.getApplicationContext());
final View dialogLayout = activity.getLayoutInflater().inflate(org.horaapps.leafpic.R.layout.dialog_media_detail, null);
ImageView imgMap = (ImageView) dialogLayout.findViewById(org.horaapps.leafpic.R.id.photo_map);
dialogLayout.findViewById(org.horaapps.leafpic.R.id.details_title).setBackgroundColor(activity.getPrimaryColor());
((CardView) dialogLayout.findViewById(org.horaapps.leafpic.R.id.photo_details_card)).setCardBackgroundColor(activity.getCardBackgroundColor());
final GeoLocation location;
if ((location = f.getGeoLocation()) != null) {
PreferenceUtil SP = PreferenceUtil.getInstance(activity.getApplicationContext());
StaticMapProvider staticMapProvider = StaticMapProvider.fromValue(
SP.getInt(activity.getString(R.string.preference_map_provider), StaticMapProvider.GOOGLE_MAPS.getValue()));
Glide.with(activity.getApplicationContext())
.load(staticMapProvider.getUrl(location))
.asBitmap()
.centerCrop()
.animate(org.horaapps.leafpic.R.anim.fade_in)
.into(imgMap);
imgMap.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String uri = String.format(Locale.ENGLISH, "geo:%f,%f?z=%d", location.getLatitude(), location.getLongitude(), 17);
activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(uri)));
}
});
imgMap.setVisibility(View.VISIBLE);
dialogLayout.findViewById(org.horaapps.leafpic.R.id.details_title).setVisibility(View.GONE);
}
final TextView showMoreText = (TextView) dialogLayout.findViewById(R.id.details_showmore);
showMoreText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showMoreDetails(dialogLayout, activity, f);
showMoreText.setVisibility(View.INVISIBLE);
}
});
detailsDialogBuilder.setView(dialogLayout);
loadDetails(dialogLayout,activity, mainDetails);
return detailsDialogBuilder.create();
}
private static void loadDetails(View dialogLayout, ThemedActivity activity, MediaDetailsMap<String, String> metadata) {
LinearLayout detailsTable = (LinearLayout) dialogLayout.findViewById(R.id.ll_list_details);
int tenPxInDp = Measure.pxToDp (10, activity);
for (int index : metadata.getKeySet()) {
LinearLayout row = new LinearLayout(activity.getApplicationContext());
row.setOrientation(LinearLayout.HORIZONTAL);
row.setWeightSum(10);
TextView label = new TextView(activity.getApplicationContext());
TextView value = new TextView(activity.getApplicationContext());
label.setText(metadata.getLabel(index));
label.setLayoutParams((new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 3f)));
value.setText(metadata.getValue(index));
value.setLayoutParams((new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 7f)));
label.setTextColor(activity.getTextColor());
label.setTypeface(null, Typeface.BOLD);
label.setGravity(Gravity.END);
label.setTextSize(16);
value.setTextColor(activity.getTextColor());
value.setTextSize(16);
value.setPaddingRelative(tenPxInDp, 0, 0, 0);
row.addView(label);
row.addView(value);
detailsTable.addView(row, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
}
}
private static void showMoreDetails(View dialogLayout, ThemedActivity activity, Media media) {
MediaDetailsMap<String, String> metadata = media.getAllDetails();
loadDetails(dialogLayout ,activity , metadata);
}
}