package com.bestapp.yikuair.fragments; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Set; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import com.bestapp.yikuair.R; import com.bestapp.yikuair.database.DBOpenHelper; import com.bestapp.yikuair.officialaccount.MyPhotoManager; import com.bestapp.yikuair.officialaccount.OfficialAccountFragment; //import com.bestapp.yikuair.officialaccount.SpeedFriendFragment; import com.bestapp.yikuair.utils.AccountInfomation; //import com.bestapp.yikuair.utils.Client; import com.bestapp.yikuair.utils.DBlog; import com.bestapp.yikuair.utils.ImgButton; import com.bestapp.yikuair.utils.MessageInfo; import com.bestapp.yikuair.utils.SharedPreferencesUtil; import com.bestapp.yikuair.utils.UserInfo; import com.loopj.android.http.AsyncHttpResponseHandler; public class MenuFragment extends Fragment { private TextView staffName; private TextView jobPosition; private TextView department; private ListView menuList; private listAdapter listAda; private static final int COMPANY_NEWS = 0; private static final int COMPANY_SCHEDULE = 1; private static final int COMPANY_MESSAGE = 2; private static final int COMPANY_ADDRESS_LIST = 3; private static final int COMPANY_USER_FEEDBACK = 6; private static final int COMPANY_OFFICIAL_ACCOUNT = 4; private static final int COMPANY_FRIENDS = 5; private int unReadedMessageCount; public static MenuFragment instance = null; public SharedPreferencesUtil menuShared = null; public static final String MENUNAME = "MenuName"; private int currentPos; private Fragment newContent; private View preView; private ImgButton setBtn; private ImageView staff_photo; private RelativeLayout rl_user_info; private ChatBroadcastReceiver cbr = null; private HeadModifiedBroadcastReceiver hbr = null; public ArrayList<AccountInfomation> mInfos = new ArrayList<AccountInfomation>(); private List<MenuItemInfo> list = new ArrayList<MenuItemInfo>(); private HashMap<Integer, List<ChatMsgEntity>> msgMap = new HashMap<Integer, List<ChatMsgEntity>>(); private DBOpenHelper dbOpenHelper; private Cursor cursor; private static boolean Loaded = false; // private MyPhotoManager mPhotoManager; FriendChatBroadcastReceiver fbr; public class FriendChatBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context arg0, Intent arg1) { if (arg1 == null) return; if (arg1.getStringExtra("name").equals("friend")) { if (MessageInfo.matchMessageEntityList.size() > 0) { list.get(COMPANY_FRIENDS).setNum( MessageInfo.matchMessageEntityList.size()); list.get(COMPANY_FRIENDS).setNumVisible(View.VISIBLE); listAda.notifyDataSetChanged(); } } else { if (MessageInfo.OfficeAccountList.size() > 0) { list.get(COMPANY_OFFICIAL_ACCOUNT).setNum( MessageInfo.OfficeAccountList.size()); list.get(COMPANY_OFFICIAL_ACCOUNT).setNumVisible( View.VISIBLE); listAda.notifyDataSetChanged(); } else { list.get(COMPANY_OFFICIAL_ACCOUNT).setNumVisible(View.GONE); listAda.notifyDataSetChanged(); } } } }; private void registerBroadcast() { IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(MessageInfo.FriendBroadCastName); getActivity().registerReceiver(fbr, intentFilter); } private void unregisterBroadcast() { getActivity().unregisterReceiver(fbr); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // mPhotoManager = new MyPhotoManager(getActivity(), this); return inflater.inflate(R.layout.menu_list, null); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); menuShared = new SharedPreferencesUtil(getActivity()); currentPos = COMPANY_MESSAGE; initView(); getMenuDataFromShared(); Log.i("test", "menu onActivityCreated ..............."); } AsyncHttpResponseHandler ResponseHandler = new AsyncHttpResponseHandler() { @Override public void onSuccess(int arg0, String arg1) { DBlog.e("订阅ID", arg1); JSONObject jsonObject; try { jsonObject = new JSONObject(arg1.toString()); JSONArray jsonArray = jsonObject.getJSONArray("data"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject2 = (JSONObject) jsonArray.opt(i); if (jsonObject2.has("id") && jsonObject2.has("headurl")) { AccountInfomation accountInfomation = new AccountInfomation(); accountInfomation.setRealname(jsonObject2.getString( "realname").trim()); accountInfomation.setHeadurl(jsonObject2 .getString("headurl")); accountInfomation.setId(jsonObject2.getString("id")); if (accountInfomation.getId().equals("1") || accountInfomation.getId().equals("2")) { continue; } accountInfomation.setSignature(jsonObject2 .getString("signature")); int Index = MessageInfo.OfficeAccountList_MINE .indexOf(accountInfomation); if (Index != -1) { accountInfomation.setSub(true); MessageInfo.OfficeAccountList_MINE.remove(Index); MessageInfo.OfficeAccountList_MINE .add(accountInfomation); } } else { AccountInfomation accountInfomation = new AccountInfomation(); accountInfomation.setId(jsonObject2.getString("id")); MessageInfo.OfficeAccountList_MINE.add(accountInfomation); mInfos.add(accountInfomation); } } // if (!Loaded) { // Loaded = true; // Client.get(ResponseHandler); // } } catch (JSONException e) { e.printStackTrace(); } }; @Override public void onFailure(Throwable arg0, String arg1) { }; }; public void initView() { Log.e("test", "menu initView...."); // if (!Loaded) { // // new Thread(new Runnable() { // // @Override // public void run() { //// mPhotoManager.loadingMyPhotoUrl(); // Client.getSub(ResponseHandler); // } // }).start(); // } fbr = new FriendChatBroadcastReceiver(); registerBroadcast(); SharedPreferencesUtil shared = new SharedPreferencesUtil(getActivity()); shared.getUserInfo(); shared.getPhotoUrl(); rl_user_info = (RelativeLayout) getActivity().findViewById( R.id.user_info); rl_user_info.setOnClickListener(btnClick); staffName = (TextView) getActivity().findViewById(R.id.staff_name); jobPosition = (TextView) getActivity().findViewById(R.id.job_position); department = (TextView) getActivity().findViewById(R.id.job_department); staff_photo = (ImageView) getActivity().findViewById(R.id.staff_photo); menuList = (ListView) getActivity().findViewById(R.id.m_list); listAda = new listAdapter(getActivity(), list); menuList.setAdapter(listAda); if (UserInfo.LocalphotoPath != null && UserInfo.LocalphotoPath.length() > 0) { BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inJustDecodeBounds = true; BitmapFactory.decodeFile(UserInfo.LocalphotoPath, opts); opts.inSampleSize = computeSampleSize(opts, -1, 128 * 128); // 这里必然要将其设置回false,因为之前我们将其设置成了true opts.inJustDecodeBounds = false; try { Bitmap bmp = BitmapFactory.decodeFile(UserInfo.LocalphotoPath, opts); if (bmp == null) { if (UserInfo.sex.equals("0")) staff_photo.setBackgroundDrawable(getResources() .getDrawable(R.drawable.girl)); else staff_photo.setBackgroundDrawable(getResources() .getDrawable(R.drawable.boy)); } else { staff_photo.setBackgroundDrawable(new BitmapDrawable(bmp)); } } catch (OutOfMemoryError err) { } } else { if (UserInfo.sex.equals("0")) staff_photo.setBackgroundDrawable(getResources().getDrawable( R.drawable.girl)); else staff_photo.setBackgroundDrawable(getResources().getDrawable( R.drawable.boy)); } staffName.setText(UserInfo.realName); jobPosition.setText(UserInfo.duty); department.setText(UserInfo.team); setBtn = (ImgButton) getActivity().findViewById(R.id.set_btn); setBtn.setOnClickListener(btnClick); list.add(new MenuItemInfo(getActivity().getResources().getString( R.string.company_news), 0, View.GONE, R.drawable.left_0_ico)); list.add(new MenuItemInfo(getActivity().getResources().getString( R.string.company_agenda), 0, View.GONE, R.drawable.left_1_ico)); list.add(new MenuItemInfo(getActivity().getResources().getString( R.string.company_message), 0, View.GONE, R.drawable.left_2_ico)); list.add(new MenuItemInfo(getActivity().getResources().getString( R.string.company_address_list), 0, View.GONE, R.drawable.left_3_ico)); list.add(new MenuItemInfo(getActivity().getResources().getString( R.string.company_official_account), MessageInfo.OfficeAccountList.size(), View.GONE, R.drawable.ico_rss_normal)); list.add(new MenuItemInfo(getActivity().getResources().getString( R.string.company_friends), 0, View.GONE, R.drawable.ico_friend_normal)); list.add(new MenuItemInfo(getActivity().getResources().getString( R.string.user_feedback), 0, View.GONE, R.drawable.left_4_ico)); Log.i("test", "UserInfo.isfirstlogin... :" + UserInfo.isFirstLogin); Log.i("test", "UserInfo.feedback... :" + UserInfo.feedback_dbId); Log.i("test", "UserInfo.copanynewdbid... :" + UserInfo.companyNews_dbId); if (isFirstLogin()) { ChatMsgEntity entity = new ChatMsgEntity(); entity.setIsComing(true); entity.setContent(getActivity().getResources().getString( R.string.user_feedback_first_message)); entity.setType(MessageInfo.TEXT); entity.setTime(MessageInfo.getChatTime()); entity.setSenderId(UserInfo.feedback_dbId); entity.setReceiverId(UserInfo.feedback_dbId); entity.setStatus(MessageInfo.RECEIVE_MESSAGE); updataMenuList(COMPANY_USER_FEEDBACK, 1, entity); ChatMsgEntity ent = new ChatMsgEntity(); ent.setIsComing(true); ent.setContent(getActivity().getResources().getString( R.string.welcome_news)); ent.setType(MessageInfo.TEXT); ent.setTime(MessageInfo.getChatTime()); ent.setSenderId(UserInfo.companyNews_dbId); ent.setReceiverId(UserInfo.companyNews_dbId); ent.setStatus(MessageInfo.RECEIVE_MESSAGE); updataMenuList(COMPANY_NEWS, 1, ent); /*********************************************/ /* * MessageInfo.messageEntityList.add(entity); * MessageInfo.messageEntityList.add(ent); */ } menuList.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { currentPos = arg2; if (preView != null) { preView.setBackgroundColor(Color.TRANSPARENT); ImageView leftBar = (ImageView) preView .findViewById(R.id.iv_left_bar); leftBar.setVisibility(View.INVISIBLE); TextView tvItem = (TextView) preView .findViewById(R.id.item_function); tvItem.setTextColor(getResources().getColor( R.color.menu_item1_tv_normal)); ImageView rightBar = (ImageView) preView .findViewById(R.id.iv_right_bar); rightBar.setBackgroundResource(R.drawable.mm_submenu_normal); ImageView leftIcon = (ImageView) preView .findViewById(R.id.iv_left_icon); if (tvItem .getText() .toString() .equals(getActivity().getResources().getString( R.string.company_news))) { leftIcon.setBackgroundResource(R.drawable.left_0_ico); } else if (tvItem .getText() .toString() .equals(getActivity().getResources().getString( R.string.company_agenda))) { leftIcon.setBackgroundResource(R.drawable.left_1_ico); } else if (tvItem .getText() .toString() .equals(getActivity().getResources().getString( R.string.company_message))) { leftIcon.setBackgroundResource(R.drawable.left_2_ico); } else if (tvItem .getText() .toString() .equals(getActivity().getResources().getString( R.string.company_address_list))) { leftIcon.setBackgroundResource(R.drawable.left_3_ico); } else if (tvItem .getText() .toString() .equals(getActivity().getResources().getString( R.string.user_feedback))) { leftIcon.setBackgroundResource(R.drawable.left_4_ico); } else if (tvItem .getText() .toString() .equals(getActivity().getResources().getString( R.string.company_official_account))) { leftIcon.setBackgroundResource(R.drawable.ico_rss_normal); } else if (tvItem .getText() .toString() .equals(getActivity().getResources().getString( R.string.company_friends))) { leftIcon.setBackgroundResource(R.drawable.ico_rss_normal); } } arg1.setBackgroundColor(Color.BLACK); ImageView leftBar = (ImageView) arg1 .findViewById(R.id.iv_left_bar); leftBar.setVisibility(View.VISIBLE); ImageView leftIcon = (ImageView) arg1 .findViewById(R.id.iv_left_icon); TextView tvItem = (TextView) arg1 .findViewById(R.id.item_function); tvItem.setTextColor(Color.WHITE); ImageView rightBar = (ImageView) arg1 .findViewById(R.id.iv_right_bar); rightBar.setBackgroundResource(R.drawable.mm_submenu_pressed); if (tvItem .getText() .toString() .equals(getActivity().getResources().getString( R.string.company_news))) { leftIcon.setBackgroundResource(R.drawable.left_0_ico_highlighted); } else if (tvItem .getText() .toString() .equals(getActivity().getResources().getString( R.string.company_agenda))) { leftIcon.setBackgroundResource(R.drawable.left_1_ico_highlighted); } else if (tvItem .getText() .toString() .equals(getActivity().getResources().getString( R.string.company_message))) { leftIcon.setBackgroundResource(R.drawable.left_2_ico_highlighted); } else if (tvItem .getText() .toString() .equals(getActivity().getResources().getString( R.string.company_address_list))) { leftIcon.setBackgroundResource(R.drawable.left_3_ico_highlighted); } else if (tvItem .getText() .toString() .equals(getActivity().getResources().getString( R.string.user_feedback))) { leftIcon.setBackgroundResource(R.drawable.left_4_ico_highlighted); } else if (tvItem .getText() .toString() .equals(getActivity().getResources().getString( R.string.company_official_account))) { leftIcon.setBackgroundResource(R.drawable.ico_rss_pressed); } else if (tvItem .getText() .toString() .equals(getActivity().getResources().getString( R.string.company_friends))) { leftIcon.setBackgroundResource(R.drawable.ico_friend_pressed); } preView = arg1; currentPos = arg2; newContent = null; switch (arg2) { case COMPANY_NEWS: if (msgMap.get(COMPANY_NEWS) != null) { updataMenuList(COMPANY_NEWS, 0, null); for (int i = 0; i < msgMap.get(COMPANY_NEWS).size(); i++) { MessageInfo.menuCompanyNewsList.add(msgMap.get( COMPANY_NEWS).get(i)); } msgMap.get(COMPANY_NEWS).clear(); } list.get(COMPANY_NEWS).setNum(0); list.get(COMPANY_NEWS).setNumVisible(View.GONE); newContent = new CompanyNewsFragment(); break; case COMPANY_SCHEDULE: newContent = new ScheduleFragment(); break; case COMPANY_MESSAGE: Log.e("test", "messageintitylist.size :" + MessageInfo.messageEntityList.size()); if (msgMap.get(COMPANY_MESSAGE) != null) { updataMenuList(COMPANY_MESSAGE, 0, null); for (int i = 0; i < msgMap.get(COMPANY_MESSAGE).size(); i++) { MessageInfo.messageEntityList.add(msgMap.get( COMPANY_MESSAGE).get(i)); } msgMap.get(COMPANY_MESSAGE).clear(); } list.get(COMPANY_MESSAGE).setNum(0); list.get(COMPANY_MESSAGE).setNumVisible(View.GONE); newContent = new MessageFragment(); break; case COMPANY_ADDRESS_LIST: newContent = new PhoneBookFragment(); break; case COMPANY_USER_FEEDBACK: if (msgMap.get(COMPANY_USER_FEEDBACK) != null) { updataMenuList(COMPANY_USER_FEEDBACK, 0, null); for (int i = 0; i < msgMap.get(COMPANY_USER_FEEDBACK) .size(); i++) { MessageInfo.menuFeedbackList.add(msgMap.get( COMPANY_USER_FEEDBACK).get(i)); } msgMap.get(COMPANY_USER_FEEDBACK).clear(); } list.get(COMPANY_USER_FEEDBACK).setNum(0); list.get(COMPANY_USER_FEEDBACK).setNumVisible(View.GONE); newContent = new FeedBackFragment(); break; case COMPANY_OFFICIAL_ACCOUNT: newContent = new OfficialAccountFragment(); break; } if (newContent != null) switchFragment(newContent); } }); } public void readDataFromLocal() { Log.e("test", "size :" + MessageInfo.messageEntityList.size()); if (MessageInfo.messageEntityList != null && !MessageInfo.messageEntityList.isEmpty()) { for (int i = 0; i < MessageInfo.messageEntityList.size(); i++) { int menuItem = -1; if (MessageInfo.messageEntityList.get(i).getStatus() != MessageInfo.SEND_MESSAGE && MessageInfo.messageEntityList.get(i).getStatus() != MessageInfo.RECEIVE_MESSAGE && MessageInfo.messageEntityList.get(i).getStatus() != MessageInfo.GROUP_MODIFY) continue; Log.e("test", "receiver ss :" + MessageInfo.messageEntityList.get(i).getReceiverId()); if ((MessageInfo.messageEntityList.get(i).getStatus() == MessageInfo.SEND_MESSAGE) || (MessageInfo.messageEntityList.get(i).getChatType() == MessageInfo.GROUP && MessageInfo.groupMap .containsKey(MessageInfo.messageEntityList.get( i).getReceiverId())) || (MessageInfo.messageEntityList.get(i) .getReceiverId() != null && MessageInfo.messageEntityList .get(i).getReceiverId().equals(UserInfo.db_id)) || MessageInfo.messageEntityList.get(i).getStatus() == MessageInfo.GROUP_MODIFY) { Log.e("test", "company message.........."); menuItem = COMPANY_MESSAGE; } else if (MessageInfo.messageEntityList.get(i).getSenderId() != null && MessageInfo.messageEntityList.get(i).getSenderId() .equals(UserInfo.companyNews_dbId)) { Log.e("test", "company news........."); menuItem = COMPANY_NEWS; } else if (MessageInfo.messageEntityList.get(i).getSenderId() != null && MessageInfo.messageEntityList.get(i).getSenderId() .equals(UserInfo.feedback_dbId)) { Log.e("test", "company user feedback............"); menuItem = COMPANY_USER_FEEDBACK; } int count = 0; if (MessageInfo.messageEntityList.get(i).getStatus() != MessageInfo.SEND_MESSAGE)// send // message // is // not // show // count count = 1; Log.e("test", "count is " + count); updataMenuList(menuItem, count, MessageInfo.messageEntityList.get(i)); } MessageInfo.messageEntityList.clear(); } } /*******************************************/ public void getMenuDataFromShared() { if (menuShared == null) menuShared = new SharedPreferencesUtil(getActivity()); if (menuShared.readMenuDataFromShared(MENUNAME + UserInfo.db_id) != null) { msgMap = menuShared.readMenuDataFromShared(MENUNAME + UserInfo.db_id); if (msgMap != null && !msgMap.isEmpty()) { MessageInfo.messageEntityList.clear(); Set set = msgMap.keySet(); Iterator it = set.iterator(); while (it.hasNext()) { int key = (Integer) it.next(); List<ChatMsgEntity> list = msgMap.get(key); if (list != null && !list.isEmpty()) for (int i = 0; i < list.size(); i++) { MessageInfo.messageEntityList.add(list.get(i)); } } msgMap.clear(); readDataFromLocal(); } } } public class ChatBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.e("test", "menu broadcast receive..................."); ChatMsgEntity entity = new ChatMsgEntity(); Bundle bundle = intent.getExtras(); Serializable data = bundle.getSerializable("message"); if (data != null) { entity = (ChatMsgEntity) data; AccountInfomation accountInfomation = new AccountInfomation(); accountInfomation.setId(entity.getSenderId()); if (MessageInfo.OfficeAccountList_MINE .contains(accountInfomation)) { return; } if (entity.getStatus() != MessageInfo.RECEIVE_MESSAGE && entity.getStatus() != MessageInfo.GROUP_MODIFY) return; int itemNum = -1; if (entity.getFromname() != null && !entity.getFromname().equals("")) { itemNum = COMPANY_FRIENDS; } else { if (entity.getSenderId().equals(UserInfo.companyNews_dbId)) itemNum = COMPANY_NEWS; else if (entity.getSenderId() .equals(UserInfo.feedback_dbId)) itemNum = COMPANY_USER_FEEDBACK; else if (entity.getChatType() == MessageInfo.GROUP && MessageInfo.groupMap.containsKey(entity .getReceiverId()) || entity.getReceiverId().equals(UserInfo.db_id)) { itemNum = COMPANY_MESSAGE; } } Log.e("test", "companyNews_dbid :" + UserInfo.companyNews_dbId); Log.e("test", "companyfeedback_dbid :" + UserInfo.feedback_dbId); Log.e("test", "id_id :" + UserInfo.db_id); Log.i("test", "from :" + entity.getSenderId()); Log.i("test", "itemnum : " + itemNum); Log.i("test", "to :" + entity.getReceiverId()); updataMenuList(itemNum, 1, entity); } else { // Log.e("test", "count is " + // MessageInfo.unReadedMessageCount); String name = intent.getStringExtra("name"); Log.e("test", "name is " + name); if (name != null && name.length() > 0) if (name.equals(getActivity().getResources().getString( R.string.company_news))) { list.get(COMPANY_NEWS).setNum(0); list.get(COMPANY_NEWS).setNumVisible(View.GONE); } else if (name.equals(getActivity().getResources() .getString(R.string.company_message))) { unReadedMessageCount = MessageInfo.unReadedMessageCount; Log.e("test", "unreaded count is " + unReadedMessageCount); if (unReadedMessageCount > 0) { list.get(COMPANY_MESSAGE).setNum( unReadedMessageCount); list.get(COMPANY_MESSAGE).setNumVisible( View.VISIBLE); } else { list.get(COMPANY_MESSAGE).setNum(0); list.get(COMPANY_MESSAGE).setNumVisible(View.GONE); } } else if (name.equals(getActivity().getResources() .getString(R.string.user_feedback))) { list.get(COMPANY_USER_FEEDBACK).setNum(0); list.get(COMPANY_USER_FEEDBACK) .setNumVisible(View.GONE); } else if (name.equals("office")) { if (MessageInfo.OfficeAccountList.size() == 0) { return; } int num = intent.getIntExtra("number", 0); Log.e("test", "number :" + num); if (num == 0) { list.get(COMPANY_OFFICIAL_ACCOUNT).setNum(0); list.get(COMPANY_OFFICIAL_ACCOUNT).setNumVisible( View.GONE); } else { list.get(COMPANY_OFFICIAL_ACCOUNT).setNum(num); list.get(COMPANY_OFFICIAL_ACCOUNT).setNumVisible( View.VISIBLE); } } else if (name.equals("friend")) { int num = intent.getIntExtra("number", 0); Log.e("test", "number :" + num); if (num == 0) { list.get(COMPANY_FRIENDS).setNum(0); list.get(COMPANY_FRIENDS).setNumVisible(View.GONE); } else { list.get(COMPANY_FRIENDS).setNum(num); list.get(COMPANY_FRIENDS).setNumVisible( View.VISIBLE); } } listAda.notifyDataSetChanged(); } } } public class HeadModifiedBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.e("test", "menu broadcast receive..................."); if (UserInfo.LocalphotoPath != null && UserInfo.LocalphotoPath.length() > 0) { BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inJustDecodeBounds = true; BitmapFactory.decodeFile(UserInfo.LocalphotoPath, opts); opts.inSampleSize = computeSampleSize(opts, -1, 128 * 128); // 这里必然要将其设置回false,因为之前我们将其设置成了true opts.inJustDecodeBounds = false; try { Bitmap bmp = BitmapFactory.decodeFile( UserInfo.LocalphotoPath, opts); staff_photo.setBackgroundDrawable(new BitmapDrawable(bmp)); } catch (OutOfMemoryError err) { } } } } private OnClickListener btnClick = new OnClickListener() { public void onClick(View v) { switch (v.getId()) { case R.id.user_info: Intent intent = new Intent(getActivity(), PersonalProfileActivity.class); intent.putExtra("individualInfo", " "); startActivity(intent); getActivity().overridePendingTransition(R.anim.in_from_right, R.anim.out_of_left); break; case R.id.set_btn:/* * Intent intent2 = new Intent(getActivity(), * SettingActivity.class); startActivity(intent2); * getActivity * ().overridePendingTransition(R.anim.in_from_right * , R.anim.out_of_left); */ newContent = new SettingFragment(); switchFragment(newContent); } } }; private boolean isFirstLogin() { SharedPreferences setting = getActivity().getSharedPreferences( "yikuairMenu", 0); Boolean user_first = setting.getBoolean("FIRST", true); if (user_first) { setting.edit().putBoolean("FIRST", false).commit(); UserInfo.isFirstLogin = true; return true; } else { UserInfo.isFirstLogin = false; return false; } } @Override public void onStart() { super.onStart(); Log.i("test", "menu onstart...................."); // SharedPreferencesUtil shared = new // SharedPreferencesUtil(getActivity()); // shared.getUserInfo(); dbOpenHelper = new DBOpenHelper(getActivity()); if (UserInfo.companyNews_dbId == null || UserInfo.companyNews_dbId.length() == 0) { UserInfo.companyNews_dbId = getDBIdFromDB(getActivity() .getResources().getString(R.string.company_news)); Log.e("test", "...........company dbid :" + UserInfo.companyNews_dbId); } if (UserInfo.feedback_dbId == null || UserInfo.feedback_dbId.length() == 0) { UserInfo.feedback_dbId = getDBIdFromDB(getActivity().getResources() .getString(R.string.user_feedback)); Log.e("test", "...................feedback dbid :" + UserInfo.feedback_dbId); } // register broadcast if (cbr == null) { IntentFilter myIntentFilter = new IntentFilter(); myIntentFilter.addAction(MessageInfo.MessageBroadCastName); cbr = new ChatBroadcastReceiver(); getActivity().registerReceiver(cbr, myIntentFilter); } if (hbr == null) { IntentFilter headIntentFilter = new IntentFilter(); headIntentFilter.addAction(MessageInfo.HeadModifieyBroadCastName); hbr = new HeadModifiedBroadcastReceiver(); getActivity().registerReceiver(hbr, headIntentFilter); } readDataFromLocal(); if (UserInfo.LocalphotoPath != null && UserInfo.LocalphotoPath.length() > 0) { BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inJustDecodeBounds = true; BitmapFactory.decodeFile(UserInfo.LocalphotoPath, opts); opts.inSampleSize = computeSampleSize(opts, -1, 128 * 128); // 这里必然要将其设置回false,因为之前我们将其设置成了true opts.inJustDecodeBounds = false; try { Bitmap bmp = BitmapFactory.decodeFile(UserInfo.LocalphotoPath, opts); staff_photo.setBackgroundDrawable(new BitmapDrawable(bmp)); } catch (OutOfMemoryError err) { } } instance = this; } public static int computeSampleSize(BitmapFactory.Options options, int minSideLength, int maxNumOfPixels) { int initialSize = computeInitialSampleSize(options, minSideLength, maxNumOfPixels); int roundedSize; if (initialSize <= 8) { roundedSize = 1; while (roundedSize < initialSize) { roundedSize <<= 1; } } else { roundedSize = (initialSize + 7) / 8 * 8; } return roundedSize; } private static int computeInitialSampleSize(BitmapFactory.Options options, int minSideLength, int maxNumOfPixels) { double w = options.outWidth; double h = options.outHeight; int lowerBound = (maxNumOfPixels == -1) ? 1 : (int) Math.ceil(Math .sqrt(w * h / maxNumOfPixels)); int upperBound = (minSideLength == -1) ? 128 : (int) Math.min( Math.floor(w / minSideLength), Math.floor(h / minSideLength)); if (upperBound < lowerBound) { return lowerBound; } if ((maxNumOfPixels == -1) && (minSideLength == -1)) { return 1; } else if (minSideLength == -1) { return lowerBound; } else { return upperBound; } } public void onResume() { Log.e("test", "menu onResume...................."); if (MessageInfo.matchMessageEntityList.size() > 0) { list.get(COMPANY_FRIENDS).setNum( MessageInfo.matchMessageEntityList.size()); list.get(6).setNumVisible(View.VISIBLE); } else { list.get(6).setNumVisible(View.GONE); } listAda.notifyDataSetChanged(); super.onResume(); } @Override public void onPause() { super.onPause(); Log.e("test", "menu onPause"); } @Override public void onStop() { super.onStop(); SharedPreferencesUtil shared = new SharedPreferencesUtil(getActivity()); shared.saveUserInfo(); instance = null; Log.e("test", "menu onStop"); } @Override public void onDestroy() { super.onDestroy(); unregisterBroadcast(); if (hbr != null) { getActivity().unregisterReceiver(hbr); hbr = null; } if (cbr != null) { getActivity().unregisterReceiver(cbr); cbr = null; } if (menuShared == null) menuShared = new SharedPreferencesUtil(getActivity()); menuShared.saveMenuDatatoShared(msgMap, MENUNAME + UserInfo.db_id); Log.i("test", "menu onDestroy"); } // the meat of switching the above fragment private void switchFragment(Fragment fragment) { if (getActivity() == null) return; if (getActivity() instanceof ResponsiveUIActivity) { ResponsiveUIActivity ra = (ResponsiveUIActivity) getActivity(); ra.switchContent(fragment); } } private void updataMenuList(int menuItemNum, int messageCount, ChatMsgEntity entity) { if (menuItemNum == 6) { list.get(COMPANY_FRIENDS).setNum( MessageInfo.matchMessageEntityList.size()); list.get(menuItemNum).setNumVisible(View.VISIBLE); listAda.notifyDataSetChanged(); return; } if (menuItemNum == -1) return; if (msgMap.containsKey(menuItemNum)) { if (entity != null) { if (MessageFragment.instance == null) { if (entity.getStatus() != MessageInfo.SEND_MESSAGE) { entity.setIsAdd(true); } } else { entity.setIsAdd(false); } if (menuItemNum == COMPANY_NEWS) { if (CompanyNewsFragment.instance == null) msgMap.get(menuItemNum).add(entity); } else if (menuItemNum == COMPANY_USER_FEEDBACK) { if (FeedBackFragment.instance == null) msgMap.get(menuItemNum).add(entity); } else msgMap.get(menuItemNum).add(entity); list.get(menuItemNum) .setNum(list.get(menuItemNum).getNum() + messageCount + (entity.getStatus() == MessageInfo.GROUP_MODIFY ? -1 : 0)); if (list.get(menuItemNum).getNum() + messageCount + (entity.getStatus() == MessageInfo.GROUP_MODIFY ? -1 : 0) > 0) list.get(menuItemNum).setNumVisible(View.VISIBLE); else list.get(menuItemNum).setNumVisible(View.GONE); } else { if (messageCount == 0) { list.get(menuItemNum).setNumVisible(View.GONE); } else { list.get(menuItemNum).setNum(messageCount); list.get(menuItemNum).setNumVisible(View.VISIBLE); } } } else { List<ChatMsgEntity> msgList = new ArrayList<ChatMsgEntity>(); if (entity != null) { if (MessageFragment.instance == null) { if (entity.getStatus() != MessageInfo.SEND_MESSAGE) { entity.setIsAdd(true); } } else { entity.setIsAdd(false); } msgList.add(entity); msgMap.put(menuItemNum, msgList); int count = 0; for (int i = 0; i < msgMap.get(menuItemNum).size(); i++) { if (msgMap.get(menuItemNum).get(i).getStatus() != MessageInfo.SEND_MESSAGE) count++; } if (count > 0/* msgMap.get(menuItemNum).size() > 0 */) { Log.e("test", "count is + " + msgMap.get(menuItemNum).size()); list.get(menuItemNum) .setNum(list.get(menuItemNum).getNum() + msgMap.get(menuItemNum).size() + (entity.getStatus() == MessageInfo.GROUP_MODIFY ? -1 : 0)); if (list.get(menuItemNum).getNum() + msgMap.get(menuItemNum).size() + (entity.getStatus() == MessageInfo.GROUP_MODIFY ? -1 : 0) > 0) list.get(menuItemNum).setNumVisible(View.VISIBLE); else list.get(menuItemNum).setNumVisible(View.GONE); } else list.get(menuItemNum).setNumVisible(View.GONE); } } listAda.notifyDataSetChanged(); } public String getHeadUrlFromDB(String dbId) { if (dbId == null) return ""; dbOpenHelper = new DBOpenHelper(getActivity()); SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); String name = ""; cursor = db.rawQuery("select * from contactsTable where dbid=?", new String[] { dbId }); if (cursor.moveToFirst()) { name = cursor.getString(8); } dbOpenHelper.close(); cursor.close(); return name; } public String getSexFromDB(String dbId) { if (dbId == null) return ""; dbOpenHelper = new DBOpenHelper(getActivity()); SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); String name = ""; cursor = db.rawQuery("select * from contactsTable where dbid=?", new String[] { dbId }); if (cursor.moveToFirst()) { name = cursor.getString(13); } dbOpenHelper.close(); cursor.close(); return name; } private String getDBIdFromDB(String name) { if (name == null) return ""; String dbid = ""; dbOpenHelper = new DBOpenHelper(getActivity()); SQLiteDatabase db = dbOpenHelper.getReadableDatabase(); cursor = db.rawQuery("select * from contactsTable where name=?", new String[] { name }); if (cursor.moveToFirst()) { dbid = cursor.getString(14); } cursor.close(); dbOpenHelper.close(); return dbid; } private class listAdapter extends BaseAdapter { private List<MenuItemInfo> mData; private LayoutInflater mInflater; public listAdapter(Context context, List<MenuItemInfo> list) { mInflater = LayoutInflater.from(context); mData = list; } @Override public int getCount() { // TODO Auto-generated method stub return mData.size(); } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return mData.get(arg0); } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return arg0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; holder = new ViewHolder(); convertView = mInflater.inflate(R.layout.menu_item1, null); holder.textView = (TextView) convertView .findViewById(R.id.item_function); holder.rl_num = (RelativeLayout) convertView .findViewById(R.id.rl_prompt_num); holder.tv_num = (TextView) convertView .findViewById(R.id.tv_prompt_num); holder.iv_icon = (ImageView) convertView .findViewById(R.id.iv_left_icon); holder.textView.setText(mData.get(position).getMenuName()); holder.rl_num.setVisibility(mData.get(position).getNumVisible()); holder.tv_num.setText(String.valueOf(mData.get(position).getNum())); holder.iv_icon.setBackgroundResource(mData.get(position).getIcon()); if (position == currentPos) { convertView.setBackgroundColor(Color.BLACK); ImageView leftBar = (ImageView) convertView .findViewById(R.id.iv_left_bar); leftBar.setVisibility(View.VISIBLE); TextView tvItem = (TextView) convertView .findViewById(R.id.item_function); tvItem.setTextColor(Color.WHITE); ImageView rightBar = (ImageView) convertView .findViewById(R.id.iv_right_bar); rightBar.setBackgroundResource(R.drawable.mm_submenu_pressed); ImageView leftIcon = (ImageView) convertView .findViewById(R.id.iv_left_icon); if (position == 0) { leftIcon.setBackgroundResource(R.drawable.left_0_ico_highlighted); } else if (position == 1) { leftIcon.setBackgroundResource(R.drawable.left_1_ico_highlighted); } else if (position == 2) { leftIcon.setBackgroundResource(R.drawable.left_2_ico_highlighted); } else if (position == 3) { leftIcon.setBackgroundResource(R.drawable.left_3_ico_highlighted); } else if (position == 4) { leftIcon.setBackgroundResource(R.drawable.left_4_ico_highlighted); } else if (position == 5) { leftIcon.setBackgroundResource(R.drawable.ico_rss_pressed); } preView = convertView; } return convertView; } public class ViewHolder { public TextView textView; public RelativeLayout rl_num; public TextView tv_num; public ImageView iv_icon; } } // @Override // public void fillContentToPeopleList(ArrayList<AccountInfomation> list) { // // TODO Auto-generated method stub // // } // // @Override // public void likeMe(boolean arg0, boolean arg1) { // // TODO Auto-generated method stub // // } // // @Override // public void fillPhotoSeek(String url) { // // TODO Auto-generated method stub // // } }