2017-04-06 16:18:46 +08:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
|
using System.Data;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Windows.Forms;
|
2017-04-06 22:00:34 +08:00
|
|
|
|
using Newtonsoft.Json.Linq;
|
2017-04-23 18:05:12 +08:00
|
|
|
|
using HslCommunication.Enthernet;
|
|
|
|
|
|
using HslCommunication;
|
2017-05-04 11:43:50 +08:00
|
|
|
|
using CommonLibrary;
|
2017-07-12 13:13:43 +08:00
|
|
|
|
using ClientsLibrary;
|
2017-10-01 15:59:37 +08:00
|
|
|
|
using ClientsLibrary.FileSupport;
|
2017-10-09 22:18:51 +08:00
|
|
|
|
using System.Runtime.InteropServices;
|
2017-04-06 16:18:46 +08:00
|
|
|
|
|
|
|
|
|
|
namespace 软件系统客户端模版.UIControls
|
|
|
|
|
|
{
|
2017-12-08 17:06:44 +08:00
|
|
|
|
public partial class GroupFilesRender : UserControl
|
2017-04-06 16:18:46 +08:00
|
|
|
|
{
|
2017-10-01 15:59:37 +08:00
|
|
|
|
#region Constructor
|
|
|
|
|
|
|
2017-12-08 17:06:44 +08:00
|
|
|
|
public GroupFilesRender(string factory, string group, string id)
|
2017-04-06 16:18:46 +08:00
|
|
|
|
{
|
|
|
|
|
|
InitializeComponent();
|
2017-04-07 09:08:48 +08:00
|
|
|
|
|
2017-10-01 15:59:37 +08:00
|
|
|
|
m_Factory = factory;
|
|
|
|
|
|
m_Group = group;
|
|
|
|
|
|
m_Id = id;
|
|
|
|
|
|
|
2017-04-07 09:08:48 +08:00
|
|
|
|
DoubleBuffered = true;
|
2017-04-06 16:18:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-01 15:59:37 +08:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Load Show
|
|
|
|
|
|
|
|
|
|
|
|
private void ShareFilesRender_Load(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
// 选择是否禁用上传键
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Upload File
|
|
|
|
|
|
|
2017-04-06 16:18:46 +08:00
|
|
|
|
private void userButton_upload_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2017-10-01 15:59:37 +08:00
|
|
|
|
// 上传数据
|
2017-05-04 11:43:50 +08:00
|
|
|
|
if(UserClient.UserAccount.Grade<AccountGrade.Technology)
|
2017-04-06 22:00:34 +08:00
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show("权限不够!");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-09-14 22:14:08 +08:00
|
|
|
|
// 上传文件
|
2017-04-06 22:00:34 +08:00
|
|
|
|
using (FormSimplyFileUpload upload = new FormSimplyFileUpload(
|
2017-10-01 15:59:37 +08:00
|
|
|
|
m_Factory,
|
|
|
|
|
|
m_Group,
|
|
|
|
|
|
m_Id
|
|
|
|
|
|
))
|
2017-04-06 22:00:34 +08:00
|
|
|
|
{
|
|
|
|
|
|
upload.ShowDialog();
|
|
|
|
|
|
}
|
2017-04-06 16:18:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-01 15:59:37 +08:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Render File List
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void ClearControls()
|
|
|
|
|
|
{
|
|
|
|
|
|
while (FilesControls.Count > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
FilesControls.Pop().Dispose();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void UpdateFiles()
|
|
|
|
|
|
{
|
|
|
|
|
|
userButton_refresh.PerformClick();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-04-06 16:18:46 +08:00
|
|
|
|
private void userButton_refresh_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2017-12-08 17:06:44 +08:00
|
|
|
|
OperateResult result = UserClient.Net_File_Client.DownloadPathFileNames(out GroupFileItem[] files, m_Factory, m_Group, m_Id);
|
2017-04-06 22:00:34 +08:00
|
|
|
|
if(result.IsSuccess)
|
|
|
|
|
|
{
|
2017-10-01 15:59:37 +08:00
|
|
|
|
Cache_Files = new List<GroupFileItem>(files);
|
2017-04-06 22:00:34 +08:00
|
|
|
|
SetFilesShow(Cache_Files);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
MessageBox.Show(result.ToMessageShowString());
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-09 22:18:51 +08:00
|
|
|
|
protected override void WndProc(ref Message m)
|
|
|
|
|
|
{
|
|
|
|
|
|
base.WndProc(ref m);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-10-01 15:59:37 +08:00
|
|
|
|
private void SetFilesShow(List<GroupFileItem> files)
|
2017-04-06 22:00:34 +08:00
|
|
|
|
{
|
|
|
|
|
|
panel2.SuspendLayout();
|
|
|
|
|
|
//清楚缓存
|
|
|
|
|
|
ClearControls();
|
|
|
|
|
|
if (files?.Count > 0 && panel2.Width > 20)
|
|
|
|
|
|
{
|
2017-09-14 22:14:08 +08:00
|
|
|
|
int location_y = 2 - panel2.VerticalScroll.Value;
|
2017-04-06 22:00:34 +08:00
|
|
|
|
//添加子控件
|
|
|
|
|
|
foreach(var m in files)
|
|
|
|
|
|
{
|
2017-09-13 21:08:18 +08:00
|
|
|
|
FileItemShow item = new FileItemShow(
|
2017-10-01 15:59:37 +08:00
|
|
|
|
UserClient.Net_File_Client, // 文件传送客户端
|
|
|
|
|
|
m_Factory, // 文件第一大类
|
|
|
|
|
|
m_Group, // 文件第二大类
|
|
|
|
|
|
m_Id, // 文件第三大类
|
|
|
|
|
|
DeleteCheck // 删除键是否激活方法
|
|
|
|
|
|
);
|
|
|
|
|
|
panel2.Controls.Add(item); // 添加显示
|
|
|
|
|
|
item.BackColor = Color.White; // 白色的背景
|
|
|
|
|
|
item.BorderStyle = BorderStyle.FixedSingle; // 边框样式
|
|
|
|
|
|
item.SetFile(m, () => m.Owner == UserClient.UserAccount.UserName); // 设置文件显示并提供一个删除使能的权限,此处设置是登录名和上传人不一致时,删除键不能点击
|
2017-09-14 22:14:08 +08:00
|
|
|
|
item.Location = new Point(2, location_y); // 控件的位置
|
|
|
|
|
|
int width = panel2.VerticalScroll.Visible ? panel2.Width - 4 - SystemInformation.VerticalScrollBarWidth : panel2.Width - 4; // 控件的宽度
|
2017-10-01 15:59:37 +08:00
|
|
|
|
item.Size = new Size(width, item.Size.Height); // 控件的大小
|
|
|
|
|
|
item.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; // 控件随窗口变化的样式
|
2017-09-14 22:14:08 +08:00
|
|
|
|
|
2017-10-01 15:59:37 +08:00
|
|
|
|
location_y += item.Height + 4; // 位置偏移
|
|
|
|
|
|
FilesControls.Push(item); // 控件压入堆栈
|
2017-04-06 22:00:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
panel2.ResumeLayout();
|
2017-10-09 22:18:51 +08:00
|
|
|
|
|
2017-04-06 22:00:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2017-10-01 15:59:37 +08:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Delete Check
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private bool DeleteCheck(GroupFileItem item)
|
2017-04-06 22:00:34 +08:00
|
|
|
|
{
|
2017-10-01 15:59:37 +08:00
|
|
|
|
if (item.Owner != UserClient.UserAccount.UserName)
|
2017-04-06 22:00:34 +08:00
|
|
|
|
{
|
2017-10-01 15:59:37 +08:00
|
|
|
|
MessageBox.Show("无法删除不是自己上传的文件。");
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return MessageBox.Show("请确认是否真的删除?", "删除确认", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes;
|
2017-04-06 22:00:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-01 15:59:37 +08:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Filter Support
|
2017-04-06 16:18:46 +08:00
|
|
|
|
|
2017-10-01 15:59:37 +08:00
|
|
|
|
/**************************************************************************************************
|
|
|
|
|
|
*
|
|
|
|
|
|
* 说明: 此处实现的功能是更改了输入框文本后,按了Enter键就开始执行筛选
|
|
|
|
|
|
*
|
|
|
|
|
|
**************************************************************************************************/
|
2017-04-06 22:00:34 +08:00
|
|
|
|
|
2017-10-01 15:59:37 +08:00
|
|
|
|
|
|
|
|
|
|
private void textBox1_TextChanged(object sender, EventArgs e)
|
2017-04-06 22:00:34 +08:00
|
|
|
|
{
|
2017-10-01 15:59:37 +08:00
|
|
|
|
|
2017-04-06 22:00:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2017-10-01 15:59:37 +08:00
|
|
|
|
private void textBox1_KeyDown(object sender, KeyEventArgs e)
|
2017-04-06 22:00:34 +08:00
|
|
|
|
{
|
2017-10-01 15:59:37 +08:00
|
|
|
|
if (e.KeyCode == Keys.Enter)
|
2017-04-06 22:00:34 +08:00
|
|
|
|
{
|
2017-10-01 15:59:37 +08:00
|
|
|
|
// 搜索时触发的数据
|
|
|
|
|
|
if (!string.IsNullOrEmpty(textBox1.Text))
|
|
|
|
|
|
{
|
|
|
|
|
|
string pattern = textBox1.Text;
|
|
|
|
|
|
SetFilesShow(Cache_Files.Where(f =>
|
|
|
|
|
|
f.FileName.Contains(pattern) ||
|
|
|
|
|
|
f.Description.Contains(pattern) ||
|
|
|
|
|
|
f.Owner.Contains(pattern)).ToList());
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
SetFilesShow(Cache_Files);
|
|
|
|
|
|
}
|
|
|
|
|
|
// 已处理过该值
|
|
|
|
|
|
e.Handled = true;
|
2017-04-06 22:00:34 +08:00
|
|
|
|
}
|
2017-04-06 16:18:46 +08:00
|
|
|
|
}
|
2017-09-14 22:14:08 +08:00
|
|
|
|
|
2017-10-01 15:59:37 +08:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region Private Members
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 所有文件信息的缓存,以支持直接的搜索
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private List<GroupFileItem> Cache_Files { get; set; } = new List<GroupFileItem>();
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 文件控件的缓存列表,方便清除垃圾
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private Stack<IDisposable> FilesControls = new Stack<IDisposable>();
|
|
|
|
|
|
|
|
|
|
|
|
private string m_Factory; // 文件的第一大类
|
|
|
|
|
|
private string m_Group; // 文件的第二大类
|
|
|
|
|
|
private string m_Id; // 文件的第三大类
|
2017-09-14 22:14:08 +08:00
|
|
|
|
|
2017-10-01 15:59:37 +08:00
|
|
|
|
#endregion
|
2017-04-06 16:18:46 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|