private void StartEnumerate(IObjectEnumerateHelper enumHelper)
        {
            lock (dispatcher)
            {
                enumerateHelper = enumHelper;
                IPortableDeviceContent pContent;
                PortableDeviceClass.Content(out pContent);

                Content = new PortableDeviceFunctionalObject("DEVICE");
                Enumerate(ref pContent, "DEVICE", Content, enumerateHelper);

                RaisePropertyChanged("Content");
            }
        }
        internal void Enumerate(ref IPortableDeviceContent pContent, string parentID, PortableDeviceContainerObject node, IObjectEnumerateHelper helper, bool detectNewObjects = false)
        {
            IPortableDeviceProperties properties;

            pContent.Properties(out properties);

            foreach (var objectID in ExtractObjectIds(pContent, parentID))
            {
                if (detectNewObjects && ParentContainsChildsId(node, objectID))
                {
                    continue;
                }

                PortableDeviceObject current = ExtractInformation(properties, objectID);
                if (!helper.IsObjectMatching(current))
                {
                    continue;
                }

                node.AddChild(current);

                if (!helper.IsLastNode && current is PortableDeviceContainerObject)
                {
                    Enumerate(ref pContent, objectID, (PortableDeviceContainerObject)current, helper.Next(), detectNewObjects);
                }
            }
        }
 /// <summary>
 ///     Refresh content from device using IObjectEnumerateHelper
 ///     When using PathEnumerateHelper, remember that root node is actual Phone, so it is used like new PathEnumerateHelper(".*/music/mp3")
 /// </summary>
 public void RefreshContent(IObjectEnumerateHelper enumerateHelper)
 {
     StartEnumerate(enumerateHelper);
 }
Ejemplo n.º 4
0
        private void StartEnumerate(IObjectEnumerateHelper enumHelper)
        {
            lock (dispatcher)
            {
                enumerateHelper = enumHelper;
                IPortableDeviceContent pContent;
                PortableDeviceClass.Content(out pContent);

                Content = new PortableDeviceFunctionalObject("DEVICE");
                Enumerate(ref pContent, "DEVICE", Content, enumerateHelper);

                RaisePropertyChanged("Content");
            }
        }
Ejemplo n.º 5
0
        internal void Enumerate(ref IPortableDeviceContent pContent, string parentID, PortableDeviceContainerObject node, IObjectEnumerateHelper helper, bool detectNewObjects = false)
        {
            IPortableDeviceProperties properties;
            pContent.Properties(out properties);

            foreach (var objectID in ExtractObjectIds(pContent, parentID))
            {
                if (detectNewObjects && ParentContainsChildsId(node, objectID))
                    continue;

                PortableDeviceObject current = ExtractInformation(properties, objectID);
                if(!helper.IsObjectMatching(current))
                    continue;

                node.AddChild(current);

                if (!helper.IsLastNode && current is PortableDeviceContainerObject)
                    Enumerate(ref pContent, objectID, (PortableDeviceContainerObject)current, helper.Next(), detectNewObjects);
            }
        }
Ejemplo n.º 6
0
 /// <summary>
 ///     Refresh content from device using IObjectEnumerateHelper
 ///     When using PathEnumerateHelper, remember that root node is actual Phone, so it is used like new PathEnumerateHelper(".*/music/mp3")
 /// </summary>
 public void RefreshContent(IObjectEnumerateHelper enumerateHelper)
 {
     StartEnumerate(enumerateHelper);
 }
        private static IEnumerable <PortableDeviceObject> FindInternal(IEnumerable <PortableDeviceObject> objectCollection, IObjectEnumerateHelper enumerateHelper)
        {
            var res = new List <PortableDeviceObject>();

            foreach (PortableDeviceObject deviceObject in objectCollection.Where(enumerateHelper.IsObjectMatching))
            {
                if (enumerateHelper.IsLastNode)
                {
                    res.Add(deviceObject);
                }
                else
                {
                    var folder = deviceObject as PortableDeviceContainerObject;
                    if (folder != null)
                    {
                        res.AddRange(FindInternal(folder.Childs, enumerateHelper.Next()));
                    }
                }
            }

            return(res);
        }
        private static IEnumerable<PortableDeviceObject> FindInternal(IEnumerable<PortableDeviceObject> objectCollection, IObjectEnumerateHelper enumerateHelper)
        {
            var res = new List<PortableDeviceObject>();

            foreach (PortableDeviceObject deviceObject in objectCollection.Where(enumerateHelper.IsObjectMatching))
            {
                if (enumerateHelper.IsLastNode)
                {
                    res.Add(deviceObject);
                }
                else
                {
                    var folder = deviceObject as PortableDeviceContainerObject;
                    if (folder != null)
                        res.AddRange(FindInternal(folder.Childs, enumerateHelper.Next()));
                }
            }

            return res;
        }