116 lines
3.5 KiB
C++
116 lines
3.5 KiB
C++
/***
|
|
* ==++==
|
|
*
|
|
* 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 <collection.h>
|
|
#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();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Invoked when this page is about to be displayed in a Frame.
|
|
/// </summary>
|
|
/// <param name="e">Event data that describes how this page was reached. The Parameter
|
|
/// property is typically used to configure the page.</param>
|
|
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<FacebookAlbum^> 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<FacebookAlbum^> albums){
|
|
AlbumGrid->ItemsSource = ref new Vector<FacebookAlbum^>(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_;
|
|
}
|