/** * */ package com.d3.d3xmpp.activites; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.annotation.SuppressLint; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.media.AudioManager; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; import com.d3.d3xmpp.R; import com.d3.d3xmpp.constant.Constants; import com.d3.d3xmpp.constant.MyApplication; import com.d3.d3xmpp.d3View.D3View; import com.d3.d3xmpp.dao.MsgDbHelper; import com.d3.d3xmpp.dao.NewMsgDbHelper; import com.d3.d3xmpp.fragments.AdrFragment; import com.d3.d3xmpp.fragments.ContactFragment; import com.d3.d3xmpp.fragments.MeFragment; import com.d3.d3xmpp.fragments.MsgFragment; import com.d3.d3xmpp.model.Room; import com.d3.d3xmpp.model.User; import com.d3.d3xmpp.util.LoadThread; import com.d3.d3xmpp.util.MyAndroidUtil; import com.d3.d3xmpp.util.Tool; import com.d3.d3xmpp.xmpp.XmppConnection; /** * @author MZH * */ @SuppressLint("ResourceAsColor") public class MainActivity extends BaseActivity { @D3View(click="onClick") Button chatBtn,contactBtn,adrBtn,meBtn; @D3View(click="onClick") ImageView leftBtn,rightBtn; @D3View FrameLayout page1,page2,page3,page4; @D3View TextView countView,countView1,titleView; private MsgFragment msgFragment; private ContactFragment contactFragment; private AdrFragment adrFragment; private MeFragment meFragment; private List<FrameLayout> pages = new ArrayList<FrameLayout>(); private long exitTime = 0; // ���ΰ����ؼ��˳��� private NewMsgReceiver newMsgReceiver; @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.acti_main); pages.add(page1); pages.add(page2); pages.add(page3); pages.add(page4); switchFragment(1, chatBtn); // ���յ�����Ϣ���¼����� updateCount(); updateCount1(); newMsgReceiver = new NewMsgReceiver(); registerReceiver(newMsgReceiver,new IntentFilter("ChatNewMsg")); registerReceiver(newMsgReceiver,new IntentFilter("FriendNewMsg")); registerReceiver(newMsgReceiver,new IntentFilter("conflict")); //�û����� Constants.loginUser = new User(XmppConnection.getInstance().getUserInfo(null)); // XmppConnection.getInstance().loadFriendAndJoinRoom(); } public void onClick(View v){ switch (v.getId()) { case R.id.leftBtn: if (page3.getVisibility() == View.VISIBLE && adrFragment!=null) { Tool.initToast(getApplicationContext(), "ˢ����..."); adrFragment.initFriendAdr(); } else if (page1.getVisibility() == View.VISIBLE && msgFragment != null) { Tool.initToast(getApplicationContext(), "ˢ����..."); XmppConnection.getInstance().reconnect(); } break; case R.id.rightBtn: if (page1.getVisibility() == View.VISIBLE) { startActivity(new Intent(getApplicationContext(), ChoseActivity.class)); } else if (page2.getVisibility() == View.VISIBLE) { startActivity(new Intent(getApplicationContext(), SearchActivity.class)); } else if (page3.getVisibility() == View.VISIBLE && adrFragment != null) { if (adrFragment.searchView.getVisibility() == View.GONE) { adrFragment.searchView.setVisibility(View.VISIBLE); } else { adrFragment.searchView.setVisibility(View.GONE); } } break; case R.id.chatBtn: switchFragment(1, v); break; case R.id.contactBtn: switchFragment(2, v); break; case R.id.adrBtn: switchFragment(3, v); break; case R.id.meBtn: switchFragment(4, v); break; default: break; } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (KeyEvent.KEYCODE_BACK == keyCode) { if (System.currentTimeMillis() - exitTime > 2000) { Tool.initToast(this, "�ٰ�һ���˳�����"); exitTime = System.currentTimeMillis(); } else { XmppConnection.getInstance().closeConnection(); finish(); System.exit(0); } } else if (KeyEvent.KEYCODE_VOLUME_DOWN == keyCode) { AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI); } else if (KeyEvent.KEYCODE_VOLUME_UP == keyCode) { AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI); } return false; } /* * Tab���߼����� * v�ǵ���� */ public void switchFragment(int tabIndex,View v) { page1.setVisibility(View.GONE); page2.setVisibility(View.GONE); page3.setVisibility(View.GONE); page4.setVisibility(View.GONE); chatBtn.setBackgroundColor(this.getResources().getColor(R.color.transparent_background)); contactBtn.setBackgroundColor(this.getResources().getColor(R.color.transparent_background)); adrBtn.setBackgroundColor(this.getResources().getColor(R.color.transparent_background)); meBtn.setBackgroundColor(this.getResources().getColor(R.color.transparent_background)); leftBtn.setVisibility(View.GONE); rightBtn.setVisibility(View.GONE); rightBtn.setImageResource(R.drawable.add); switch (tabIndex) { case 1: if (msgFragment == null) { msgFragment = new MsgFragment(); getSupportFragmentManager().beginTransaction() .replace(pages.get(tabIndex-1).getId(), msgFragment).commit(); } page1.setVisibility(View.VISIBLE); chatBtn.setBackgroundColor(this.getResources().getColor(R.color.green)); titleView.setText("��Ϣ"); // leftBtn.setVisibility(View.VISIBLE); rightBtn.setVisibility(View.VISIBLE); break; case 2: if (contactFragment == null) { contactFragment = new ContactFragment(); getSupportFragmentManager().beginTransaction() .replace(pages.get(tabIndex-1).getId(), contactFragment).commit(); } page2.setVisibility(View.VISIBLE); contactBtn.setBackgroundColor(this.getResources().getColor(R.color.green)); titleView.setText("ͨѶ¼"); rightBtn.setVisibility(View.VISIBLE); break; case 3: if (adrFragment == null) { adrFragment = new AdrFragment(); getSupportFragmentManager().beginTransaction() .replace(pages.get(tabIndex-1).getId(), adrFragment).commit(); } else { adrFragment.initFriendAdr(); if (!MyApplication.sharedPreferences.getBoolean("isShare", true)) { adrFragment.mLocClient.stop(); } else if (!adrFragment.mLocClient.isStarted()) { adrFragment.mLocClient.start(); } } leftBtn.setVisibility(View.VISIBLE); rightBtn.setVisibility(View.VISIBLE); rightBtn.setImageResource(R.drawable.search_b); page3.setVisibility(View.VISIBLE); adrBtn.setBackgroundColor(this.getResources().getColor(R.color.green)); titleView.setText("λ��"); break; case 4: if (meFragment == null) { meFragment = new MeFragment(); getSupportFragmentManager().beginTransaction() .replace(pages.get(tabIndex-1).getId(), meFragment).commit(); } page4.setVisibility(View.VISIBLE); meBtn.setBackgroundColor(this.getResources().getColor(R.color.green)); titleView.setText("����"); break; default: break; } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (RESULT_OK == resultCode) { switch (requestCode) { case PicSrcPickerActivity.CROP: if (page4.getVisibility() == View.VISIBLE) { // String imgName = data.getStringExtra("imgName"); meFragment.changeHead(data.getStringExtra("imgPath")); } break; default: break; } } } @Override protected void onResume() { MyAndroidUtil.clearNoti(); super.onResume(); } private class NewMsgReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("ChatNewMsg")) { updateCount(); } else if (intent.getAction().equals("conflict")) { if (adrFragment!=null && adrFragment.mLocClient != null) { adrFragment.mLocClient.stop(); adrFragment.timer1.cancel(); adrFragment.timer2.cancel(); } } else { updateCount1(); } } } @Override protected void onDestroy() { if (adrFragment!=null && adrFragment.mLocClient != null) { adrFragment.mLocClient.stop(); } super.onDestroy(); } public void updateCount() { // ���½��� int count = NewMsgDbHelper.getInstance(getApplicationContext()).getMsgCount(); if (count>0) { countView.setVisibility(View.VISIBLE); countView.setText(""+count); } else { countView.setVisibility(View.GONE); } } public void updateCount1() { // ���½��� int count = NewMsgDbHelper.getInstance(getApplicationContext()).getMsgCount(""+0); if (count>0) { countView1.setVisibility(View.VISIBLE); countView1.setText(""+count); } else { countView1.setVisibility(View.GONE); } } }