/*** * ==++== * * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * ==--== * =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ * * MainPage.xaml.cpp - Implementation of the MainPage and * FacebookAlbum classes. * =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ****/ #include "pch.h" #include #include "MainPage.xaml.h" #include "Facebook.h" using namespace FacebookDemo; using namespace Platform; using namespace Platform::Collections; using namespace Windows::Foundation; using namespace Windows::Foundation::Collections; using namespace Windows::UI::Xaml; using namespace Windows::UI::Xaml::Controls; using namespace Windows::UI::Xaml::Controls::Primitives; using namespace Windows::UI::Xaml::Data; using namespace Windows::UI::Xaml::Input; using namespace Windows::UI::Xaml::Media; using namespace Windows::UI::Xaml::Navigation; MainPage::MainPage() { InitializeComponent(); } /// /// Invoked when this page is about to be displayed in a Frame. /// /// Event data that describes how this page was reached. The Parameter /// property is typically used to configure the page. void MainPage::OnNavigatedTo(NavigationEventArgs^ e) { (void) e; // Unused parameter } void MainPage::LoginButton_Click_1(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) { LoginButton->IsEnabled = false; // Disable button to prevent double-login facebook_client::instance().login(L"user_photos") .then([=](){ AlbumButton->IsEnabled = true; }, pplx::task_continuation_context::use_current()); } void MainPage::AlbumButton_Click_1(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e) { using namespace pplx; AlbumButton->IsEnabled = false; facebook_client::instance().get(L"/me/albums") .then([](web::json::value v){ web::json::object& obj = v.as_object(); std::vector albums; for(auto& elem : obj[L"data"].as_array()){ albums.push_back(ref new FacebookAlbum( elem[L"name"].as_string(), elem[L"count"].as_integer(), elem[L"id"].as_string(), elem[L"cover_photo"].as_string() )); } return task_from_result(std::move(albums)); }).then([=](std::vector albums){ AlbumGrid->ItemsSource = ref new Vector(std::move(albums)); }, task_continuation_context::use_current()); } String^ FacebookAlbum::Title::get() { return ref new String(title_.c_str()); } int FacebookAlbum::Count::get() { return count_; } ImageSource^ FacebookAlbum::Preview::get() { if(preview_ == nullptr) { auto preview_uri = facebook_client::instance().base_uri(true); preview_uri.append_path(photo_id_); preview_uri.append_path(L"/picture"); preview_ = ref new Imaging::BitmapImage(ref new Uri(StringReference(preview_uri.to_string().c_str()))); } return preview_; }