blob: f2614f3a62e7e551ce4f8a4702d8c92411d3857d [file] [log] [blame]
Nicolas Jager8a85e1f2016-08-15 15:11:06 -04001/***************************************************************************
Nicolas Jagerbff5fbb2016-08-18 08:58:56 -04002 * Copyright (C) 2016 by Savoir-faire Linux *
3 * Author: Jäger Nicolas <nicolas.jager@savoirfairelinux.com> *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 3 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
17 **************************************************************************/
Nicolas Jager998fbd72016-08-08 11:41:28 -040018#include "pch.h"
19
20#include "SmartPanel.xaml.h"
21
Nicolas Jagerbff5fbb2016-08-18 08:58:56 -040022using namespace Platform;
23
Nicolas Jager998fbd72016-08-08 11:41:28 -040024using namespace RingClientUWP;
25using namespace RingClientUWP::Views;
Nicolas Jagerbff5fbb2016-08-18 08:58:56 -040026using namespace RingClientUWP::ViewModel;
27using namespace Windows::Media::Capture;
28using namespace Windows::UI::Xaml;
29using namespace Windows::Storage;
30using namespace Windows::UI::Xaml::Media::Imaging;
31using namespace Windows::UI::Xaml::Shapes;
32using namespace Windows::UI::Xaml::Media;
33using namespace Concurrency;
34using namespace Windows::Foundation;
Nicolas Jager998fbd72016-08-08 11:41:28 -040035
36SmartPanel::SmartPanel()
37{
38 InitializeComponent();
Nicolas Jagerbff5fbb2016-08-18 08:58:56 -040039
40 _accountsList_->ItemsSource = AccountsViewModel::instance->accountsList;
41 _smartList_->ItemsSource = ContactsViewModel::instance->contactsList;
Nicolas Jager998fbd72016-08-08 11:41:28 -040042}
43
Nicolas Jagerbff5fbb2016-08-18 08:58:56 -040044void RingClientUWP::Views::SmartPanel::_accountsMenuButton__Checked(Object^ sender, RoutedEventArgs^ e)
45{
46 _shareMenuButton_->IsChecked = false;
47 _accountsMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
48 _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
49}
50
51void RingClientUWP::Views::SmartPanel::_accountsMenuButton__Unchecked(Object^ sender, RoutedEventArgs^ e)
52{
53 _accountsMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
54 _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
55}
56
57void RingClientUWP::Views::SmartPanel::_settings__Checked(Object^ sender, RoutedEventArgs^ e)
58{
59 _smartGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
60 _settings_->Visibility = Windows::UI::Xaml::Visibility::Visible;
61}
62
63void RingClientUWP::Views::SmartPanel::_settings__Unchecked(Object^ sender, RoutedEventArgs^ e)
64{
65 _settings_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
66 _smartGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
67}
68
69void RingClientUWP::Views::SmartPanel::setMode(RingClientUWP::Views::SmartPanel::Mode mode)
70{
71 if (mode == RingClientUWP::Views::SmartPanel::Mode::Normal) {
72 _rowRingTxtBx_->Height = 40;
73 _selectedAccountAvatar_->Height = 80;
74 _selectedAccountAvatarColumn_->Width = 90;
75 _selectedAccountRow_->Height = 90;
76 }
77 else {
78 _rowRingTxtBx_->Height = 0;
79 _selectedAccountAvatar_->Height = 50;
80 _selectedAccountAvatarColumn_->Width = 60;
81 _selectedAccountRow_->Height = 60;
82 }
83
84 _selectedAccountAvatar_->Width = _selectedAccountAvatar_->Height;
85 _settingsTBtn_->IsChecked = false;
86 _accountsMenuButton_->IsChecked = false;
87 _shareMenuButton_->IsChecked = false;
88}
89
90void RingClientUWP::Views::SmartPanel::_shareMenuButton__Checked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
91{
92 _shareMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
93 _accountsMenuButton_->IsChecked = false;
94}
95
96void RingClientUWP::Views::SmartPanel::_shareMenuButton__Unchecked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
97{
98 _shareMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
99}
100
101
102void RingClientUWP::Views::SmartPanel::_addAccountBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
103{
104 _accountsMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
105 _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
106}
107
108
109void RingClientUWP::Views::SmartPanel::_createAccountYes__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
110{
111
112}
113
114
115void RingClientUWP::Views::SmartPanel::_createAccountNo__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
116{
117
118}
119
120
121void RingClientUWP::Views::SmartPanel::_avatarWebcamCaptureBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
122{
123 CameraCaptureUI^ cameraCaptureUI = ref new CameraCaptureUI();
124 cameraCaptureUI->PhotoSettings->Format = CameraCaptureUIPhotoFormat::Png;
125 cameraCaptureUI->PhotoSettings->CroppedSizeInPixels = Size(100, 100);
126
127
128 create_task(cameraCaptureUI->CaptureFileAsync(CameraCaptureUIMode::Photo)).then([this](StorageFile^ photo)
129 {
130 if (photo != nullptr) {
131 // maybe it would be possible to move some logics to the style sheet
132 auto brush = ref new ImageBrush();
133
134 auto circle = ref new Ellipse();
135 circle->Height = 80; // TODO : use some global constant when ready
136 circle->Width = 80;
137 auto path = photo->Path;
138 auto uri = ref new Windows::Foundation::Uri(path);
139 auto bitmapImage = ref new Windows::UI::Xaml::Media::Imaging::BitmapImage();
140 bitmapImage->UriSource = uri;
141
142 brush->ImageSource = bitmapImage;
143 circle->Fill = brush;
144 _avatarWebcamCaptureBtn_->Content = circle;
145 }
146 });
147
148}
Nicolas Jager8a85e1f2016-08-15 15:11:06 -0400149
150
151void
152SmartPanel::_smartList__SelectionChanged(Platform::Object^ sender, Windows::UI::Xaml::Controls::SelectionChangedEventArgs^ e)
153{
154 auto listbox = safe_cast<ListBox^>(sender);
155 auto contact = safe_cast<Contact^>(listbox->SelectedItem);
156 ContactsViewModel::instance->selectedContact = contact;
157}