Exemple #1
0
        /// <summary>
        ///  選択されたアイテムを外部ファイルに保存する.
        /// </summary>
        /// <returns></returns>
        private async Task ExportItemsAsync()
        {
            var items = GetSelectedItems();

            if (items == null)
            {
                return;
            }

            var picker = new Windows.Storage.Pickers.FileSavePicker();

            picker.FileTypeChoices.Add("zip", new string[] { ".zip" });
            var file = await picker.PickSaveFileAsync();

            if (file == null)
            {
                return;
            }

            this.ItemsChanging = true;
            using (var zipArchive = await ZipArchiveHelper.CreateZipArchiveFromFileAsync(file, System.IO.Compression.ZipArchiveMode.Create))
            {
                foreach (var item in items)
                {
                    await item.ExportAsync(zipArchive);
                }
            }
            this.ItemsChanging = false;
        }
Exemple #2
0
        /// <summary>
        ///  手描き入力を外部に保存する.
        /// </summary>
        /// <param name="targetArchive">保存先のZipArchive</param>
        /// <returns></returns>
        public async Task ExportAsync(System.IO.Compression.ZipArchive targetArchive)
        {
            if (targetArchive == null)
            {
                throw new ArgumentNullException("targetArchive");
            }

            var folder = await ApplicationData.Current.LocalFolder.GetFolderAsync(this.InternalName);

            await ZipArchiveHelper.AddEntriesFromFolderAsync(targetArchive, folder);

            var propertyText = SerializeProperties();
            await ZipArchiveHelper.AddEntriesFromTextAsync(targetArchive, String.Format(PropertyEntryNameFormat, this.InternalName), propertyText, Encoding.UTF8);
        }
Exemple #3
0
        /// <summary>
        ///  外部に保存した手描き入力を読み込む.
        /// </summary>
        /// <param name="sourceArchive"></param>
        /// <returns></returns>
        public static async Task ImportAsync(System.IO.Compression.ZipArchive sourceArchive)
        {
            if (sourceArchive == null)
            {
                throw new ArgumentNullException("sourceArchive");
            }

            var workdir = await ApplicationData.Current.TemporaryFolder.CreateFolderAsync("ItemImport", CreationCollisionOption.ReplaceExisting);

            await ZipArchiveHelper.ExtractFromFileAsync(sourceArchive, workdir);

            var itemsDir = await workdir.GetFoldersAsync();

            foreach (var itemDir in itemsDir)
            {
                var item = new CanvasItem();
                if (!await item.SaveAsync())
                {
                    continue;
                }

                var propertyFile = (await workdir.TryGetItemAsync(String.Format(PropertyEntryNameFormat, itemDir.Name))) as StorageFile;
                if (propertyFile == null)
                {
                    continue;
                }
                var propertyText = await FileIO.ReadTextAsync(propertyFile, Windows.Storage.Streams.UnicodeEncoding.Utf8);

                item.DeserializeProperties(propertyText);
                await propertyFile.DeleteAsync();

                var newItemDir = await ApplicationData.Current.LocalFolder.GetFolderAsync(item.InternalName);

                foreach (var file in await itemDir.GetFilesAsync())
                {
                    await file.MoveAsync(newItemDir, file.Name, NameCollisionOption.ReplaceExisting);
                }

                if (!await item.LoadAsync())
                {
                    continue;
                }
                await CanvasItemManager.Current.AddItemAsync(item);
            }
            await workdir.DeleteAsync();
        }
Exemple #4
0
        /// <summary>
        /// 外部ファイルに保存されたアイテムを読み込む.
        /// </summary>
        /// <returns></returns>
        private async Task ImportItemsAsync()
        {
            var picker = new Windows.Storage.Pickers.FileOpenPicker();

            picker.FileTypeFilter.Add(".zip");
            var file = await picker.PickSingleFileAsync();

            if (file == null)
            {
                return;
            }

            this.ItemsChanging = true;
            using (var zipArchive = await ZipArchiveHelper.CreateZipArchiveFromFileAsync(file, System.IO.Compression.ZipArchiveMode.Read))
            {
                await CanvasItem.ImportAsync(zipArchive);
            }
            this.ItemsChanging = false;
        }