From 8f805cd542b8165cb921e9ae8d2b9192ab60f444 Mon Sep 17 00:00:00 2001 From: Nicolas Jager <nicolas.jager@savoirfairelinux.com> Date: Wed, 5 Oct 2016 11:54:40 -0400 Subject: [PATCH] message text : screen messages sent during a call Change-Id: Ifb7d8ed39d4cd6359ead1e5ff365fd700e604527 Tuleap: #1209 --- ContactsViewModel.cpp | 25 +++++++++++++++++++++++++ ContactsViewModel.h | 1 + MessageTextPage.xaml.cpp | 8 ++++++++ MessageTextPage.xaml.h | 1 + RingD.cpp | 4 +--- RingD.h | 2 ++ VideoPage.xaml.cpp | 11 +++++++---- VideoPage.xaml.h | 1 + 8 files changed, 46 insertions(+), 7 deletions(-) diff --git a/ContactsViewModel.cpp b/ContactsViewModel.cpp index 067f295..7fab743 100644 --- a/ContactsViewModel.cpp +++ b/ContactsViewModel.cpp @@ -66,6 +66,7 @@ ContactsViewModel::ContactsViewModel() saveContactsToFile(); } }); + RingD::instance->incomingMessage += ref new RingClientUWP::IncomingMessage(this, &RingClientUWP::ViewModel::ContactsViewModel::OnincomingMessage); } Contact^ // refacto : remove "byName" @@ -167,3 +168,27 @@ ContactsViewModel::Destringify(String^ data) } } } + + +void RingClientUWP::ViewModel::ContactsViewModel::OnincomingMessage(Platform::String ^callId, Platform::String ^from, Platform::String ^payload) +{ + auto contact = findContactByName(from); + + /* the contact HAS TO BE already registered */ + if (contact) { + auto item = SmartPanelItemsViewModel::instance->_selectedItem; + + contact->_conversation->addMessage(""/* date not yet used*/, MSG_FROM_CONTACT, payload); + + /* save contacts conversation to disk */ + contact->saveConversationToFile(); + + auto selectedContact = (item) ? item->_contact : nullptr; + + if (contact->ringID_ == from && contact != selectedContact) { + contact->_unreadMessages++; + /* saveContactsToFile used to save the notification */ + saveContactsToFile(); + } + } +} diff --git a/ContactsViewModel.h b/ContactsViewModel.h index ab7e56d..b8d720f 100644 --- a/ContactsViewModel.h +++ b/ContactsViewModel.h @@ -68,6 +68,7 @@ private: Contact^ currentItem_; Contact^ oldItem_; + void OnincomingMessage(Platform::String ^callId, Platform::String ^from, Platform::String ^payload); }; } } diff --git a/MessageTextPage.xaml.cpp b/MessageTextPage.xaml.cpp index aa539a1..65e0a68 100644 --- a/MessageTextPage.xaml.cpp +++ b/MessageTextPage.xaml.cpp @@ -49,6 +49,8 @@ MessageTextPage::MessageTextPage() String^ fromRingId, String^ payload) { scrollDown(); }); + RingD::instance->incomingMessage += ref new RingClientUWP::IncomingMessage(this, &RingClientUWP::Views::MessageTextPage::OnincomingMessage); + } void @@ -135,3 +137,9 @@ Object ^ RingClientUWP::Views::BubbleHorizontalAlignement::ConvertBack(Object ^ RingClientUWP::Views::BubbleHorizontalAlignement::BubbleHorizontalAlignement() {} + + +void RingClientUWP::Views::MessageTextPage::OnincomingMessage(Platform::String ^callId, Platform::String ^from, Platform::String ^payload) +{ + scrollDown(); +} diff --git a/MessageTextPage.xaml.h b/MessageTextPage.xaml.h index ce7289c..7a7a828 100644 --- a/MessageTextPage.xaml.h +++ b/MessageTextPage.xaml.h @@ -49,6 +49,7 @@ private: void _sendBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); void _messageTextBox__KeyDown(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e); void sendMessage(); + void OnincomingMessage(Platform::String ^callId, Platform::String ^from, Platform::String ^payload); }; } } diff --git a/RingD.cpp b/RingD.cpp index fe284c6..fd84125 100644 --- a/RingD.cpp +++ b/RingD.cpp @@ -235,7 +235,6 @@ RingClientUWP::RingD::startDaemon() auto contact = ContactsViewModel::instance->findContactByName(from2); auto item = SmartPanelItemsViewModel::instance->findItem(contact); item->_callId = callId2; - })); }), DRing::exportable_callback<DRing::CallSignal::StateChange>([this]( @@ -315,8 +314,7 @@ RingClientUWP::RingD::startDaemon() CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync( CoreDispatcherPriority::High, ref new DispatchedHandler([=]() { - // DOIT ETRE DIFFEREND.... NE PAS UTILISE accoutId2 - //incomingAccountMessage(accountId2, from2, payload); + incomingMessage(callId2, from2, payload); MSG_("message recu :" + i.second); })); } diff --git a/RingD.h b/RingD.h index d8991f1..c3a39d3 100644 --- a/RingD.h +++ b/RingD.h @@ -31,6 +31,7 @@ delegate void IncomingCall(String^ accountId, String^ callId, String^ from); delegate void StateChange(String^ callId, CallStatus state, int code); delegate void IncomingAccountMessage(String^ accountId, String^ from, String^ payload); delegate void CallPlaced(String^ callId); +delegate void IncomingMessage(String^ callId, String^ from, String^ payload); public ref class RingD sealed @@ -95,6 +96,7 @@ internal: event IncomingCall^ incomingCall; event StateChange^ stateChange; event IncomingAccountMessage^ incomingAccountMessage; + event IncomingMessage^ incomingMessage; event CallPlaced^ callPlaced; private: diff --git a/VideoPage.xaml.cpp b/VideoPage.xaml.cpp index f6f5f54..90241d5 100644 --- a/VideoPage.xaml.cpp +++ b/VideoPage.xaml.cpp @@ -125,10 +125,7 @@ VideoPage::VideoPage() } }); - RingD::instance->incomingAccountMessage += ref new IncomingAccountMessage([&](String^ accountId, - String^ from, String^ payload) { - scrollDown(); - }); + RingD::instance->incomingMessage += ref new RingClientUWP::IncomingMessage(this, &RingClientUWP::Views::VideoPage::OnincomingMessage); } void @@ -333,3 +330,9 @@ VideoPage::WriteFrameAsSoftwareBitmapAsync(String^ id, uint8_t* buf, int width, } }); } + + +void RingClientUWP::Views::VideoPage::OnincomingMessage(Platform::String ^callId, Platform::String ^from, Platform::String ^payload) +{ + scrollDown(); +} diff --git a/VideoPage.xaml.h b/VideoPage.xaml.h index d548f95..5a52bba 100644 --- a/VideoPage.xaml.h +++ b/VideoPage.xaml.h @@ -115,6 +115,7 @@ private: void _videoControl__PointerMoved(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ e); void btnAny_entered(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ e); void btnAny_exited(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ e); + void OnincomingMessage(Platform::String ^callId, Platform::String ^from, Platform::String ^payload); }; } } \ No newline at end of file -- GitLab