Пример #1
0
        private void LoadDocument(NSMetadataQuery query)
        {
            if (query.ResultCount == 1)
            {
                this.logger.Debug("Query has 1 result.");

                var item = (NSMetadataItem)query.ResultAtIndex(0);
                var url  = (NSUrl)item.ValueForAttribute(NSMetadataQuery.ItemURLKey);
                var exerciseCloudDocument = new ExerciseCloudDocument(url);

                exerciseCloudDocument.Open(
                    (success) =>
                {
                    if (!success)
                    {
                        this.logger.Error("Failed to open document.");
                        this.exerciseDocument.OnError(new InvalidOperationException("Failed to open document."));
                    }
                    else
                    {
                        this.logger.Info("Loaded document.");
                    }
                });
            }
            else
            {
                var documentsFolder       = Path.Combine(this.ubiquityContainerUrl.Path, "Documents");
                var documentPath          = Path.Combine(documentsFolder, documentFilename);
                var url                   = new NSUrl(documentPath, isDir: false);
                var exerciseCloudDocument = new ExerciseCloudDocument(url)
                {
                    Data = GetDefaultExerciseDocument()
                };

                exerciseCloudDocument.Save(
                    exerciseCloudDocument.FileUrl,
                    UIDocumentSaveOperation.ForCreating,
                    success =>
                {
                    if (success)
                    {
                        this.logger.Info("Successfully created new document.");
                        this.exerciseDocument.OnNext(exerciseCloudDocument.Data);
                    }
                    else
                    {
                        this.logger.Error("Failed to create new document.");
                        this.exerciseDocument.OnError(new InvalidOperationException("Failed to create default document."));
                    }
                });
            }

            // register for document updates
            NSNotificationCenter.DefaultCenter.AddObserver(UIDocument.StateChangedNotification, this.OnDocumentUpdated);
        }
        private void LoadDocument(NSMetadataQuery query)
        {
            if (query.ResultCount == 1)
            {
                this.logger.Debug("Query has 1 result.");

                var item = (NSMetadataItem)query.ResultAtIndex(0);
                var url = (NSUrl)item.ValueForAttribute(NSMetadataQuery.ItemURLKey);
                var exerciseCloudDocument = new ExerciseCloudDocument(url);

                exerciseCloudDocument.Open(
                    (success) =>
                    {
                        if (!success)
                        {
                            this.logger.Error("Failed to open document.");
                            this.exerciseDocument.OnError(new InvalidOperationException("Failed to open document."));
                        }
                        else
                        {
                            this.logger.Info("Loaded document.");
                        }
                    });
            }
            else
            {
                var documentsFolder = Path.Combine(this.ubiquityContainerUrl.Path, "Documents");
                var documentPath = Path.Combine(documentsFolder, documentFilename);
                var url = new NSUrl(documentPath, isDir: false);
                var exerciseCloudDocument = new ExerciseCloudDocument(url)
                {
                    Data = GetDefaultExerciseDocument()
                };

                exerciseCloudDocument.Save(
                    exerciseCloudDocument.FileUrl,
                    UIDocumentSaveOperation.ForCreating,
                    success =>
                    {
                        if (success)
                        {
                            this.logger.Info("Successfully created new document.");
                            this.exerciseDocument.OnNext(exerciseCloudDocument.Data);
                        }
                        else
                        {
                            this.logger.Error("Failed to create new document.");
                            this.exerciseDocument.OnError(new InvalidOperationException("Failed to create default document."));
                        }
                    });
            }

            // register for document updates
            NSNotificationCenter.DefaultCenter.AddObserver(UIDocument.StateChangedNotification, this.OnDocumentUpdated);
        }