/// <summary>
        /// Handles the SelectionChanged event of the lbDiskItems control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="SelectionChangedEventArgs"/> instance containing the event data.</param>
        private void lbDiskItems_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (e.AddedItems.Count > 0)
            {
                var item = e.AddedItems[0] as DiskItemWrapper;
                if (item != null)
                {
                    this.holdItem = item.DiskItem;
                    if (!this.holdItem.IsDirectory)
                    {
                        using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
                        {
                            if (storage.FileExists(this.holdItem.OriginalDisplayName))
                            {
                                storage.DeleteFile(this.holdItem.OriginalDisplayName);
                            }

                            this.ChangeVisibilityOfProgressBar(Visibility.Visible, false);
                            var file = storage.CreateFile(this.holdItem.OriginalDisplayName);
                            this.sdk.DownloadFileAsync(this.holdItem.OriginalFullPath, file, new AsyncProgress(this.UpdateProgress), this.SdkOnDownloadCompleted);
                            this.isLaunch = true;
                        }
                    }
                    else
                    {
                        this.NavigationService.Navigate(new Uri("/MainPage.xaml?path=" + Uri.EscapeDataString(this.holdItem.OriginalFullPath), UriKind.Relative));
                    }
                }
            }
        }
 /// <summary>
 /// Launches the disk item.
 /// </summary>
 /// <param name="item">The disk item.</param>
 private void LaunchItem(DiskItemInfo item)
 {
     if (item.ContentType.ToLower().Contains("audio/") || item.ContentType.ToLower().Contains("video/"))
     {
         var mediaLauncher = new MediaPlayerLauncher();
         mediaLauncher.Media    = new Uri(item.OriginalDisplayName, UriKind.Relative);
         mediaLauncher.Location = MediaLocationType.Data;
         mediaLauncher.Controls = MediaPlaybackControls.Pause | MediaPlaybackControls.Stop;
         try
         {
             mediaLauncher.Show();
         }
         catch (Exception ex)
         {
             this.Dispatcher.BeginInvoke(() => MessageBox.Show(ex.Message));
         }
     }
     else if (item.ContentType.ToLower().Contains("text/") || item.ContentType.ToLower().Contains("image/"))
     {
         this.NavigationService.Navigate(new Uri("/ImageViewer.xaml?path=" + Uri.EscapeDataString(item.OriginalDisplayName), UriKind.Relative));
     }
     else
     {
         this.Dispatcher.BeginInvoke(() => MessageBox.Show("Error: unknown file format"));
     }
 }
Beispiel #3
0
 private ItemInfo ParseInfo(DiskItemInfo info)
 {
     return(new ItemInfo
            (
                new UPath(info.FullPath),
                info.IsDirectory ? ItemType.Directory : ItemType.File,
                new FileSize(info.ContentLength),
                info.LastModified,
                this
            ));
 }
        /// <summary>
        /// Parses the disk items.
        /// </summary>
        /// <param name="currentPath">The current path.</param>
        /// <param name="responseText">The response text.</param>
        /// <returns>The list of parsed items.</returns>
        public static IEnumerable <DiskItemInfo> ParseItems(string currentPath, string responseText)
        {
            var items    = new List <DiskItemInfo>();
            var xmlBytes = Encoding.UTF8.GetBytes(responseText);

            using (var xmlStream = new MemoryStream(xmlBytes))
            {
                using (var reader = XmlReader.Create(xmlStream))
                {
                    DiskItemInfo itemInfo = null;
                    while (reader.Read())
                    {
                        if (reader.IsStartElement())
                        {
                            switch (reader.Name)
                            {
                            case "d:response":
                                itemInfo = new DiskItemInfo();
                                break;

                            case "d:href":
                                reader.Read();
                                itemInfo.FullPath = reader.Value;
                                break;

                            case "d:creationdate":
                                reader.Read();
                                itemInfo.CreationDate = DateTime.Parse(reader.Value);
                                break;

                            case "d:getlastmodified":
                                reader.Read();
                                itemInfo.LastModified = DateTime.Parse(reader.Value);
                                break;

                            case "d:displayname":
                                reader.Read();
                                itemInfo.DisplayName = reader.Value;
                                break;

                            case "d:getcontentlength":
                                reader.Read();
                                if (reader.Value != "")
                                {
                                    itemInfo.ContentLength = int.Parse(reader.Value);                        //Добавил тут проверку на "", потому что иначе преобразование выдавало ошибку
                                }
                                break;

                            case "d:getcontenttype":
                                reader.Read();
                                itemInfo.ContentType = reader.Value;
                                break;

                            case "d:getetag":
                                reader.Read();
                                itemInfo.Etag = reader.Value;
                                break;

                            case "d:collection":
                                itemInfo.IsDirectory = true;
                                break;

                            case "public_url":
                                reader.Read();
                                itemInfo.PublicUrl = reader.Value;
                                break;
                            }
                        }
                        else if (reader.NodeType == XmlNodeType.EndElement && reader.Name == "d:response")
                        {
                            if (itemInfo.OriginalFullPath != currentPath)
                            {
                                items.Add(itemInfo);
                            }
                        }
                    }
                }
            }

            return(items);
        }