diff --git a/src/call.cpp b/src/call.cpp index c4c974394899f64e92b4c02f38cc3762022f20df..1ef09c03a13418d059ae8e6544738ad4b9ab4f4c 100644 --- a/src/call.cpp +++ b/src/call.cpp @@ -478,7 +478,6 @@ Call* Call::operator<<( Call::Action& c) return this; } - Call* operator<<(Call* c, Call::Action action) { return (!c) ? nullptr : (*c) << action; diff --git a/src/private/useractions.h b/src/private/useractions.h index fe9a0b89f049b56722cb715d196ca34088a94886..46f81d683fb0892089b0d21f8518be2d57d7290c 100644 --- a/src/private/useractions.h +++ b/src/private/useractions.h @@ -37,29 +37,30 @@ bool record(const QList<Call*> calls); bool accept(const QList<Call*> calls) { bool ret = true; + + //Add a new call if none is there + if (!calls.size()) { + Call* call = CallModel::instance()->dialingCall(); + CallModel::instance()->selectionModel()->setCurrentIndex(CallModel::instance()->getIndex(call), QItemSelectionModel::ClearAndSelect); + return true; + } + for (Call* call : calls) { - if(!call) { - qDebug() << "Calling when no item is selected. Opening an item."; - CallModel::instance()->dialingCall(); - CallModel::instance()->selectionModel()->setCurrentIndex(CallModel::instance()->getIndex(call), QItemSelectionModel::ClearAndSelect); + const Call::State state = call->state(); + //TODO port to lifeCycle code + if (state == Call::State::RINGING || state == Call::State::CURRENT || state == Call::State::HOLD + || state == Call::State::BUSY || state == Call::State::FAILURE || state == Call::State::ERROR) { + qDebug() << "Calling when item currently ringing, current, hold or busy. Opening an item."; + Call* c2 = CallModel::instance()->dialingCall(); + CallModel::instance()->selectionModel()->setCurrentIndex(CallModel::instance()->getIndex(c2), QItemSelectionModel::ClearAndSelect); } else { - const Call::State state = call->state(); - //TODO port to lifeCycle code - if (state == Call::State::RINGING || state == Call::State::CURRENT || state == Call::State::HOLD - || state == Call::State::BUSY || state == Call::State::FAILURE || state == Call::State::ERROR) { - qDebug() << "Calling when item currently ringing, current, hold or busy. Opening an item."; - Call* c2 = CallModel::instance()->dialingCall(); - CallModel::instance()->selectionModel()->setCurrentIndex(CallModel::instance()->getIndex(c2), QItemSelectionModel::ClearAndSelect); + try { + call->performAction(Call::Action::ACCEPT); } - else { - try { - call->performAction(Call::Action::ACCEPT); - } - catch(const char * msg) { + catch(const char * msg) { // KMessageBox::error(Ring::app(),i18n(msg)); - ret = false; - } + ret = false; } } } diff --git a/src/useractionmodel.cpp b/src/useractionmodel.cpp index 2864e9321a77697742e41f9d67f2701d7a32ed1c..37e4b2fee13d7cd8f27f428f5fc2f5250913bf9a 100644 --- a/src/useractionmodel.cpp +++ b/src/useractionmodel.cpp @@ -479,7 +479,7 @@ bool UserActionModel::execute(const UserActionModel::Action action) const d_ptr->updateActions(); break; case UserActionModel::Action::HANGUP : - if (UserActions::accept(selected)) + if (UserActions::hangup(selected)) d_ptr->updateActions(); break; case UserActionModel::Action::JOIN :