public void ReadPageFile(String filePath, out List <List <PageButtonModel> > pageModes) { pageModes = new List <List <PageButtonModel> >(); foreach (XElement element in XDocument.Load(filePath).Element("Page").Elements("Buttons")) { List <PageButtonModel> _mButtons = new List <PageButtonModel>(); foreach (XElement _element in element.Elements("Button")) { PageButtonModel model = new PageButtonModel(); XElement xDown = _element.Element("Down"); model._down._goto = xDown.Attribute("goto").Value; model._down._bpm = xDown.Attribute("bpm").Value; XElement xLoop = _element.Element("Loop"); model._loop._goto = xLoop.Attribute("goto").Value; model._loop._bpm = xLoop.Attribute("bpm").Value; XElement xUp = _element.Element("Up"); model._up._goto = xUp.Attribute("goto").Value; model._up._bpm = xUp.Attribute("bpm").Value; _mButtons.Add(model); } pageModes.Add(_mButtons); } }
public void ReadPageFile(String filePath, out List <List <PageButtonModel> > pageModes) { pageModes = new List <List <PageButtonModel> >(); foreach (XElement element in XDocument.Load(filePath).Element("Page").Elements("Buttons")) { List <PageButtonModel> _mButtons = new List <PageButtonModel>(); foreach (XElement _element in element.Elements("Button")) { PageButtonModel model = new PageButtonModel(); XElement xDown = _element.Element("Down"); { foreach (var xEdit in xDown.Elements()) { model._down.OperationModels.Add(XNameToModel(xEdit)); } } XElement xLoop = _element.Element("Loop"); { foreach (var xEdit in xLoop.Elements()) { model._loop.OperationModels.Add(XNameToModel(xEdit)); } } XElement xUp = _element.Element("Up"); { foreach (var xEdit in xUp.Elements()) { model._up.OperationModels.Add(XNameToModel(xEdit)); } } _mButtons.Add(model); } pageModes.Add(_mButtons); } }
/// <summary> /// 產生頁碼 /// </summary> /// <param name="model">頁數資料</param> /// <param name="buttonCount">按鈕最大數量</param> /// <param name="pageType">分頁類型</param> /// <returns></returns> public static List <PageButtonResultModel> SetPageButton(PageButtonModel model) { var resut = new List <PageButtonResultModel>(); //button size int size = model.PageCount > model.ButtonMaxSize ? model.ButtonMaxSize : model.PageCount; //let current page inside the list int i = 1; //display all page if (model.PageType == PageType.Number) { size = model.PageCount; } //move range << >> else if (model.PageCount > model.ButtonMaxSize) { int move = size / 2; // 5/3=2 // -5 -4 -3 -2 -1 end if (model.CurrentPage + move >= model.PageCount) { i = model.PageCount - model.ButtonMaxSize + 1; } // -2 -1 curent +1 +2 else if (model.CurrentPage - move >= 1) { i = model.CurrentPage - move; } } //--------------- //first if (model.PageType == PageType.All) { resut.Add(new PageButtonResultModel { Title = "First", Name = model.FirstText, Page = 1 }); } //previous if (model.PageType == PageType.PreNext || model.PageType == PageType.Number_PreNext || model.PageType == PageType.All || (model.PageType == PageType.Number_PreNextAuto && model.CurrentPage != 1)) { int page = model.CurrentPage - 1; page = (page < 1 ? 1 : page); //min = 1 resut.Add(new PageButtonResultModel { Title = "Previous", Name = model.PreviousText, Page = page }); } //page if (model.PageType != PageType.PreNext && model.PageType != PageType.Next) { while (size-- > 0) { resut.Add(new PageButtonResultModel { Title = i.ToString(), Name = i.ToString(), Page = i, IsCurrent = i == model.CurrentPage }); i++; } } //next if (model.PageType == PageType.PreNext || (model.PageType == PageType.Next && model.PageCount > 1 && model.CurrentPage != model.PageCount) || model.PageType == PageType.Number_PreNext || model.PageType == PageType.All || (model.PageType == PageType.Number_PreNextAuto && model.PageCount > 1 && model.CurrentPage != model.PageCount)) { int page = model.CurrentPage + 1; page = (page > model.PageCount ? model.PageCount : page); //max = pageCount resut.Add(new PageButtonResultModel { Title = "Next", Name = model.NextText, Page = page }); } //last if (model.PageType == PageType.All) { resut.Add(new PageButtonResultModel { Title = "Last", Name = model.LastText, Page = model.PageCount }); } return(resut); }