/// <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")); } }
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); }