package com.ethostream.ethoandroid;

import java.io.File;
import java.net.URI;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Intent;
import android.database.ContentObserver;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Spinner;


public class AddPhoto extends Activity
{
	private static final int TAKE_PHOTO_REQUEST_CODE = 0;
	protected static final int SELECT_PICTURE = 1;
	private int propID = 0;
	private String passedType = "";
	private String fileName = "";
	private String description = "";
	private Uri imageUri;
	
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		
		Bundle bundle = getIntent().getExtras();
		propID = Integer.parseInt(bundle.getString("ID"));
		passedType = bundle.getString("TYPE");
		if (propID < 1)
		{
			Log.e(this.toString(), "Invalid ID, quitting.");
			setResult(RESULT_CANCELED);
			finish();
		}
		
		setContentView(R.layout.addphoto);
		
		// Photo Button
		Button cameraButton = (Button) findViewById(R.id.addphoto_camera);       
        cameraButton.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View view) 
            {
            	takePhoto();
            }
        });
        
        // UPLOAD Button
        Button uploadButton = (Button) findViewById(R.id.addphoto_upload);
        uploadButton.setOnClickListener(new View.OnClickListener() 
        {
            public void onClick(View view) 
            {
            	//TODO:
            }
        });
	}
	
	private void takePhoto()
	{
		ContentValues intentParams = new ContentValues();
		//TODO: Check for appropriate filename
		intentParams.put(MediaStore.Images.Media.TITLE, fileName + ".jpg");
		intentParams.put(MediaStore.Images.Media.DESCRIPTION, description);
		// imageURI is current activity attribute. Will use later to get photo.
		imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, intentParams);
		
		Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
		i.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
		i.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); //TODO: Read doc for whether this is necessary
		startActivityForResult(i, TAKE_PHOTO_REQUEST_CODE); // TODO: static int for request code?
	}
	
	@Override
	public void onActivityResult(int requestCode, int resultCode, Intent data) 
	{
		super.onActivityResult(requestCode, resultCode, data);
		switch (requestCode) 
		{
			case TAKE_PHOTO_REQUEST_CODE:
				if (resultCode == Activity.RESULT_OK) 
				{
					Uri selectedImage = imageUri;
					//getContentResolver().notifyChange(selectedImage, null);
					ImageView imageView = (ImageView) findViewById(R.id.addphoto_image);
					ContentResolver cr = getContentResolver();
					Bitmap bitmap;
					try 
					{
						findViewById(R.id.addphoto_upload).setVisibility(android.view.View.VISIBLE);
						findViewById(R.id.addphoto_image_container).setVisibility(android.view.View.VISIBLE);
						bitmap = android.provider.MediaStore.Images.Media
								.getBitmap(cr, selectedImage);

						imageView.setImageBitmap(bitmap);
						//TODO: set toggle for image exists, because if the view is switched the visibility is reset
					} 
					catch (Exception e) 
					{
						// Failed to load image
						Log.e("Camera", e.toString());
					}
				}
		}
	}
	
	@Override
	public void onSaveInstanceState(Bundle savedInstanceState) 
	{
		//TODO
		savedInstanceState.putBoolean("MyBoolean", true);
		savedInstanceState.putDouble("myDouble", 1.9);
		savedInstanceState.putInt("MyInt", 1);
		savedInstanceState.putString("MyString", "Welcome back to Android");
		// etc.
		super.onSaveInstanceState(savedInstanceState);
	}
	
	@Override
	public void onRestoreInstanceState(Bundle savedInstanceState) 
	{
		//TODO
		super.onRestoreInstanceState(savedInstanceState);
		// Restore UI state from the savedInstanceState.
		// This bundle has also been passed to onCreate.
		boolean myBoolean = savedInstanceState.getBoolean("MyBoolean");
		double myDouble = savedInstanceState.getDouble("myDouble");
		int myInt = savedInstanceState.getInt("MyInt");
		String myString = savedInstanceState.getString("MyString");
	}


}
