package com.algobase.share.dialog;

import android.content.Context;
import android.content.DialogInterface;

import android.text.Spanned;

import android.app.Activity;
import android.app.Dialog;

import android.app.AlertDialog;

import android.view.Window;
import android.view.ContextThemeWrapper;

import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
import android.widget.ProgressBar;

import android.graphics.drawable.Drawable;
import android.graphics.Typeface;

import android.app.ProgressDialog;

/*
public class MyProgressDialog extends ProgressDialog {

   public MyProgressDialog(Activity act) {
       super(new ContextThemeWrapper(act,MyDialog.getStyle()));
   }

}
*/


public class MyProgressDialog extends MyDialog 
{

  public static int PROGRESS_STYLE_SPINNER = 0;
  public static int PROGRESS_STYLE_HORIZONTAL = 1;

  Context context;
  ProgressBar progressBar;
  TextView progressTextView;
  TextView messageTextView;

  int progressStyle = PROGRESS_STYLE_HORIZONTAL;

  int progressMax = 100;
  int progressVal = 0;

  Drawable progressDrawable = null;
  String progressNumberFormat = "";
  String message = "";


  private int DipToPixels(float dp)
  { float dpi = context.getResources().getDisplayMetrics().densityDpi;
    return (int)(0.5 + dp * (dpi/160f));
   }

  public MyProgressDialog(Activity activity) {
  //super(activity,"",STYLE_HOLO_DARK);
    super(activity);
    context = activity;
   }

  public MyProgressDialog() {
    // empty constructor required !
    //super(); 
  }

  public void setProgressStyle(int style) {
    progressStyle = style;
  }

  public int getProgress() {
    return progressBar.getProgress();
  }

  public void setProgressDrawable(Drawable drawable) {
    progressDrawable = drawable;
  }

  public void setProgressNumberFormat (String format) {
     progressNumberFormat = format;
     if (progressTextView != null && format.equals("")) {
       progressTextView.setText("");
     }
  }

  public void setMax(int max) { 
     progressMax = max; 
     if (progressBar != null) {
       progressBar.setMax(max);
       setProgress(0);
     }
  }

  public void setProgress(int x) {
      progressVal = x;
      if (progressBar != null) progressBar.setProgress(x); 
      if (progressTextView != null && !progressNumberFormat.equals("")) 
      { String txt = String.format(progressNumberFormat,x,progressMax);
        progressTextView.setText(txt);
       }
  }

  public void incrementProgressBy(int d) { 
      //progressBar.incrementProgressBy(d);
      setProgress(progressBar.getProgress() + d);
  }

  public void setMessage(String msg) { 
    //setMessage(span.toString());
    message = msg;
    if (messageTextView != null) 
      messageTextView.setText(msg);
  }

  public void setMessage(Spanned span) { 
    this.setMessage(span.toString());
  }

/*
  public void setCancelable(boolean b) {
     super.setCancelable(b);
  }
*/

  public void setButton(int but,String txt, 
                                DialogInterface.OnClickListener listener) {
    setPositiveButton(txt,listener);
  }


  //public AlertDialog show()
  public Dialog show()
  {
    int dp = DipToPixels(1);

    LinearLayout layout = new LinearLayout(context);
    layout.setOrientation(LinearLayout.VERTICAL);
    layout.setPadding(10*dp,5*dp,10*dp,10*dp);


    messageTextView = newTextView();
    messageTextView.setTextSize(20);
    messageTextView.setText(message);
    layout.addView(messageTextView);
    LayoutParams params = (LayoutParams)messageTextView.getLayoutParams();
    params.height = LayoutParams.WRAP_CONTENT;
    params.width = LayoutParams.MATCH_PARENT;


    if (progressStyle == PROGRESS_STYLE_HORIZONTAL)
    { progressBar = new ProgressBar(context,null,
                                 android.R.attr.progressBarStyleHorizontal);
      if (progressDrawable != null)
        progressBar.setProgressDrawable(progressDrawable);

      progressBar.setMax(progressMax);
      progressBar.setProgress(progressVal);
     }
    else
    {
      progressBar = new ProgressBar(context,null,
                                 android.R.attr.progressBarStyleLarge);
      if (progressDrawable != null)
        progressBar.setIndeterminateDrawable(progressDrawable);

      //messageTextView.setTypeface(null,Typeface.BOLD);

     }

    layout.addView(progressBar);
    params = (LayoutParams)progressBar.getLayoutParams();
    params.width = LayoutParams.MATCH_PARENT;

    if (progressStyle == PROGRESS_STYLE_SPINNER)
    { //params.height = LayoutParams.MATCH_PARENT;
      params.height = 100*dp;
      //params.bottomMargin = 5*dp;
     }
    else
    { params.height = 10*dp;
      params.topMargin = 5*dp;

      progressTextView = newTextView();
      progressTextView.setTextSize(17);

      layout.addView(progressTextView);
      params = (LayoutParams)progressTextView.getLayoutParams();
      params.height = 30*dp;
      params.width = LayoutParams.MATCH_PARENT;
      params.topMargin = 0;
    }
      
    setView(layout);
    setProgress(0);

    setBackgroundColor(0xffeeeeee);

    return super.show();
  }

}


