Commit 759db348 by liulongfei

模板和场景多选模式

parent a6d01dbb
......@@ -36,11 +36,6 @@ namespace VIZ.Package.Domain
public static Type MainWindowType { get; set; }
/// <summary>
/// 主等待窗口
/// </summary>
public static Window MainLoadingWindow { get; set; }
/// <summary>
/// 字段编辑窗口
/// </summary>
public static Window FieldEditWindow { get; set; }
......
......@@ -12,8 +12,8 @@ namespace VIZ.Package.Domain
public class PageDeleteMessage
{
/// <summary>
///
/// 删除的页集合
/// </summary>
public PageModelBase Page { get; set; }
public List<PageModelBase> Pages { get; set; }
}
}
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
......@@ -68,5 +69,23 @@ namespace VIZ.Package.Domain
}
#endregion
// ===========================================================
// 扩展属性
// ===========================================================
#region SelectedPages -- 当前选中的页集合
private IList selectedPages;
/// <summary>
/// 当前选中的页集合
/// </summary>
public IList SelectedPages
{
get { return selectedPages; }
set { selectedPages = value; this.RaisePropertyChanged(nameof(SelectedPages)); }
}
#endregion
}
}
......@@ -198,14 +198,6 @@ namespace VIZ.Package.Module
public void SetIsEnabled(bool isEnabled)
{
this.IsEnabled = isEnabled;
if (ApplicationDomainEx.MainLoadingWindow == null)
{
ApplicationDomainEx.MainLoadingWindow = new MainLoadingWindow();
ApplicationDomainEx.MainLoadingWindow.Owner = ApplicationDomainEx.MainWindow;
}
ApplicationDomainEx.MainLoadingWindow.Visibility = isEnabled ? System.Windows.Visibility.Collapsed : System.Windows.Visibility.Visible;
}
// ============================================================
......
using DevExpress.XtraPrinting.Native;
using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VIZ.Framework.Core;
using VIZ.Package.Domain;
using VIZ.Package.Service;
namespace VIZ.Package.Module
{
/// <summary>
/// 页视图模型辅助类
/// </summary>
public class PageViewModelHelper
{
/// <summary>
/// 日志
/// </summary>
private readonly static ILog log = LogManager.GetLogger(typeof(PageViewModelHelper));
/// <summary>
/// GH服务
/// </summary>
private GHService ghService = new GHService();
/// <summary>
/// Viz控制对象下载服务
/// </summary>
private VizControlObjectDownloadService vizControlObjectDownloadService = new VizControlObjectDownloadService();
/// <summary>
/// 开始下载图片任务
/// </summary>
/// <param name="pages">页集合</param>
public void BeginDownLoadIamge(List<PageModelBase> pages)
{
ThreadHelper.SafeRun(() =>
{
foreach (PageModelBase page in pages)
{
if (page.ThumbnailBitmap != null)
continue;
if (string.IsNullOrWhiteSpace(page.ThumbnailUri))
continue;
var bitmap = this.ghService.GetImage(page.ThumbnailUri);
WPFHelper.BeginInvoke(() =>
{
page.ThumbnailBitmap = bitmap;
});
}
});
}
/// <summary>
/// 开始下载控制对象
/// </summary>
/// <param name="pages">页集合</param>
/// <param name="callback">下载完成回调</param>
public void BeginDownLoadControlObject(List<PageModelBase> pages, Action callback)
{
if (pages == null || pages.Count == 0)
return;
PageLoadingWindow window = new PageLoadingWindow();
window.Owner = ApplicationDomainEx.MainWindow;
Task.Run(() =>
{
IMainViewService service = ApplicationDomainEx.ServiceManager.GetService<IMainViewService>(ViewServiceKeys.MAIN_VIEW_SERVICE);
// 设置主窗口不可用
WPFHelper.Invoke(() =>
{
ApplicationDomainEx.IsSceneLoading = true;
service?.SetIsEnabled(false);
window?.Show();
});
// 下载页控制对象信息
try
{
this.vizControlObjectDownloadService.Load(pages);
}
catch (Exception ex)
{
log.Error(ex);
}
finally
{
// 恢复主窗口可用
WPFHelper.Invoke(() =>
{
ApplicationDomainEx.IsSceneLoading = false;
service?.SetIsEnabled(true);
window?.Close();
// 回调
callback?.Invoke();
});
}
});
}
}
}
<Window x:Class="VIZ.Package.Module.MainLoadingWindow"
<Window x:Class="VIZ.Package.Module.PageLoadingWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
......
......@@ -16,21 +16,13 @@ using System.Windows.Shapes;
namespace VIZ.Package.Module
{
/// <summary>
/// Interaction logic for MainLoadingWindow.xaml
/// Interaction logic for PageLoadingWindow.xaml
/// </summary>
public partial class MainLoadingWindow : Window
public partial class PageLoadingWindow : Window
{
public MainLoadingWindow()
public PageLoadingWindow()
{
InitializeComponent();
this.Closing += MainLoadingWindow_Closing;
}
private void MainLoadingWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel = true;
this.Visibility = Visibility.Collapsed;
}
}
}
......@@ -39,6 +39,8 @@
<MenuItem Header="新建分组" Command="{Binding Path=PlacementTarget.DataContext.AddGroupCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
<MenuItem Header="重命名分组" Command="{Binding Path=PlacementTarget.DataContext.RenameGroupCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
<Separator></Separator>
<MenuItem Header="更新页" Command="{Binding Path=PlacementTarget.DataContext.UpdateCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
<Separator></Separator>
<MenuItem Header="删除分组" Command="{Binding Path=PlacementTarget.DataContext.DeleteGroupCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
<MenuItem Header="删除节目单项" Command="{Binding Path=PlacementTarget.DataContext.DeleteItemCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
</ContextMenu>
......@@ -62,8 +64,8 @@
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<dxg:GridControl ItemsSource="{Binding Pages}" ShowBorder="False" IsFilterEnabled="False"
SelectedItem="{Binding ElementName=uc, Path=DataContext.SelectedPageModel,Mode=TwoWay}">
<dxg:GridControl ItemsSource="{Binding Path=Pages}" ShowBorder="False" IsFilterEnabled="False" SelectionMode="Row"
SelectedItems="{Binding Path=SelectedPages,Mode=OneWayToSource}">
<dxg:GridControl.Columns>
<dxg:GridColumn Header="编号" AllowSorting="False" AllowColumnFiltering="False" AllowResizing="True"
FieldName="PageNum">
......
......@@ -47,6 +47,7 @@ namespace VIZ.Package.Module
this.DeleteGroupCommand = new VCommand(this.DeleteGroup);
this.DeleteItemCommand = new VCommand(this.DeleteItem);
this.OpenPageCommand = new VCommand(this.OpenPage);
this.UpdateCommand = new VCommand(this.Update);
}
/// <summary>
......@@ -66,6 +67,11 @@ namespace VIZ.Package.Module
// ======================================================================================
/// <summary>
/// 页视图模型辅助类
/// </summary>
private PageViewModelHelper pageViewModelHelper = new PageViewModelHelper();
/// <summary>
/// 页服务
/// </summary>
private PageService pageService = new PageService();
......@@ -135,27 +141,7 @@ namespace VIZ.Package.Module
public PageGroupModel SelectedPageGroupModel
{
get { return selectedPageGroupModel; }
set
{
selectedPageGroupModel = value;
this.RaisePropertyChanged(nameof(SelectedPageGroupModel));
this.SelectedPageModel = null;
}
}
#endregion
#region SelectedPageModel -- 当前选中的页
private PageModel selectedPageModel;
/// <summary>
/// 当前选中的页
/// </summary>
public PageModel SelectedPageModel
{
get { return selectedPageModel; }
set { selectedPageModel = value; this.RaisePropertyChanged(nameof(SelectedPageModel)); }
set { selectedPageGroupModel = value; this.RaisePropertyChanged(nameof(SelectedPageGroupModel)); }
}
#endregion
......@@ -283,17 +269,28 @@ namespace VIZ.Package.Module
/// </summary>
private void DeleteItem()
{
if (this.SelectedPageGroupModel == null || this.SelectedPageModel == null)
if (this.SelectedPageGroupModel == null)
return;
if (this.SelectedPageGroupModel.SelectedPages == null || this.SelectedPageGroupModel.Pages.Count == 0)
return;
if (DXMessageBox.Show($"是否删除项{this.SelectedPageModel.Scene}", "提示", MessageBoxButton.YesNo) != MessageBoxResult.Yes)
if (DXMessageBox.Show($"是否删除项", "提示", MessageBoxButton.YesNo) != MessageBoxResult.Yes)
return;
PageModel page = this.SelectedPageModel;
this.SelectedPageGroupModel.Pages.Remove(this.SelectedPageModel);
List<PageModel> pages = new List<PageModel>();
foreach (PageModel page in this.SelectedPageGroupModel.SelectedPages)
{
pages.Add(page);
}
foreach (PageModel page in pages)
{
this.SelectedPageGroupModel.Pages.Remove(page);
}
PageDeleteMessage msg = new PageDeleteMessage();
msg.Page = page;
msg.Pages = pages.ToList<PageModelBase>();
ApplicationDomainEx.MessageManager.Send(msg);
}
......@@ -307,21 +304,59 @@ namespace VIZ.Package.Module
public VCommand OpenPageCommand { get; set; }
/// <summary>
/// 打开场景
/// 打开页
/// </summary>
private void OpenPage()
{
if (this.SelectedPageModel == null)
if (this.SelectedPageGroupModel == null)
return;
if (ApplicationDomainEx.CurrentPage == this.SelectedPageModel)
if (this.SelectedPageGroupModel.SelectedPages == null || this.SelectedPageGroupModel.SelectedPages.Count == 0)
return;
ApplicationDomainEx.CurrentPage = this.SelectedPageModel;
PageModel page = this.SelectedPageGroupModel.SelectedPages[0] as PageModel;
this.OpenPage(page);
}
PageOpenMessage msg = new PageOpenMessage();
msg.Page = this.SelectedPageModel;
ApplicationDomainEx.MessageManager.Send(msg);
#endregion
#region UpdateCommand -- 更新命令
/// <summary>
/// 更新命令
/// </summary>
public VCommand UpdateCommand { get; set; }
/// <summary>
/// 更新
/// </summary>
private void Update()
{
if (this.SelectedPageGroupModel == null)
return;
if (this.SelectedPageGroupModel.SelectedPages == null || this.SelectedPageGroupModel.SelectedPages.Count == 0)
return;
List<PageModelBase> pages = new List<PageModelBase>();
foreach (PageModelBase page in this.SelectedPageGroupModel.SelectedPages)
{
pages.Add(page);
}
// 开始下载图片
this.pageViewModelHelper.BeginDownLoadIamge(pages);
// 开始下载控制对象
this.pageViewModelHelper.BeginDownLoadControlObject(pages, () =>
{
// 控制对象下载完成后打开最后一个模板
PageModel last = pages.LastOrDefault() as PageModel;
if (last == null)
return;
this.OpenPage(last);
});
}
#endregion
......@@ -339,7 +374,6 @@ namespace VIZ.Package.Module
this.IsEnabled = true;
this.PageGroupModels = null;
this.SelectedPageGroupModel = null;
this.SelectedPageModel = null;
this.IsLoading = true;
this.UpdateConnGroups();
......@@ -362,7 +396,7 @@ namespace VIZ.Package.Module
return;
// 获取场景模板缩略图
this.BeginDownLoadIamge(this.SelectedPageGroupModel.Pages.ToList<PageModelBase>());
this.pageViewModelHelper.BeginDownLoadIamge(this.SelectedPageGroupModel.Pages.ToList<PageModelBase>());
});
}
......@@ -376,7 +410,6 @@ namespace VIZ.Package.Module
this.IsLoading = false;
this.PageGroupModels = null;
this.SelectedPageGroupModel = null;
this.SelectedPageModel = null;
}
/// <summary>
......@@ -471,35 +504,33 @@ namespace VIZ.Package.Module
/// <returns>页</returns>
public PageModel CopyPage()
{
if (this.SelectedPageGroupModel == null || this.SelectedPageModel == null)
return null;
// 当前没有打开的页
if (ApplicationDomainEx.CurrentPage == null)
// 当前打开的页为页模型时可以被拷贝
PageModel srcPage = ApplicationDomainEx.CurrentPage as PageModel;
if (srcPage == null)
return null;
PageModel page = new PageModel();
page.PageID = Guid.NewGuid();
page.PageGroupID = this.SelectedPageGroupModel.GroupID;
page.Scene = this.SelectedPageModel.Scene;
page.ScenePath = this.SelectedPageModel.ScenePath;
page.ThumbnailUri = this.SelectedPageModel.ThumbnailUri;
page.Remark = this.SelectedPageModel.Remark;
page.Layer = this.SelectedPageModel.Layer;
page.EngineType = this.SelectedPageModel.EngineType;
page.PageType = this.SelectedPageModel.PageType;
page.TemplateID = this.SelectedPageModel.TemplateID;
page.ThumbnailBitmap = this.SelectedPageModel.ThumbnailBitmap;
page.PluginID = this.SelectedPageModel.PluginID;
page.PluginName = this.SelectedPageModel.PluginName;
page.ConnGroupID = this.SelectedPageModel.ConnGroupID;
page.PageGroupID = srcPage.PageGroupID;
page.Scene = srcPage.Scene;
page.ScenePath = srcPage.ScenePath;
page.ThumbnailUri = srcPage.ThumbnailUri;
page.Remark = srcPage.Remark;
page.Layer = srcPage.Layer;
page.EngineType = srcPage.EngineType;
page.PageType = srcPage.PageType;
page.TemplateID = srcPage.TemplateID;
page.ThumbnailBitmap = srcPage.ThumbnailBitmap;
page.PluginID = srcPage.PluginID;
page.PluginName = srcPage.PluginName;
page.ConnGroupID = srcPage.ConnGroupID;
page.PageNum = this.SelectedPageGroupModel.Pages.Max(p => p.PageNum) + 1;
// 将模板控制对象拷贝值页控制对象
this.controlObjectService.CopyControlObjects(this.SelectedPageModel.PageID, page.PageID);
this.controlObjectService.CopyControlObjects(srcPage.PageID, page.PageID);
// 将模板控制字段拷贝至页控制字段
this.controlObjectService.CopyControlFields(this.SelectedPageModel.PageID, page.PageID);
this.controlObjectService.CopyControlFields(srcPage.PageID, page.PageID);
// 添加页
this.SelectedPageGroupModel.Pages.Add(page);
......@@ -531,10 +562,11 @@ namespace VIZ.Package.Module
if (group == null)
return;
this.SelectedPageGroupModel = group;
this.SelectedPageModel = page;
ApplicationDomainEx.CurrentPage = page;
this.OpenPage();
PageOpenMessage msg = new PageOpenMessage();
msg.Page = page;
ApplicationDomainEx.MessageManager.Send(msg);
}
/// <summary>
......@@ -568,31 +600,5 @@ namespace VIZ.Package.Module
// ======================================================================================
// Private Function
// ======================================================================================
/// <summary>
/// 开始下载图片任务
/// </summary>
/// <param name="pages">页集合</param>
private void BeginDownLoadIamge(List<PageModelBase> pages)
{
ThreadHelper.SafeRun(() =>
{
foreach (PageModelBase page in pages)
{
if (page.ThumbnailBitmap != null)
continue;
if (string.IsNullOrWhiteSpace(page.ThumbnailUri))
continue;
var bitmap = this.ghService.GetImage(page.ThumbnailUri);
WPFHelper.BeginInvoke(() =>
{
page.ThumbnailBitmap = bitmap;
});
}
});
}
}
}
......@@ -27,8 +27,8 @@
</UserControl.Resources>
<Grid IsEnabled="{Binding Path=IsEnabled}" Margin="0,10,0,10">
<dxg:GridControl ItemsSource="{Binding Path=SceneTemplateModels}" ShowBorder="False"
SelectedItem="{Binding Path=SelectedSceneTemplateModel,Mode=TwoWay}">
<dxg:GridControl ItemsSource="{Binding Path=SceneTemplateModels}" ShowBorder="False" SelectionMode="Row"
SelectedItems="{Binding Path=SelectedSceneTemplateModels,Mode=OneWayToSource}">
<dxg:GridControl.ContextMenu>
<ContextMenu>
<MenuItem Header="打开" Command="{Binding Path=PlacementTarget.DataContext.OpenScenePageCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ContextMenu}}"/>
......
using DevExpress.Xpf.Core;
using log4net;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.UI;
using System.Windows.Controls.Primitives;
using VIZ.Framework.Core;
using VIZ.Package.Domain;
......@@ -62,6 +64,11 @@ namespace VIZ.Package.Module
// ======================================================================================
/// <summary>
/// 页视图模型辅助类
/// </summary>
private PageViewModelHelper pageViewModelHelper = new PageViewModelHelper();
/// <summary>
/// GH服务
/// </summary>
private GHService ghService = new GHService();
......@@ -137,16 +144,16 @@ namespace VIZ.Package.Module
#endregion
#region SelectedSceneTemplateModel -- 当前选中的场景模板模型
#region SelectedSceneTemplateModels -- 当前选中的场景模板集合
private PageTemplateModel selectedSceneTemplateModel;
private IList selectedSceneTemplateModels;
/// <summary>
/// 当前选中的场景模板模型
/// 当前选中的场景模板集合
/// </summary>
public PageTemplateModel SelectedSceneTemplateModel
public IList SelectedSceneTemplateModels
{
get { return selectedSceneTemplateModel; }
set { selectedSceneTemplateModel = value; this.RaisePropertyChanged(nameof(SelectedSceneTemplateModel)); }
get { return selectedSceneTemplateModels; }
set { selectedSceneTemplateModels = value; this.RaisePropertyChanged(nameof(SelectedSceneTemplateModels)); }
}
#endregion
......@@ -167,14 +174,17 @@ namespace VIZ.Package.Module
/// </summary>
private void AddToPageGroup()
{
if (this.SelectedSceneTemplateModel == null)
if (this.SelectedSceneTemplateModels == null || this.SelectedSceneTemplateModels.Count == 0)
return;
IPageGroupService service = ApplicationDomainEx.ServiceManager.GetService<IPageGroupService>(ViewServiceKeys.PAGE_GROUP_SERVICE);
if (service == null)
return;
service.AddPage(this.SelectedSceneTemplateModel);
foreach (PageTemplateModel template in this.SelectedSceneTemplateModels)
{
service.AddPage(template);
}
}
#endregion
......@@ -191,16 +201,23 @@ namespace VIZ.Package.Module
/// </summary>
private void OpenScenePage()
{
if (this.SelectedSceneTemplateModel == null)
if (this.SelectedSceneTemplateModels == null || this.SelectedSceneTemplateModels.Count == 0)
return;
if (ApplicationDomainEx.CurrentPage == this.SelectedSceneTemplateModel)
return;
PageTemplateModel template = this.SelectedSceneTemplateModels[0] as PageTemplateModel;
this.OpenScenePage(template);
}
ApplicationDomainEx.CurrentPage = this.SelectedSceneTemplateModel;
/// <summary>
/// 打开模板
/// </summary>
/// <param name="page">页</param>
private void OpenScenePage(PageModelBase page)
{
ApplicationDomainEx.CurrentPage = page;
PageOpenMessage msg = new PageOpenMessage();
msg.Page = this.SelectedSceneTemplateModel;
msg.Page = page;
ApplicationDomainEx.MessageManager.Send(msg);
}
......@@ -218,41 +235,27 @@ namespace VIZ.Package.Module
/// </summary>
private void Update()
{
if (this.SelectedSceneTemplateModel == null)
if (this.SelectedSceneTemplateModels == null || this.SelectedSceneTemplateModels.Count == 0)
return;
IFieldTreeService service = ApplicationDomainEx.ServiceManager.GetService<IFieldTreeService>(ViewServiceKeys.FIELD_TREE_SERVICE);
if (service == null)
return;
this.IsLoading = true;
ThreadHelper.SafeRun(action: () =>
List<PageModelBase> templates = new List<PageModelBase>();
foreach (PageTemplateModel template in this.SelectedSceneTemplateModels)
{
// 重新加载版子
this.vizCommandService.Reload(ApplicationDomainEx.PreviewConn, this.SelectedSceneTemplateModel.ScenePath);
// 获取控制对象
ControlObjectModel controlObject = this.vizCommandControlObjectService.GetControlObject(ApplicationDomainEx.PreviewConn);
templates.Add(template);
}
// 将控制字段写入数据库
this.controlObjectService.SaveControlFields(this.SelectedSceneTemplateModel, controlObject.AllFiledNodes); ;
// 开始下载图片
this.pageViewModelHelper.BeginDownLoadIamge(templates);
// 如果当前打开的项目是该模板,那么从新打开
if (ApplicationDomainEx.CurrentPage == this.SelectedSceneTemplateModel)
{
WPFHelper.Invoke(() =>
{
this.OpenScenePage();
});
}
},
final: () =>
{
WPFHelper.BeginInvoke(() =>
// 开始下载控制对象
this.pageViewModelHelper.BeginDownLoadControlObject(templates, () =>
{
this.IsLoading = false;
});
// 控制对象下载完成后打开最后一个模板
PageModelBase last = templates.LastOrDefault();
if (last == null)
return;
this.OpenScenePage(last);
});
}
......@@ -270,13 +273,21 @@ namespace VIZ.Package.Module
/// </summary>
private void Delete()
{
if (this.SelectedSceneTemplateModel == null)
if (this.SelectedSceneTemplateModels == null || this.SelectedSceneTemplateModels.Count == 0)
return;
if (DXMessageBox.Show($"是否删除模板{this.SelectedSceneTemplateModel.Scene}?", "提示", System.Windows.MessageBoxButton.YesNo) != System.Windows.MessageBoxResult.Yes)
if (DXMessageBox.Show($"是否删除模板?", "提示", System.Windows.MessageBoxButton.YesNo) != System.Windows.MessageBoxResult.Yes)
return;
this.SceneTemplateModels.Remove(this.SelectedSceneTemplateModel);
List<PageTemplateModel> templates = new List<PageTemplateModel>();
foreach (PageTemplateModel template in this.SelectedSceneTemplateModels)
{
templates.Add(template);
}
foreach (PageTemplateModel template in templates)
{
this.SceneTemplateModels.Remove(template);
}
}
#endregion
......@@ -293,7 +304,6 @@ namespace VIZ.Package.Module
{
this.IsEnabled = true;
this.SceneTemplateModels = null;
this.SelectedSceneTemplateModel = null;
this.IsLoading = true;
ThreadHelper.SafeRun(() =>
......@@ -310,7 +320,7 @@ namespace VIZ.Package.Module
});
// 获取场景模板缩略图
this.BeginDownLoadIamge(sceneTemplateModels.ToList<PageModelBase>());
this.pageViewModelHelper.BeginDownLoadIamge(sceneTemplateModels.ToList<PageModelBase>());
});
}
......@@ -323,7 +333,6 @@ namespace VIZ.Package.Module
this.IsEnabled = false;
this.IsLoading = false;
this.SceneTemplateModels = null;
this.SelectedSceneTemplateModel = null;
}
/// <summary>
......@@ -368,78 +377,22 @@ namespace VIZ.Package.Module
}
// 开始下载缩略图
this.BeginDownLoadIamge(list);
this.pageViewModelHelper.BeginDownLoadIamge(list);
// 开始下载控制对象
this.BeginDownLoadControlObject(list);
}
// ======================================================================================
// Private Function
// ======================================================================================
/// <summary>
/// 开始下载图片任务
/// </summary>
/// <param name="pages">页集合</param>
private void BeginDownLoadIamge(List<PageModelBase> pages)
{
ThreadHelper.SafeRun(() =>
this.pageViewModelHelper.BeginDownLoadControlObject(list, () =>
{
foreach (PageModelBase page in pages)
{
if (page.ThumbnailBitmap != null)
continue;
if (string.IsNullOrWhiteSpace(page.ThumbnailUri))
continue;
var bitmap = this.ghService.GetImage(page.ThumbnailUri);
// 控制对象下载完成后打开最后一个模板
PageModelBase last = list.LastOrDefault();
if (last == null)
return;
WPFHelper.BeginInvoke(() =>
{
page.ThumbnailBitmap = bitmap;
this.OpenScenePage(last);
});
}
});
}
/// <summary>
/// 开始下载控制对象
/// </summary>
/// <param name="pages">页集合</param>
private void BeginDownLoadControlObject(List<PageModelBase> pages)
{
Task.Run(() =>
{
IMainViewService service = ApplicationDomainEx.ServiceManager.GetService<IMainViewService>(ViewServiceKeys.MAIN_VIEW_SERVICE);
// 设置主窗口不可用
WPFHelper.Invoke(() =>
{
ApplicationDomainEx.IsSceneLoading = true;
service?.SetIsEnabled(false);
});
// 下载页控制对象信息
try
{
this.vizControlObjectDownloadService.Load(pages);
}
catch (Exception ex)
{
log.Error(ex);
}
finally
{
// 恢复主窗口可用
WPFHelper.Invoke(() =>
{
ApplicationDomainEx.IsSceneLoading = false;
service?.SetIsEnabled(true);
});
}
});
}
// ======================================================================================
// Private Function
// ======================================================================================
}
}
\ No newline at end of file
......@@ -203,15 +203,18 @@ namespace VIZ.Package.Module
/// <param name="msg">消息</param>
private void OnPageDeleteMessage(PageDeleteMessage msg)
{
if (msg.Page == null)
if (msg.Pages == null || msg.Pages.Count == 0)
return;
PluginNavigationConfig config = this.ItemsSource.FirstOrDefault(p => p.PageModel == msg.Page);
foreach (PageModelBase page in msg.Pages)
{
PluginNavigationConfig config = this.ItemsSource.FirstOrDefault(p => p.PageModel == page);
if (config == null)
return;
this.ItemsSource.Remove(config);
}
}
/// <summary>
/// 页分组删除消息
......
......@@ -137,10 +137,10 @@ namespace VIZ.Package.Module
/// <param name="msg">消息</param>
private void OnPageDeleteMessage(PageDeleteMessage msg)
{
if (msg.Page == null)
if (msg.Pages == null || msg.Pages.Count == 0)
return;
var query = this.ItemsSource.Where(p => p.PageModel == msg.Page).ToList();
var query = this.ItemsSource.Where(p => msg.Pages.Contains(p.PageModel)).ToList();
foreach (PackageTaskModel task in query)
{
this.Cancel(task);
......
......@@ -118,8 +118,9 @@
<Compile Include="ControlObject\FieldEdit\ViewModel\FieldEditViewModelBase.cs" />
<Compile Include="ControlObject\FieldTree\Service\IFieldTreeService.cs" />
<Compile Include="Log\ViewModel\VizCommandWindowModel.cs" />
<Compile Include="Main\View\MainLoadingWindow.xaml.cs">
<DependentUpon>MainLoadingWindow.xaml</DependentUpon>
<Compile Include="Page\Core\Helper\PageViewModelHelper.cs" />
<Compile Include="Page\Core\View\PageLoadingWindow.xaml.cs">
<DependentUpon>PageLoadingWindow.xaml</DependentUpon>
</Compile>
<Compile Include="Main\ViewModel\MainConnViewModel.cs" />
<Compile Include="Main\View\MainConnView.xaml.cs">
......@@ -402,7 +403,7 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Main\View\MainLoadingWindow.xaml">
<Page Include="Page\Core\View\PageLoadingWindow.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment