VS_FileSendTool/FS/FileSend/PushFilePanel.cs

163 lines
5.3 KiB
C#

using Net;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using TouchSocket.Dmtp.FileTransfer;
namespace FileSend
{
public partial class PushFilePanel : Form
{
public PushFilePanel(int num)
{
InitializeComponent();
Log.LogEvent += UpdateLog;
progressBar_PushProgress.Value = 0;
label_PushProgress.Text = string.Empty;
}
private void UpdateLog(string obj)
{
listView_Log.Items.Add(obj);
}
private void button_ClearLog_Click(object sender, EventArgs e)
{
listView_Log.Clear();
}
private void button_ChooseFile_Click(object sender, EventArgs e)
{
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Filter = "全部文件(*.*)|*.*"; // "DataBank(*.xml)|*.xml|全部文件(*.*)|*.*"
fileDialog.InitialDirectory = NetHelper.ServerRootPath;
fileDialog.Multiselect = true;
fileDialog.ShowDialog();
listView_Files.Scrollable = true;
listView_Files.View = View.Details;
listView_Files.Columns.Clear();
var columnHeader = new ColumnHeader("FileName");
columnHeader.Name = "FileName";
columnHeader.Text = "FileName";
listView_Files.Columns.Add(columnHeader);
columnHeader.Width = listView_Files.Width - 20;
// Control t = listView_Files;
// while (t.Parent != null)
// t = t.Parent;
// t.SizeChanged += (o, args) =>
// {
// columnHeader.Width = listView_Files.Width-20;
// };
foreach (var fileName in fileDialog.FileNames)
{
var split = fileName.Split(@"\");
var listViewItem = new ListViewItem(fileName);
listView_Files.Items.Add(listViewItem);
pushFileInfos.Add(new PushFileInfo()
{
fileName = split[^1],
filePath = fileName,
index = listView_Files.Items.Count - 1
});
}
label_ChooseCount.Text = $@"共选择了{fileDialog.FileNames.Length}个文件!";
if (fileDialog.FileNames.Length > 0)
Log.Debug($"选择了{fileDialog.FileNames.Length}个文件!");
else
Log.Debug($"取消选择!");
}
private async void button_Push_Click(object sender, EventArgs e)
{
try
{
if (NetHelper.IsServer)
{
// NetHelper.Server
}
else
{
Log.Debug($"开始推送文件!");
foreach (var info in pushFileInfos)
{
var result = await NetHelper.Client.SendFileAsync(info.filePath, UpdateProgress);
if (!result)
{
Log.Debug($@"{info.fileName}上传失败! ");
MessageBox.Show($@"{info.fileName}上传失败! ");
continue;
}
else if (result)
{
Log.Debug($@"{info.fileName}上传成功! ");
MessageBox.Show($@"{info.fileName}上传成功! ");
listView_Files.Items[info.index].ForeColor = Color.Green;
}
}
}
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}
private void UpdateProgress(string msg)
{
//long speed = NetHelper.Client.GetSendSpeed();
//float progress = NetHelper.Client.GetSendProgress();
//label_PushProgress.Text = $@"进度:{progress},速度:{speed}Mb/s";
Invoke(() =>
{
label_PushProgress.Text = msg;
Log.Debug($@"{msg}");
});
}
private void listView_Files_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void button_OpenLogFile_Click(object sender, EventArgs e)
{
MessageBox.Show(@"待添加内容!");
Log.Debug(@"待添加内容!");
}
private void listView_Log_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void progressBar_PushProgress_Click(object sender, EventArgs e)
{
MessageBox.Show(@"待添加内容!");
}
private void button_Setting_Click(object sender, EventArgs e)
{
Setting setting = new Setting();
setting.Show();
}
private void button_ClearFiles_Click(object sender, EventArgs e)
{
listView_Files.Clear();
}
}
public class PushFileInfo
{
public string fileName;
public string filePath;
public int index;
}
}