Beispiel #1
0
        protected static void EnumerateContents(ref IPortableDeviceContent content,
                                                PortableDeviceFolder parent)
        {
            // Get the properties of the object
            IPortableDeviceProperties properties;

            content.Properties(out properties);

            // Enumerate the items contained by the current object
            IEnumPortableDeviceObjectIDs objectIds;

            content.EnumObjects(0, parent.Id, null, out objectIds);

            uint fetched = 0;

            do
            {
                string objectId;

                objectIds.Next(1, out objectId, ref fetched);
                if (fetched > 0)
                {
                    var currentObject = WrapObject(properties, objectId);

                    parent.Files.Add(currentObject);

                    if (currentObject is PortableDeviceFolder)
                    {
                        EnumerateContents(ref content, (PortableDeviceFolder)currentObject);
                    }
                }
            } while (fetched > 0);
        }
        public override void RefreshContents()
        {
            var root = new PortableDeviceFolder("DEVICE", "DEVICE");

            IPortableDeviceContent content;

            this.portableDevice.Content(out content);
            EnumerateContents(ref content, root);

            deviceContents = root;
        }
        public override bool CheckPath(String path)
        {
            string[] partsOfPath = path.Split('\\');

            PortableDeviceFolder currentFolder = deviceContents;

            for (int i = 0; i < partsOfPath.Length; i++)
            {
                IEnumerable <PortableDeviceObject> matchingFolder = from f in currentFolder.Files where f.Name == partsOfPath[i] select f;
                if (matchingFolder.Count() == 0)
                {
                    return(false);
                }

                currentFolder = (PortableDeviceFolder)matchingFolder.First();
            }

            return(true);
        }