diff --git a/src/CurrentCallVC.mm b/src/CurrentCallVC.mm index 1c3efdda3ab23cfeccd6142b82b463f592a9190d..2436ab1aebe20f21518821505eb7454995b5a934 100644 --- a/src/CurrentCallVC.mm +++ b/src/CurrentCallVC.mm @@ -96,6 +96,7 @@ @property RendererConnectionsHolder* previewHolder; @property RendererConnectionsHolder* videoHolder; @property QMetaObject::Connection videoStarted; +@property QMetaObject::Connection selectedCallChanged; @property QMetaObject::Connection messageConnection; @property QMetaObject::Connection mediaAddedConnection; @@ -248,7 +249,7 @@ return; } - CallModel::instance().selectCall(call); + [self changeCallSelection:call]; if (call->state() == Call::State::HOLD) { call << Call::Action::HOLD; @@ -281,7 +282,25 @@ [self updateCall]; } } - }); + }); + + QObject::connect(&CallModel::instance(), + &CallModel::incomingCall, + [self](Call* c) { + [self changeCallSelection:c]; + [self animateIn]; + }); +} + +- (void) changeCallSelection:(Call* )c +{ + QObject::disconnect(self.selectedCallChanged); + CallModel::instance().selectCall(c); + self.selectedCallChanged = QObject::connect(CallModel::instance().selectedCall(), + &Call::changed, + [=]() { + [self updateCall]; + }); } - (void) monitorIncomingTextMessages:(Media::Text*) media @@ -424,7 +443,6 @@ -(void) animateIn { - NSLog(@"animateIn"); CGRect frame = CGRectOffset(self.view.superview.bounds, -self.view.superview.bounds.size.width, 0); [self.view setHidden:NO]; @@ -444,11 +462,8 @@ if(!CallModel::instance().selectedCall()) return; - QObject::connect(CallModel::instance().selectedCall(), - &Call::changed, - [=]() { - [self updateCall]; - }); + [self updateCall]; + if (CallModel::instance().selectedCall()->hasMedia(Media::Media::Type::TEXT, Media::Media::Direction::IN)) { Media::Text *text = CallModel::instance().selectedCall()->firstMedia<Media::Text>(Media::Media::Direction::IN); [self monitorIncomingTextMessages:text];