package cn.edu.njupt.allgo.activity;
import java.util.ArrayList;
import java.util.List;
import uk.co.senab.actionbarpulltorefresh.library.PullToRefreshAttacher;
import uk.co.senab.actionbarpulltorefresh.library.PullToRefreshLayout;
import cn.edu.njupt.allgo.R;
import cn.edu.njupt.allgo.adapter.EventPageFollowersAdapter;
import cn.edu.njupt.allgo.fragment.AddCommentDialogFRAGMENT;
import cn.edu.njupt.allgo.fragment.UpdateEventDialogFRAGMENT;
import cn.edu.njupt.allgo.logic.EventPageLogic;
import cn.edu.njupt.allgo.logic.RefreshInterFace;
import cn.edu.njupt.allgo.logicImpl.EventPageLogicImpl;
import cn.edu.njupt.allgo.util.ArrayListUtil;
import cn.edu.njupt.allgo.util.DateUtil;
import cn.edu.njupt.allgo.util.ImageUtil;
import cn.edu.njupt.allgo.vo.EventAddVo;
import cn.edu.njupt.allgo.vo.EventCommentVo;
import cn.edu.njupt.allgo.vo.EventFollowerVo;
import cn.edu.njupt.allgo.vo.EventVo;
import cn.edu.njupt.allgo.widget.GrapeGridview;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.support.v4.app.TaskStackBuilder;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.LinearLayout;
import android.widget.Toast;
public class EventPageACTIVITY extends BaseActivity implements RefreshInterFace , PullToRefreshAttacher.OnRefreshListener{
private TextView outlineshow;
private TextView textView_eventpage_StartDate;
private TextView TextView_EndDate;
private TextView textView_eventpage_place;
private TextView TextView_ECategoryName;
private TextView TextView_Visible;
private TextView TextView_eventpage_Content;
private TextView TextView_eventpage_Dateline;
private TextView textView_eventpage_followerscount;
private TextView textView_eventpage_commentscount;
private Button button_follow;
private LinearLayout LinearLayout_EventAdd;
private LinearLayout LinearLayout_EventComments;
private EventVo eventdata;
private TextView TextView_eventpage_UName;
private ProgressDialog progressDialog;
private EventPageLogic eventPageLogic ;
private Button Button_comment;
private boolean isFollow = false;
private TextView textView_eventpage_position;
private LinearLayout linearLayout_eventpage_endtime;
private PullToRefreshAttacher mPullToRefreshAttacher;
private PullToRefreshLayout ptrLayout;
private ImageView imageView_eventpage_when;
private ImageView imageView_event_userhead;
private ImageUtil imageUtil;
private GrapeGridview gridView_eventpage_followers;
private ArrayList<Integer> followersUids = new ArrayList<Integer>() ;
private EventPageFollowersAdapter followersAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_eventpage);
getActionBar().setDisplayHomeAsUpEnabled(true);
eventPageLogic = new EventPageLogicImpl(this,this);
imageUtil = new ImageUtil(this);
imageUtil.configDefaultLoadFailedImage(R.drawable.default_head_widget);
iniView();
inflaterEvent();
inflaterEventdetails();
}
private void iniView() {
outlineshow = (TextView) findViewById(R.id.outlineshow);
textView_eventpage_StartDate = (TextView) findViewById(R.id.textView_eventpage_StartDate);
TextView_EndDate = (TextView) findViewById(R.id.TextView_EndDate);
textView_eventpage_place = (TextView) findViewById(R.id.textView_eventpage_place);
TextView_ECategoryName = (TextView) findViewById(R.id.TextView_ECategoryName);
TextView_Visible = (TextView) findViewById(R.id.TextView_Visible);
TextView_eventpage_Content = (TextView) findViewById(R.id.TextView_eventpage_Content);
TextView_eventpage_Dateline = (TextView) findViewById(R.id.TextView_eventpage_Dateline);
TextView_eventpage_UName = (TextView) findViewById(R.id.TextView_eventpage_UName);
textView_eventpage_followerscount = (TextView) findViewById(R.id.textView_eventpage_followerscount);
textView_eventpage_commentscount = (TextView) findViewById(R.id.textView_eventpage_commentscount);
textView_eventpage_position = (TextView) findViewById(R.id.TextView_eventpage_position);
button_follow = (Button) findViewById(R.id.button_follow);
Button_comment = (Button) findViewById(R.id.Button_comment);
imageView_eventpage_when = (ImageView) findViewById(R.id.imageView_eventpage_when);
imageView_event_userhead = (ImageView) findViewById(R.id.imageView_event_userhead);
LinearLayout_EventAdd = (LinearLayout) findViewById(R.id.LinearLayout_EventAdd);
LinearLayout_EventComments = (LinearLayout) findViewById(R.id.LinearLayout_EventComments);
linearLayout_eventpage_endtime = (LinearLayout) findViewById(R.id.linearLayout_eventpage_endtime);
ptrLayout = (PullToRefreshLayout) findViewById(R.id.ptr_layout);
gridView_eventpage_followers = (GrapeGridview) this.findViewById(R.id.gridView_eventpage_followers);
followersAdapter = new EventPageFollowersAdapter(this,followersUids,imageUtil);
gridView_eventpage_followers.setAdapter(followersAdapter);
mPullToRefreshAttacher = PullToRefreshAttacher.get(this);
ptrLayout.setPullToRefreshAttacher(mPullToRefreshAttacher, this);
button_follow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//加入活动
if(checkFollow()){
if(!isFollow){
showProgressDialog("正在加入");
eventPageLogic.follow(eventdata.getEid());
}else{
showProgressDialog("正在取消加入");
eventPageLogic.unfollow(eventdata.getEid());
}
}else{
Toast.makeText(EventPageACTIVITY.this, "活动已经结束", Toast.LENGTH_SHORT).show();
}
}
});
Button_comment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//评论
SharedPreferences share = EventPageACTIVITY.this.getSharedPreferences("userdata", Context.MODE_PRIVATE);
//share.getInt("uid", -1);
//share.getString("uname", "");
AddCommentDialogFRAGMENT newFragment = AddCommentDialogFRAGMENT.newInstance("addComment");
newFragment.setValue(share.getInt("uid", -1),eventdata.getEid(),share.getString("uname", ""),-1,"",eventPageLogic);
newFragment.show(getSupportFragmentManager(), "dialog");
}
});
}
private boolean checkFollow(){
boolean flag = false;
switch(DateUtil.judgeDate(eventdata.getStartdate(), eventdata.getEnddate())){
case 1: //活动已经结束
break;
default:
flag = true;
break;
}
return flag;
}
//检测活动创建者是不是用户
private void isUpZhu() {
SharedPreferences share = EventPageACTIVITY.this.getSharedPreferences("userdata", Context.MODE_PRIVATE);
int uid = share.getInt("uid", -1);
if (uid == eventdata.getUid()){
setFollowButton();
button_follow.setTextColor(Color.GRAY);
button_follow.setClickable(false);
}
}
private void setFollowButton(){
isFollow = true;
button_follow.setText("已经加入");
Drawable left = getResources().getDrawable(R.drawable.icon_like_red) ;
left.setBounds(0, 0, left.getIntrinsicWidth(), left.getIntrinsicHeight());
button_follow.setCompoundDrawables(left, null, null, null);
}
private void setUnFollowButton(){
isFollow = false;
button_follow.setText("我要加入");
Drawable left = getResources().getDrawable(R.drawable.icon_like) ;
left.setBounds(0, 0, left.getIntrinsicWidth(), left.getIntrinsicHeight());
button_follow.setCompoundDrawables(left, null, null, null);
}
private void inflaterEvent() {
Intent intent=getIntent();
eventdata = (EventVo)intent.getSerializableExtra("EventData");
outlineshow.setText(eventdata.getOutline());
textView_eventpage_StartDate.setText(DateUtil.showDate(eventdata.getStartdate()));
if(eventdata.getEnddate() != null&&!eventdata.getEnddate().equals("")) {
TextView_EndDate.setText(DateUtil.showDate(eventdata.getEnddate()));
}else{
linearLayout_eventpage_endtime.setVisibility(View.GONE);
}
textView_eventpage_place.setText(eventdata.getPlace());
TextView_ECategoryName.setText(eventdata.getEcategroyname());
TextView_Visible.setText((eventdata.getVisible() == 0)?"所有人":"仅好友");
TextView_eventpage_Content.setText(eventdata.getContent());
TextView_eventpage_Dateline.setText(DateUtil.showDate(eventdata.getDateline()));
TextView_eventpage_UName.setText(eventdata.getUname());
textView_eventpage_followerscount.setText(eventdata.getFollowerscount() + "人");
textView_eventpage_commentscount.setText(eventdata.getCommentscount() + "");
textView_eventpage_position.setText(eventdata.getPosition().split(" ")[0]+
"省 "+eventdata.getPosition().split(" ")[1]+"市 "+eventdata.getPosition().split(" ")[2]);
imageView_eventpage_when.setImageResource(setWhenImage(eventdata.getStartdate(),eventdata.getEnddate()));
isUpZhu();
imageUtil.displayAvatar(imageView_event_userhead, eventdata.getUid());
}
/**
* 动态设置丝带图片
* @param startdate
* @param enddate
* @return
*/
private int setWhenImage(String startdate, String enddate) {
int image = 1;
switch(DateUtil.judgeDate(startdate, enddate)){
case 1:
image = R.drawable.silk_riband_red_past;
break;
case 2:
image = R.drawable.silk_riband_blue_being;
break;
case 3:
image = R.drawable.silk_riband_green_goingto;
break;
}
return image;
}
/**
* 填充活动补充和评论
*/
private void inflaterEventdetails() {
mPullToRefreshAttacher.setRefreshing(true);
eventPageLogic.getEventDetails(eventdata.getEid());
}
/**
* 填充活动补充
* @param arg0
*/
private void addEventAddVo(EventAddVo arg0) {
LayoutInflater inflater = getLayoutInflater(); // 通过inflate方法将layout转化为view
View layout = inflater.inflate(R.layout.list_eventadd, null);
TextView TextView_eventadd_Content = (TextView)layout.findViewById(R.id.TextView_eventadd_Content);
TextView TextView_eventadd_AddTime = (TextView)layout.findViewById(R.id.TextView_eventadd_AddTime);
TextView_eventadd_Content.setText(arg0.getContent());
TextView_eventadd_AddTime.setText(DateUtil.showDate(arg0.getAddtime()));
LinearLayout_EventAdd.addView(layout);
}
/**
* 添加活动评论
* @param arg0
*/
private void addEventCommentVo(EventCommentVo arg0) {
LayoutInflater inflater = getLayoutInflater(); // 通过inflate方法将layout转化为view
View layout = inflater.inflate(R.layout.list_eventcomments, null);
TextView textView_eventcomments_UName = (TextView)layout.findViewById(R.id.textView_eventcomments_UName);
TextView textView_eventcomments_ReplyUName = (TextView)layout.findViewById(R.id.textView_eventcomments_ReplyUName);
TextView textView_eventcomments_Texts = (TextView)layout.findViewById(R.id.textView_eventcomments_Texts);
TextView TextView_eventcomments_AddTime = (TextView)layout.findViewById(R.id.TextView_eventcomments_SendTime);
ImageView imageView_eventcomment_userhead = (ImageView)layout.findViewById(R.id.imageView_eventcomment_userhead);
Button button_comments = (Button)layout.findViewById(R.id.button_eventcomments);
button_comments.setTag(arg0);
button_comments.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//显示评论窗口
EventCommentVo i = (EventCommentVo)v.getTag();
SharedPreferences share = EventPageACTIVITY.this.getSharedPreferences("userdata", Context.MODE_PRIVATE);
AddCommentDialogFRAGMENT newFragment = AddCommentDialogFRAGMENT.newInstance("addComment");
newFragment.setValue(share.getInt("uid", -1),eventdata.getEid(),share.getString("uname", ""),i.getUid(),i.getUname(),eventPageLogic);
newFragment.show(getSupportFragmentManager(), "dialog");
}
});
textView_eventcomments_UName.setText(arg0.getUname() + ":");
if(arg0.getReplyuname() != null&&!arg0.getReplyuname().equals("")) {
textView_eventcomments_ReplyUName.setText("回复" + arg0.getReplyuname() + ":");
}else {
textView_eventcomments_ReplyUName.setVisibility(View.GONE);
}
textView_eventcomments_Texts.setText(arg0.getTexts());
TextView_eventcomments_AddTime.setText(DateUtil.showDate(arg0.getSendtime()));
imageUtil.displayAvatar(imageView_eventcomment_userhead, arg0.getUid());
LinearLayout_EventComments.addView(layout);
}
/**
* 清空所有补充
*/
private void removeAdd(){
LinearLayout_EventAdd.removeAllViews();
}
/**
* 清空所有评论
*/
private void removeComments(){
LinearLayout_EventComments.removeAllViews();
}
//添加actionbar菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
SharedPreferences share = this.getSharedPreferences("userdata", Context.MODE_PRIVATE);
if(eventdata.getUid() == share.getInt("uid", -1)){
MenuItem actionItem2 = menu.add("修改") ;
actionItem2.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
actionItem2.setIcon(R.drawable.ic_action_edit);
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
break;
}
if(item.getTitle().equals("修改")) {
//showDialog ;
UpdateEventDialogFRAGMENT newFragment = UpdateEventDialogFRAGMENT.newInstance(
R.string.alert_dialog_update_title);
newFragment.show(getFragmentManager(), "dialog");
}
return super.onOptionsItemSelected(item);
}
public void dialog_click (int which){
switch(which){
case 0: //添加活动补充
if(DateUtil.judgeDate(eventdata.getStartdate(), eventdata.getEnddate()) != 1){
final EditText edit = new EditText(this);
new AlertDialog.Builder(this)
.setTitle("活动补充")
.setView(edit)
.setPositiveButton("发送", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
showProgressDialog("正在发送");
EventPageACTIVITY.this.sendAdd(edit.getText().toString());
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
}).show();
}else{
Toast.makeText(this, "活动已经结束,不能补充", Toast.LENGTH_SHORT).show();
}
break;
case 1: //删除活动
new AlertDialog.Builder(this)
.setIconAttribute(android.R.attr.alertDialogIcon)
.setTitle("删除")
.setMessage("确认删除此活动!")
.setPositiveButton("发送", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
showProgressDialog("正在删除");
EventPageACTIVITY.this.destroyEvent();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
}).show();
break;
}
}
public void sendAdd(String text){
SharedPreferences share = this.getSharedPreferences("userdata", Context.MODE_PRIVATE);
eventPageLogic.sendAdd(share.getInt("uid", -1), eventdata.getEid() , text);
}
public void destroyEvent(){
SharedPreferences share = this.getSharedPreferences("userdata", Context.MODE_PRIVATE);
eventPageLogic.destroyEvent(share.getInt("uid", -1), eventdata.getEid());
}
/**
* 显示提示框
*/
public void showProgressDialog(String title) {
if ((!isFinishing()) && (this.progressDialog == null)) {
this.progressDialog = new ProgressDialog(this);
}
//progressDialog.setCancelable(false);
this.progressDialog.setTitle(title);
this.progressDialog.setMessage("请稍等...");
this.progressDialog.show();
}
@Override
protected void onDestroy() {
super.onDestroy();
closeProgressDialog();
Log.i("Activity"," onDestroy() ==> AddEventACTIVITY");
}
/**
* 关闭提示框
*/
public void closeProgressDialog() {
if (this.progressDialog != null)
this.progressDialog.dismiss();
}
@SuppressWarnings("unchecked")
@Override
public void refresh(Object result, int kind) {
switch(kind){
case 1: //添加活动补充
if(mPullToRefreshAttacher.isRefreshing()){
mPullToRefreshAttacher.setRefreshComplete();
}
removeAdd();
List<EventAddVo> list1 = (ArrayList<EventAddVo>)result ;
for(EventAddVo eventAdd : list1){
addEventAddVo(eventAdd);
}
break;
case 2: //添加活动评论
if(mPullToRefreshAttacher.isRefreshing()){
mPullToRefreshAttacher.setRefreshComplete();
}
removeComments();
List<EventCommentVo> list2 = (ArrayList<EventCommentVo>)result ;
for(EventCommentVo eventComment : list2){
addEventCommentVo(eventComment);
}
break;
case -1:
Toast.makeText(this, (String)result, Toast.LENGTH_SHORT).show();
if(mPullToRefreshAttacher.isRefreshing()){
mPullToRefreshAttacher.setRefreshComplete();
}
break;
case 3:
addEventCommentVo((EventCommentVo)result);
break;
case 4:
Toast.makeText(this, "加入成功", Toast.LENGTH_SHORT).show();
setFollowButton();
SharedPreferences share = this.getSharedPreferences("userdata", Context.MODE_PRIVATE);
followersUids.add((Integer)share.getInt("uid", -1));
followersAdapter.notifyDataSetChanged();
break;
case 5:
Toast.makeText(this, "取消加入", Toast.LENGTH_SHORT).show();
setUnFollowButton();
SharedPreferences share1 = this.getSharedPreferences("userdata", Context.MODE_PRIVATE);
followersUids.remove((Integer)share1.getInt("uid", -1));
followersAdapter.notifyDataSetChanged();
break;
case 6: //设置跟随人数
textView_eventpage_followerscount.setText((String)result);
break;
case 7: //设置评论人数
textView_eventpage_commentscount.setText((String)result);
break;
case 8: //添加活动补充
Toast.makeText(this, "添加补充成功", Toast.LENGTH_SHORT).show();
addEventAddVo((EventAddVo)result);
break;
case 9: //删除活动
Toast.makeText(this, "活动已删除", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this,HomeACTIVITY.class);
intent.putExtra("action", 2);
Bundle bundle = new Bundle();
bundle.putSerializable("deletevent", eventdata);
intent.putExtras(bundle);
startActivity(intent);
finish();
break;
case 10: //获取跟随用户
if(mPullToRefreshAttacher.isRefreshing()){
mPullToRefreshAttacher.setRefreshComplete();
}
SharedPreferences share2 = EventPageACTIVITY.this.getSharedPreferences("userdata", Context.MODE_PRIVATE);
int uid = share2.getInt("uid", -1);
List<EventFollowerVo> list3 = (ArrayList<EventFollowerVo>)result ;
for(EventFollowerVo eventFollower : list3){
followersUids.add(eventFollower.getUid());
ArrayListUtil.removeDuplicate(followersUids);
followersAdapter.notifyDataSetChanged();
if(eventFollower.getUid() == uid){
setFollowButton();
}
}
setFollowerGridViewHight();
break;
}
setFollowerGridViewHight();
closeProgressDialog();
}
private void setFollowerGridViewHight(){
int lieshu = followersUids.size()/gridView_eventpage_followers.getNumColumns();
if(followersUids.size()%gridView_eventpage_followers.getNumColumns() != 0){
lieshu ++;
}
gridView_eventpage_followers.getLayoutParams().height = lieshu*62 ;
}
@Override
public void onRefreshStarted(View view) {
eventPageLogic.getEventDetails(eventdata.getEid());
imageView_eventpage_when.setImageResource(setWhenImage(eventdata.getStartdate(),eventdata.getEnddate()));
}
}