/// <summary>
        ///  選択されているアイテムをスタート画面からピン留めを外す.
        /// </summary>
        /// <param name="buttonPosition">呼び出し元ボタンの場所</param>
        private async void UnPinSelectedItemToStartAsync(Point buttonPosition)
        {
            var item = GetSelectedItem();

            if (item == null)
            {
                return;
            }

            var tile = await Tile.GetSecondaryTileForItem(item);

            if (tile == null)
            {
                if (!String.IsNullOrEmpty(item.Setting.TileId))
                {
                    await TileHelper.RemoveTileRegistrationAsync(item.Setting.TileId);

                    item.Setting.TileId = null;
                }
                UpdatePinUnPinToStartBottomAppBarButtons();
                return;
            }

            string tileId = tile.SecondaryTile.TileId;
            var    re     = new Rect(buttonPosition.X, buttonPosition.Y, 100, 100);

            if (await tile.SecondaryTile.RequestDeleteForSelectionAsync(re))
            {
                item.Setting.TileId = null;
                App.Current.LockscreenItemList.SaveItemsToSetting();
                await TileHelper.RemoveTileRegistrationAsync(tileId);

                UpdatePinUnPinToStartBottomAppBarButtons();
            }
        }
        /// <summary>
        ///  セカンダリタイルから起動された時の処理.
        /// </summary>
        /// <param name="tileId"></param>
        public async void SecondaryTile_LaunchedAsync(string tileId)
        {
            var secondaryTile = await TileHelper.GetSecondaryTileFromTileIdAsync(tileId);

            if (secondaryTile == null)
            {
                App.Current.LaunchedFromSecondaryTile = false;
                return;
            }

            await App.Current.LoadAllItemsAsync();

            var item = App.Current.LockscreenItemList.FirstOrDefault(x => tileId.Equals(x.Setting.TileId, StringComparison.Ordinal));

            if (item == null)
            {
                // delete from start
                if (await secondaryTile.RequestDeleteAsync())
                {
                    await TileHelper.RemoveTileRegistrationAsync(tileId);
                }
                App.Current.LaunchedFromSecondaryTile = false;
                return;
            }
            else
            {
                var succeedToSet = await SetSelectedItemToLockscreenAsync(item);

                LoadCurrentLockscreenImageAsync();
                App.Current.LaunchedFromSecondaryTile = false;
            }
        }
Пример #3
0
        /// <summary>
        ///  登録されているアイテムを読み込む(実装).
        /// </summary>
        /// <returns></returns>
        private async Task LoadAllItemsAsyncCore()
        {
            var itemsState = AppSettings.Instance.GetItemsState();

            if (itemsState == null)
            {
                return;
            }

            foreach (var setting in LockscreenImageItemSettingHelper.DeserializeItems(itemsState))
            {
                if (!StorageApplicationPermissions.FutureAccessList.ContainsItem(setting.Token))
                {
                    continue;
                }

                bool succeeded = false;
                try
                {
                    var file = await StorageApplicationPermissions.FutureAccessList.GetFileAsync(setting.Token);

                    var item = new LockscreenImageItem(file)
                    {
                        Setting = setting
                    };
                    Add(item);
                    succeeded = true;
                }
                catch (System.IO.FileNotFoundException)
                {
                    succeeded = false;
                }
                if (!succeeded)
                {
                    StorageApplicationPermissions.FutureAccessList.Remove(setting.Token);

                    if (!String.IsNullOrEmpty(setting.TileId))
                    {
                        await TileHelper.RemoveTileRegistrationAsync(setting.TileId);
                    }

                    continue;
                }
            }
        }
Пример #4
0
        /// <summary>
        ///  「ロック画面に設定するアイテム」を登録解除する.
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public static async Task Remove(LockscreenImageItem item)
        {
            if (StorageApplicationPermissions.FutureAccessList.ContainsItem(item.Setting.Token))
            {
                StorageApplicationPermissions.FutureAccessList.Remove(item.Setting.Token);
            }

            if (item.Setting.IsTemporary)
            {
                await item.Item.DeleteAsync();
            }

            if (!String.IsNullOrEmpty(item.Setting.TileId))
            {
                await TileHelper.RemoveTileRegistrationAsync(item.Setting.TileId);

                item.Setting.TileId = null;
            }
        }