예제 #1
0
        public static PortableFileObject AddFileObject
        (
            string filePath,
            Func <PortableDirectorySource, string, PortableFileObject> createObject
        )
        {
            string fileDirectory = Path.GetDirectoryName(filePath);

            PortableDirectorySource directorySource = GetObjectSource(fileDirectory) as PortableDirectorySource;

            if (directorySource == null)
            {
                directorySource = new PortableDirectorySource("NEW",
                                                              fileDirectory);
                _cachedSources.TryAdd(fileDirectory,
                                      directorySource);

                /*throw new ArgumentException
                 * (
                 *  string.Format("Object source representing directory '{0}' not found.",
                 *                fileDirectory),
                 *
                 *  nameof(filePath)
                 * );*/
            }

            const ReaderWriterLockSlim objectsLock = null;
            PortableFileObject         fileObject  = AddFileObject(filePath,
                                                                   directorySource,
                                                                   objectsLock,
                                                                   createObject);

            return(fileObject);
        }
예제 #2
0
        private static PortableFileObject AddFileObject
        (
            string filePath,
            PortableDirectorySource directorySource,
            ReaderWriterLockSlim objectsLock,
            Func <PortableDirectorySource, string, PortableFileObject> createObject
        )
        {
            _objectLoadingTask.ThrowIfUnitialised(nameof(_fileObjectDescriber),
                                                  nameof(AddFileObject),
                                                  nameof(RegisterPlatformSpecific));

            string   fileName = Path.GetFileName(filePath);
            DateTime fileTime = _fileObjectDescriber.GetFileCreationTime(filePath);

            PortableFileObject fileObject = createObject(directorySource,
                                                         fileName);

            directorySource.AddObject(fileObject);

            objectsLock?.EnterWriteLock();

            try
            {
                _cachedObjects.Add(fileObject);
            }
            finally
            {
                objectsLock?.ExitWriteLock();
            }

            return(fileObject);
        }
예제 #3
0
        protected override void OnDone()
        {
            PortableFileObject imageObject = PortableObjectRepository <Activity> .AddFileObject
                                             (
                _picturePath,

                (directorySource, objectFile) => new AndroidImageObject(directorySource,
                                                                        objectFile)
                                             );

            PortableObjectRepository <Activity> .PushPendingObject(imageObject);

            if (DeviceOrientation == null)
            {
                // this should "never" happen:
                throw new NullReferenceException(nameof(DeviceOrientation));
            }

            var editImageIntent = new Intent(this, typeof(AndroidEditImageActivity));

            editImageIntent.PutExtra(AndroidEditImageActivity.DeviceOrientationExtra,
                                     DeviceOrientation.Value);

            editImageIntent.PutExtra(AndroidEditImageActivity.PicturePathExtra,
                                     _picturePath);

            StartActivity(editImageIntent);
        }