package com.sogouchat.ui;
import com.sogouchat.R;
import com.sogouchat.SogouChatApp;
import com.sogouchat.bean.TelNode;
import com.sogouchat.conversation.ConversationActivity;
import com.sogouchat.os.ChatAppConstant;
import com.sogouchat.util.LayoutUtil;
import com.sogouchat.widget.BadgeView;
import com.sogouchat.widget.SwitchButton;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.format.Time;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.animation.BounceInterpolator;
import android.view.animation.TranslateAnimation;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class NewsListActivity extends Activity implements OnItemClickListener {
private static final String TAG = "NewsListActivity";
private NewsListAdapter mAdapter;
private ListView mListView;
private SogouChatApp mApp;
private Button mNewMsgBtn;
private Button mContactListBtn;
private BadgeView mNewBadge;
private int mNewNum = 0;
private TextView mTitleText;
private boolean mIsNew;
public void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "onCreate");
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_news_list);
mListView = (ListView) findViewById(R.id.news_list);
mApp = (SogouChatApp) getApplication();
mApp.mNewsList = this;
View titleV = (View) findViewById(R.id.news_page_title);
mNewBadge = new BadgeView(this, titleV);
mNewBadge.setBackgroundResource(R.drawable.badge_small);
mNewBadge.setTextSize(10);
mNewBadge.setBadgePosition(BadgeView.POSITION_TOP_LEFT);
mNewBadge.setBadgeMargin(LayoutUtil.dip2px(this, 45), 2);
// mNewBadge.setOnClickListener(new OnClickListener(){
// @Override
// public void onClick(View v) {
// // TODO Auto-generated method stub
// switchToNew(mBadgetState);
//
// }
// });
mAdapter = new NewsListAdapter(this, mApp);
mAdapter.setupList();
mTitleText = (TextView) findViewById(R.id.page_name);
mListView.setOnItemClickListener(this);
mListView.setAdapter(mAdapter);
mNewMsgBtn = (Button) findViewById(R.id.contact_btn_new);
mNewMsgBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
if (!mApp.isPinyinOk()){
mApp.doSetupPinyin();
}
Intent intent = new Intent();
intent.setClass(NewsListActivity.this, CreateActivity.class);
// Bundle bd = new Bundle();
// bd.putString("content", "asdfasdfasdfasdf");
// intent.putExtras(bd);
startActivity(intent);
}
});
mContactListBtn = (Button) findViewById(R.id.contact_btn_contacts);
mContactListBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
if (!mApp.isPinyinOk()){
mApp.doSetupPinyin();
}
Intent intent = new Intent();
intent.setClass(NewsListActivity.this, ContactListActivity2.class);
startActivity(intent);
}
});
SwitchButton switchButton = (SwitchButton) findViewById(R.id.btn_switch);
switchButton
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
switchToAll(!isChecked);
}
});
Log.i(TAG, "onCreate Ok");
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
// Insert desired behavior here.
Log.i("FragmentComplexList", "Item clicked: " + id);
Intent intent = new Intent();
TelNode item = mAdapter.getData().get(position);
String tel = item.mTel;
if (tel == null)
return;
String name = item.mName;
if (item.mUnMsgCnt > 0) {
// mApp.mTabMain.setTotalNewMsgCntDelta(tel, item.mNewMsgCnt);
item.mUnMsgCnt = 0;
mAdapter.notifyDataSetChanged();
mApp.sendSrvForeMsg(ChatAppConstant.SRV_ForeMsg_Read_Sms,
item.mTel, null);
}
intent.setClass(this, ChatListActivity.class);
Bundle bundle = new Bundle();
bundle.putString("tel", tel);
bundle.putString("name", name);
bundle.putInt("threadID", item.mThreadId);
intent.putExtras(bundle);
// intent.setClass(this, ConversationActivity.class);
// intent.putExtra(ConversationActivity.STR_THREADID, item.mThreadId);
// intent.putExtra(ConversationActivity.STR_TYPE, ConversationActivity.TYPE_FROM_LIST);
this.startActivity(intent);
}
public void switchToNew(boolean toNew){
if(toNew){
mAdapter.switchToNew(true);
mTitleText.setText("未读消息");
mIsNew = true;
mAdapter.notifyDataSetChanged();
}
else{
if(mIsNew){
mAdapter.switchToNew(false);
mAdapter.notifyDataSetChanged();
}
mTitleText.setText("消息");
}
}
public void switchToAll(boolean toAll) {
mAdapter.switchToAll(toAll);
mTitleText.setText("消息");
mAdapter.notifyDataSetChanged();
mIsNew = false;
mApp.mSliding.switchItem(0);
}
public void setTotalNewMsgCnt(int totalNew) {
Log.i(TAG, "setTotalNewMsgCnt");
if (mNewNum!= totalNew && totalNew>0){
mNewNum = totalNew;
mNewBadge.setText(String.valueOf(totalNew));
TranslateAnimation anim = new TranslateAnimation(LayoutUtil.dip2px(this, 50), 0, 0, 0);
anim.setInterpolator(new BounceInterpolator());
anim.setDuration(1000);
mNewBadge.show(anim);
mApp.mSliding.setNewMsgNum(totalNew);
} else if (totalNew==0){
mNewNum = totalNew;
mNewBadge.hide();
}
Log.i(TAG, "setTotalNewMsgCnt Ok");
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { //监控/拦截/屏蔽返回键
long nowT = System.currentTimeMillis();
long sub = nowT -mApp.mBackRecord;
if (mApp.mBackRecord == 0 || sub > 3*1000) {
mApp.mBackRecord = nowT;
Toast.makeText(this, "再按一次推出信息!", Toast.LENGTH_SHORT).show();
return true;
} else if (sub < 3*1000) {
mApp.mBackRecord = 0;
return super.onKeyDown(keyCode, event);
}
}
return super.onKeyDown(keyCode, event);
}
}