/// <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; } }
/// <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; } } }
/// <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; } }