public void updateParent(Call oldParent, Call newParent) { if (newParent != oldParent) { if (oldParent != null) { oldParent.detach(this); } newParent.attachFake(this, Call.State.ACTIVE); parent = newParent; } }
public void fakeHoldBeforeDialIms() { if (parent != null) { parent.detach(this); } parent = owner.backgroundCallIms; parent.attachFake(this, Call.State.HOLDING); onStartedHolding(); }
/** Called when the call waiting connection has been hung up */ public void onLocalDisconnect() { if (!disconnected) { doDisconnect(); if (false) Log.d(LOG_TAG, "onLoalDisconnect"); if (parent != null) { parent.detach(this); } } releaseWakeLock(); }
// Returns true if state has changed, false if nothing changed public boolean update(DriverCall dc) { Call newParent; boolean changed = false; boolean wasConnectingInOrOut = isConnectingInOrOut(); boolean wasHolding = (getState() == Call.State.HOLDING); if ((dc.callDetails != null) && (dc.callDetails.call_domain == CallDetails.RIL_CALL_DOMAIN_PS)) { newParent = imsParentFromDCState(dc.state); // parent = ImsPhone } else { newParent = parentFromDCState(dc.state); // parent = CdmaPhone } if (Phone.DEBUG_PHONE) log("parent= " + parent + ", newParent= " + newParent); if (!equalsHandlesNulls(address, dc.number)) { if (Phone.DEBUG_PHONE) log("update: phone # changed!"); address = dc.number; changed = true; } // A null cnapName should be the same as "" // TBD ensure this is a nop for Gsm if (TextUtils.isEmpty(dc.name)) { if (!TextUtils.isEmpty(cnapName)) { changed = true; cnapName = ""; } } else if (!dc.name.equals(cnapName)) { changed = true; cnapName = dc.name; } if (Phone.DEBUG_PHONE) log("--dssds----" + cnapName); cnapNamePresentation = dc.namePresentation; numberPresentation = dc.numberPresentation; if (newParent != parent) { if (parent != null) { parent.detach(this); } newParent.attach(this, dc); parent = newParent; changed = true; } else { boolean parentStateChange; parentStateChange = parent.update(this, dc); changed = changed || parentStateChange; } /** Some state-transition events */ if (Phone.DEBUG_PHONE) log( "Update, wasConnectingInOrOut=" + wasConnectingInOrOut + ", wasHolding=" + wasHolding + ", isConnectingInOrOut=" + isConnectingInOrOut() + ", changed=" + changed); if (wasConnectingInOrOut && !isConnectingInOrOut()) { onConnectedInOrOut(); } if (changed && !wasHolding && (getState() == Call.State.HOLDING)) { // We've transitioned into HOLDING onStartedHolding(); // TBD } return changed; }