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();
}
}