package com.bestapp.yikuair.fragments;
import java.io.File;
import java.util.Date;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.provider.MediaStore;
//import android.support.v4.content.LocalBroadcastManager;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.bestapp.yikuair.R;
import com.bestapp.yikuair.fragments.ImageActivity.ImageBroadcastReceiver;
import com.bestapp.yikuair.utils.ImageLoaderOriginal;
import com.bestapp.yikuair.utils.MessageInfo;
import com.bestapp.yikuair.utils.SharedPreferencesUtil;
import com.bestapp.yikuair.utils.StringWidthWeightRandom;
import com.bestapp.yikuair.utils.UploadPhotoUtil;
import com.bestapp.yikuair.utils.UserInfo;
import com.umeng.analytics.MobclickAgent;
public class SetPersonalProfileActivity extends Activity {
private EditText setSignature;
private TextView name;
private TextView duty;
private TextView department;
private ImageView photo;
private SelectPicPopupWindow menuWindow;
private static final int FLAG_CHOOSE_IMG = 5;
private static final int FLAG_CHOOSE_PHONE = 6;
private static final int FLAG_MODIFY_FINISH = 7;
private static String localTempImageFileName = "";
public static final String IMAGE_PATH = "yikuair";
public static final File FILE_SDCARD = Environment
.getExternalStorageDirectory();
public static final File FILE_LOCAL = new File(FILE_SDCARD, IMAGE_PATH);
public static final File FILE_PIC_SCREENSHOT = new File(FILE_LOCAL,
"images/screenshots");
private UploadPhotoUtil util;
private String imagePath;
private Dialog mDialog;
private ClientSocket client;
private LoginResultBroadcastReceiver lbr;
private ImageBroadcastReceiver ibr;
// private LocalBroadcastManager localBroadcastManager;
private SharedPreferencesUtil shared;
private String sig;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.set_personal_profile);
mDialog = new AlertDialog.Builder(this).create();
client = new ClientSocket(this);
lbr = new LoginResultBroadcastReceiver();
shared = new SharedPreferencesUtil(this);
// register broadcast
// localBroadcastManager = LocalBroadcastManager.getInstance(this);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(MessageInfo.LoginResultBroadCast);
lbr = new LoginResultBroadcastReceiver();
// getActivity().registerReceiver(lbr, intentFilter);
registerReceiver(lbr, intentFilter);
/*
* IntentFilter intentFilter2 = new IntentFilter();
* intentFilter2.addAction(MessageInfo.ImageBroadcast); ibr = new
* ImageBroadcastReceiver(); registerReceiver(ibr, intentFilter2);
*/
initView();
}
public void initView() {
setSignature = (EditText) findViewById(R.id.et_set_signature);
name = (TextView) findViewById(R.id.tv_staff_name);
department = (TextView) findViewById(R.id.tv_staff_department);
duty = (TextView) findViewById(R.id.tv_staff_duty);
photo = (ImageView) findViewById(R.id.iv_staff_photo);
photo.setOnClickListener(photoClick);
name.setText(UserInfo.realName);
duty.setText(UserInfo.duty);
String dep = "";
if (UserInfo.departmentName.equals(UserInfo.team))
dep = UserInfo.departmentName;
else
dep = UserInfo.departmentName + "-" + UserInfo.team;
department.setText(dep);
if (UserInfo.LocalphotoPath != null
&& UserInfo.LocalphotoPath.length() > 0) {
Bitmap b = BitmapFactory.decodeFile(UserInfo.LocalphotoPath);
photo.setBackgroundDrawable(new BitmapDrawable(b));
// photo.setImageBitmap(b);
}
}
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 1:
client.sendMessage(null, 0,
StringWidthWeightRandom.getNextString(), null, null,
null, null, null, null, null, null, false);
break;
default:
break;
}
};
};
private OnClickListener photoClick = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_staff_photo:
String sdStatus = Environment.getExternalStorageState();
if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) {
Toast.makeText(SetPersonalProfileActivity.this,
getString(R.string.sdcard_error),
Toast.LENGTH_SHORT).show();
return;
}
menuWindow = new SelectPicPopupWindow(
SetPersonalProfileActivity.this, itemsOnClick);
menuWindow.showAtLocation(findViewById(R.id.setting),
Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
break;
}
}
};
private OnClickListener itemsOnClick = new OnClickListener() {
public void onClick(View v) {
menuWindow.dismiss();
switch (v.getId()) {
case R.id.btn_pick_photo:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, FLAG_CHOOSE_IMG);
break;
case R.id.btn_take_photo:
String status = Environment.getExternalStorageState();
if (status.equals(Environment.MEDIA_MOUNTED)) {
try {
localTempImageFileName = "";
localTempImageFileName = String.valueOf((new Date())
.getTime()) + ".png";
File filePath = FILE_PIC_SCREENSHOT;
if (!filePath.exists()) {
filePath.mkdirs();
}
Intent intent1 = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
File f = new File(filePath, localTempImageFileName);
Uri u = Uri.fromFile(f);
intent1.putExtra(MediaStore.Images.Media.ORIENTATION, 0);
intent1.putExtra(MediaStore.EXTRA_OUTPUT, u);
startActivityForResult(intent1, FLAG_CHOOSE_PHONE);
} catch (ActivityNotFoundException e) {
}
}
break;
default:
break;
}
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == FLAG_CHOOSE_IMG && resultCode == RESULT_OK) {
if (data != null) {
Uri uri = data.getData();
if (!TextUtils.isEmpty(uri.getAuthority())) {
Cursor cursor = getContentResolver().query(uri,
new String[] { MediaStore.Images.Media.DATA },
null, null, null);
if (null == cursor) {
Toast.makeText(this, "图片没找到", 0).show();
return;
}
cursor.moveToFirst();
String path = cursor.getString(cursor
.getColumnIndex(MediaStore.Images.Media.DATA));
cursor.close();
Log.i("test", "path=" + path);
Intent intent = new Intent(this, CropImageActivity.class);
intent.putExtra("path", path);
startActivityForResult(intent, FLAG_MODIFY_FINISH);
} else {
Log.i("test", "path=" + uri.getPath());
Intent intent = new Intent(this, CropImageActivity.class);
intent.putExtra("path", uri.getPath());
startActivityForResult(intent, FLAG_MODIFY_FINISH);
}
}
} else if (requestCode == FLAG_CHOOSE_PHONE && resultCode == RESULT_OK) {
File f = new File(FILE_PIC_SCREENSHOT, localTempImageFileName);
Intent intent = new Intent(this, CropImageActivity.class);
intent.putExtra("path", f.getAbsolutePath());
startActivityForResult(intent, FLAG_MODIFY_FINISH);
} else if (requestCode == FLAG_MODIFY_FINISH && resultCode == RESULT_OK) {
if (data != null) {
imagePath = data.getStringExtra("path");
Log.i("test", "created bitmap path = " + imagePath);
Bitmap b = BitmapFactory.decodeFile(imagePath);
// photo.setBackgroundDrawable(new BitmapDrawable(b));
UserInfo.LocalphotoPath = imagePath;
util = new UploadPhotoUtil(this);
new UploadPhotoTask().execute();
shared.savePhotoUrl();
photo.setImageBitmap(b);
}
}
}
private class UploadPhotoTask extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... arg0) {
util.uploadFile(imagePath, StringWidthWeightRandom.getNextString());
return true;
}
@Override
protected void onPostExecute(Boolean result) {
if (!result) {
util.uploadFile(imagePath,
StringWidthWeightRandom.getNextString());
} else {
// maybe refresh
}
}
}
public void showRoundProcessDialog() {
mDialog.show();
mDialog.setCanceledOnTouchOutside(false);
mDialog.setContentView(R.layout.loading_process_dialog);
}
public boolean checkHeadUrl() {
String sdStatus = Environment.getExternalStorageState();
if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) {
Toast.makeText(SetPersonalProfileActivity.this,
getString(R.string.sdcard_error), Toast.LENGTH_SHORT)
.show();
return true;
} else if (UserInfo.LocalphotoPath == null
|| UserInfo.LocalphotoPath.length() == 0) {
return false;
} else
return true;
}
public void showToast() {
Toast.makeText(getApplication(),
getApplication().getString(R.string.prompt_set_head),
Toast.LENGTH_SHORT).show();
}
public void toSkip(View view) {
// if (!checkHeadUrl()) {
// showToast();
// return;
// }
Log.i("FM", "sure pressed");
sig = setSignature.getText().toString();
UserInfo.signature = sig;
// new ToSkipTask().execute();
client.sendMessage(sig, 12, StringWidthWeightRandom.getNextString(),
UserInfo.db_id, null, null, null, null, null, "signature",
null, false);
if (!UserInfo.isFinishProcess) {
client.sendMessage(null, 0,
StringWidthWeightRandom.getNextString(), null, null, null,
null, null, null, null, null, false);
} else {
client.sendMessage(null, 0,
StringWidthWeightRandom.getNextString(), null, null, null,
null, null, null, null, null, false);
}
enterMainActivity();
}
private class ToSkipTask extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... arg0) {
client.sendMessage(sig, 12,
StringWidthWeightRandom.getNextString(), UserInfo.db_id,
null, null, null, null, null, "signature", null, false);
if (!UserInfo.isFinishProcess) {
client.sendMessage(null, 0,
StringWidthWeightRandom.getNextString(), null, null,
null, null, null, null, null, null, false);
} else {
client.sendMessage(null, 0,
StringWidthWeightRandom.getNextString(), null, null,
null, null, null, null, null, null, false);
}
return true;
}
}
public void enterMainActivity() {
Log.i("test", "enter.........");
mDialog.dismiss();
UserInfo.isLogin = true;
shared.saveUserInfo();
Intent intent = new Intent(this, ResponsiveUIActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.in_from_right, R.anim.out_of_left);
finish();
}
class LoginResultBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
Log.i("test", "receive create connection result broadcast");
int resultCode = arg1.getIntExtra("code", 0);
int token = arg1.getIntExtra("token", 0);
if (resultCode == 200) {
if (token == 0) {
Log.i("FM", "LoginResultBroadcastReceiver received");
// enterMainActivity();
}
}
}
}
@Override
protected void onDestroy() {
// unregisterReceiver(ibr);
super.onDestroy();
unregisterReceiver(lbr);
}
@Override
public void onBackPressed() {
}
@Override
public void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
@Override
public void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
}