blob: 112741cbd21289f7dbb36626b26bbe9fbfc1bd9c [file] [log] [blame]
atraczyke9919eb2016-09-15 15:58:18 -04001/**************************************************************************
2* Copyright (C) 2016 by Savoir-faire Linux *
3* Author: Jäger Nicolas <nicolas.jager@savoirfairelinux.com> *
4* Author: Traczyk Andreas <andreas.traczyk@savoirfairelinux.com> *
5* *
6* This program is free software; you can redistribute it and/or modify *
7* it under the terms of the GNU General Public License as published by *
8* the Free Software Foundation; either version 3 of the License, or *
9* (at your option) any later version. *
10* *
11* This program is distributed in the hope that it will be useful, *
12* but WITHOUT ANY WARRANTY; without even the implied warranty of *
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14* GNU General Public License for more details. *
15* *
16* You should have received a copy of the GNU General Public License *
17* along with this program. If not, see <http://www.gnu.org/licenses/>. *
18**************************************************************************/
Nicolas Jagere069c412016-08-15 15:00:17 -040019#include "pch.h"
20
21#include "VideoPage.xaml.h"
22
23using namespace RingClientUWP::Views;
Nicolas Jagerc551c362016-10-01 19:24:50 -040024using namespace ViewModel;
Nicolas Jagere069c412016-08-15 15:00:17 -040025
26using namespace Concurrency;
27using namespace Platform;
28using namespace Windows::Devices::Enumeration;
29using namespace Windows::Foundation;
30using namespace Windows::Foundation::Collections;
31using namespace Windows::UI::Xaml;
32using namespace Windows::UI::Xaml::Controls;
33using namespace Windows::UI::Xaml::Controls::Primitives;
34using namespace Windows::UI::Xaml::Data;
35using namespace Windows::UI::Xaml::Input;
36using namespace Windows::UI::Xaml::Media;
37using namespace Windows::UI::Xaml::Navigation;
38using namespace Windows::Media::Capture;
atraczyke9919eb2016-09-15 15:58:18 -040039using namespace Windows::ApplicationModel::Core;
40using namespace Windows::UI::Core;
Nicolas Jagere069c412016-08-15 15:00:17 -040041
42VideoPage::VideoPage()
43{
44 InitializeComponent();
45}
46
atraczyke9919eb2016-09-15 15:58:18 -040047void
48RingClientUWP::Views::VideoPage::OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e)
49{
atraczyk5c395ea2016-09-20 17:28:09 -040050 RingD::instance->incomingAccountMessage += ref new IncomingAccountMessage([&](String^ accountId,
51 String^ from, String^ payload) {
52 scrollDown();
53 });
54
atraczyke9919eb2016-09-15 15:58:18 -040055 updatePageContent();
56}
Nicolas Jagere069c412016-08-15 15:00:17 -040057
atraczyke9919eb2016-09-15 15:58:18 -040058void RingClientUWP::Views::VideoPage::updatePageContent()
59{
Nicolas Jagerc551c362016-10-01 19:24:50 -040060 auto item = SmartPanelItemsViewModel::instance->_selectedItem;
61 auto contact = (item) ? item->_contact : nullptr;
62
atraczyke9919eb2016-09-15 15:58:18 -040063 if (!contact)
64 return;
65
66 _callee_->Text = contact->name_;
atraczyk5c395ea2016-09-20 17:28:09 -040067
68 _messagesList_->ItemsSource = contact->_conversation->_messages;
69
70 scrollDown();
71}
72
73void RingClientUWP::Views::VideoPage::scrollDown()
74{
75 _scrollView_->UpdateLayout();
76 _scrollView_->ScrollToVerticalOffset(_scrollView_->ScrollableHeight);
77}
78
79void
80RingClientUWP::Views::VideoPage::_sendBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
81{
82 sendMessage();
83}
84
85void
86RingClientUWP::Views::VideoPage::_messageTextBox__KeyDown(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e)
87{
88 if (e->Key == Windows::System::VirtualKey::Enter) {
89 sendMessage();
90 }
91}
92
93void
94RingClientUWP::Views::VideoPage::sendMessage()
95{
Nicolas Jagerc551c362016-10-01 19:24:50 -040096 auto item = SmartPanelItemsViewModel::instance->_selectedItem;
97 auto contact = item->_contact;
98
atraczyk5c395ea2016-09-20 17:28:09 -040099 auto txt = _messageTextBox_->Text;
100
101 /* empty the textbox */
102 _messageTextBox_->Text = "";
103
104 if (!contact || txt->IsEmpty())
105 return;
106
107 RingD::instance->sendAccountTextMessage(txt);
108 scrollDown();
atraczyke9919eb2016-09-15 15:58:18 -0400109}
Nicolas Jagere069c412016-08-15 15:00:17 -0400110
111void RingClientUWP::Views::VideoPage::Button_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
112{
113}
114
115
116void RingClientUWP::Views::VideoPage::_btnCancel__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
117{
118
119}
120
121void RingClientUWP::Views::VideoPage::_btnHangUp__Tapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e)
122{
Nicolas Jagerc551c362016-10-01 19:24:50 -0400123 auto item = SmartPanelItemsViewModel::instance->_selectedItem;
124 auto call = item->_call;
125
atraczyke9919eb2016-09-15 15:58:18 -0400126 if (call)
127 RingD::instance->hangUpCall(call);
Nicolas Jagere069c412016-08-15 15:00:17 -0400128 pressHangUpCall();
129}
130
131
132void RingClientUWP::Views::VideoPage::_btnPause__Tapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e)
133{
134 pauseCall();
135}
136
137
138void RingClientUWP::Views::VideoPage::_btnChat__Tapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e)
139{
atraczyk5c395ea2016-09-20 17:28:09 -0400140 chatOpen = !chatOpen;
141 if (chatOpen) {
142 _rowChatBx_->Height = 200;
143 chatPanelCall();
144 }
145 else {
146 _rowChatBx_->Height = 0;
147 }
Nicolas Jagere069c412016-08-15 15:00:17 -0400148}
149
150
151void RingClientUWP::Views::VideoPage::_btnAddFriend__Tapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e)
152{
153 addContactCall();
154}
155
156
157void RingClientUWP::Views::VideoPage::_btnSwitch__Tapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e)
158{
159 transferCall();
160}
161
162
163void RingClientUWP::Views::VideoPage::_btnMicrophone__Tapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e)
164{
165 switchMicrophoneStateCall();
166}
167
168
169void RingClientUWP::Views::VideoPage::_btnMemo__Tapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e)
170{
171 reccordVideoCall();
172}
173
174
175void RingClientUWP::Views::VideoPage::_btnHQ__Tapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e)
176{
177 qualityVideoLevelCall();
178}
179
180
181void RingClientUWP::Views::VideoPage::_btnVideo__Tapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e)
182{
183 switchVideoStateCall();
184}
185
186
187void RingClientUWP::Views::VideoPage::_videoControl__PointerMoved(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ e)
188{
189 if (barFading)
190 myStoryboard->Begin();
191 barFading_ = true;
192}
193
194
195void RingClientUWP::Views::VideoPage::btnAny_entered(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ e)
196{
197 barFading_ = false;
198 myStoryboard->Stop();
199}
200
201
202void RingClientUWP::Views::VideoPage::btnAny_exited(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ e)
203{
204 barFading_ = true;
Nicolas Jagere069c412016-08-15 15:00:17 -0400205}