package com.partynetwork.iparty.iparty; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Parcelable; import android.view.View; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.partynetwork.dataprovider.json.struct.Iparty_releaseIpartyRequest; import com.partynetwork.dataprovider.util.ActionUtil; import com.partynetwork.dataprovider.util.StringUtil; import com.partynetwork.iparty.R; import com.partynetwork.iparty.app.AppContext; import com.partynetwork.iparty.contacts.ContactsListActivity; import com.partynetwork.iparty.helper.IntentHelper; import com.partynetwork.iparty.info.ContactsInfo; import com.partynetwork.iparty.info.TimeInfo; import com.partynetwork.iparty.ishare.IshareThemeActivity; import com.partynetwork.iparty.map.BasicMapActivity; import com.partynetwork.myview.mytoast.OkPopup; import com.baidu.mobstat.StatService; import com.lidroid.xutils.ViewUtils; import com.lidroid.xutils.view.annotation.ViewInject; import com.lidroid.xutils.view.annotation.event.OnClick; public class IpartyPublishOneActivity extends Activity { public static final String MODEL = "model";// 模式 public static final String REQUEST = "request"; /** * 标题输入框 */ @ViewInject(R.id.title) private EditText title; /** * 发布形式显示内容 */ @ViewInject(R.id.iparty_publish_release_way_content) private LinearLayout releaseWayContent; /** * 发布形式 */ @ViewInject(R.id.iparty_publish_release_way_title) private RelativeLayout releaseWayRl; /** * 发布形式下拉图标 */ @ViewInject(R.id.iparty_publish_release_way_title_icon) private ImageView releaseWayIcon; /** * 参加者下拉图标 */ @ViewInject(R.id.iparty_publish_participant_title_icon) private ImageView participantTitleIcon; /** * 参加者显示内容 */ @ViewInject(R.id.iparty_publish_participant_content) private LinearLayout participantContent; /** * 主题显示 */ @ViewInject(R.id.iparty_publish_theme_tv) private TextView themeTv; /** * 地点 */ @ViewInject(R.id.address_tv) private TextView addressTv; /** * 时间显示 */ @ViewInject(R.id.iparty_publish_time_tv) private TextView timeTv; /** * 详情显示文字 */ @ViewInject(R.id.iparty_publish_other_tv) private TextView otherTv; /** * 可见范围显示文字 */ @ViewInject(R.id.iparty_publish_purview_tv) private TextView purviewTv; /** * 下一步 */ @ViewInject(R.id.iparty_publish_next) private TextView nextStep; /** * 发布的主题 */ private String[] themeArray; /** * 参加者选择列表,用于模拟单选操作 */ private List<TextView> joinRangeList = new ArrayList<TextView>(); /** * 所有人可参加 */ @ViewInject(R.id.iparty_publish_join_all) private TextView joinAll; /** * 邀请者可参加 */ @ViewInject(R.id.iparty_publish_join_invite) private TextView joinInvite; @ViewInject(R.id.iparty_publish_join_contacts_tv) private TextView inviteTv; /** * 发布方式列表,用于模拟单选操作 */ private List<TextView> publishType = new ArrayList<TextView>(); /** * 直接发布 */ @ViewInject(R.id.iparty_publish_type_direct) private TextView direct; /** * 预热发布 */ @ViewInject(R.id.iparty_publish_type_preheat) private TextView preheat; /** * 预热的隐藏体 */ @ViewInject(R.id.preheat_body) private LinearLayout preheatBody; /** * 发起人姓名 */ @ViewInject(R.id.name) private EditText name; /** * 联系电话 */ @ViewInject(R.id.phone) private EditText phone; /** * 预热天数 */ @ViewInject(R.id.preheat_day) private EditText preheatDay; /** * 目标关注人数 */ @ViewInject(R.id.goal_people) private EditText goalPeople; /** * 发布邀请的人 */ private ContactsInfo[] contactsArray; /** * 参加范围 */ private int joinRange = 0; /** * 发布方式 */ private int publishMode = 0; /** * party类型 */ private int ipartyMode = 0; /** * 时间对象 */ private TimeInfo[] timeInfo; /** * 请求对象 */ private Iparty_releaseIpartyRequest request; /** 消息提示框 */ private OkPopup mOkPopup; /** * * 覆盖方法 * */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.iparty_publish_one); ViewUtils.inject(this); init(); } /** * 初始化数据、控件 */ private void init() { ipartyMode = getIntent().getIntExtra(MODEL, 0); // 发布方式 publishType.add(direct); publishType.add(preheat); // 参加范围 joinRangeList.add(joinAll); joinRangeList.add(joinInvite); request = new Iparty_releaseIpartyRequest(); request.setEventModel(ipartyMode); mOkPopup = new OkPopup(this); initData(); } private void initData() { if (ipartyMode == 0) { releaseWayRl.setVisibility(View.VISIBLE); } else { releaseWayRl.setVisibility(View.GONE); } } /** * 设置主题 */ private void setTheme() { // 设置主题 themeTv.setText(""); if (themeArray == null) { return; } int length = themeArray.length; for (int i = 0; i < length; i++) { themeTv.append(themeArray[i]); if (i != length - 1) { themeTv.append("、"); } } // 添加到请求中 request.setEventThemeArray(themeArray); } /** * 设置监听 * * @param view */ @OnClick({ R.id.menu_head_left, R.id.iparty_publish_release_way_title, R.id.iparty_publish_participant_title, R.id.iparty_publish_theme, R.id.address_rl, R.id.iparty_publish_time, R.id.iparty_publish_other, R.id.iparty_publish_purview_rl, R.id.iparty_publish_next, R.id.iparty_publish_type_direct, R.id.iparty_publish_type_preheat, R.id.iparty_publish_join_all, R.id.iparty_publish_join_invite, R.id.iparty_publish_join_contacts }) public void onClick(View view) { switch (view.getId()) { case R.id.menu_head_left: // 返回 finish(); break; case R.id.iparty_publish_theme: // 主题 IntentHelper.goThemeActivity(this, themeArray); break; case R.id.address_rl: // 地点 IntentHelper.goMapActivity(this); break; case R.id.iparty_publish_time: // 发布时间 IntentHelper.goPublicTimeActivity(this); break; case R.id.iparty_publish_other: // 发布详情 Intent intent4 = new Intent(this, IpartyPublishInfoActivity.class); intent4.putExtra(REQUEST, request); startActivityForResult(intent4, IpartyPublishInfoActivity.OTHER_REQUEST_CODE); break; case R.id.iparty_publish_purview_rl: // 可见范围 Intent intent5 = new Intent(this, IpartyPublishPurviewActivity.class); startActivityForResult(intent5, IpartyPublishPurviewActivity.PURVIEW_REQUEST_CODE); break; case R.id.iparty_publish_release_way_title: // 发布形式 if (releaseWayContent.getVisibility() == View.GONE) { releaseWayContent.setVisibility(View.VISIBLE); releaseWayIcon .setImageResource(R.drawable.ichoose_report_up_icon); } else if (releaseWayContent.getVisibility() == View.VISIBLE) { releaseWayContent.setVisibility(View.GONE); releaseWayIcon .setImageResource(R.drawable.ichoose_report_down_icon); } break; case R.id.iparty_publish_participant_title: // 参加者 if (participantContent.getVisibility() == View.GONE) { participantContent.setVisibility(View.VISIBLE); participantTitleIcon .setImageResource(R.drawable.ichoose_report_up_icon); } else if (participantContent.getVisibility() == View.VISIBLE) { participantContent.setVisibility(View.GONE); participantTitleIcon .setImageResource(R.drawable.ichoose_report_down_icon); } break; case R.id.iparty_publish_next: // 下一步 if (initRequst()) { Intent intent3 = new Intent(this, IpartyPublishTwoActivity.class); intent3.putExtra(REQUEST, request); startActivity(intent3); } break; case R.id.iparty_publish_type_direct: // 直接发布 setPublishType(0); break; case R.id.iparty_publish_type_preheat: // 预热发布 setPublishType(1); break; case R.id.iparty_publish_join_all: // 所有人可参加 setJoinRange(0); break; case R.id.iparty_publish_join_invite: // 仅邀请者可参加 setJoinRange(1); break; case R.id.iparty_publish_join_contacts: Intent intent2 = new Intent(this, ContactsListActivity.class); if (contactsArray != null) { intent2.putExtra(ContactsListActivity.CONTACTS_ARRAY, contactsArray); } intent2.putExtra(ContactsListActivity.PAGE_TYPE, ActionUtil.Contacts.MULTIPLE); intent2.putExtra(ContactsListActivity.USER_TYPE, ActionUtil.Contacts.FRIEND); this.startActivityForResult(intent2, ContactsListActivity.CONTACTS_REQUEST_CODE); break; default: break; } } /** * 设置发布方式 * * @param position * 0:直接发布 ;1:预热发布 */ private void setPublishType(int position) { publishMode = position; Drawable left = null; for (int i = 0; i < publishType.size(); i++) { if (position == i) { left = this.getResources().getDrawable( R.drawable.contacts_selected); left.setBounds(0, 0, left.getMinimumWidth(), left.getMinimumHeight()); publishType.get(i).setCompoundDrawables(left, null, null, null); } else { left = this.getResources().getDrawable( R.drawable.contacts_normal); left.setBounds(0, 0, left.getMinimumWidth(), left.getMinimumHeight()); publishType.get(i).setCompoundDrawables(left, null, null, null); } if (position == 1) { preheatBody.setVisibility(View.VISIBLE); } else { preheatBody.setVisibility(View.GONE); } } } /** * 设置参加范围 * * @param position * 0:所有人可参加;1:仅邀请者可参加 */ private void setJoinRange(int position) { joinRange = position; Drawable left = null; for (int i = 0; i < joinRangeList.size(); i++) { if (position == i) { left = this.getResources().getDrawable( R.drawable.contacts_selected); left.setBounds(0, 0, left.getMinimumWidth(), left.getMinimumHeight()); joinRangeList.get(i).setCompoundDrawables(left, null, null, null); } else { left = this.getResources().getDrawable( R.drawable.contacts_normal); left.setBounds(0, 0, left.getMinimumWidth(), left.getMinimumHeight()); joinRangeList.get(i).setCompoundDrawables(left, null, null, null); } } } /** * * 覆盖方法 * * @see android.app.Activity#onActivityResult(int, int, * android.content.Intent) */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // 如果没有返回信息则直接退出方法 if (data == null) { return; } // 如果为选择主题的返回信息 switch (requestCode) { case IshareThemeActivity.THEME_REQUEST_CODE: // 主题 try { themeArray = data .getStringArrayExtra(IshareThemeActivity.THEME_ARRAY); } catch (Exception e) { } setTheme(); break; case IpartyPublishTimeActivity.TIME_REQUEST_CODE: // 时间 Parcelable[] parceableArray = data .getParcelableArrayExtra(IpartyPublishTimeActivity.TIME_CONTENT); timeInfo = new TimeInfo[parceableArray.length]; for (int i = 0; i < parceableArray.length; i++) { timeInfo[i] = (TimeInfo) parceableArray[i]; } int type = data.getIntExtra(IpartyPublishTimeActivity.TIME_TYPE, 0); String str = ""; switch (type) { case 0: str = "当天结束"; break; case 1: str = "连续多天"; break; case 2: str = "每周举行"; break; case 3: str = "自定义时间"; break; default: str = "当天结束"; break; } setTime(str); request.setEventTimeType(type); request.setEventTime(timeInfo); break; case IpartyPublishInfoActivity.OTHER_REQUEST_CODE: // 详情 String info = data .getStringExtra(IpartyPublishInfoActivity.OTHER_STR); try { request = data.getParcelableExtra(REQUEST); } catch (Exception e) { } setInfo(info); break; case IpartyPublishPurviewActivity.PURVIEW_REQUEST_CODE: // 权限 int pur = data.getIntExtra(IpartyPublishPurviewActivity.PURVIEW, 0); String passwrod = data .getStringExtra(IpartyPublishPurviewActivity.PASSWORD); request.setEventPassword(passwrod); setPurview(pur); break; case BasicMapActivity.MAP_CODE: // 地图 String address = data.getStringExtra(BasicMapActivity.ADDRESS); double latitude = data.getDoubleExtra(BasicMapActivity.LATITUDE, 0); double longitude = data.getDoubleExtra(BasicMapActivity.LONGITUDE, 0); // 设置文本 addressTv.setText(address); // 设置参数 request.setEventAddress(address); request.setEventLatitude(latitude); request.setEventLongitude(longitude); break; case ContactsListActivity.CONTACTS_REQUEST_CODE: try { Parcelable[] parce = data .getParcelableArrayExtra(ContactsListActivity.CONTACTS_ARRAY); contactsArray = new ContactsInfo[parce.length]; for (int i = 0; i < parce.length; i++) { contactsArray[i] = (ContactsInfo) parce[i]; } inviteTv.setText("已邀请" + contactsArray.length + "人"); int[] ids = new int[contactsArray.length]; for (int i = 0; i < contactsArray.length; i++) { ids[i] = contactsArray[i].getUserId(); } request.setEventInviteUserArray(ids); } catch (Exception e) { } break; default: break; } super.onActivityResult(requestCode, resultCode, data); } /** * 设置可见权限 * * @param pur */ private void setPurview(int pur) { switch (pur) { case IpartyPublishPurviewActivity.OPEN: purviewTv.setText("公开"); break; case IpartyPublishPurviewActivity.INVITE: purviewTv.setText("仅邀请者可见"); break; case IpartyPublishPurviewActivity.FRIEND: purviewTv.setText("仅i好友可见"); break; case IpartyPublishPurviewActivity.PASSWORDS: purviewTv.setText("密码可见"); break; default: break; } request.setEventPurview(pur); } /** * 设置详情 * * @param str */ private void setInfo(String str) { if (str.length() > 15) { str = str.substring(0, 15) + "…"; } otherTv.setText(str); } /** * 设置时间 */ private void setTime(String str) { if (str.length() > 15) { str = str.substring(0, 15) + "…"; } timeTv.setText(str); } /** * 初始化请求数据 */ private boolean initRequst() { AppContext context = ((AppContext) getApplication()); // 发布者Id request.setUserId(context.getLoginUid()); // 活动标题 String title = StringUtil.checkEditText(this.title); if (title.equals("")) { // 标题为空 mOkPopup.setTitle("请输入标题!"); mOkPopup.showAtLocation(this.title); return false; } else { request.setEventTitle(title); } // 主题 if (StringUtil.checkTextView(themeTv).equals("")) { mOkPopup.setTitle("请选择主题!"); mOkPopup.showAtLocation(this.title); return false; } // 地点 if (StringUtil.checkTextView(addressTv).equals("")) { mOkPopup.setTitle("请选择地点!"); mOkPopup.showAtLocation(this.title); return false; } // 时间 if (StringUtil.checkTextView(timeTv).equals("")) { mOkPopup.setTitle("请选择地点!"); mOkPopup.showAtLocation(this.title); return false; } // 详情 if (StringUtil.checkTextView(otherTv).equals("")) { mOkPopup.setTitle("请输入详情!"); mOkPopup.showAtLocation(this.title); return false; } // 发布者姓名 String name = StringUtil.checkEditText(this.name); if (name.equals("")) { // 发布中姓名为空 mOkPopup.setTitle("请输入发布者姓名!"); mOkPopup.showAtLocation(this.title); return false; } else { request.setPublishedName(name); } // 联系电话 String phone = StringUtil.checkEditText(this.phone); if (StringUtil.filterPhoneNumber(phone)) { request.setPublishedPhone(phone); } else { // 电话不正确 mOkPopup.setTitle("您输入的电话号码有误!"); mOkPopup.showAtLocation(this.title); return false; } // 参加范围 request.setEventJoinPurview(joinRange); // 发布方式 if (publishMode == 1) { String preheadDay = StringUtil.checkEditText(this.preheatDay); if (!preheadDay.equals("")) { request.setEventPreheatDays(Integer.parseInt(preheadDay)); } String goalPeople = StringUtil.checkEditText(this.goalPeople); if (!goalPeople.equals("")) { request.setEventGoalPeople(Integer.parseInt(goalPeople)); } } return true; } @Override protected void onResume() { StatService.onResume(this); super.onResume(); } @Override protected void onPause() { StatService.onPause(this); super.onPause(); } }