Ejemplo n.º 1
0
        private CtxmData GetWorkCtxmDataView(CtxmCode code)
        {
            CtxmData ctxm    = new CtxmData(code);
            CtxmData ctxmDef = DefCtxmData[code];

            //存在するものをコピーしていく。編集メニューは常に個別設定が有効になる。
            if (Settings.Instance.MenuSet.IsManualAssign.Contains(code) == true || code == CtxmCode.EditChgMenu)
            {
                CtxmSetting ctxmEdited = Settings.Instance.MenuSet.ManualMenuItems.FindData(code);
                if (ctxmEdited == null)
                {
                    //編集サブメニューの場合は、初期無効アイテムを削除したデフォルトセッティングを返す。
                    return(code != CtxmCode.EditChgMenu ? ctxmDef.Clone() : GetDefaultChgSubMenuCtxmData());
                }

                ctxmEdited.Items.ForEach(setMenuString =>
                {
                    CtxmItemData item1 = ctxmDef.Items.Find(item => item.Header == setMenuString);
                    if (item1 != null)
                    {
                        ctxm.Items.Add(item1.Clone());
                    }
                });
            }
            else
            {
                ctxmDef.Items.ForEach(item1 =>
                {
                    if (MC.WorkCmdOptions[item1.Command].IsMenuEnabled == true)
                    {
                        ctxm.Items.Add(item1.Clone());
                    }
                });
            }

            //・連続したセパレータの除去
            for (int i = ctxm.Items.Count - 1; i >= 1; i--)
            {
                if (ctxm.Items[i].Command == EpgCmdsEx.Separator && ctxm.Items[i - 1].Command == EpgCmdsEx.Separator)
                {
                    ctxm.Items.RemoveAt(i);
                }
            }
            //・先頭と最後のセパレータ除去
            if (ctxm.Items.Count != 0 && ctxm.Items[ctxm.Items.Count - 1].Command == EpgCmdsEx.Separator)
            {
                ctxm.Items.RemoveAt(ctxm.Items.Count - 1);
            }
            if (ctxm.Items.Count != 0 && ctxm.Items[0].Command == EpgCmdsEx.Separator)
            {
                ctxm.Items.RemoveAt(0);
            }

            return(ctxm);
        }
Ejemplo n.º 2
0
        private CtxmData GetWorkCtxmDataView(CtxmCode code)
        {
            CtxmData ctxm    = new CtxmData(code);
            CtxmData ctxmDef = DefCtxmData[code];

            //存在するものをコピーしていく。編集メニューは常に個別設定が有効になる。
            if (Settings.Instance.MenuSet.IsManualAssign.Contains(code) == true || code == CtxmCode.EditChgMenu)
            {
                CtxmSetting ctxmEdited = Settings.Instance.MenuSet.ManualMenuItems.FindData(code);
                if (ctxmEdited == null)
                {
                    //編集サブメニューの場合は、初期無効アイテムを削除したデフォルトセッティングを返す。
                    return(code != CtxmCode.EditChgMenu ? ctxmDef.DeepClone() : GetDefaultChgSubMenuCtxmData());
                }

                ctxmEdited.Items.ForEach(setMenuString =>
                {
                    CtxmItemData item1 = ctxmDef.Items.Find(item => item.Header == setMenuString);
                    if (item1 != null)
                    {
                        ctxm.Items.Add(item1.DeepClone());
                    }
                });
            }
            else
            {
                ctxmDef.Items.ForEach(item1 =>
                {
                    if (MC.WorkCmdOptions[item1.Command].IsMenuEnabled == true)
                    {
                        ctxm.Items.Add(item1.DeepClone());
                    }
                });
            }

            //セパレータの整理
            SweepSeparators(ctxm);

            return(ctxm);
        }
Ejemplo n.º 3
0
 public static List <CtxmSetting> Clone(this IEnumerable <CtxmSetting> src)
 {
     return(CtxmSetting.Clone(src));
 }
Ejemplo n.º 4
0
 protected static void CopyData(CtxmSetting src, CtxmSetting dest)
 {
     dest.ctxmCode = src.ctxmCode;
     dest.Items    = src.Items.ToList();
 }
Ejemplo n.º 5
0
 public CtxmSetting(CtxmSetting data)
 {
     CopyData(data, this);
 }
Ejemplo n.º 6
0
 protected static void CopyData(CtxmSetting src, CtxmSetting dest)
 {
     dest.ctxmCode = src.ctxmCode;
     dest.Items = src.Items.ToList();
 }
Ejemplo n.º 7
0
 public CtxmSetting(CtxmSetting data)
 {
     CopyData(data, this);
 }