/// <summary> /// 转离线发送 /// </summary> private void OfflineSend() { if (ChatViewModel != null) { _targetModel.CanOperate = false; this.tbConnecting.Visibility = Visibility.Visible; if (!string.IsNullOrEmpty(_targetModel.MsgKey)) { SDKClient.SDKProperty.chatType messageType = ChatViewModel.IsGroup ? SDKClient.SDKProperty.chatType.groupChat : SDKClient.SDKProperty.chatType.chat; SDKClient.SDKClient.Instance.SendRetractMessage(_targetModel.MsgKey, ChatViewModel.ID.ToString(), messageType, ChatViewModel.IsGroup ? ChatViewModel.ID : 0, SDKClient.SDKProperty.RetractType.OnlineToOffline); string size = Helper.FileHelper.FileSizeToString(_targetModel.ResourceModel.Length); string content = $"您取消了\"{_targetModel.ResourceModel.FileName}\"({size})的发送,文件传输失败。"; MessageModel cancel = new MessageModel() { MsgKey = _targetModel.MsgKey, Content = content, MsgType = MessageType.notification, MessageState = MessageStates.Fail, }; ChatViewModel.Chat.Messages.Insert(ChatViewModel.Chat.Messages.Count - 1, cancel); AcioningItems.Remove(this); if (_operateTask != null) { _operateTask.Cancel(); _operateTask = null; } } if (FileExists()) { AcioningItems.Add(this); _operateTask = new System.Threading.CancellationTokenSource(); ChatViewModel.SendOfflineFile(_targetModel, _operateTask, (result) => { AcioningItems.Remove(this); if (_operateTask != null) { _operateTask.Cancel(); _operateTask = null; } }); } else { ChatViewModel.Chat.Messages.Remove(_targetModel); } } }
/// <summary> /// 在线发送 /// </summary> private void OnlineSend() { if (ChatViewModel != null) { _targetModel.CanOperate = false; AcioningItems.Remove(this); if (_operateTask != null) { _operateTask.Cancel(); _operateTask = null; } if (FileExists()) { AcioningItems.Add(this); _operateTask = new System.Threading.CancellationTokenSource(); if (ChatViewModel.IsGroup) { this.tbConnecting.Visibility = Visibility.Visible; //群聊只能离线发送 ChatViewModel.SendOfflineFile(_targetModel, _operateTask, (result) => { AcioningItems.Remove(this); if (_operateTask != null) { _operateTask.Cancel(); _operateTask = null; } }); } else { ChatViewModel.SendOnlineFile(ChatViewModel, _targetModel, _operateTask, (result) => { AcioningItems.Remove(this); if (_operateTask != null) { _operateTask.Cancel(); _operateTask = null; } }); } } else { ChatViewModel.Chat.Messages.Remove(_targetModel); } } }
/// <summary> /// 开始接收 /// </summary> private void Receive() { if (ChatViewModel != null && AppData.CanInternetAction()) { _targetModel.MessageState = MessageStates.None; this.FileState = FileStates.Receiving; _operateTask = new System.Threading.CancellationTokenSource(); AcioningItems.Add(this); CSClient.Helper.MessageHelper.LoadFileContent(_targetModel, _operateTask, ChatViewModel, (result) => { AcioningItems.Remove(this); if (_operateTask != null) { _operateTask.Cancel(); _operateTask = null; } }); } }
private void SendVideo() { if (ChatViewModel != null) { _targetModel.CanOperate = false; if (FileExists()) { AcioningItems.Add(this); _operateTask = new System.Threading.CancellationTokenSource(); _targetModel.ResourceModel.FileState = FileStates.SendOffline; if (AppData.CanInternetAction("")) { ChatViewModel.SendSmallVideoFile(_targetModel, _operateTask, async(result) => { if (SDKClient.SDKClient.Instance.property.CurrentAccount.Isforbidden) { _targetModel.MessageState = MessageStates.Warn; _targetModel.ResourceModel.FileState = FileStates.Fail; } AcioningItems.Remove(this); if (_operateTask != null) { _operateTask.Cancel(); _operateTask = null; } }); } else { ChatViewModel.SaveSendingMessages(_targetModel); } } else { ChatViewModel.Chat.Messages.Remove(_targetModel); } } }
/// <summary> /// 另存为 /// </summary> private void SaveAs() { if (_targetModel.ResourceModel.FileState == FileStates.WaitForReceieve) { if (AppData.CanInternetAction()) { Microsoft.Win32.SaveFileDialog sfd = new Microsoft.Win32.SaveFileDialog(); sfd.FileName = _targetModel.ResourceModel.FileName; //sfd.Filter = System.IO.Path.GetExtension(_targetModel.ResourceModel.FileName); if (sfd.ShowDialog() == true) { try { File.Delete(sfd.FileName); } catch { AppData.MainMV.TipMessage = "文件已被占用,替换失败!"; return; } this.FileState = FileStates.Receiving; _operateTask = new System.Threading.CancellationTokenSource(); AcioningItems.Add(this); ChatViewModel chatVM = AppData.MainMV.ChatListVM.SelectedItem; CSClient.Helper.MessageHelper.LoadFileContent(_targetModel, _operateTask, chatVM, (result) => { AcioningItems.Remove(this); if (_operateTask != null) { _operateTask.Cancel(); _operateTask = null; } }, sfd.FileName); } } } else { if (FileExists()) { Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); dlg.FileName = System.IO.Path.GetFileName(this.FullName); // Default file name dlg.DefaultExt = System.IO.Path.GetExtension(this.FullName); // fileName.Split('.').LastOrDefault(); // Default file extension dlg.Filter = string.Format("文件 (.{0})|*.{0}", dlg.DefaultExt); // // Filter files by extension dlg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); if (dlg.ShowDialog() == true) { try { File.Copy(this.FullName, dlg.FileName, true); } catch { AppData.MainMV.TipMessage = "文件已被占用,替换失败!"; } } } } }