blob: 1e34ae6a08cf57cb667b9d2a6359e8876237a746 [file] [log] [blame]
Nicolas Jager38f15642016-09-01 09:45:58 -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 **************************************************************************/
19#include "pch.h"
Nicolas Jager7c409f32016-09-08 09:35:16 -040020#include <string> // move it
Nicolas Jager38f15642016-09-01 09:45:58 -040021#include "SmartPanel.xaml.h"
22
23using namespace Platform;
24
25using namespace RingClientUWP;
Nicolas Jager7c409f32016-09-08 09:35:16 -040026using namespace RingClientUWP::Controls;
Nicolas Jager38f15642016-09-01 09:45:58 -040027using namespace RingClientUWP::Views;
28using namespace RingClientUWP::ViewModel;
29using namespace Windows::Media::Capture;
30using namespace Windows::UI::Xaml;
31using namespace Windows::Storage;
32using namespace Windows::UI::Xaml::Media::Imaging;
33using namespace Windows::UI::Xaml::Shapes;
34using namespace Windows::UI::Xaml::Media;
35using namespace Concurrency;
36using namespace Windows::Foundation;
37
Nicolas Jagerf6a10322016-09-06 08:17:49 -040038using namespace Windows::ApplicationModel::Core;
39using namespace Windows::Storage;
40using namespace Windows::UI::Core;
41
Nicolas Jager38f15642016-09-01 09:45:58 -040042SmartPanel::SmartPanel()
43{
44 InitializeComponent();
45
Nicolas Jager7c409f32016-09-08 09:35:16 -040046 _accountsList_->ItemsSource = AccountsViewModel::instance->accountsList;
47
48 /* populate the smartlist */
atraczyk25608ed2016-09-15 11:12:16 -040049 _smartList_->ItemsSource = SmartPanelItemsViewModel::instance->itemsList;
Nicolas Jager7c409f32016-09-08 09:35:16 -040050
Nicolas Jager813cf4d2016-10-06 10:54:46 -040051
52 /* populate the device list*/
53/// _devicesIdList_ // not used so far
54
atraczyk2425ddd2016-09-01 13:16:22 -040055 /* connect delegates */
Nicolas Jager38f15642016-09-01 09:45:58 -040056 Configuration::UserPreferences::instance->selectIndex += ref new SelectIndex([this](int index) {
57 _accountsList_->SelectedIndex = index;
58 });
atraczyk2425ddd2016-09-01 13:16:22 -040059 Configuration::UserPreferences::instance->loadProfileImage += ref new LoadProfileImage([this]() {
60 StorageFolder^ localfolder = ApplicationData::Current->LocalFolder;
61 String^ image_path = localfolder->Path + "\\.profile\\profile_image.png";
62 auto uri = ref new Windows::Foundation::Uri(image_path);
63 _selectedAccountAvatar_->ImageSource = ref new BitmapImage(uri);
64 });
atraczyk196936e2016-09-02 15:31:53 -040065 AccountsViewModel::instance->updateScrollView += ref new UpdateScrollView([this]() {
66 _accountsListScrollView_->UpdateLayout();
67 _accountsListScrollView_->ScrollToVerticalOffset(_accountsListScrollView_->ScrollableHeight);
68 });
Nicolas Jager083b3ae2016-10-04 08:46:19 -040069 RingD::instance->incomingCall += ref new RingClientUWP::IncomingCall([&](
70 String^ accountId, String^ callId, String^ from) {
71 ///auto from = call->from;
Nicolas Jager7c409f32016-09-08 09:35:16 -040072 auto contact = ContactsViewModel::instance->findContactByName(from);
Nicolas Jager38f15642016-09-01 09:45:58 -040073
Nicolas Jager7c409f32016-09-08 09:35:16 -040074 if (contact == nullptr)
75 contact = ContactsViewModel::instance->addNewContact(from, from); // contact checked inside addNewContact.
76
77 if (contact == nullptr) {
78 ERR_("contact not handled!");
79 return;
80 }
81
atraczyk25608ed2016-09-15 11:12:16 -040082 auto item = SmartPanelItemsViewModel::instance->findItem(contact);
Nicolas Jager083b3ae2016-10-04 08:46:19 -040083 item->_callId = callId;
Nicolas Jagerc551c362016-10-01 19:24:50 -040084
Nicolas Jager7c409f32016-09-08 09:35:16 -040085 });
Nicolas Jagerc551c362016-10-01 19:24:50 -040086 RingD::instance->stateChange += ref new StateChange([this](String^ callId, CallStatus state, int code) {
Nicolas Jager7c409f32016-09-08 09:35:16 -040087
Nicolas Jager083b3ae2016-10-04 08:46:19 -040088 auto item = SmartPanelItemsViewModel::instance->findItem(callId);
Nicolas Jager7c409f32016-09-08 09:35:16 -040089
90 if (!item) {
91 WNG_("item not found");
92 return;
93 }
94
Nicolas Jager083b3ae2016-10-04 08:46:19 -040095 item->_callStatus = state;
Nicolas Jager7c409f32016-09-08 09:35:16 -040096
Nicolas Jager083b3ae2016-10-04 08:46:19 -040097 switch (state) {
98 case CallStatus::NONE:
99 case CallStatus::ENDED:
100 {
101 item->_callId = "";
102 break;
103 }
104 case CallStatus::IN_PROGRESS:
105 {
106 _smartList_->SelectedItem = item;
107 summonVideoPage();
108 break;
109 }
110 default:
111 break;
112 }
Nicolas Jager7c409f32016-09-08 09:35:16 -0400113
Nicolas Jager7c409f32016-09-08 09:35:16 -0400114 });
115
116
117 ContactsViewModel::instance->contactAdded += ref new ContactAdded([this](Contact^ contact) {
118 auto smartPanelItem = ref new SmartPanelItem();
119 smartPanelItem->_contact = contact;
atraczyk25608ed2016-09-15 11:12:16 -0400120 SmartPanelItemsViewModel::instance->itemsList->Append(smartPanelItem);
Nicolas Jager7c409f32016-09-08 09:35:16 -0400121 });
122
Nicolas Jager5750df02016-09-13 11:20:33 -0400123
Nicolas Jager5750df02016-09-13 11:20:33 -0400124
Nicolas Jager38f15642016-09-01 09:45:58 -0400125}
126
127void
128RingClientUWP::Views::SmartPanel::updatePageContent()
129{
130 auto account = AccountsViewModel::instance->selectedAccount;
131 if (!account)
132 return;
133
Nicolas Jager813cf4d2016-10-06 10:54:46 -0400134 auto accountId = account->accountID_;
135
Nicolas Jager38f15642016-09-01 09:45:58 -0400136 Configuration::UserPreferences::instance->PREF_ACCOUNT_INDEX = _accountsList_->SelectedIndex;
137 Configuration::UserPreferences::instance->save();
Nicolas Jager813cf4d2016-10-06 10:54:46 -0400138
139 _selectedAccountName_->Text = accountId;
140 _devicesIdList_->ItemsSource = account->_devicesIdList;
141 _deviceId_->Text = account->_deviceId; /* this is the current device ...
142 ... in the way to get all associated devices, we have to querry the daemon : */
143 RingD::instance->askToRefreshKnownDevices(accountId);
144
Nicolas Jager38f15642016-09-01 09:45:58 -0400145}
146
147void RingClientUWP::Views::SmartPanel::_accountsMenuButton__Checked(Object^ sender, RoutedEventArgs^ e)
148{
149 _shareMenuButton_->IsChecked = false;
150 _accountsMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
151 _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
152}
153
154void RingClientUWP::Views::SmartPanel::_accountsMenuButton__Unchecked(Object^ sender, RoutedEventArgs^ e)
155{
156 _accountsMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
157 _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
158}
159
160void RingClientUWP::Views::SmartPanel::_settings__Checked(Object^ sender, RoutedEventArgs^ e)
161{
162 _smartGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
163 _settings_->Visibility = Windows::UI::Xaml::Visibility::Visible;
164}
165
166void RingClientUWP::Views::SmartPanel::_settings__Unchecked(Object^ sender, RoutedEventArgs^ e)
167{
168 _settings_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
169 _smartGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
170}
171
172void RingClientUWP::Views::SmartPanel::setMode(RingClientUWP::Views::SmartPanel::Mode mode)
173{
174 if (mode == RingClientUWP::Views::SmartPanel::Mode::Normal) {
175 _rowRingTxtBx_->Height = 40;
atraczyk2425ddd2016-09-01 13:16:22 -0400176 _selectedAccountAvatarContainer_->Height = 80;
Nicolas Jager38f15642016-09-01 09:45:58 -0400177 _selectedAccountAvatarColumn_->Width = 90;
178 _selectedAccountRow_->Height = 90;
179 }
180 else {
181 _rowRingTxtBx_->Height = 0;
atraczyk2425ddd2016-09-01 13:16:22 -0400182 _selectedAccountAvatarContainer_->Height = 50;
Nicolas Jager38f15642016-09-01 09:45:58 -0400183 _selectedAccountAvatarColumn_->Width = 60;
184 _selectedAccountRow_->Height = 60;
185 }
186
atraczyk2425ddd2016-09-01 13:16:22 -0400187 _selectedAccountAvatarContainer_->Width = _selectedAccountAvatarContainer_->Height;
Nicolas Jager38f15642016-09-01 09:45:58 -0400188 _settingsTBtn_->IsChecked = false;
189 _accountsMenuButton_->IsChecked = false;
190 _shareMenuButton_->IsChecked = false;
191}
192
193void RingClientUWP::Views::SmartPanel::_shareMenuButton__Checked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
194{
195 _shareMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
196 _accountsMenuButton_->IsChecked = false;
197}
198
199void RingClientUWP::Views::SmartPanel::_shareMenuButton__Unchecked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
200{
201 _shareMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
202}
203
Nicolas Jager38f15642016-09-01 09:45:58 -0400204void RingClientUWP::Views::SmartPanel::_addAccountBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
205{
206 _accountsMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
207 _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
208}
209
Nicolas Jager38f15642016-09-01 09:45:58 -0400210void RingClientUWP::Views::SmartPanel::_createAccountYes__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
211{
atraczyk196936e2016-09-02 15:31:53 -0400212 switch (_accountTypeComboBox_->SelectedIndex)
213 {
214 case 0:
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400215 {
atraczyk1ddcb5a2016-09-07 16:18:30 -0400216 CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High,
217 ref new DispatchedHandler([=]() {
218 auto frame = dynamic_cast<Windows::UI::Xaml::Controls::Frame^>(Window::Current->Content);
219 dynamic_cast<RingClientUWP::MainPage^>(frame->Content)->showLoadingOverlay(true, true);
220 }));
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400221 RingD::instance->createRINGAccount(_aliasTextBox_->Text);
222 _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
223 _accountsMenuButton__Checked(nullptr, nullptr);
atraczyk196936e2016-09-02 15:31:53 -0400224 break;
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400225 }
226 break;
atraczyk196936e2016-09-02 15:31:53 -0400227 case 1:
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400228 {
229 RingD::instance->createSIPAccount(_aliasTextBox_->Text);
230 _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
231 _accountsMenuButton__Checked(nullptr, nullptr);
232 break;
233 }
234 default:
235 break;
atraczyk196936e2016-09-02 15:31:53 -0400236 }
atraczyk1ddcb5a2016-09-07 16:18:30 -0400237 _aliasTextBox_->Text = "";
Nicolas Jager38f15642016-09-01 09:45:58 -0400238}
239
240
241void RingClientUWP::Views::SmartPanel::_createAccountNo__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
242{
atraczyk196936e2016-09-02 15:31:53 -0400243 _accountsMenuButton_->IsChecked = false;
244 _accountsMenuButton__Unchecked(nullptr,nullptr);
Nicolas Jager38f15642016-09-01 09:45:58 -0400245}
246
Nicolas Jager38f15642016-09-01 09:45:58 -0400247void
248SmartPanel::_smartList__SelectionChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ e)
249{
Nicolas Jagerc551c362016-10-01 19:24:50 -0400250 auto listbox = dynamic_cast<ListBox^>(sender);
251 auto item = dynamic_cast<SmartPanelItem^>(listbox->SelectedItem);
252 SmartPanelItemsViewModel::instance->_selectedItem = item;
Nicolas Jager5750df02016-09-13 11:20:33 -0400253
Nicolas Jagerc551c362016-10-01 19:24:50 -0400254 if (!item) {
255 summonWelcomePage();
256 return;
257 }
Nicolas Jager5750df02016-09-13 11:20:33 -0400258
Nicolas Jager4cdd8922016-10-02 16:53:16 -0400259 auto contact = item->_contact;
260
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400261 if (item->_callStatus == CallStatus::IN_PROGRESS) {
262 if (contact) {
263 contact->_unreadMessages = 0;
264 ContactsViewModel::instance->saveContactsToFile();
Nicolas Jagerc551c362016-10-01 19:24:50 -0400265 }
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400266
267 summonVideoPage();
268 return;
Nicolas Jagerc551c362016-10-01 19:24:50 -0400269 }
270
Nicolas Jagerc551c362016-10-01 19:24:50 -0400271 if (contact) {
272 summonMessageTextPage();
273 contact->_unreadMessages = 0;
274 ContactsViewModel::instance->saveContactsToFile();
275 return;
276 }
Nicolas Jager38f15642016-09-01 09:45:58 -0400277}
278
279void
280SmartPanel::_accountList__SelectionChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ e)
281{
282 auto listbox = safe_cast<ListBox^>(sender);
atraczykb0154632016-09-06 12:58:08 -0400283 // disable deselction from listbox
284 if (listbox->SelectedItem == nullptr)
285 {
286 if (e->RemovedItems->Size > 0)
287 {
288 Object^ itemToReselect = e->RemovedItems->GetAt(0);
289 for each (auto item in listbox->Items) {
290 if (item == itemToReselect) {
291 listbox->SelectedItem = itemToReselect;
292 continue;
293 }
294 }
295 }
296 }
Nicolas Jager38f15642016-09-01 09:45:58 -0400297 auto account = safe_cast<Account^>(listbox->SelectedItem);
298 AccountsViewModel::instance->selectedAccount = account;
299 updatePageContent();
300}
301
302void RingClientUWP::Views::SmartPanel::_ringTxtBx__KeyDown(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e)
303{
304 /* add contact, test purpose but will be reused later in some way */
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400305 if (e->Key == Windows::System::VirtualKey::Enter && !_ringTxtBx_->Text->IsEmpty()) {
Nicolas Jager38f15642016-09-01 09:45:58 -0400306 ContactsViewModel::instance->addNewContact(_ringTxtBx_->Text, _ringTxtBx_->Text);
307 _ringTxtBx_->Text = "";
308 }
309}
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400310
atraczyke87716f2016-09-20 13:46:22 -0400311void RingClientUWP::Views::SmartPanel::_ringTxtBx__Click(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e)
312{
313 ContactsViewModel::instance->addNewContact(_ringTxtBx_->Text, _ringTxtBx_->Text);
314 _ringTxtBx_->Text = "";
315}
316
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400317void
318RingClientUWP::Views::SmartPanel::_rejectIncomingCallBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400319{
320 auto button = dynamic_cast<Button^>(e->OriginalSource);
Nicolas Jager9edbea32016-10-03 09:13:53 -0400321 if (button) {
322 auto item = dynamic_cast<SmartPanelItem^>(button->DataContext);
323 if (item) {
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400324 auto callId = item->_callId;
325 RingD::instance->refuseIncommingCall(callId);
Nicolas Jager9edbea32016-10-03 09:13:53 -0400326 }
327 }
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400328}
329
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400330void
331RingClientUWP::Views::SmartPanel::_acceptIncomingCallBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400332{
333 auto button = dynamic_cast<Button^>(e->OriginalSource);
Nicolas Jager9edbea32016-10-03 09:13:53 -0400334 if (button) {
335 auto item = dynamic_cast<SmartPanelItem^>(button->DataContext);
336 if (item) {
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400337 auto callId = item->_callId;
338 RingD::instance->acceptIncommingCall(callId);
Nicolas Jager9edbea32016-10-03 09:13:53 -0400339 }
340 }
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400341}
Nicolas Jager7c409f32016-09-08 09:35:16 -0400342
Nicolas Jager5750df02016-09-13 11:20:33 -0400343void
344SmartPanel::_callContact__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
345{
346 auto button = dynamic_cast<Button^>(e->OriginalSource);
Nicolas Jager9edbea32016-10-03 09:13:53 -0400347 if (button) {
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400348 /* force to hide the button, avoid attempting to call several times... */
349 button->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
350
Nicolas Jager9edbea32016-10-03 09:13:53 -0400351 auto item = dynamic_cast<SmartPanelItem^>(button->DataContext);
352 if (item) {
353 auto contact = item->_contact;
354 if (contact)
355 RingD::instance->placeCall(contact);
356 }
357 }
Nicolas Jager5750df02016-09-13 11:20:33 -0400358}
359
Nicolas Jager5750df02016-09-13 11:20:33 -0400360void RingClientUWP::Views::SmartPanel::_cancelCallBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
361{
362 auto button = dynamic_cast<Button^>(e->OriginalSource);
Nicolas Jager9edbea32016-10-03 09:13:53 -0400363 if (button) {
364 auto item = dynamic_cast<SmartPanelItem^>(button->DataContext);
365 if (item) {
Nicolas Jager9edbea32016-10-03 09:13:53 -0400366 RingD::instance->cancelOutGoingCall2(item->_callId);
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400367 item->_callStatus = CallStatus::TERMINATING;
Nicolas Jager9edbea32016-10-03 09:13:53 -0400368 return;
Nicolas Jager9edbea32016-10-03 09:13:53 -0400369 }
370 }
Nicolas Jager5750df02016-09-13 11:20:33 -0400371}
372
Nicolas Jager5750df02016-09-13 11:20:33 -0400373void RingClientUWP::Views::SmartPanel::Grid_PointerEntered(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ e)
374{
375 auto grid = dynamic_cast<Grid^>(sender);
376 auto listBoxItem = dynamic_cast<ListBoxItem^>(sender);
377 auto item = dynamic_cast<SmartPanelItem^>(grid->DataContext);
378
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400379 if (item->_callId->IsEmpty())
380 item->_hovered = Windows::UI::Xaml::Visibility::Visible;
Nicolas Jager5750df02016-09-13 11:20:33 -0400381}
382
383
384void RingClientUWP::Views::SmartPanel::Grid_PointerExited(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ e)
385{
386 auto listBoxItem = dynamic_cast<ListBoxItem^>(sender);
387 auto grid = dynamic_cast<Grid^>(sender);
388 auto item = dynamic_cast<SmartPanelItem^>(grid->DataContext);
389
Nicolas Jagerc551c362016-10-01 19:24:50 -0400390 item->_hovered = Windows::UI::Xaml::Visibility::Collapsed;
Nicolas Jager5750df02016-09-13 11:20:33 -0400391}
392
393
394void RingClientUWP::Views::SmartPanel::_contactItem__PointerReleased(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ e)
395{
396 auto listBoxItem = dynamic_cast<ListBoxItem^>(sender);
397 auto smartPanelItem = dynamic_cast<SmartPanelItem^>(listBoxItem->DataContext);
398
399 if (_smartList_->SelectedItem != smartPanelItem)
400 _smartList_->SelectedItem = smartPanelItem;
401 else
402 _smartList_->SelectedItem = nullptr;
403
Nicolas Jagerc551c362016-10-01 19:24:50 -0400404}
405
406Object ^ RingClientUWP::Views::IncomingVisibility::Convert(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
407{
408 auto state = static_cast<CallStatus>(value);
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400409
Nicolas Jagerc551c362016-10-01 19:24:50 -0400410 if (state == CallStatus::INCOMING_RINGING)
411 return Windows::UI::Xaml::Visibility::Visible;
412 else
413 return Windows::UI::Xaml::Visibility::Collapsed;
414}
415
416Object ^ RingClientUWP::Views::IncomingVisibility::ConvertBack(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
417{
418 throw ref new Platform::NotImplementedException();
419}
420
421RingClientUWP::Views::IncomingVisibility::IncomingVisibility()
422{}
423
424
425Object ^ RingClientUWP::Views::OutGoingVisibility::Convert(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
426{
427 auto state = static_cast<CallStatus>(value);
428
429 if (state == CallStatus::SEARCHING || state == CallStatus::OUTGOING_RINGING)
430 return Windows::UI::Xaml::Visibility::Visible;
431 else
432 return Windows::UI::Xaml::Visibility::Collapsed;
433}
434
435Object ^ RingClientUWP::Views::OutGoingVisibility::ConvertBack(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
436{
437 throw ref new Platform::NotImplementedException();
438}
439
440RingClientUWP::Views::OutGoingVisibility::OutGoingVisibility()
441{}
442
443Object ^ RingClientUWP::Views::HasAnActiveCall::Convert(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
444{
445 auto state = static_cast<CallStatus>(value);
446
447 if (state == CallStatus::NONE || state == CallStatus::ENDED)
448 return Windows::UI::Xaml::Visibility::Collapsed;
449 else
450 return Windows::UI::Xaml::Visibility::Visible;
451}
452
453Object ^ RingClientUWP::Views::HasAnActiveCall::ConvertBack(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
454{
455 throw ref new Platform::NotImplementedException();
Nicolas Jagerc551c362016-10-01 19:24:50 -0400456}
457
458RingClientUWP::Views::HasAnActiveCall::HasAnActiveCall()
459{}
460
461Object ^ RingClientUWP::Views::NewMessageBubleNotification::Convert(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
462{
463 auto unreadMessages = static_cast<uint32>(value);
464
465 if (unreadMessages > 0)
466 return Windows::UI::Xaml::Visibility::Visible;
467
468 return Windows::UI::Xaml::Visibility::Collapsed;
469}
470
471Object ^ RingClientUWP::Views::NewMessageBubleNotification::ConvertBack(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
472{
473 throw ref new Platform::NotImplementedException();
474}
475
476RingClientUWP::Views::NewMessageBubleNotification::NewMessageBubleNotification()
477{}
Nicolas Jagere4eb5132016-10-04 14:25:15 -0400478
479void RingClientUWP::Views::SmartPanel::_devicesMenuButton__Unchecked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
480{
481 _devicesMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
482}
483
484
485void RingClientUWP::Views::SmartPanel::_devicesMenuButton__Checked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
486{
487 _devicesMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
488}
489
490
491void RingClientUWP::Views::SmartPanel::_addDevice__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
492{
493
494}