private async void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args) { var selected = new List<object>(TileList.SelectedItems); var picker = new FileSavePicker(); picker.SuggestedFileName = $"export_{DateTime.Now.ToString(DateTimeFormatInfo.CurrentInfo.ShortDatePattern)}"; picker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary; picker.FileTypeChoices.Add("Tiles file", new List<string>() { ".tiles" }); var file = await picker.PickSaveFileAsync(); if (file != null) { CachedFileManager.DeferUpdates(file); await FileIO.WriteTextAsync(file, ""); using (var stream = await file.OpenStreamForWriteAsync()) using (var zip = new ZipArchive(stream, ZipArchiveMode.Update)) { while (zip.Entries.Count > 0) { zip.Entries[0].Delete(); } using (var metaStream = zip.CreateEntry("tiles.json").Open()) using (var writer = new StreamWriter(metaStream)) { var array = new JsonArray(); selected.ForEachWithIndex<SecondaryTile>((item, index) => { var objet = new JsonObject(); objet.Add("Name", item.DisplayName); objet.Add("Arguments", item.Arguments); objet.Add("TileId", item.TileId); objet.Add("IconNormal", item.VisualElements.ShowNameOnSquare150x150Logo); objet.Add("IconWide", item.VisualElements.ShowNameOnWide310x150Logo); objet.Add("IconBig", item.VisualElements.ShowNameOnSquare310x310Logo); array.Add(objet); if (item.VisualElements.Square150x150Logo.LocalPath != DEFAULT_URI) { var path = ApplicationData.Current.LocalFolder.Path + Uri.UnescapeDataString(item.VisualElements.Square150x150Logo.AbsolutePath.Substring(6)); zip.CreateEntryFromFile(path, item.TileId + "/normal"); } }); writer.WriteLine(array.Stringify()); } FileUpdateStatus status = await CachedFileManager.CompleteUpdatesAsync(file); if(status == FileUpdateStatus.Complete) { var folder = await file.GetParentAsync(); await new MessageDialog("Speichern erfolgreich").ShowAsync(); } else { await new MessageDialog("Speichern fehlgeschlagen").ShowAsync(); } Debug.WriteLine(status); } } }
/// <summary> /// Using a fully specified parameter list: value, name, and type. /// </summary> private void InitializeParameters(StringBuilder sb, List<ParamTypeInfo> parms) { parms.ForEachWithIndex((pti, idx) => { sb.Append(pti.ParamType + " " + pti.ParamName + " = (" + pti.ParamType+")paramList[" + idx + "];\r\n"); }); }