OSDN Git Service

ファイルを指定した時の状態も指定できるようにした
[fooeditengine/FooEditEngine.git] / UWP / Test / MainPage.xaml.cs
index 0e7ebe1..e9a21a7 100644 (file)
@@ -12,6 +12,10 @@ using Windows.Storage.Pickers;
 using Windows.Graphics.Printing;
 using Windows.Graphics.Printing.OptionDetails;
 using FooEditEngine.UWP;
+using Windows.UI.Xaml.Navigation;
+using Windows.ApplicationModel.Activation;
+using System.Linq;
+using Windows.Storage.AccessCache;
 
 // 空白ページのアイテム テンプレートについては、http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 を参照してください
 
@@ -34,6 +38,29 @@ namespace Test
             currentView.Hiding += currentView_Hiding;
         }
 
+        protected override async void OnNavigatedTo(NavigationEventArgs e)
+        {
+            var fileargs = e.Parameter as FileActivatedEventArgs;
+            if (fileargs != null)
+            {
+                var filepaths = from file in fileargs.Files
+                                select file.Path;
+
+                //MRUに追加しないと後で開けない
+                foreach (var file in fileargs.Files)
+                {
+                    StorageApplicationPermissions.MostRecentlyUsedList.Add(file, "mrufile");
+                    this.vm.AddDocument();
+                    await LoadFile(this.vm.CurrentDocument, file as IStorageFile);
+                }
+
+            }
+            else if(this.vm.DocumentList.Count == 0)
+            {
+                this.vm.Initalize();
+            }
+        }
+
         void currentView_Hiding(InputPane sender, InputPaneVisibilityEventArgs args)
         {
             this.Margin = new Thickness(0);
@@ -85,14 +112,19 @@ namespace Test
             var filepicker = new FileOpenPicker();
             filepicker.FileTypeFilter.Add(".txt");
             var file = await filepicker.PickSingleFileAsync();
-            if(file != null)
+            await LoadFile(this.vm.CurrentDocument, file);
+        }
+
+        private async Task LoadFile(FooEditEngine.Document doc,IStorageFile file)
+        {
+            if (file != null)
             {
                 using (var ws = await file.OpenAsync(FileAccessMode.Read))
                 using (var fs = new StreamReader(ws.AsStream()))
                 {
-                    await this.vm.CurrentDocument.LoadAsync(fs, null);
+                    await doc.LoadAsync(fs, null);
                 }
-                this.vm.CurrentDocument.RequestRedraw();
+                doc.RequestRedraw();
             }
         }