/*************************************************************************** * Copyright (C) 2016 by Savoir-faire Linux * * Author: Jäger Nicolas * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . * **************************************************************************/ #include "pch.h" #include "CallsViewModel.h" using namespace RingClientUWP; using namespace ViewModel; using namespace Windows::UI::Core; using namespace Windows::ApplicationModel::Core; CallsViewModel::CallsViewModel() { CallsList_ = ref new Vector(); /* connect to delegates. */ RingD::instance->incomingCall += ref new RingClientUWP::IncomingCall([&]( String^ accountId, String^ callId, String^ from) { auto call = addNewCall(accountId, callId, from); // REFACTO : add if call == nullptr callRecieved(call); }); RingD::instance->stateChange += ref new RingClientUWP::StateChange([&]( String^ callId, String^ state, int code) { for each (auto call in CallsList_) { if (call->callId == callId) { if (state == "OVER") { delete call; call->stateChange("", code); callStatusUpdated(call); // used ? return; } call->stateChange(state, code); callStatusUpdated(call); // same... return; } } WNG_("Call not found"); }); } Call^ RingClientUWP::ViewModel::CallsViewModel::addNewCall(String^ accountId, String^ callId, String^ peer) { if (accountId == "" | callId == "" | peer == "") { WNG_("call can't be created"); } auto call = ref new Call(accountId, callId, peer); CallsList_->Append(call); return call; } void RingClientUWP::ViewModel::CallsViewModel::clearCallsList() { CallsList_->Clear(); } Call^ CallsViewModel::findCall(String^ callId) { for each (Call^ call in CallsList_) if (call->callId == callId) return call; return nullptr; }