private void ProcessSourceGroupChange(Common.SignalSourceGroupChangeHolder info) { if (_viewStatus != null && _viewStatus.View != null && !(_viewStatus.View as DispatcherObject).Dispatcher.CheckAccess()) { (_viewStatus.View as DispatcherObject).Dispatcher.BeginInvoke(new SourceGroupChangeDelegate(ProcessSourceGroupChange), info); } else { BaseSourceModel src = null; foreach (SourceGroupModel grp in _signalGroups) { BaseSourceModel tmp = grp.SignalSources.FirstOrDefault(s => s.SignalSourceId == info.SignalSourceId); if (tmp != null) { src = tmp; grp.SignalSources.Remove(tmp); break; } } if (src != null) { SourceGroupModel grp = _signalGroups.FirstOrDefault(g => g.GroupId == info.NewGroupId); if (grp != null && grp.SignalSources.FirstOrDefault(s => s.SignalSourceId == info.SignalSourceId) == null) { grp.AddSignalSourceModelToList(src); } } } }
private void DragDropProviderItemsControl_Drop(object sender, DragEventArgs e) { ViewModels.SourceGroupModel grp = GetGroupModelFromSender(sender); if (grp == null) { return; } RadioLog.ViewModels.BaseSourceModel src = GetSourceModelFromDrop(e); if (src == null) { return; } e.Handled = true; if (src.SrcInfo.GroupId == GetGroupModelFromSender(sender).GroupId) { //could be re-ordering... RadioLog.ViewModels.BaseSourceModel tgt = GetTargetModelFromDrop(sender, e); if (tgt != null) { ViewModels.BaseSourceModel[] curModels = grp.SignalSources.ToArray(); List <ViewModels.BaseSourceModel> tmpList = new List <ViewModels.BaseSourceModel>(curModels); if (tmpList.Contains(src) && tmpList.Contains(tgt)) { tmpList.Remove(src); int indx = tmpList.IndexOf(tgt); indx = Math.Max(indx, 0); if (indx < (tmpList.Count - 2)) { tmpList.Insert(indx, src); } else { tmpList.Add(src); } for (int i = 0; i < tmpList.Count; i++) { tmpList[i].DisplayOrder = ((i + 1) * 10); } Common.AppSettings.Instance.SaveSettingsFile(); grp.SignalSources.Sort(); } } return; } src.SrcInfo.GroupId = grp.GroupId; src.GroupInfo = grp.GroupInfo; Common.AppSettings.Instance.SaveSettingsFile(); Common.SignalSourceGroupChangeHolder changeHolder = new Common.SignalSourceGroupChangeHolder() { SignalSourceId = src.SrcInfo.SourceId, NewGroupId = grp.GroupId }; Cinch.Mediator.Instance.NotifyColleagues <Common.SignalSourceGroupChangeHolder>("SOURCE_GROUP_CHANGE", changeHolder); }
private void DragDropProviderItemsControl_Drop(object sender, DragEventArgs e) { ViewModels.SourceGroupModel grp = GetGroupModelFromSender(sender); if (grp == null) return; RadioLog.ViewModels.BaseSourceModel src = GetSourceModelFromDrop(e); if (src == null) return; e.Handled = true; if (src.SrcInfo.GroupId == GetGroupModelFromSender(sender).GroupId) { //could be re-ordering... RadioLog.ViewModels.BaseSourceModel tgt = GetTargetModelFromDrop(sender, e); if (tgt != null) { ViewModels.BaseSourceModel[] curModels = grp.SignalSources.ToArray(); List<ViewModels.BaseSourceModel> tmpList = new List<ViewModels.BaseSourceModel>(curModels); if (tmpList.Contains(src) && tmpList.Contains(tgt)) { tmpList.Remove(src); int indx = tmpList.IndexOf(tgt); indx = Math.Max(indx, 0); if (indx < (tmpList.Count - 2)) tmpList.Insert(indx, src); else tmpList.Add(src); for (int i = 0; i < tmpList.Count; i++) { tmpList[i].DisplayOrder = ((i + 1) * 10); } Common.AppSettings.Instance.SaveSettingsFile(); grp.SignalSources.Sort(); } } return; } src.SrcInfo.GroupId = grp.GroupId; src.GroupInfo = grp.GroupInfo; Common.AppSettings.Instance.SaveSettingsFile(); Common.SignalSourceGroupChangeHolder changeHolder = new Common.SignalSourceGroupChangeHolder() { SignalSourceId = src.SrcInfo.SourceId, NewGroupId = grp.GroupId }; Cinch.Mediator.Instance.NotifyColleagues<Common.SignalSourceGroupChangeHolder>("SOURCE_GROUP_CHANGE", changeHolder); }