using Common.system;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using XHWK.Model;
using XHWK.WKTool.DAL;
namespace XHWK.WKTool.UControl
{
///
/// 视频信息
///
public partial class Uc_VideoItem : UserControl
{
#region 初始值
///
/// 视频模型
///
Model_Video VideoModel = new Model_Video();
///
/// 刷新视频列表
///
public delegate void RefreshVideoList();
///
/// 刷新视频列表事件
///
public event RefreshVideoList Click_refreshVideoList;
///
/// 登陆
///
public delegate void UploadLogin();
///
/// 登陆事件
///
public event UploadLogin Click_UploadLogin;
///
/// 上传页面
///
UploadWindow W_UploadWindow = null;
///
/// 是否正在
///
bool IsUpLoad = false;
#endregion
#region 初始化
///
/// 视频信息
///
///
public Uc_VideoItem(Model_Video model_Video)
{
InitializeComponent();
VideoModel = model_Video;
if (FileToolsCommon.IsExistFile(VideoModel.ThumbnailPath))
{
ImgVideo.Source = ImageHelper.ReadBitmapImageFile(VideoModel.ThumbnailPath);// new BitmapImage(new Uri(VideoModel.ThumbnailPath));
}
string videoName = FileToolsCommon.GetIOFileNameNoExtension(VideoModel.VideoPath);
TbName.Text = videoName.Length > 11 ? videoName.Substring(0, 11) + "..." : videoName;
TbName.ToolTip = videoName;
lblDateSize.Content = VideoModel.RSTime + "|" + VideoModel.VideoSize;
if (VideoModel.IsUpload)
{
//BtnUpload.Visibility = Visibility.Hidden;
BorUploadBtn.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#DDDDDD"));
BtnUpload.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#999999"));
BtnUpload.IsEnabled = false;
}
}
#endregion
#region 修改视频名
///
/// 双击修改视频名
///
///
///
private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if(e.ClickCount==2)
{
TxtModify.Text = TbName.ToolTip.ToString();
TbName.Visibility = Visibility.Hidden;
TxtModify.Visibility = Visibility.Visible;
BtnNameModifyOK.Visibility = Visibility.Visible;
}
}
///
/// 失去焦点保存视频名
///
///
///
private void TxtModify_LostFocus(object sender, RoutedEventArgs e)
{
ModifyVideoName();
}
///
/// Enter保存
///
///
///
private void TxtModify_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == System.Windows.Input.Key.Enter)
{
ModifyVideoName();
}
}
///
/// 修改文件名保存
///
///
///
private void BtnNameModifyOK_Click(object sender, RoutedEventArgs e)
{
ModifyVideoName();
}
///
/// 修改视频文件名
///
void ModifyVideoName()
{
if (TxtModify.Text != TbName.Text)
{
string ErrMessage;
if (ModifyPathName(VideoModel.FileGuid, TxtModify.Text + "." + VideoModel.VideoType, out ErrMessage))
{
//保存成功
TbName.Text = TxtModify.Text.Length > 11 ? TxtModify.Text.Substring(0, 11) + "..." : TxtModify.Text;
TbName.ToolTip = TxtModify.Text;
TbName.Visibility = Visibility.Visible;
TxtModify.Visibility = Visibility.Hidden;
BtnNameModifyOK.Visibility = Visibility.Hidden;
}
else
{
MessageWindow.Show(ErrMessage);
}
}
else
{
TbName.Visibility = Visibility.Visible;
TxtModify.Visibility = Visibility.Hidden;
BtnNameModifyOK.Visibility = Visibility.Hidden;
}
}
///
/// 修改视频文件名
///
/// 唯一编号
/// 新文件名带后缀 不带路径
/// 错误信息
///
private bool ModifyPathName(string FileGuid, string NewName, out string Errmessage)
{
Errmessage = "";
foreach (Model_WKData WKData in APP.WKDataList)
{
if (WKData.VideoList.Exists(x => x.FileGuid == FileGuid))
{
Model_Video model_Video = WKData.VideoList.Find(x => x.FileGuid == FileGuid);
string filePathName = model_Video.VideoPath;
string filePath = FileToolsCommon.GetDirectoryName(filePathName);
string newFilePathName = filePath + NewName;
//缩略图
string ThumbnailPath = filePath + "ThumbnailPath/";
FileToolsCommon.CreateDirectory(ThumbnailPath);
//缩略图存储位置
string ThumbnailPathName = ThumbnailPath + NewName.Replace(".", "") + ".JPG";
if (FileToolsCommon.IsExistFile(newFilePathName))
{
Errmessage = "文件已存在,请重新修改文件名!";
return false;
}
else
{
//修改文件名
FileToolsCommon.Copy(filePathName, newFilePathName);
model_Video.VideoPath = newFilePathName;
//修改缩略图名
FileToolsCommon.DeleteFile(ThumbnailPathName);
FileToolsCommon.Copy(model_Video.ThumbnailPath, ThumbnailPathName);
model_Video.ThumbnailPath = ThumbnailPathName;
APP.SaveWkData();
return true;
}
}
else
{
continue;
}
}
Errmessage = "视频文件有改动,当前文件不存在,请关闭后重新打开“我的”";
return false;
}
#endregion
#region 删除视频
///
/// 删除视频
///
///
///
private void BtnDelVideo_Click(object sender, RoutedEventArgs e)
{
MessageBoxResult dr = MessageWindow.Show("确定删除该视频?", "提示", MessageBoxButton.OKCancel);
if (dr == MessageBoxResult.OK)
{
foreach (Model_WKData wKData in APP.WKDataList)
{
if (wKData.VideoList == null)
{
continue;
}
if (wKData.VideoList.Exists(x => x.FileGuid == VideoModel.FileGuid))
{
try
{
FileToolsCommon.DeleteFile(wKData.VideoList.Find(x => x.FileGuid == VideoModel.FileGuid).VideoPath);
string ThumbnailPath = wKData.VideoList.Find(x => x.FileGuid == VideoModel.FileGuid).ThumbnailPath;
wKData.VideoList.Remove(wKData.VideoList.Find(x => x.FileGuid == VideoModel.FileGuid));
//初始化页面 刷新视频列表
Click_refreshVideoList();
ImgVideo.Source = null;
GC.Collect();
FileToolsCommon.DeleteFile(ThumbnailPath);
this.Visibility = Visibility.Hidden;
return;
}
catch (Exception ex)
{
MessageWindow.Show("无法删除视频!" + ex.Message);
return;
}
}
}
}
}
#endregion
#region 播放视频
private void BtnVideoPlay_Click(object sender, RoutedEventArgs e)
{
try
{
ProcessStartInfo psi = new ProcessStartInfo(VideoModel.VideoPath);
Process pro = new Process
{
StartInfo = psi
};
pro.Start();
}
catch (Exception ex)
{
LogHelper.WriteErrLog("【视频播放】(BtnVideoPlay_Click)" + ex.Message, ex);
System.Windows.MessageBox.Show(ex.Message);
return;
}
}
///
/// 视频播放
///
///
///
private void Image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
try
{
ProcessStartInfo psi = new ProcessStartInfo(VideoModel.VideoPath);
Process pro = new Process
{
StartInfo = psi
};
pro.Start();
}
catch (Exception ex)
{
LogHelper.WriteErrLog("【视频播放】(BtnVideoPlay_Click)" + ex.Message, ex);
System.Windows.MessageBox.Show(ex.Message);
return;
}
}
#endregion
///
/// 视频上传
///
///
///
private void BtnUpload_Click(object sender, RoutedEventArgs e)
{
if (APP.IsLoginType == false)
{
//登陆
Click_UploadLogin();
return;
}
if (!IsUpLoad)
{
IsUpLoad = true;
//BtnUpload.IsEnabled = false;
//BtnUpload.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#9EA0A7"));
//BtnUpload.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#999999"));
DAL_Upload dAL_Upload = new DAL_Upload();
if (dAL_Upload.UploadVideo(VideoModel.FileGuid, out string ErrMessage))
{
//MessageWindow.Show("视频上传服务器成功!");
if (W_UploadWindow == null)
{
W_UploadWindow = new UploadWindow
{
Owner = APP.W_XHMicroLessonSystemWindow
};
W_UploadWindow.ChangeTextEvents += frm_ChangeTextEvents; ;
}
//long size = Convert.ToInt64(FileToolsCommon.GetFileSizeByMB(pageData.menuList[i].FilePath));
W_UploadWindow.Initialize(TbName.Text, VideoModel.VideoSizebyte, VideoModel.VideoType.ToString(), VideoModel.FileGuid, 0);
W_UploadWindow.ShowDialog();
}
else
{
IsUpLoad = false;
MessageWindow.Show(ErrMessage);
}
}
}
///
/// 上传返回事件
///
///
private void frm_ChangeTextEvents(string text, int i)
{
if ("上传成功".Equals(text))
{
W_UploadWindow.Close();
//BtnUpload.Visibility = Visibility.Hidden;
BorUploadBtn.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#DDDDDD"));
BtnUpload.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#999999"));
BtnUpload.IsEnabled = false;
}
}
}
}