package com.itbox.grzl.activity; import java.io.FileNotFoundException; import java.util.Calendar; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import butterknife.ButterKnife; import butterknife.InjectView; import butterknife.OnClick; import com.itbox.fx.net.GsonResponseHandler; import com.itbox.fx.net.Net; import com.itbox.fx.util.DateUtil; import com.itbox.grzl.Api; import com.itbox.grzl.AppContext; import com.itbox.grzl.Const; import com.itbox.grzl.Const.Extra; import com.itbox.grzl.Const.State; import com.itbox.grzl.bean.EventAdd; import com.itbox.grzl.bean.RespResult; import com.itbox.grzl.bean.UploadImageResult; import com.itbox.grzl.engine.EventEngine; import com.itbox.grzl.enumeration.EventType; import com.itbox.grzl.map.AddrInfoModel; import com.loopj.android.http.RequestParams; import com.zhaoliewang.grzl.R; /** * 添加活动页面 * * @author baoboy * @date 2014-5-26上午12:28:25 */ public class EventAddActivity extends BaseActivity { public static final int RESULT_SUCCESS = 1; private static final int REQ_PICTURE = 1; private static final int REQ_START_TIME = 2; private static final int REQ_END_TIME = 3; private static final int REQ_ADDRESS = 4; @InjectView(R.id.text_medium) protected TextView mTitleTv; @InjectView(R.id.tv_type) protected TextView mTypeTv; @InjectView(R.id.et_title) protected EditText mTitleEt; @InjectView(R.id.tv_start_time) protected TextView mStartTimeTv; @InjectView(R.id.tv_end_time) protected TextView mEndTimeTv; @InjectView(R.id.iv_photo) protected ImageView mPhotoIv; @InjectView(R.id.tv_address) protected TextView mAddressTv; @InjectView(R.id.et_person_count) protected EditText mPersonCountEt; @InjectView(R.id.et_content) protected EditText mContentEt; private Uri mPhotoUri; private long startTime; private EventAdd bean; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_event_add); bean = new EventAdd(); ButterKnife.inject(this); initView(); } private void initView() { mTitleTv.setText("发布活动"); showLeftBackButton(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && data != null) { Calendar cal = null; switch (requestCode) { case REQ_PICTURE: mPhotoUri = data.getData(); try { mPhotoIv.setImageBitmap(BitmapFactory .decodeStream(getContentResolver().openInputStream( mPhotoUri))); } catch (FileNotFoundException e) { e.printStackTrace(); } break; case REQ_START_TIME: startTime = data.getLongExtra(Extra.SelectedTime, State.Selected_cancle); bean.setBegintime(data .getStringExtra(Extra.SelectedTimeStr)); mStartTimeTv.setText(bean.getBegintime()); break; case REQ_END_TIME: bean.setEndtime(data .getStringExtra(SelectTimeMinuteActivity.Extra.SelectedTimeStr)); mEndTimeTv.setText(bean.getEndtime()); break; case REQ_ADDRESS: AddrInfoModel addrInfo = (AddrInfoModel) data .getSerializableExtra(Const.Extra.AddrModel); mAddressTv.setText(addrInfo.getStrAddr()); bean.setAddress(addrInfo.getStrAddr()); bean.setLatitude(addrInfo.getLatitude() + ""); bean.setLongitude(addrInfo.getLongitude() + ""); bean.setUsercity(addrInfo.getCity()); bean.setUserdistrict(addrInfo.getDistrict()); bean.setUserprovince(addrInfo.getProvince()); break; } } } @OnClick({ R.id.bt_add, R.id.tv_photo, R.id.tv_type, R.id.tv_start_time, R.id.tv_end_time, R.id.tv_address }) public void onClick(View v) { Calendar cal = null; switch (v.getId()) { case R.id.tv_photo: // 选择图片 Intent intent = new Intent( Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, REQ_PICTURE); break; case R.id.bt_add: add(); break; case R.id.tv_type: // 选择类型 selectType(); break; case R.id.tv_start_time: // 选择开始时间 cal = DateUtil.getNewCalendar(); Intent beginIntent = new Intent(this, SelectTimeHalfHourActivity.class); cal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY) + 1);// 普通活动,1小时候 beginIntent.putExtra(Extra.Time_Earliest, cal.getTimeInMillis()); cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) + 15);// 15天内 beginIntent.putExtra(Extra.Time_Latest, cal.getTimeInMillis()); startActivityForResult(beginIntent, REQ_START_TIME); break; case R.id.tv_end_time: // 选择结束时间 if (startTime == 0 || State.Selected_cancle == startTime) { showToast(R.string.warn_event_begintime_empty); return; } Intent endIntent = new Intent(this, SelectTimeHalfHourActivity.class); cal = DateUtil.getNewCalendar(); cal.setTimeInMillis(startTime); cal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY) + 1); cal.setTimeInMillis(cal.getTimeInMillis()); endIntent.putExtra(Extra.Time_Earliest, cal.getTimeInMillis()); cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) + 7);// 15天内 endIntent.putExtra(Extra.Time_Latest, cal.getTimeInMillis()); startActivityForResult(endIntent, REQ_END_TIME); break; case R.id.tv_address: // 选择地址 startActivityForResult(SelectMapPointActivity.class, REQ_ADDRESS); break; } } /** * 选择类型 */ private void selectType() { new AlertDialog.Builder(this).setItems(EventType.getAllName(), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { EventType type = EventType.getByIndex(which); bean.setTypeid(type.getIndex() + ""); mTypeTv.setText(type.getName()); } }).show(); } /** * 发布 */ private void add() { if (!checkParams()) { return; } // 发布 showProgressDialog("正在发布..."); // 上传图片 try { RequestParams params = new RequestParams(); params.put("图片流", AppContext.getInstance().getContentResolver() .openInputStream(mPhotoUri)); params.put("id", AppContext.getInstance().getAccount().getUserid() .toString()); params.put("imagetype", "2"); // 论坛图片 Net.request(params, Api.getUrl(Api.User.UPLOAD_IMAGE), new GsonResponseHandler<UploadImageResult>( UploadImageResult.class) { @Override public void onSuccess(UploadImageResult result) { super.onSuccess(result); if (result != null && result.getReturnUrl() != null) { pushEvent(result.getReturnUrl()); } else { dismissProgressDialog(); showToast("海报上传失败"); } } @Override public void onFailure(Throwable error, String content) { super.onFailure(error, content); dismissProgressDialog(); showToast(content); } }); } catch (Exception e) { dismissProgressDialog(); showToast("出错"); } } private boolean checkParams() { if (TextUtils.isEmpty(bean.getTypeid())) { showToast("请选择活动类型"); return false; } if (TextUtils.isEmpty(mTitleEt.getText().toString())) { showToast("请输入活动标题"); return false; } if (TextUtils.isEmpty(bean.getBegintime())) { showToast("请选择开始时间"); return false; } if (TextUtils.isEmpty(bean.getEndtime())) { showToast("请选择结束时间"); return false; } if (TextUtils.isEmpty(bean.getAddress())) { showToast("请选择活动地址"); return false; } if (TextUtils.isEmpty(mPersonCountEt.getText().toString())) { showToast("请输入活动人数"); return false; } if (mPhotoUri == null) { showToast("请选择活动海报"); return false; } if (TextUtils.isEmpty(mContentEt.getText().toString())) { showToast("请输入活动描述"); return false; } return true; } private void pushEvent(String photo) { // 发布活动 String title = mTitleEt.getText().toString(); String content = mContentEt.getText().toString(); String personCount = mPersonCountEt.getText().toString(); bean.setActivitydescription(content); bean.setActivitypicture(photo); bean.setPeoplecount(personCount); bean.setTitle(title); bean.setUserid(AppContext.getInstance().getAccount().getUserid() .toString()); EventEngine.addEvent(bean, new GsonResponseHandler<RespResult>( RespResult.class) { @Override public void onFinish() { super.onFinish(); dismissProgressDialog(); } @Override public void onSuccess(RespResult result) { if (result.isSuccess()) { showToast("发布成功"); setResult(RESULT_SUCCESS); finish(); } else { showToast("发布失败"); } } @Override public void onFailure(Throwable error, String content) { super.onFailure(error, content); showToast(content); } }); } }