using System;
using System.Collections.Generic;
using Windows.ApplicationModel.Store;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

// 基本ページのアイテム テンプレートについては、http://go.microsoft.com/fwlink/?LinkId=234237 を参照してください

namespace FooEditor
{
    /// <summary>
    /// 多くのアプリケーションに共通の特性を指定する基本ページ。
    /// </summary>
    public sealed partial class HomePage : FooEditor.Common.LayoutAwarePage
    {
        HomePageViewModel vm;
        LicenseInformation licenseInfomation;

        public HomePage()
        {
            this.InitializeComponent();

            this.vm = new HomePageViewModel();

            this.DataContext = this.vm;

#if DEBUG
            this.licenseInfomation = CurrentAppSimulator.LicenseInformation;
            this.adControl1.ApplicationId = "d25517cb-12d4-4699-8bdc-52040c712cab";
            this.adControl1.AdUnitId = "10043134";
#else
            this.licenseInfomation = CurrentApp.LicenseInformation;
            this.adControl1.ApplicationId = "10d877d4-6c21-42fe-8b89-9c8001a31f29";
            this.adControl1.AdUnitId = "10076683";
#endif
            this.licenseInfomation.LicenseChanged += LicenseInformation_LicenseChanged;

            this.LicenseInformation_LicenseChanged();
        }

        void LicenseInformation_LicenseChanged()
        {
            this.ad1.Visibility = this.licenseInfomation.IsTrial ? Visibility.Visible : Visibility.Collapsed;
        }

        void HomePage_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            this.LicenseInformation_LicenseChanged();
        }

        /// <summary>
        /// このページには、移動中に渡されるコンテンツを設定します。前のセッションからページを
        /// 再作成する場合は、保存状態も指定されます。
        /// </summary>
        /// <param name="navigationParameter">このページが最初に要求されたときに
        /// <see cref="Frame.Navigate(Type, Object)"/> に渡されたパラメーター値。
        /// </param>
        /// <param name="pageState">前のセッションでこのページによって保存された状態の
        /// ディクショナリ。ページに初めてアクセスするとき、状態は null になります。</param>
        protected override async void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
        {
            base.LoadState(navigationParameter, pageState);
            await this.vm.LoadState((MainPageViewModel)navigationParameter);
            this.SizeChanged += HomePage_SizeChanged;
        }

        /// <summary>
        /// アプリケーションが中断される場合、またはページがナビゲーション キャッシュから破棄される場合、
        /// このページに関連付けられた状態を保存します。値は、
        /// <see cref="SuspensionManager.SessionState"/> のシリアル化の要件に準拠する必要があります。
        /// </summary>
        /// <param name="pageState">シリアル化可能な状態で作成される空のディクショナリ。</param>
        protected override void SaveState(Dictionary<String, Object> pageState)
        {
            base.SaveState(pageState);
            this.SizeChanged -= HomePage_SizeChanged;
        }

    }

}
