package com.mogujie.tt.ui.activity;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.view.Window;
import com.mogujie.tt.R;
import com.mogujie.tt.biz.MessageNotifyCenter;
import com.mogujie.tt.config.HandlerConstant;
import com.mogujie.tt.config.SysConstant;
import com.mogujie.tt.conn.NetStateDispach;
import com.mogujie.tt.log.Logger;
import com.mogujie.tt.ui.fragment.ContactFragment;
import com.mogujie.tt.widget.NaviTabButton;
public class MainActivity extends FragmentActivity {
private static Handler uiHandler = null;// 处理界面消息
private Fragment[] mFragments;
private NaviTabButton[] mTabButtons;
private Logger logger = Logger.getLogger(MainActivity.class);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
logger.d("MainActivity#savedInstanceState:%s", savedInstanceState);
if (savedInstanceState != null) {
logger.w("MainActivity#crashed and restarted, just exit");
Intent intent = new Intent(this, LoginActivity.class);
startActivity(intent);
finish();
}
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.tt_activity_main);
initTab();
initFragment();
setFragmentIndicator(0);
initHandler();
registEvents();
}
@Override
public void onBackPressed() {
//don't let it exit
//super.onBackPressed();
//nonRoot If false then this only works if the activity is the root of a task; if true it will work for any activity in a task.
//document http://developer.android.com/reference/android/app/Activity.html
moveTaskToBack(true);
}
public static Handler getUiHandler() {
return uiHandler;
}
private void initFragment() {
mFragments = new Fragment[3];
mFragments[0] = getSupportFragmentManager().findFragmentById(R.id.fragment_chat);
mFragments[1] = getSupportFragmentManager().findFragmentById(R.id.fragment_contact);
mFragments[2] = getSupportFragmentManager().findFragmentById(R.id.fragment_my);
}
private void initTab() {
mTabButtons = new NaviTabButton[3];
mTabButtons[0] = (NaviTabButton) findViewById(R.id.tabbutton_chat);
mTabButtons[1] = (NaviTabButton) findViewById(R.id.tabbutton_contact);
mTabButtons[2] = (NaviTabButton) findViewById(R.id.tabbutton_my);
mTabButtons[0].setTitle(getString(R.string.main_chat));
mTabButtons[0].setIndex(0);
mTabButtons[0].setSelectedImage(getResources().getDrawable(R.drawable.tt_tab_chat_sel));
mTabButtons[0].setUnselectedImage(getResources().getDrawable(R.drawable.tt_tab_chat_nor));
mTabButtons[1].setTitle(getString(R.string.main_contact));
mTabButtons[1].setIndex(1);
mTabButtons[1].setSelectedImage(getResources().getDrawable(R.drawable.tt_tab_contact_sel));
mTabButtons[1].setUnselectedImage(getResources().getDrawable(R.drawable.tt_tab_contact_nor));
mTabButtons[2].setTitle(getString(R.string.main_me_tab));
mTabButtons[2].setIndex(2);
mTabButtons[2].setSelectedImage(getResources().getDrawable(R.drawable.tt_tab_me_sel));
mTabButtons[2].setUnselectedImage(getResources().getDrawable(R.drawable.tt_tab_me_nor));
}
public void setFragmentIndicator(int which) {
getSupportFragmentManager().beginTransaction().hide(mFragments[0]).hide(mFragments[1]).hide(mFragments[2]).show(mFragments[which]).commit();
mTabButtons[0].setSelectedButton(false);
mTabButtons[1].setSelectedButton(false);
mTabButtons[2].setSelectedButton(false);
mTabButtons[which].setSelectedButton(true);
}
@SuppressLint("HandlerLeak")
private void initHandler() {
uiHandler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case HandlerConstant.HANDLER_CONTACTS_NEW_MESSAGE_COME :
showUnreadMessageCount();
break;
default :
break;
}
}
};
}
public void setUnreadMessageCnt(int unreadCnt) {
mTabButtons[0].setUnreadNotify(unreadCnt);
}
private void showUnreadMessageCount() {
//todo eric when to
//mTabButtons[0].setUnreadNotify(CacheHub.getInstance().getUnreadCount());
}
/**
* @Description 注册事件
*/
private void registEvents() {
NetStateDispach.getInstance().register(this.getClass(), uiHandler);
// 未读消息通知
MessageNotifyCenter.getInstance().register(SysConstant.EVENT_UNREAD_MSG, uiHandler, HandlerConstant.HANDLER_CONTACTS_NEW_MESSAGE_COME);
}
/**
* @Description 取消事件注册
*/
private void unRegistEvents() {
MessageNotifyCenter.getInstance().unregister(SysConstant.EVENT_UNREAD_MSG, getUiHandler(), HandlerConstant.HANDLER_CONTACTS_NEW_MESSAGE_COME);
return;
}
public void btnChatClick(View v) {
setFragmentIndicator(0);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
public void btnContactClick(View v) {
setFragmentIndicator(1);
}
public void btnMyClick(View v) {
setFragmentIndicator(2);
}
@Override
protected void onResume() {
super.onResume();
//set in onNewIntent
Intent intent = getIntent();
if (intent == null) {
return;
}
handleLocateDepratment(intent);
}
private void handleLocateDepratment(Intent intent) {
String departmentIdToLocate = intent.getStringExtra(SysConstant.KEY_LOCATE_DEPARTMENT);
if (departmentIdToLocate == null || departmentIdToLocate.isEmpty()) {
return;
}
logger.d("department#got department to locate id:%s", departmentIdToLocate);
setFragmentIndicator(1);
ContactFragment fragment = (ContactFragment) mFragments[1];
if (fragment == null) {
logger.e("department#fragment is null");
return;
}
fragment.locateDepartment(departmentIdToLocate);
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onDestroy() {
unRegistEvents();
super.onDestroy();
}
}