/*
* Copyright (c) 2015. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
* Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
* Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
* Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
* Vestibulum commodo. Ut rhoncus gravida arcu.
*/
package com.shaweibo.biu.ui.post;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.provider.MediaStore;
import android.text.TextUtils;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;
import com.shaweibo.biu.R;
import com.shaweibo.biu.Utils.Utility;
import com.shaweibo.biu.dao.post.PostDao;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.io.FileDescriptor;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import butterknife.OnClick;
public class NewPostActivity extends AbPostActivity {
private ArrayList<String> mPics=new ArrayList<String>();
private ArrayList<Bitmap> mBitmaps = new ArrayList<Bitmap>();
public static final int PIC_RESULT = 2;
public static final int CAMERA_RESULT = 3;
private Uri imageFileUri = null;
private String picPath;
private Bitmap mBitmap;
@OnClick(R.id.btn_inser_img)
public void inserImg() {
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle(getString(R.string.pic_select))
.setItems(getResources().getStringArray(R.array.pic_picker_array), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
Intent choosePictureIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(choosePictureIntent, PIC_RESULT);
break;
case 1:
imageFileUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new ContentValues());
if (imageFileUri != null) {
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageFileUri);
startActivityForResult(i, CAMERA_RESULT);
} else {
Toast.makeText(NewPostActivity.this, getString(R.string.cant_insert_album), Toast.LENGTH_SHORT).show();
}
break;
}
}
});
builder.create().show();
}
protected ProgressDialog prog;
public static void start(Context context){
Intent intent= new Intent(context,NewPostActivity.class);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setActionbarTitle(R.string.new_post);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_new_post, menu);
return true;
}
private boolean postPics(String status) {
// Upload pictures first
String pics = "";
pics = PostDao.uploadPicture(mBitmap);
// Upload text
return PostDao.newPostWithMultiPics(status, pics);
}
protected boolean post() {
if (mBitmap==null) {
return PostDao.newPost(editText.getText().toString());
} else {
return postPics(editText.getText().toString());
}
}
@Override
protected void onPrePost() {
prog = new ProgressDialog(NewPostActivity.this);
prog.setMessage(getResources().getString(R.string.sending));
prog.setCancelable(false);
prog.show();
}
@Override
protected void onPostResult(boolean result) {
prog.dismiss();
if (result) {
finish();
} else {
new AlertDialog.Builder(NewPostActivity.this)
.setMessage(R.string.send_fail)
.setCancelable(true)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int index) {
dialog.dismiss();
}
})
.create()
.show();
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case CAMERA_RESULT:
if (TextUtils.isEmpty(editText.getText().toString())) {
editText.setText(getString(R.string.pic_share));
editText.setSelection(editText.getText().toString().length());
}
picPath = Utility.getPicPathFromUri(imageFileUri, this);
enablePicture(picPath);
break;
case PIC_RESULT:
if (TextUtils.isEmpty(editText.getText().toString())) {
editText.setText(getString(R.string.pic_share));
editText.setSelection(editText.getText().toString().length());
}
Uri uri2 = intent.getData();
if (Build.VERSION.SDK_INT >= 19) {
try {
ParcelFileDescriptor parcelFileDescriptor =
getContentResolver().openFileDescriptor(intent.getData(), "r");
FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
parcelFileDescriptor.close();
enablePicture(image);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
else{
picPath = Utility.getPicPathFromUri(uri2, this);
enablePicture(picPath);
}
break;
}
}
}
private void enablePicture(String picPath){
iv_image_to_send.setVisibility(View.VISIBLE);
// "file:///mnt/sdcard/image.png" from SD card
String url="file://"+picPath;
mBitmap =ImageLoader.getInstance().loadImageSync(url);
// ImageLoader.getInstance().displayImage(url, iv_image_to_send, Constants.timelineListOptions);
iv_image_to_send.setImageBitmap(mBitmap);
}
private void enablePicture(Bitmap bitmap){
iv_image_to_send.setVisibility(View.VISIBLE);
// "file:///mnt/sdcard/image.png" from SD card
mBitmap=bitmap;
iv_image_to_send.setImageBitmap(bitmap);
}
}