package org.appsroid.fxpro;
import java.lang.reflect.Method;
import org.appsroid.fxpro.library.Constants;
import org.appsroid.fxpro.library.Toaster;
import org.appsroid.fxpro.library.UriToUrl;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.RelativeLayout;
public class MainActivity extends Activity {
private Animation animation;
private RelativeLayout top_holder;
private RelativeLayout bottom_holder;
private RelativeLayout step_number;
private Uri imageUri;
private boolean click_status = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
top_holder = (RelativeLayout) findViewById(R.id.top_holder);
bottom_holder = (RelativeLayout) findViewById(R.id.bottom_holder);
step_number = (RelativeLayout) findViewById(R.id.step_number);
}
@Override
protected void onStart() {
overridePendingTransition(0, 0);
flyIn();
super.onStart();
}
@Override
protected void onStop() {
overridePendingTransition(0, 0);
super.onStop();
}
public void startGallery(View view) {
flyOut("displayGallery");
}
public void startCamera(View view) {
flyOut("displayCamera");
}
@SuppressWarnings("unused")
private void displayGallery() {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) && !Environment.getExternalStorageState().equals(Environment.MEDIA_CHECKING)) {
Intent intent = new Intent();
intent.setType("image/jpeg");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, Constants.REQUEST_GALLERY);
} else {
Toaster.make(getApplicationContext(), R.string.no_media);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == Constants.REQUEST_CAMERA) {
try{
if (resultCode == RESULT_OK) {
displayPhotoActivity(1);
} else {
UriToUrl.deleteUri(getApplicationContext(), imageUri);
}
} catch (Exception e) {
Toaster.make(getApplicationContext(), R.string.error_img_not_found);
}
} else if (resultCode == RESULT_OK && requestCode == Constants.REQUEST_GALLERY) {
try {
imageUri = data.getData();
displayPhotoActivity(2);
} catch (Exception e) {
Toaster.make(getApplicationContext(), R.string.error_img_not_found);
}
}
}
@SuppressWarnings("unused")
private void displayCamera() {
imageUri = getOutputMediaFile();
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, Constants.REQUEST_CAMERA);
}
private Uri getOutputMediaFile(){
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, "Camera Pro");
values.put(MediaStore.Images.Media.DESCRIPTION, "www.appsroid.org");
return getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
}
private void displayPhotoActivity(int source_id) {
Intent intent = new Intent(getApplicationContext(), PhotoActivity.class);
intent.putExtra(Constants.EXTRA_KEY_IMAGE_SOURCE, source_id);
intent.setData(imageUri);
startActivity(intent);
overridePendingTransition(0, 0);
finish();
}
private void flyOut(final String method_name) {
if (click_status) {
click_status = false;
animation = AnimationUtils.loadAnimation(this, R.anim.step_number_back);
step_number.startAnimation(animation);
animation = AnimationUtils.loadAnimation(this, R.anim.holder_top_back);
top_holder.startAnimation(animation);
animation = AnimationUtils.loadAnimation(this, R.anim.holder_bottom_back);
bottom_holder.startAnimation(animation);
animation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation arg0) {
}
@Override
public void onAnimationRepeat(Animation arg0) {
}
@Override
public void onAnimationEnd(Animation arg0) {
callMethod(method_name);
}
});
}
}
private void callMethod(String method_name) {
if (method_name.equals("finish")) {
overridePendingTransition(0, 0);
finish();
} else {
try {
Method method = getClass().getDeclaredMethod(method_name);
method.invoke(this, new Object[] {});
} catch (Exception e) {}
}
}
@Override
public void onBackPressed() {
flyOut("finish");
super.onBackPressed();
}
private void flyIn() {
click_status = true;
animation = AnimationUtils.loadAnimation(this, R.anim.holder_top);
top_holder.startAnimation(animation);
animation = AnimationUtils.loadAnimation(this, R.anim.holder_bottom);
bottom_holder.startAnimation(animation);
animation = AnimationUtils.loadAnimation(this, R.anim.step_number);
step_number.startAnimation(animation);
}
}