blob: f596aa25c1d40ac14c0470deaab12122d13d15d8 [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
atraczyk2425ddd2016-09-01 13:16:22 -040051 /* connect delegates */
Nicolas Jager38f15642016-09-01 09:45:58 -040052 Configuration::UserPreferences::instance->selectIndex += ref new SelectIndex([this](int index) {
53 _accountsList_->SelectedIndex = index;
54 });
atraczyk2425ddd2016-09-01 13:16:22 -040055 Configuration::UserPreferences::instance->loadProfileImage += ref new LoadProfileImage([this]() {
56 StorageFolder^ localfolder = ApplicationData::Current->LocalFolder;
57 String^ image_path = localfolder->Path + "\\.profile\\profile_image.png";
58 auto uri = ref new Windows::Foundation::Uri(image_path);
59 _selectedAccountAvatar_->ImageSource = ref new BitmapImage(uri);
60 });
atraczyk196936e2016-09-02 15:31:53 -040061 AccountsViewModel::instance->updateScrollView += ref new UpdateScrollView([this]() {
62 _accountsListScrollView_->UpdateLayout();
63 _accountsListScrollView_->ScrollToVerticalOffset(_accountsListScrollView_->ScrollableHeight);
64 });
Nicolas Jager083b3ae2016-10-04 08:46:19 -040065 RingD::instance->incomingCall += ref new RingClientUWP::IncomingCall([&](
66 String^ accountId, String^ callId, String^ from) {
67 ///auto from = call->from;
Nicolas Jager7c409f32016-09-08 09:35:16 -040068 auto contact = ContactsViewModel::instance->findContactByName(from);
Nicolas Jager38f15642016-09-01 09:45:58 -040069
Nicolas Jager7c409f32016-09-08 09:35:16 -040070 if (contact == nullptr)
71 contact = ContactsViewModel::instance->addNewContact(from, from); // contact checked inside addNewContact.
72
73 if (contact == nullptr) {
74 ERR_("contact not handled!");
75 return;
76 }
77
atraczyk25608ed2016-09-15 11:12:16 -040078 auto item = SmartPanelItemsViewModel::instance->findItem(contact);
Nicolas Jager083b3ae2016-10-04 08:46:19 -040079 item->_callId = callId;
Nicolas Jagerc551c362016-10-01 19:24:50 -040080
Nicolas Jager7c409f32016-09-08 09:35:16 -040081 });
Nicolas Jagerc551c362016-10-01 19:24:50 -040082 RingD::instance->stateChange += ref new StateChange([this](String^ callId, CallStatus state, int code) {
Nicolas Jager7c409f32016-09-08 09:35:16 -040083
Nicolas Jager083b3ae2016-10-04 08:46:19 -040084 auto item = SmartPanelItemsViewModel::instance->findItem(callId);
Nicolas Jager7c409f32016-09-08 09:35:16 -040085
86 if (!item) {
87 WNG_("item not found");
88 return;
89 }
90
Nicolas Jager083b3ae2016-10-04 08:46:19 -040091 item->_callStatus = state;
Nicolas Jager7c409f32016-09-08 09:35:16 -040092
Nicolas Jager083b3ae2016-10-04 08:46:19 -040093 switch (state) {
94 case CallStatus::NONE:
95 case CallStatus::ENDED:
96 {
97 item->_callId = "";
98 break;
99 }
100 case CallStatus::IN_PROGRESS:
101 {
102 _smartList_->SelectedItem = item;
103 summonVideoPage();
104 break;
105 }
106 default:
107 break;
108 }
Nicolas Jager7c409f32016-09-08 09:35:16 -0400109
Nicolas Jager7c409f32016-09-08 09:35:16 -0400110 });
111
112
113 ContactsViewModel::instance->contactAdded += ref new ContactAdded([this](Contact^ contact) {
114 auto smartPanelItem = ref new SmartPanelItem();
115 smartPanelItem->_contact = contact;
atraczyk25608ed2016-09-15 11:12:16 -0400116 SmartPanelItemsViewModel::instance->itemsList->Append(smartPanelItem);
Nicolas Jager7c409f32016-09-08 09:35:16 -0400117 });
118
Nicolas Jager5750df02016-09-13 11:20:33 -0400119
Nicolas Jager5750df02016-09-13 11:20:33 -0400120
Nicolas Jager38f15642016-09-01 09:45:58 -0400121}
122
123void
124RingClientUWP::Views::SmartPanel::updatePageContent()
125{
126 auto account = AccountsViewModel::instance->selectedAccount;
127 if (!account)
128 return;
129
130 Configuration::UserPreferences::instance->PREF_ACCOUNT_INDEX = _accountsList_->SelectedIndex;
131 Configuration::UserPreferences::instance->save();
132 _selectedAccountName_->Text = account->name_;
133}
134
135void RingClientUWP::Views::SmartPanel::_accountsMenuButton__Checked(Object^ sender, RoutedEventArgs^ e)
136{
137 _shareMenuButton_->IsChecked = false;
138 _accountsMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
139 _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
140}
141
142void RingClientUWP::Views::SmartPanel::_accountsMenuButton__Unchecked(Object^ sender, RoutedEventArgs^ e)
143{
144 _accountsMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
145 _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
146}
147
148void RingClientUWP::Views::SmartPanel::_settings__Checked(Object^ sender, RoutedEventArgs^ e)
149{
150 _smartGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
151 _settings_->Visibility = Windows::UI::Xaml::Visibility::Visible;
152}
153
154void RingClientUWP::Views::SmartPanel::_settings__Unchecked(Object^ sender, RoutedEventArgs^ e)
155{
156 _settings_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
157 _smartGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
158}
159
160void RingClientUWP::Views::SmartPanel::setMode(RingClientUWP::Views::SmartPanel::Mode mode)
161{
162 if (mode == RingClientUWP::Views::SmartPanel::Mode::Normal) {
163 _rowRingTxtBx_->Height = 40;
atraczyk2425ddd2016-09-01 13:16:22 -0400164 _selectedAccountAvatarContainer_->Height = 80;
Nicolas Jager38f15642016-09-01 09:45:58 -0400165 _selectedAccountAvatarColumn_->Width = 90;
166 _selectedAccountRow_->Height = 90;
167 }
168 else {
169 _rowRingTxtBx_->Height = 0;
atraczyk2425ddd2016-09-01 13:16:22 -0400170 _selectedAccountAvatarContainer_->Height = 50;
Nicolas Jager38f15642016-09-01 09:45:58 -0400171 _selectedAccountAvatarColumn_->Width = 60;
172 _selectedAccountRow_->Height = 60;
173 }
174
atraczyk2425ddd2016-09-01 13:16:22 -0400175 _selectedAccountAvatarContainer_->Width = _selectedAccountAvatarContainer_->Height;
Nicolas Jager38f15642016-09-01 09:45:58 -0400176 _settingsTBtn_->IsChecked = false;
177 _accountsMenuButton_->IsChecked = false;
178 _shareMenuButton_->IsChecked = false;
179}
180
181void RingClientUWP::Views::SmartPanel::_shareMenuButton__Checked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
182{
183 _shareMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
184 _accountsMenuButton_->IsChecked = false;
185}
186
187void RingClientUWP::Views::SmartPanel::_shareMenuButton__Unchecked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
188{
189 _shareMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
190}
191
Nicolas Jager38f15642016-09-01 09:45:58 -0400192void RingClientUWP::Views::SmartPanel::_addAccountBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
193{
194 _accountsMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
195 _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
196}
197
Nicolas Jager38f15642016-09-01 09:45:58 -0400198void RingClientUWP::Views::SmartPanel::_createAccountYes__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
199{
atraczyk196936e2016-09-02 15:31:53 -0400200 switch (_accountTypeComboBox_->SelectedIndex)
201 {
202 case 0:
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400203 {
atraczyk1ddcb5a2016-09-07 16:18:30 -0400204 CoreApplication::MainView->CoreWindow->Dispatcher->RunAsync(CoreDispatcherPriority::High,
205 ref new DispatchedHandler([=]() {
206 auto frame = dynamic_cast<Windows::UI::Xaml::Controls::Frame^>(Window::Current->Content);
207 dynamic_cast<RingClientUWP::MainPage^>(frame->Content)->showLoadingOverlay(true, true);
208 }));
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400209 RingD::instance->createRINGAccount(_aliasTextBox_->Text);
210 _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
211 _accountsMenuButton__Checked(nullptr, nullptr);
atraczyk196936e2016-09-02 15:31:53 -0400212 break;
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400213 }
214 break;
atraczyk196936e2016-09-02 15:31:53 -0400215 case 1:
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400216 {
217 RingD::instance->createSIPAccount(_aliasTextBox_->Text);
218 _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
219 _accountsMenuButton__Checked(nullptr, nullptr);
220 break;
221 }
222 default:
223 break;
atraczyk196936e2016-09-02 15:31:53 -0400224 }
atraczyk1ddcb5a2016-09-07 16:18:30 -0400225 _aliasTextBox_->Text = "";
Nicolas Jager38f15642016-09-01 09:45:58 -0400226}
227
228
229void RingClientUWP::Views::SmartPanel::_createAccountNo__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
230{
atraczyk196936e2016-09-02 15:31:53 -0400231 _accountsMenuButton_->IsChecked = false;
232 _accountsMenuButton__Unchecked(nullptr,nullptr);
Nicolas Jager38f15642016-09-01 09:45:58 -0400233}
234
Nicolas Jager38f15642016-09-01 09:45:58 -0400235void
236SmartPanel::_smartList__SelectionChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ e)
237{
Nicolas Jagerc551c362016-10-01 19:24:50 -0400238 auto listbox = dynamic_cast<ListBox^>(sender);
239 auto item = dynamic_cast<SmartPanelItem^>(listbox->SelectedItem);
240 SmartPanelItemsViewModel::instance->_selectedItem = item;
Nicolas Jager5750df02016-09-13 11:20:33 -0400241
Nicolas Jagerc551c362016-10-01 19:24:50 -0400242 if (!item) {
243 summonWelcomePage();
244 return;
245 }
Nicolas Jager5750df02016-09-13 11:20:33 -0400246
Nicolas Jager4cdd8922016-10-02 16:53:16 -0400247 auto contact = item->_contact;
248
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400249 if (item->_callStatus == CallStatus::IN_PROGRESS) {
250 if (contact) {
251 contact->_unreadMessages = 0;
252 ContactsViewModel::instance->saveContactsToFile();
Nicolas Jagerc551c362016-10-01 19:24:50 -0400253 }
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400254
255 summonVideoPage();
256 return;
Nicolas Jagerc551c362016-10-01 19:24:50 -0400257 }
258
Nicolas Jagerc551c362016-10-01 19:24:50 -0400259 if (contact) {
260 summonMessageTextPage();
261 contact->_unreadMessages = 0;
262 ContactsViewModel::instance->saveContactsToFile();
263 return;
264 }
Nicolas Jager38f15642016-09-01 09:45:58 -0400265}
266
267void
268SmartPanel::_accountList__SelectionChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ e)
269{
270 auto listbox = safe_cast<ListBox^>(sender);
atraczykb0154632016-09-06 12:58:08 -0400271 // disable deselction from listbox
272 if (listbox->SelectedItem == nullptr)
273 {
274 if (e->RemovedItems->Size > 0)
275 {
276 Object^ itemToReselect = e->RemovedItems->GetAt(0);
277 for each (auto item in listbox->Items) {
278 if (item == itemToReselect) {
279 listbox->SelectedItem = itemToReselect;
280 continue;
281 }
282 }
283 }
284 }
Nicolas Jager38f15642016-09-01 09:45:58 -0400285 auto account = safe_cast<Account^>(listbox->SelectedItem);
286 AccountsViewModel::instance->selectedAccount = account;
287 updatePageContent();
288}
289
290void RingClientUWP::Views::SmartPanel::_ringTxtBx__KeyDown(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e)
291{
292 /* add contact, test purpose but will be reused later in some way */
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400293 if (e->Key == Windows::System::VirtualKey::Enter && !_ringTxtBx_->Text->IsEmpty()) {
Nicolas Jager38f15642016-09-01 09:45:58 -0400294 ContactsViewModel::instance->addNewContact(_ringTxtBx_->Text, _ringTxtBx_->Text);
295 _ringTxtBx_->Text = "";
296 }
297}
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400298
atraczyke87716f2016-09-20 13:46:22 -0400299void RingClientUWP::Views::SmartPanel::_ringTxtBx__Click(Platform::Object^ sender, Windows::UI::Xaml::Input::KeyRoutedEventArgs^ e)
300{
301 ContactsViewModel::instance->addNewContact(_ringTxtBx_->Text, _ringTxtBx_->Text);
302 _ringTxtBx_->Text = "";
303}
304
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400305void
306RingClientUWP::Views::SmartPanel::_rejectIncomingCallBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400307{
308 auto button = dynamic_cast<Button^>(e->OriginalSource);
Nicolas Jager9edbea32016-10-03 09:13:53 -0400309 if (button) {
310 auto item = dynamic_cast<SmartPanelItem^>(button->DataContext);
311 if (item) {
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400312 auto callId = item->_callId;
313 RingD::instance->refuseIncommingCall(callId);
Nicolas Jager9edbea32016-10-03 09:13:53 -0400314 }
315 }
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400316}
317
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400318void
319RingClientUWP::Views::SmartPanel::_acceptIncomingCallBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400320{
321 auto button = dynamic_cast<Button^>(e->OriginalSource);
Nicolas Jager9edbea32016-10-03 09:13:53 -0400322 if (button) {
323 auto item = dynamic_cast<SmartPanelItem^>(button->DataContext);
324 if (item) {
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400325 auto callId = item->_callId;
326 RingD::instance->acceptIncommingCall(callId);
Nicolas Jager9edbea32016-10-03 09:13:53 -0400327 }
328 }
Nicolas Jagerf6a10322016-09-06 08:17:49 -0400329}
Nicolas Jager7c409f32016-09-08 09:35:16 -0400330
Nicolas Jager5750df02016-09-13 11:20:33 -0400331void
332SmartPanel::_callContact__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
333{
334 auto button = dynamic_cast<Button^>(e->OriginalSource);
Nicolas Jager9edbea32016-10-03 09:13:53 -0400335 if (button) {
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400336 /* force to hide the button, avoid attempting to call several times... */
337 button->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
338
Nicolas Jager9edbea32016-10-03 09:13:53 -0400339 auto item = dynamic_cast<SmartPanelItem^>(button->DataContext);
340 if (item) {
341 auto contact = item->_contact;
342 if (contact)
343 RingD::instance->placeCall(contact);
344 }
345 }
Nicolas Jager5750df02016-09-13 11:20:33 -0400346}
347
Nicolas Jager5750df02016-09-13 11:20:33 -0400348void RingClientUWP::Views::SmartPanel::_cancelCallBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
349{
350 auto button = dynamic_cast<Button^>(e->OriginalSource);
Nicolas Jager9edbea32016-10-03 09:13:53 -0400351 if (button) {
352 auto item = dynamic_cast<SmartPanelItem^>(button->DataContext);
353 if (item) {
Nicolas Jager9edbea32016-10-03 09:13:53 -0400354 RingD::instance->cancelOutGoingCall2(item->_callId);
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400355 item->_callStatus = CallStatus::TERMINATING;
Nicolas Jager9edbea32016-10-03 09:13:53 -0400356 return;
Nicolas Jager9edbea32016-10-03 09:13:53 -0400357 }
358 }
Nicolas Jager5750df02016-09-13 11:20:33 -0400359}
360
Nicolas Jager5750df02016-09-13 11:20:33 -0400361void RingClientUWP::Views::SmartPanel::Grid_PointerEntered(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ e)
362{
363 auto grid = dynamic_cast<Grid^>(sender);
364 auto listBoxItem = dynamic_cast<ListBoxItem^>(sender);
365 auto item = dynamic_cast<SmartPanelItem^>(grid->DataContext);
366
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400367 if (item->_callId->IsEmpty())
368 item->_hovered = Windows::UI::Xaml::Visibility::Visible;
Nicolas Jager5750df02016-09-13 11:20:33 -0400369}
370
371
372void RingClientUWP::Views::SmartPanel::Grid_PointerExited(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ e)
373{
374 auto listBoxItem = dynamic_cast<ListBoxItem^>(sender);
375 auto grid = dynamic_cast<Grid^>(sender);
376 auto item = dynamic_cast<SmartPanelItem^>(grid->DataContext);
377
Nicolas Jagerc551c362016-10-01 19:24:50 -0400378 item->_hovered = Windows::UI::Xaml::Visibility::Collapsed;
Nicolas Jager5750df02016-09-13 11:20:33 -0400379}
380
381
382void RingClientUWP::Views::SmartPanel::_contactItem__PointerReleased(Platform::Object^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs^ e)
383{
384 auto listBoxItem = dynamic_cast<ListBoxItem^>(sender);
385 auto smartPanelItem = dynamic_cast<SmartPanelItem^>(listBoxItem->DataContext);
386
387 if (_smartList_->SelectedItem != smartPanelItem)
388 _smartList_->SelectedItem = smartPanelItem;
389 else
390 _smartList_->SelectedItem = nullptr;
391
Nicolas Jagerc551c362016-10-01 19:24:50 -0400392}
393
394Object ^ RingClientUWP::Views::IncomingVisibility::Convert(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
395{
396 auto state = static_cast<CallStatus>(value);
Nicolas Jager083b3ae2016-10-04 08:46:19 -0400397
Nicolas Jagerc551c362016-10-01 19:24:50 -0400398 if (state == CallStatus::INCOMING_RINGING)
399 return Windows::UI::Xaml::Visibility::Visible;
400 else
401 return Windows::UI::Xaml::Visibility::Collapsed;
402}
403
404Object ^ RingClientUWP::Views::IncomingVisibility::ConvertBack(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
405{
406 throw ref new Platform::NotImplementedException();
407}
408
409RingClientUWP::Views::IncomingVisibility::IncomingVisibility()
410{}
411
412
413Object ^ RingClientUWP::Views::OutGoingVisibility::Convert(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
414{
415 auto state = static_cast<CallStatus>(value);
416
417 if (state == CallStatus::SEARCHING || state == CallStatus::OUTGOING_RINGING)
418 return Windows::UI::Xaml::Visibility::Visible;
419 else
420 return Windows::UI::Xaml::Visibility::Collapsed;
421}
422
423Object ^ RingClientUWP::Views::OutGoingVisibility::ConvertBack(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
424{
425 throw ref new Platform::NotImplementedException();
426}
427
428RingClientUWP::Views::OutGoingVisibility::OutGoingVisibility()
429{}
430
431Object ^ RingClientUWP::Views::HasAnActiveCall::Convert(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
432{
433 auto state = static_cast<CallStatus>(value);
434
435 if (state == CallStatus::NONE || state == CallStatus::ENDED)
436 return Windows::UI::Xaml::Visibility::Collapsed;
437 else
438 return Windows::UI::Xaml::Visibility::Visible;
439}
440
441Object ^ RingClientUWP::Views::HasAnActiveCall::ConvertBack(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
442{
443 throw ref new Platform::NotImplementedException();
Nicolas Jagerc551c362016-10-01 19:24:50 -0400444}
445
446RingClientUWP::Views::HasAnActiveCall::HasAnActiveCall()
447{}
448
449Object ^ RingClientUWP::Views::NewMessageBubleNotification::Convert(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
450{
451 auto unreadMessages = static_cast<uint32>(value);
452
453 if (unreadMessages > 0)
454 return Windows::UI::Xaml::Visibility::Visible;
455
456 return Windows::UI::Xaml::Visibility::Collapsed;
457}
458
459Object ^ RingClientUWP::Views::NewMessageBubleNotification::ConvertBack(Object ^ value, Windows::UI::Xaml::Interop::TypeName targetType, Object ^ parameter, String ^ language)
460{
461 throw ref new Platform::NotImplementedException();
462}
463
464RingClientUWP::Views::NewMessageBubleNotification::NewMessageBubleNotification()
465{}
Nicolas Jagere4eb5132016-10-04 14:25:15 -0400466
467void RingClientUWP::Views::SmartPanel::_devicesMenuButton__Unchecked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
468{
469 _devicesMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
470}
471
472
473void RingClientUWP::Views::SmartPanel::_devicesMenuButton__Checked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
474{
475 _devicesMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
476}
477
478
479void RingClientUWP::Views::SmartPanel::_addDevice__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
480{
481
482}