package com.partynetwork.iparty.imessage;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Handler.Callback;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;
import com.partynetwork.dataprovider.DataProvider.IJsonResultListener;
import com.partynetwork.dataprovider.json.NetworkEntity;
import com.partynetwork.dataprovider.json.struct.Message_getMessageArrayRequest;
import com.partynetwork.dataprovider.json.struct.Message_getMessageArrayResponse;
import com.partynetwork.dataprovider.util.ActionUtil;
import com.partynetwork.dataprovider.util.T;
import com.partynetwork.iparty.R;
import com.partynetwork.iparty.app.AppContext;
import com.partynetwork.iparty.app.entities.Notice;
import com.partynetwork.iparty.app.manager.NoticeManager;
import com.partynetwork.myview.mytoast.BothPopup;
public class MessageInfoActivity extends Activity implements
IJsonResultListener, Callback {
public static final String MESSAGE_TYPE = "messageType";
/**
* 返回按钮
*/
@ViewInject(R.id.menu_head_left)
private LinearLayout backBtn;
/**
* 确定按钮
*/
@ViewInject(R.id.menu_head_right)
private RelativeLayout rightBtn;
/**
* 页面标题
*/
@ViewInject(R.id.menu_head_middle_text)
private TextView headTitle;
/**
* 确定的文本框
*/
@ViewInject(R.id.menu_head_right_tv)
private TextView rightTv;
/**
* listview
*/
@ViewInject(R.id.listview)
private ListView listView;
/** 消息类别 */
private int messageType;
/** 系统消息配器 */
private MessageInfoAdapter messageInfoAdapter;
/** 弹出框 */
private BothPopup mBothPopup;
private List<Notice> infoList;
private Handler mHandler;
/**
*
* 覆盖方法
*
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.message_info);
messageType = getIntent().getIntExtra(MESSAGE_TYPE, 0);
ViewUtils.inject(this);
initView();
init();
}
private void initView() {
listView = (ListView) findViewById(R.id.listview);
infoList = new ArrayList<Notice>();
mBothPopup = new BothPopup(this);
mHandler = new Handler(this);
}
/**
* 初始化
*/
private void init() {
sendRequest();
initData();
}
/**
* 初始化数据
*/
private void initData() {
String title = "";
switch (messageType) {
case ActionUtil.Message.MESSAGE_TYPE_SYSTEM:
title = "系统消息";
break;
case ActionUtil.Message.MESSAGE_TYPE_PARTY:
title = "iParty提醒";
break;
case ActionUtil.Message.MESSAGE_TYPE_GREET:
title = "打招呼";
break;
case ActionUtil.Message.MESSAGE_TYPE_FRIEND:
title = "新的i好友";
break;
case ActionUtil.Message.MESSAGE_TYPE_AT:
title = "提到我的";
break;
case ActionUtil.Message.MESSAGE_TYPE_VOTE:
title = "投票";
break;
case ActionUtil.Message.MESSAGE_TYPE_DISCUSS:
title = "评论";
break;
case ActionUtil.Message.MESSAGE_TYPE_PRAISE:
title = "赞";
break;
default:
title = "系统消息";
break;
}
// 名称
this.headTitle.setText(title);
messageInfoAdapter = new MessageInfoAdapter(this, infoList);
listView.setAdapter(messageInfoAdapter);
new Thread() {
@Override
public void run() {
infoList.removeAll(infoList);
List<Notice> lists = NoticeManager.getInstance(
MessageInfoActivity.this).getNoticeListByType(
messageType);
if (lists != null) {
infoList.addAll(lists);
}
mHandler.sendEmptyMessage(0);
}
}.start();
}
/**
* 发送请求
*/
private void sendRequest() {
AppContext config = (AppContext) getApplication();
Message_getMessageArrayRequest request = new Message_getMessageArrayRequest();
request.setUserId(config.getLoginUid());
request.setMessageType(messageType);
config.getmDataProvider().getJsonFromNetwork(request, this);
}
/**
* 事件监听
*
* @param view
*/
@OnClick({ R.id.menu_head_left, R.id.menu_head_right })
public void onClick(View view) {
switch (view.getId()) {
case R.id.menu_head_left:
// 关闭
finish();
break;
case R.id.menu_head_right:
// 清空
mBothPopup.setTitle("清空操作将删除所有记录\n你确定要清空吗?");
mBothPopup.setListener(new OnClickListener() {
@Override
public void onClick(View v) {
deleteAll();
finish();
}
});
mBothPopup.showAtLocation(headTitle);
break;
default:
break;
}
}
/**
* 删除所有本分类下的消息记录
*/
private void deleteAll() {
NoticeManager.getInstance(this).delNoticeByType(messageType);
}
public void onNetworkRequest() {
}
public void onResultSuccess(NetworkEntity entity) {
if (entity.getRequest().getAction()
.equals(new Message_getMessageArrayRequest().getAction())) {
Message_getMessageArrayResponse mResponse = (Message_getMessageArrayResponse) entity
.getResponse();
Notice[] infoArray = mResponse.getDetails();
if (infoArray != null) {
infoList.addAll(Arrays.asList(infoArray));
messageInfoAdapter.notifyDataSetChanged();
for (Notice notcie : infoArray) {
notcie.setNoticeType(messageType);
}
NoticeManager.getInstance(this).saveAllNotice(
Arrays.asList(infoArray));
}
}
}
public void onResultFail(String result) {
T.showTips(this, R.drawable.tips_error, result);
}
@Override
public boolean handleMessage(Message arg0) {
switch (arg0.what) {
case 0:
// 刷新
messageInfoAdapter.notifyDataSetChanged();
break;
default:
break;
}
return false;
}
}