/// <summary> /// <c>LockscreenImageItemSetting</c>をJSONに変換する. /// </summary> /// <param name="setting"></param> /// <returns></returns> public static JsonObject ToJson(this LockscreenImageItemSetting setting) { var jsonObj = new JsonObject(); jsonObj.Add(LockscreenImageItemSettingProperty.Token.ToString(), JsonValue.CreateStringValue(setting.Token)); jsonObj.Add(LockscreenImageItemSettingProperty.IsTemporary.ToString(), JsonValue.CreateBooleanValue(setting.IsTemporary)); if (!String.IsNullOrEmpty(setting.TileId)) { jsonObj.Add(LockscreenImageItemSettingProperty.TileId.ToString(), JsonValue.CreateStringValue(setting.TileId)); } return(jsonObj); }
/// <summary> /// 指定したファイルを対象とする「ロック画面に設定するアイテム」を作成する. /// </summary> /// <param name="file">ファイル</param> /// <returns>ロック画面に設定するアイテム</returns> public static async Task <LockscreenImageItem> FromStorageItemAsync(StorageFile file, bool isTemporaryDefault, System.Threading.CancellationToken cancellationToken) { if (file == null) { throw new ArgumentNullException("file"); } // await Task.Delay(10 * 1000, cancellationToken); try { // temporaryはLocalFolderにKeepする // + remove時に削除できるようにフラグをset var fileAdded = file; bool isTemporary = isTemporaryDefault; if (file.Attributes.HasFlag(FileAttributes.Temporary)) { isTemporary = true; var folder = await ApplicationData.Current.LocalFolder.CreateFolderAsync(@"TempFileCache", CreationCollisionOption.OpenIfExists).AsTask(cancellationToken); fileAdded = await file.CopyAsync(folder, file.Name, NameCollisionOption.GenerateUniqueName).AsTask(cancellationToken); } var token = StorageApplicationPermissions.FutureAccessList.Add(fileAdded); var setting = new LockscreenImageItemSetting() { Token = token, IsTemporary = isTemporary }; return(new LockscreenImageItem(fileAdded) { Setting = setting, }); } catch (System.IO.FileNotFoundException /*ex*/) { return(null); } }