@Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo menuInfo = null; try { menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); } catch (ClassCastException e) { log("bad menuInfoIn e=" + e); return super.onContextItemSelected(item); } if (mDialpadItem == null) { mDialpadItem = mItemAdapter.getItem(mContextMenuIdx); } String name = mDialpadItem.getName(); String number = mDialpadItem.getNumber(); long contactId = mDialpadItem.getContactId(); log("onContextItemSelected: name=" + name + " number=" + number + " contactId=" + contactId); switch (item.getItemId()) { case R.id.menu_new_contact: CommonMethod.newContact(this, number); break; case R.id.menu_add_to_contacts: CommonMethod.createContact(this, number); break; case R.id.menu_view_contact: CommonMethod.viewContact(this, contactId); break; case R.id.menu_send_message: CommonMethod.sendMessage(this, number, null); break; case R.id.menu_delete_log: CommonMethod.showConfirmDlg( this, R.string.clear_call_log_by_number_confirm, R.string.alert_dialog_title, new DelCallLogItemListener()); break; case R.id.menu_log_detail: CommonMethod.viewPimDetail(this, name, number, contactId, DetailEntry.LOG_DETAIL); break; case R.id.menu_add_to_blacklist: CommonMethod.addToBlacklist(this, name, number); break; case R.id.menu_clear_from_blacklist: CommonMethod.clearFromBlacklist(this, name, number); break; default: break; } return super.onContextItemSelected(item); }
private void resetFilter() { int nCount = mItemAdapter.getCount(); for (int i = 0; i < nCount; ++i) { final DialpadItem item = (DialpadItem) mItemAdapter.getItem(i); item.setMatchField(FilterItem.INVALID_FIELD); item.setMatchKey(null); } }
private DialpadItem findDialpad(List<DialpadItem> dialpadItems, String numberToFind) { if (!TextUtils.isEmpty(numberToFind)) { for (DialpadItem item : dialpadItems) { if (null == item) { continue; } if (numberToFind.equals(item.getNumber())) { return item; } } } return null; }
@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); } } } }
public void categorizeCallLog(int logType) { if (null != mItemAdapter) { 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 ((DialpadView.CALLLOG_TYPE_ALL == logType || item.hasCallType(logType)) && DialpadItem.CALLLOG_TYPE == item.getType()) { // add by zenghuaying fix bug #8908 if (item.getContactId() == 0) { item.setName(null); } // add end newValues.add(item); } } mItemAdapter.setIsShowInFilterList(false); // add by zenghuaying mItemAdapter.setFilterCallType(logType); mItemAdapter.update(newValues, false); loge("categorizeCallLog adapter update"); } if (Calls.OUTGOING_TYPE == logType) { setLogsEmptyHint(getResources().getText(R.string.outgoing_logs_empty)); } else if (Calls.INCOMING_TYPE == logType) { setLogsEmptyHint(getResources().getText(R.string.incoming_logs_empty)); } else if (Calls.MISSED_TYPE == logType) { setLogsEmptyHint(getResources().getText(R.string.missed_logs_empty)); } else { setLogsEmptyHint(getResources().getText(R.string.call_logs_empty)); } } }
private void deleteCallLog(DialpadItem dialpadItem) { if (dialpadItem == null) { return; } String number = dialpadItem.getNumber(); if (!TextUtils.isEmpty(number)) { if (number.length() < CommonMethod.MIN_NUMBER_LENGTH_ALLOWED_TO_ADD_IP) { getContentResolver().delete(Calls.CONTENT_URI, ("number='" + number + "'"), null); } else { // add by zenghuaying 2012.6.28 for bug 7961 if (CommonMethod.isStartWithIpPrefix(this, number)) { number = number.substring(5); } getContentResolver().delete(Calls.CONTENT_URI, ("number LIKE '%" + number + "'"), null); } } }
@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 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); }