package com.heyzap.sdk;
import android.app.Activity;
import android.app.Dialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
// import com.heyzap.sdk.R;
class HeyzapDialog extends Dialog {
private static final int BUTTON_WIDTH = 120;
private static final int BUTTON_HEIGHT = 40;
private static final int BUTTON_TEXT_SIZE = 13;
protected LinearLayout dialogView;
private RelativeLayout buttonRow;
protected Context activityContext;
private boolean overlay = false;
private DismissDialogBroadcastReceiver dismissReceiver;
private Float dimAmount = null;
public HeyzapDialog(Context context) {
this(context, true);
}
public HeyzapDialog(Context context, boolean overlay) {
this(context, overlay, null);
}
public HeyzapDialog(Context context, boolean overlay, Float dimAmount) {
super(overlay ? context.getApplicationContext() : context);
this.activityContext = context;
this.overlay = overlay;
this.dimAmount = dimAmount;
try {
this.dismissReceiver = new DismissDialogBroadcastReceiver();
} catch (NullPointerException e) {
// one guy had a phone that did this
}
}
protected int getLayout() {
return Rzap.layout("heyzap_dialog");
}
@Override
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(getLayout());
super.onCreate(savedInstanceState);
}
@Override
public void show() {
if (overlay) {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
if (dismissReceiver != null) {
getContext().registerReceiver(dismissReceiver, new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
}
}
super.show();
}
@Override
public void dismiss() {
if (overlay) {
try {
if (dismissReceiver != null) {
getContext().unregisterReceiver(dismissReceiver);
}
} catch (RuntimeException e) {
}
}
try {
super.dismiss();
} catch (IllegalArgumentException e) {// View not attached to window manager)
// fine then.
}
}
@Override
public void onDetachedFromWindow() {
try {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST);
} catch (IllegalArgumentException e) {
// ignore
}
super.onDetachedFromWindow();
}
@Override
public void onAttachedToWindow() {
if (overlay) {
try {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION);
this.getWindow().getWindowManager().updateViewLayout(this.getWindow().getDecorView(), getWmParams());
} catch (IllegalArgumentException e) {// View not attached to window manager
this.dismiss();
}
}
super.onAttachedToWindow();
}
public Context getActivityContext() {
return this.activityContext;
}
public void startActivity(Intent intent) {
if (!(getActivityContext() instanceof Activity)) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
}
getActivityContext().startActivity(intent);
}
public void setView(View contentView) {
ViewGroup content = (ViewGroup) findViewById(Rzap.id("content"));
content.removeAllViews();
content.addView(contentView);
}
public void clearDialogBackground() {
ViewGroup content = (ViewGroup) findViewById(android.R.id.content);
((View) content.getParent()).setBackgroundDrawable(null);
}
// public void addPrimaryButton(String title, View.OnClickListener listener) {
// addPrimaryButton(title, listener, Rzap.drawable("dialog_button_primary"));
// }
// public void addPrimaryButton(String title, View.OnClickListener listener, int buttonId) {
// addButton(title, 0xFFFFFFFF, buttonId, RelativeLayout.ALIGN_PARENT_RIGHT, listener);
// }
// public void addSecondaryButton(String title, View.OnClickListener listener) {
// addButton(title, 0xFF000000, Rzap.drawable("dialog_button_secondary"), RelativeLayout.ALIGN_PARENT_LEFT, listener);
// }
// public void addButton(String title, int textColor, int backgroundResource, int position, View.OnClickListener listener) {
// final float scale = getActivityContext().getResources().getDisplayMetrics().density;
//
// if (buttonRow == null) {
// buttonRow = new RelativeLayout(getActivityContext());
// /* this is a hack because the Amazon Fire has different dialogs than other platforms */
// if (android.os.Build.MANUFACTURER.equals("Amazon") == false) {
// buttonRow.setBackgroundResource(Rzap.drawable("dialog_button_background"));
// }
//
// buttonRow.setPadding((int) (scale * 2), (int) (scale * 5), (int) (scale * 2), (int) (scale * 4));
// ((ViewGroup) findViewById(Rzap.id("buttons"))).addView(buttonRow);
// }
//
// Button button = new Button(getActivityContext());
// button.setBackgroundResource(backgroundResource);
// button.setTextColor(textColor);
// button.setTextSize(BUTTON_TEXT_SIZE);
// button.setText(title);
// button.setOnClickListener(listener);
//
// RelativeLayout.LayoutParams layout = new RelativeLayout.LayoutParams((int) (BUTTON_WIDTH * scale), (int) (BUTTON_HEIGHT * scale));
// layout.addRule(position);
// buttonRow.addView(button, layout);
// }
private class DismissDialogBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
HeyzapDialog.this.dismiss();
}
};
public WindowManager.LayoutParams getWmParams() {
WindowManager.LayoutParams params = this.getWindow().getAttributes();
if (dimAmount != null) {
params.dimAmount = 0.0f;
}
return params;
}
}