You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
276 lines
8.2 KiB
276 lines
8.2 KiB
using Kingo.PluginServiceInterface.Model; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.Drawing; |
|
using System.IO; |
|
using System.Linq; |
|
using System.Text; |
|
using System.Threading.Tasks; |
|
using System.Xml.Serialization; |
|
|
|
namespace Kingo.PluginServiceInterface |
|
{ |
|
|
|
[XmlRoot("LayerInfo")] |
|
public class LayerCfg |
|
{ |
|
[System.Xml.Serialization.XmlIgnore] |
|
public int ID { get; private set; } |
|
[System.Xml.Serialization.XmlIgnore] |
|
public int PID { get; private set; } |
|
[System.Xml.Serialization.XmlIgnore] |
|
public Bitmap SymbolImg { get; set; } |
|
[System.Xml.Serialization.XmlIgnore] |
|
public object Data { get; set; } |
|
[System.Xml.Serialization.XmlIgnore] |
|
public bool IsEdit { get; set; } |
|
[System.Xml.Serialization.XmlIgnore] |
|
public int ImgIndex { get; set; } |
|
[System.Xml.Serialization.XmlIgnore] |
|
private bool _IsLoad; |
|
public bool IsLoad |
|
{ |
|
get |
|
{ |
|
//_IsLoad = !string.IsNullOrWhiteSpace(FcPath); |
|
return _IsLoad; |
|
} |
|
set |
|
{ |
|
if (value && !string.IsNullOrWhiteSpace(FcPath)) |
|
{ |
|
_IsLoad = value; |
|
} |
|
else |
|
{ |
|
_IsLoad = false; |
|
} |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 图层名 |
|
/// </summary> |
|
[XmlAttribute("LayerName")] |
|
public string LayerName { get; set; } |
|
/// <summary> |
|
/// 表名 |
|
/// </summary> |
|
[XmlAttribute("FcName")] |
|
public string FcName { get; set; } |
|
/// <summary> |
|
/// 节点展开状态 |
|
/// </summary> |
|
[XmlAttribute("Expanded")] |
|
public bool Expanded { get; set; } |
|
/// <summary> |
|
/// 是否显示 |
|
/// </summary> |
|
[XmlAttribute("Visible")] |
|
public bool Visible { get; set; } |
|
/// <summary> |
|
/// 是否可选 |
|
/// </summary> |
|
[XmlAttribute("Selectable")] |
|
public bool Selectable { get; set; } |
|
/// <summary> |
|
/// 是否允许编辑 |
|
/// </summary> |
|
[XmlAttribute("AllowEdit")] |
|
public bool AllowEdit { get; set; } |
|
/// <summary> |
|
/// 图层透明度 |
|
/// </summary> |
|
[XmlAttribute("Transparency")] |
|
public int Transparency { get; set; } |
|
/// <summary> |
|
/// 是否必选图层 |
|
/// </summary> |
|
[XmlAttribute("Required")] |
|
public bool Required { get; set; } |
|
/// <summary> |
|
/// 图层路径 |
|
/// </summary> |
|
public string FcPath { get; set; } |
|
/// <summary> |
|
/// 图层符号 |
|
/// </summary> |
|
public string Symbol { get; set; } |
|
/// <summary> |
|
/// 图层标注 |
|
/// </summary> |
|
public string Annotation { get; set; } |
|
/// <summary> |
|
/// 属性编辑时字段配置方案 |
|
/// </summary> |
|
public string FieldEditCfg { get; set; } |
|
/// <summary> |
|
/// 绝对路径Data |
|
/// </summary> |
|
public string AbsolutePath { get; set; } |
|
/// <summary> |
|
/// 区分内外部数据 |
|
/// </summary> |
|
public string AbsolutePathType { get; set; } |
|
/// <summary> |
|
/// 基础数据加载状态 |
|
/// </summary> |
|
public TBState LoadLayerState { get; set; } |
|
/// <summary> |
|
/// 图层字段配置 |
|
/// </summary> |
|
public List<FieldCfg> FieldsCfg |
|
{ |
|
get |
|
{ |
|
List<FieldCfg> result = new List<FieldCfg>(); |
|
if (_FieldsCfg != null) |
|
{ |
|
for (int i = 0; i < _FieldsCfg.Count; i++) |
|
{ |
|
_FieldsCfg[i].PID = this.ID;//layerCfg.ID |
|
_FieldsCfg[i].ID = ID * 100 + i + 1; |
|
//var subList = GetAllFields(_FieldsCfg[i]); |
|
//if (subList != null && subList.Count > 0) |
|
// result.AddRange(subList); |
|
} |
|
} |
|
if (result.Count == 0) |
|
return _FieldsCfg; |
|
else |
|
return result; |
|
} |
|
set |
|
{ |
|
_FieldsCfg = value; |
|
} |
|
} |
|
private List<FieldCfg> _FieldsCfg { get; set; } |
|
/// <summary> |
|
/// 图层类型 |
|
/// </summary> |
|
[XmlAttribute("LayerType")] |
|
public EnumLayerType LayerType { get; set; } |
|
public List<LayerCfg> Layers { get; set; } |
|
public int MinScale { get; set; } |
|
public int MaxScale { get; set; } |
|
public string DefinitionExpression { get; set; } |
|
public LayerCfg() |
|
{ |
|
PID = 0; |
|
ID = 1; |
|
Layers = new List<LayerCfg>(); |
|
} |
|
public LayerCfg(LayerCfg pParentLayer) |
|
{ |
|
Layers = new List<LayerCfg>(); |
|
if (pParentLayer == null) return; |
|
PID = pParentLayer.ID; |
|
ID = pParentLayer.ID * 1000 + pParentLayer.Layers.Count + 1; |
|
} |
|
|
|
public string FileSize { get; set; } |
|
public bool IsChecked { get; set; } |
|
/// <summary> |
|
/// 将父子级数据结构转换为普通list |
|
/// </summary> |
|
/// <param name="list"></param> |
|
/// <returns></returns> |
|
public List<LayerCfg> GetAllItem() |
|
{ |
|
List<LayerCfg> Resultlist = new List<LayerCfg>(); |
|
//foreach (var item in list) |
|
//{ |
|
OperationChildData(Resultlist, this); |
|
Resultlist.Add(this); |
|
//} |
|
return Resultlist; |
|
} |
|
//public List<FieldCfg> GetAllFields(FieldCfg pField) |
|
public List<FieldCfg> GetAllFields() |
|
{ |
|
List<FieldCfg> Resultlist = new List<FieldCfg>(); |
|
foreach (FieldCfg pField in this.FieldsCfg) |
|
{ |
|
OperationChildDataForField(Resultlist, pField); |
|
Resultlist.Add(pField); |
|
} |
|
return Resultlist; |
|
} |
|
/// <summary> |
|
/// 递归子级数据 |
|
/// </summary> |
|
/// <param name="treeDataList">树形列表数据</param> |
|
/// <param name="parentItem">父级model</param> |
|
private void OperationChildDataForField(List<FieldCfg> AllList, FieldCfg item) |
|
{ |
|
if (item.Fields != null) |
|
{ |
|
if (item.Fields.Count > 0) |
|
{ |
|
foreach (var subItem in item.Fields) |
|
{ |
|
//subItem.SetParentLayer(item); |
|
AllList.Add(subItem); |
|
OperationChildDataForField(AllList, subItem); |
|
} |
|
} |
|
} |
|
} |
|
#region Private |
|
/// <summary> |
|
/// 递归子级数据 |
|
/// </summary> |
|
/// <param name="treeDataList">树形列表数据</param> |
|
/// <param name="parentItem">父级model</param> |
|
private void OperationChildData(List<LayerCfg> AllList, LayerCfg item) |
|
{ |
|
if (item.Layers != null) |
|
{ |
|
if (item.Layers.Count > 0) |
|
{ |
|
foreach (var subItem in item.Layers) |
|
{ |
|
subItem.SetParentLayer(item); |
|
AllList.Add(subItem); |
|
OperationChildData(AllList, subItem); |
|
} |
|
} |
|
} |
|
} |
|
private void SetParentLayer(LayerCfg pParent) |
|
{ |
|
PID = pParent.ID; |
|
ID = pParent.ID * 100 + pParent.Layers.IndexOf(this) + 1; |
|
} |
|
|
|
#endregion |
|
} |
|
public enum TBState |
|
{ |
|
/// <summary> |
|
/// 等待中 |
|
/// </summary> |
|
Waiting = 0, |
|
/// <summary> |
|
/// 删除 |
|
/// </summary> |
|
Delete = 1, |
|
/// <summary> |
|
/// 开始导入 |
|
/// </summary> |
|
BeingImport = 2, |
|
/// <summary> |
|
/// 结束导入 |
|
/// </summary> |
|
EndImport = 3 |
|
} |
|
//public enum EnumLayerType |
|
//{ |
|
// GroupLayer, |
|
// FeatureLayer, |
|
// RasterLayer, |
|
// KOTilesLayer, |
|
// Map |
|
//} |
|
}
|
|
|