/// <summary> /// 文件列表上下文菜单 /// </summary> /// <param name="fileDataGridItem"></param> void FileDataContextMenu(FileDataGridItem fileDataGridItem) { ContextMenu contextMenu = new ContextMenu(); CompositeCollection contextMenuBase = new CompositeCollection(); CompositeCollection compositeCollection = new CompositeCollection(); CollectionContainer collectionContainer = new CollectionContainer(); MenuItem cmOpen = new MenuItem(); cmOpen.Header = "打开"; cmOpen.Click += (sender, e) => CMOpen_Click(fileDataGridItem); if ((string)fileDataGridItem.panFile["isdir"] != "1") { cmOpen.IsEnabled = false; } MenuItem cmDownload = new MenuItem(); cmDownload.Header = "下载"; cmDownload.Click += (misender, mie) => CMDownload_Click(fileDataGridItem); contextMenuBase.Add(cmOpen); contextMenuBase.Add(cmDownload); //contextMenuBase.Add(new Separator()); collectionContainer.Collection = contextMenuBase; compositeCollection.Add(collectionContainer); contextMenu.ItemsSource = compositeCollection; contextMenu.IsOpen = true; }
/*public List<string> GetPanDownload(string fidlist) * { * string panDownload = HttpUtil.HttpGet(string.Format("https://{0}/api/download?sign={1}×tamp={2}&fidlist=[{3}]&type=dlink&vip=0&channel=chunlei&web=1&app_id={4}&bdstoken={5}&logid={6}&clienttype=0&startLogTime={7}", Util.Domain, Uri.EscapeDataString(Util.Sign), Util.Timestamp, fidlist, Util.App_id, Uri.EscapeDataString(Util.Bdstoken), Uri.EscapeDataString(Util.Logid), Util.GetMillisecondsTimeStamp()), HttpUtil.json); * JObject result = JsonConvert.DeserializeObject<JObject>(panDownload); * List<string> pdUrls = new List<string>(); * Console.WriteLine("Cookie: " + HttpUtil.cookieContainer.Count); * if ((int)result["errno"] == 0) * { * List<JObject> pdList = result["dlink"].ToObject<List<JObject>>(); * foreach (var item in pdList) * { * pdUrls.Add((string)item["dlink"]); * } * return pdUrls; * } * * return null; * }*/ #region Menu // 加载行 private void FileDataListGrid_LoadingRow(object sender, DataGridRowEventArgs e) { //右键单击 e.Row.MouseRightButtonUp += (s, a) => { a.Handled = true; (sender as DataGrid).SelectedIndex = (s as DataGridRow).GetIndex(); (s as DataGridRow).Focus(); FileDataGridItem fileDataGridItem = fileDataGridItems.Find(delegate(FileDataGridItem fdgi) { return(fdgi.fileData.Equals((s as DataGridRow).Item as FileData)); }); if (fileDataGridItem == null) { return; } foreach (var item in fileDataGridItems) { item.fileData.IsCheck = false; } fileDataGridItem.fileData.IsCheck = true; Console.WriteLine(fileDataGridItem.fileData.Name); FileDataContextMenu(fileDataGridItem); }; }
/// <summary> /// 上下文菜单,打开文件夹 /// </summary> private void CMOpen_Click(FileDataGridItem fileDataGridItem) { Util.Dir = (string)fileDataGridItem.panFile["path"]; GetPanList(Util.Dir); string[] str = Util.Dir.Split('/'); PanFileDir.Items.Add(str[str.Length - 1]); PanFileDir.SelectedIndex = PanFileDir.Items.Count - 1; }
//双击 private void FileDataListGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e) { FileDataGridItem fileDataGridItem = fileDataGridItems.Find(delegate(FileDataGridItem fdgi) { return(fdgi.fileData.Equals((sender as DataGrid).SelectedItem as FileData)); }); if (fileDataGridItem == null) { return; } if ((string)fileDataGridItem.panFile["isdir"] == "1") { CMOpen_Click(fileDataGridItem); } }
/// <summary> /// 获取百度盘文件列表 /// </summary> /// <param name="dir"></param> /// /// <param name="page"></param> public void GetPanList(string dir = "/", string page = "1") { Util.PanList = HttpUtil.HttpGet(string.Format("https://{0}/api/list?order=time&desc=0&showempty=0&web=1&page={1}&num=100&dir={2}&t=0.{6}&channel=chunlei&web=1&app_id=250528&bdstoken={3}&logid={4}&clienttype=0&startLogTime={5}", Util.Domain, page, Uri.EscapeDataString(dir), Uri.EscapeDataString(Util.Bdstoken), Uri.EscapeDataString(Util.Logid), Util.GetMillisecondsTimeStamp(), Util.GetRandomString()), HttpUtil.json); JObject result = JsonConvert.DeserializeObject <JObject>(Util.PanList); List <JObject> panList = result["list"].ToObject <List <JObject> >(); Dispatcher.BeginInvoke(new Action(() => { if (page == "1") { fileDataLists.Clear(); fileDataGridItems.Clear(); } foreach (JObject panFile in panList) { FileData fileData = new FileData(); fileData.IsCheck = false; fileData.Name = (string)panFile["server_filename"]; if ((string)panFile["isdir"] == "1") { fileData.Size = "-"; } else { fileData.Size = Util.SizeToStorage((string)panFile["size"]); } fileData.Time = Util.ToDateTime((string)panFile["server_mtime"]).ToString("yyyy-MM-dd hh:mm:ss"); fileDataLists.Add(fileData); FileDataGridItem fileDataGridItem = new FileDataGridItem(); fileDataGridItem.fileData = fileData; fileDataGridItem.panFile = panFile; fileDataGridItems.Add(fileDataGridItem); } //文件加载数量 if (fileDataLists.Count % 100 == 0) { PanFileLoadNum.Content = string.Format("已加载{0}个", fileDataLists.Count); } else { PanFileLoadNum.Content = string.Format("已全部加载,共{0}个", fileDataLists.Count); } })); }
// 左键单击 private void FileDataListGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { FileDataGridItem fileDataGridItem = fileDataGridItems.Find(delegate(FileDataGridItem fdgi) { return(fdgi.fileData.Equals((sender as DataGrid).SelectedItem as FileData)); }); if (fileDataGridItem == null) { return; } foreach (var item in fileDataGridItems) { item.fileData.IsCheck = false; } fileDataGridItem.fileData.IsCheck = true; Console.WriteLine(fileDataGridItem.fileData.Name); }
/// <summary> /// 上下文菜单,下载 /// </summary> private void CMDownload_Click(FileDataGridItem fileDataGridItem) { Console.WriteLine(string.Format("https://pcs.baidu.com/rest/2.0/pcs/file?method=download&path={0}&app_id={1}", (string)fileDataGridItem.panFile["path"], Util.App_id)); Console.WriteLine(Aria2.Aria2.AddUri(string.Format("https://pcs.baidu.com/rest/2.0/pcs/file?method=download&path={0}&app_id={1}", (string)fileDataGridItem.panFile["path"], Util.App_id), string.Format("BDUSS={0};STOKEN={1}", Util.BDUSS, Util.STOKEN))); }