void MoveServerListItem(ref Views.UserControls.ServerUI moving, ref Views.UserControls.ServerUI destination) { var indexDest = destination.GetIndex(); var indexMoving = moving.GetIndex(); if (indexDest == indexMoving) { return; } moving.SetIndex( indexDest < indexMoving ? indexDest - 0.5 : indexDest + 0.5); RefreshUI(); }
void RefreshFlyPanelWorker(Action done) { var start = DateTime.Now.Millisecond; servers.ResetIndex(); var flatList = GetFilteredList(); var pagedList = GenPagedServerList(flatList); var showWelcome = servers.CountAllServers() == 0; List <Views.UserControls.ServerUI> removed = null; Action next = () => { lazyStatusBarUpdater?.Postpone(); if (removed != null) { DisposeFlyPanelControlByList(removed); } var relex = flyPanelUpdateInterval - (DateTime.Now.Millisecond - start); VgcApis.Misc.Utils.Sleep(Math.Max(0, relex)); done(); }; Action worker = () => { flyPanel.SuspendLayout(); removed = GetAllServerControls(); flyPanel.Controls.Clear(); if (showWelcome) { flyPanel.Controls.Add(welcomeItem); } else { foreach (var serv in pagedList) { var ui = new Views.UserControls.ServerUI(serv); flyPanel.Controls.Add(ui); } } flyPanel.ResumeLayout(); }; VgcApis.Misc.UI.InvokeThen(worker, next); }
void MoveServerListItem(ref Views.UserControls.ServerUI moving, ref Views.UserControls.ServerUI destination) { if (moving == null || destination == null) { ReloadFlyPanel(); return; } var indexDest = destination.GetIndex(); var indexMoving = moving.GetIndex(); if (indexDest == indexMoving) { return; } moving.SetIndex( indexDest < indexMoving ? indexDest - 0.5 : indexDest + 0.5); RefreshUI(); }