@Override public void onScrollStateChanged(AbsListView view, int scrollState) { super.onScrollStateChanged(view, scrollState); if (SCROLL_STATE_TOUCH_SCROLL == scrollState) { showDialpad(false); } if (SCROLL_STATE_FLING == scrollState) { mPhotoLoader.pause(); mNumLocationLoader.pause(); } else { mPhotoLoader.resume(); mNumLocationLoader.resume(); } }
@Override protected void onResume() { super.onResume(); mPhotoLoader.resume(); mNumLocationLoader.resume(); setVolumeControlStream(AudioManager.STREAM_SYSTEM); PimEngine.getInstance(this).setCallLogsRead(); CommonMethod.cancelMissedCallNotification(this); if (mHandler.hasMessages(RELOAD_DIALPADS)) { log("onResume"); mHandler.removeMessages(RELOAD_DIALPADS); reloadDialpadItems(); } mIsResume = true; }
@Override protected void onDestroy() { // unregisterReceiver(mOutgoingCallReceiver); // TelephonyManager telephonyMgr = (TelephonyManager // )getSystemService(Context.TELEPHONY_SERVICE); // telephonyMgr.listen(mCallListener, PhoneStateListener.LISTEN_NONE); resetFilter(); mPhotoLoader.stop(); mNumLocationLoader.stop(); PimEngine.getInstance(this).removeDataListenner(this); mActivityResultBridge = null; if (mPopupWin != null) { mPopupWin.dismiss(); mPopupWin = null; } super.onDestroy(); }
@Override protected void onListItemClick(ListView l, View v, int position, long id) { { super.onListItemClick(l, v, position, id); DialpadItem item = (DialpadItem) l.getItemAtPosition(position); String number = item.getNumber(); long contactId = item.getContactId(); String name = item.getName(); SharedPreferences mPrefs = getSharedPreferences("call_log_settings", Context.MODE_PRIVATE); int mClickOption = mPrefs.getInt("call_log_click_option", 0); log("onListItemClick: " + position + " " + number + "Clickoption = " + mClickOption); if (!TextUtils.isEmpty(number)) { if (mClickOption == 0) { CommonMethod.viewPimDetail( this, name, number, contactId, (item.getType() == DialpadItem.CALLLOG_TYPE ? DetailEntry.LOG_DETAIL : DetailEntry.CONTACT_DETAIL)); } else { // Added by GanFeng 20120213, fix bug3391 if ((null != mDialpad) && TextUtils.isEmpty(mDialpad.getNumber())) { long timeElapsed = Math.abs(System.currentTimeMillis() - mDialpad.getTimeStamp()); if (timeElapsed < 1000) { // the elapsed time < 1S return; } } if ((null != mDialpad) && !TextUtils.isEmpty(mDialpad.getNumber())) { mDialpad.setNumber(null); mDialpad.showNumberUI(); } call(number); } } } }
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfoIn) { super.onCreateContextMenu(menu, v, menuInfoIn); if (v.getId() == R.id.edt_dpkb_call_number) { menu.removeItem(android.R.id.switchInputMethod); menu.removeItem(android.R.id.selectAll); menu.removeItem(android.R.id.startSelectingText); return; } if (menuInfoIn != null) { AdapterView.AdapterContextMenuInfo menuInfo = null; try { menuInfo = (AdapterView.AdapterContextMenuInfo) menuInfoIn; } catch (ClassCastException e) { log("bad menuInfoIn e = " + e); return; } mContextMenuIdx = menuInfo.position; mDialpadItem = mItemAdapter.getItem(mContextMenuIdx); String name = mDialpadItem.getName(); String number = mDialpadItem.getNumber(); long contactId = mDialpadItem.getContactId(); log("onCreateContextMenu: name=" + name + " number=" + number + " contactId=" + contactId); if (!TextUtils.isEmpty(name)) { menu.setHeaderTitle(name); } else { if (number.equals(CallerInfo.UNKNOWN_NUMBER)) { number = getResources().getString(R.string.unknown); } else if (number.equals(CallerInfo.PRIVATE_NUMBER)) { number = getResources().getString(R.string.private_num); } else if (number.equals(CallerInfo.PAYPHONE_NUMBER)) { number = getResources().getString(R.string.payphone); } menu.setHeaderTitle(number); } if (DialpadItem.CALLLOG_TYPE == mDialpadItem.getType()) { menu.add(0, R.id.menu_log_detail, 0, R.string.view_calllog_detail); } menu.add(0, R.id.menu_send_message, 0, R.string.send_message); if (0 == contactId) { menu.add(0, R.id.menu_new_contact, 0, R.string.menu_newContact); // modify by zenghuaying fix bug #5705 if (!CommonMethod.contactsIsEmpty(this)) { menu.add(0, R.id.menu_add_to_contacts, 0, R.string.menu_add_to_contacts); } // modify end } else { menu.add(0, R.id.menu_view_contact, 0, R.string.view_contact); } if (DialpadItem.CALLLOG_TYPE == mDialpadItem.getType()) { menu.add(0, R.id.menu_delete_log, 0, R.string.delete_call_log); } if (CommonMethod.numberIsInBlacklist(this, number)) { menu.add(0, R.id.menu_clear_from_blacklist, 0, R.string.clear_from_blacklist); } else { menu.add(0, R.id.menu_add_to_blacklist, 0, R.string.add_to_blacklist); } } }
@Override protected void onPause() { mDialpad.stopQueryLocation(); super.onPause(); mIsResume = false; }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialpad_main_list); // setTitle(R.string.dialpad); PimStart.start(this.getApplicationContext()); PimEngine pimEng = PimEngine.getInstance(this); pimEng.loadCallLogs(false); mPhotoLoader = new ContactPhotoLoader( this, R.drawable.ic_contact_list_picture, R.drawable.ic_contact_header_unknow); mNumLocationLoader = new NumberLocationLoader(this); final List<DialpadItem> logGroups = PimEngine.getInstance(this).loadDialpadItems(false); final int count = logGroups.size(); if (count > 0) { final ArrayList<DialpadItem> newValues = new ArrayList<DialpadItem>(count); for (int i = 0; i < count; i++) { final DialpadItem item = logGroups.get(i); if (DialpadItem.CALLLOG_TYPE == item.getType()) { newValues.add(item); } } mItemAdapter = new DialpadListAdapter(this, newValues, mPhotoLoader, mNumLocationLoader, false); } else { mItemAdapter = new DialpadListAdapter(this, null, mPhotoLoader, mNumLocationLoader, false); } // mItemAdapter = new DialpadListAdapter(this, pimEng.loadCallLogItems(false), // mPhotoLoader, mNumLocationLoader); setListAdapter(mItemAdapter); ListView lv = getListView(); lv.setOnScrollListener(this); registerForContextMenu(lv); View dialpadView = findViewById(R.id.dialpad_keyboard); mDialpad = new DialpadView(dialpadView, this); Intent dialIntent = getIntent(); if (null != dialIntent) { Uri telUri = dialIntent.getData(); if (null != telUri) { mDialpad.setNumber(telUri.getSchemeSpecificPart()); mDialpad.showNumberUI(); } } mHandler = new Handler(Looper.myLooper(), this); /*IntentFilter intentFilter = new IntentFilter("android.intent.action.NEW_OUTGOING_CALL"); intentFilter.addCategory("android.intent.category.DEFAULT"); mOutgoingCallReceiver = new OutgoingCallReceiver(); registerReceiver(mOutgoingCallReceiver, intentFilter); mCallListener = new CallListener(); TelephonyManager telephonyMgr = (TelephonyManager )getSystemService(Context.TELEPHONY_SERVICE); telephonyMgr.listen(mCallListener, PhoneStateListener.LISTEN_CALL_STATE);*/ pimEng.addDataListenner(this); }