Work on smartboxpage
- adds files for account model and view model.
- adds files for contact model and view model.
- adds controls for the smartlist pan.
- adds some stub assets.
Change-Id: I7e5b0cc5d29ac777bce13d1b7db1b6b847513d62
diff --git a/SmartPanel.xaml.cpp b/SmartPanel.xaml.cpp
index 83af9ef..42c8415 100644
--- a/SmartPanel.xaml.cpp
+++ b/SmartPanel.xaml.cpp
@@ -1,29 +1,148 @@
-/**************************************************************************
-* Copyright (C) 2016 by Savoir-faire Linux *
-* Author: Jäger Nicolas <nicolas.jager@savoirfairelinux.com> *
-* *
-* This program is free software; you can redistribute it and/or modify *
-* it under the terms of the GNU General Public License as published by *
-* the Free Software Foundation; either version 3 of the License, or *
-* (at your option) any later version. *
-* *
-* This program is distributed in the hope that it will be useful, *
-* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-* GNU General Public License for more details. *
-* *
-* You should have received a copy of the GNU General Public License *
-* along with this program. If not, see <http://www.gnu.org/licenses/>. *
-**************************************************************************/
+/**************************************************************************
+ * Copyright (C) 2016 by Savoir-faire Linux *
+ * Author: Jäger Nicolas <nicolas.jager@savoirfairelinux.com> *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 3 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
+ **************************************************************************/
#include "pch.h"
#include "SmartPanel.xaml.h"
+using namespace Platform;
+
using namespace RingClientUWP;
using namespace RingClientUWP::Views;
+using namespace RingClientUWP::ViewModel;
+using namespace Windows::Media::Capture;
+using namespace Windows::UI::Xaml;
+using namespace Windows::Storage;
+using namespace Windows::UI::Xaml::Media::Imaging;
+using namespace Windows::UI::Xaml::Shapes;
+using namespace Windows::UI::Xaml::Media;
+using namespace Concurrency;
+using namespace Windows::Foundation;
SmartPanel::SmartPanel()
{
InitializeComponent();
+
+ _accountsList_->ItemsSource = AccountsViewModel::instance->accountsList;
+ _smartList_->ItemsSource = ContactsViewModel::instance->contactsList;
}
+void RingClientUWP::Views::SmartPanel::_accountsMenuButton__Checked(Object^ sender, RoutedEventArgs^ e)
+{
+ _shareMenuButton_->IsChecked = false;
+ _accountsMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
+ _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
+}
+
+void RingClientUWP::Views::SmartPanel::_accountsMenuButton__Unchecked(Object^ sender, RoutedEventArgs^ e)
+{
+ _accountsMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
+ _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
+}
+
+void RingClientUWP::Views::SmartPanel::_settings__Checked(Object^ sender, RoutedEventArgs^ e)
+{
+ _smartGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
+ _settings_->Visibility = Windows::UI::Xaml::Visibility::Visible;
+}
+
+void RingClientUWP::Views::SmartPanel::_settings__Unchecked(Object^ sender, RoutedEventArgs^ e)
+{
+ _settings_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
+ _smartGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
+}
+
+void RingClientUWP::Views::SmartPanel::setMode(RingClientUWP::Views::SmartPanel::Mode mode)
+{
+ if (mode == RingClientUWP::Views::SmartPanel::Mode::Normal) {
+ _rowRingTxtBx_->Height = 40;
+ _selectedAccountAvatar_->Height = 80;
+ _selectedAccountAvatarColumn_->Width = 90;
+ _selectedAccountRow_->Height = 90;
+ }
+ else {
+ _rowRingTxtBx_->Height = 0;
+ _selectedAccountAvatar_->Height = 50;
+ _selectedAccountAvatarColumn_->Width = 60;
+ _selectedAccountRow_->Height = 60;
+ }
+
+ _selectedAccountAvatar_->Width = _selectedAccountAvatar_->Height;
+ _settingsTBtn_->IsChecked = false;
+ _accountsMenuButton_->IsChecked = false;
+ _shareMenuButton_->IsChecked = false;
+}
+
+void RingClientUWP::Views::SmartPanel::_shareMenuButton__Checked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
+{
+ _shareMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
+ _accountsMenuButton_->IsChecked = false;
+}
+
+void RingClientUWP::Views::SmartPanel::_shareMenuButton__Unchecked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
+{
+ _shareMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
+}
+
+
+void RingClientUWP::Views::SmartPanel::_addAccountBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
+{
+ _accountsMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Collapsed;
+ _accountCreationMenuGrid_->Visibility = Windows::UI::Xaml::Visibility::Visible;
+}
+
+
+void RingClientUWP::Views::SmartPanel::_createAccountYes__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
+{
+
+}
+
+
+void RingClientUWP::Views::SmartPanel::_createAccountNo__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
+{
+
+}
+
+
+void RingClientUWP::Views::SmartPanel::_avatarWebcamCaptureBtn__Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
+{
+ CameraCaptureUI^ cameraCaptureUI = ref new CameraCaptureUI();
+ cameraCaptureUI->PhotoSettings->Format = CameraCaptureUIPhotoFormat::Png;
+ cameraCaptureUI->PhotoSettings->CroppedSizeInPixels = Size(100, 100);
+
+
+ create_task(cameraCaptureUI->CaptureFileAsync(CameraCaptureUIMode::Photo)).then([this](StorageFile^ photo)
+ {
+ if (photo != nullptr) {
+ // maybe it would be possible to move some logics to the style sheet
+ auto brush = ref new ImageBrush();
+
+ auto circle = ref new Ellipse();
+ circle->Height = 80; // TODO : use some global constant when ready
+ circle->Width = 80;
+ auto path = photo->Path;
+ auto uri = ref new Windows::Foundation::Uri(path);
+ auto bitmapImage = ref new Windows::UI::Xaml::Media::Imaging::BitmapImage();
+ bitmapImage->UriSource = uri;
+
+ brush->ImageSource = bitmapImage;
+ circle->Fill = brush;
+ _avatarWebcamCaptureBtn_->Content = circle;
+ }
+ });
+
+}