package edu.minggo.chat.ui;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import edu.minggo.chat.R;
import edu.minggo.chat.adapters.MyGalleryAdapter;
import edu.minggo.chat.control.BluetoothChatService;
import edu.minggo.chat.database.DataBaseOperator;
import edu.minggo.chat.model.MyPhoto;
import edu.minggo.chat.model.Task;
import edu.minggo.chat.util.ImageUitl;
import edu.minggo.chat.util.OptionAlert;
/**
* ÿ����Ƭ�ľ�����Ϣ
* @author minggo
* @created 2013-2-6����07:49:11
*/
public class MyGalleryDetailActivity extends Activity{
private Button backbt;
private ImageButton menubt;
private TextView timetv;
private ImageView photoiv;
private MyPhoto photo;
private int position;
private Bitmap bitmap;
private Button bigButton;
private Button smallButton;
private Button tuenLeftButton;
private Button tuenRightButton;
private float scaleWidth=1;
private float scaleHeight=1;
private int screenWidth;
private int screenHeight;
private Bitmap bitmapTurn;
private float leftRote;
private float rightTote;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mygallery_photo);
Intent it = getIntent();
bigButton = (Button) findViewById(R.id.imageview_bigbtn);
smallButton = (Button) findViewById(R.id.imageview_smallbtn);
tuenLeftButton = (Button) findViewById(R.id.imageview_turnleft);
tuenRightButton = (Button) findViewById(R.id.imageview_turnright);
bigButton.setOnClickListener(new DetailListener());
smallButton.setOnClickListener(new DetailListener());
tuenLeftButton.setOnClickListener(new DetailListener());
tuenRightButton.setOnClickListener(new DetailListener());
photo = (MyPhoto) it.getExtras().get("MyPhoto");
position = it.getExtras().getInt("position");
bitmap = (Bitmap)it.getExtras().get("bitmap");
backbt = (Button) findViewById(R.id.mygallery_bt_left);
menubt = (ImageButton) findViewById(R.id.mygallery_bt_menue);
timetv = (TextView) findViewById(R.id.mygallery_tv_time);
photoiv = (ImageView) findViewById(R.id.mygallery_iv_big_portrait);
backbt.setOnClickListener(new DetailListener());
menubt.setOnClickListener(new DetailListener());
String time = photo.getTime();
timetv.setText(time.substring(4,6)+"��"+time.substring(6,8)+"�� "+time.substring(8,10)+":"+time.substring(10,12));
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();
if (bitmap==null) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
bitmap = BitmapFactory.decodeFile(photo.getPicPath(),options);
options.inJustDecodeBounds = false;
int be = (int) (options.outHeight / (float) 200);
if (be <= 0)
be = 1;
options.inSampleSize = be;
bitmap = BitmapFactory.decodeFile(photo.getPicPath(),options);
}
photoiv.setImageBitmap(ImageUitl.createReflectionImageWithOrigin(bitmap));
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
}
/**
*
* @author minggo
* @created 2013-2-6����07:58:06
*/
public class DetailListener implements OnClickListener{
@Override
public void onClick(View v) {
if (v==backbt) {
finish();
}else if (v==bigButton) {
resizeBigImage(bitmap,photoiv,bigButton);
}else if (v==smallButton) {
resizeSmallImage(bitmap,photoiv,smallButton);
}else if (v==tuenLeftButton) {
leftRote = leftRote+90;
if(bitmapTurn!=null){
turnLeftBitmap(bitmapTurn,photoiv,leftRote);
}
else turnLeftBitmap(bitmap,photoiv,leftRote);
}else if (v==tuenRightButton) {
rightTote = rightTote-90;
if (bitmapTurn!=null) {
turnRightBitmap(bitmapTurn,photoiv,rightTote);
}
else turnRightBitmap(bitmap,photoiv,rightTote);
}else if (v==menubt) {
OptionAlert.showAlert(MyGalleryDetailActivity.this, "ͼƬ����",
new String[]{"ɾ��"},
null, new OptionAlert.OnAlertSelectId(){
@Override
public void onClick(int whichButton) {
switch(whichButton){
case 0:
if(DataBaseOperator.deletePhoto(MyGalleryDetailActivity.this,photo)){
MyGalleryAdapter.photos.remove(position);
Task task = new Task(Task.TASK_REFREAH_GALLERY, null);
BluetoothChatService.allTask.add(task);
finish();
Toast.makeText(MyGalleryDetailActivity.this, "ɾ���ɹ�", 2000).show();
}else{
Toast.makeText(MyGalleryDetailActivity.this, "ɾ��ʧ��", 2000).show();
}
break;
}
}
});
}
}
}
public void resizeSmallImage(Bitmap bmp,ImageView mImageView,Button btn) {
int bmpWidth = bmp.getWidth();
int bmpHeight = bmp.getHeight();
double scale = 0.8;
scaleWidth = (float) (scaleWidth * scale);
scaleHeight = (float) (scaleHeight * scale);
if (100 < bmpWidth|| 100 < bmpHeight) {
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp = Bitmap.createBitmap(bmp, 0, 0, bmpWidth,bmpHeight, matrix, true);
mImageView.setImageBitmap(ImageUitl.createReflectionImageWithOrigin(resizeBmp));
bitmapTurn = resizeBmp;
}else{
Toast.makeText(MyGalleryDetailActivity.this, "��������", Toast.LENGTH_SHORT).show();
}
}
public void resizeBigImage(Bitmap bmp,ImageView mImageView,Button btn) {
int bmpWidth = bmp.getWidth();
int bmpHeight = bmp.getHeight();
double scale = 1.25;
scaleWidth = (float) (scaleWidth * scale);
scaleHeight = (float) (scaleHeight * scale);
if (scaleWidth * scale * bmpWidth > screenWidth|| scaleHeight * scale * bmpHeight > screenHeight) {
Toast.makeText(MyGalleryDetailActivity.this, "���������", Toast.LENGTH_SHORT).show();
}else{
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizeBmp = Bitmap.createBitmap(bmp, 0, 0, bmpWidth,bmpHeight, matrix, true);
mImageView.setImageBitmap(ImageUitl.createReflectionImageWithOrigin(resizeBmp));
bitmapTurn = resizeBmp;
}
}
private void turnLeftBitmap(Bitmap bitmapOrg ,ImageView mImageView,float rote){
Matrix matrix = new Matrix();
matrix.postRotate(rote);
int width = bitmapOrg.getWidth();
int height = bitmapOrg.getHeight();
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,
width, height, matrix, true);
mImageView.setImageBitmap(ImageUitl.createReflectionImageWithOrigin(resizedBitmap));
}
private void turnRightBitmap(Bitmap bitmapOrg ,ImageView mImageView,float rote){
Matrix matrix = new Matrix();
matrix.postRotate(rote);
int width = bitmapOrg.getWidth();
int height = bitmapOrg.getHeight();
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,
width, height, matrix, true);
mImageView.setImageBitmap(ImageUitl.createReflectionImageWithOrigin(resizedBitmap));
}
}