コード例 #1
0
        public void Move(UserControl control, Point position)
        {
            var model          = ((ScenarioModel)control.DataContext);
            int index          = -1;
            var controlAtPoint = grid.Children
                                 .Cast <UserControl>()
                                 .FirstOrDefault(x =>
            {
                index = CreateRealVisualIndex(((ScenarioModel)x.DataContext).VisualSettings);
                var virtualPosition = CreatePositionByIndex(index);
                return(virtualPosition.Item1.Equals((int)position.X) && virtualPosition.Item2.Equals((int)position.Y));
            });

            if (controlAtPoint != null)
            {
                var ordered = grid.Children
                              .Cast <UserControl>()
                              .Select(x => (ScenarioModel)x.DataContext)
                              .OrderBy(x => x.VisualSettings.VisualIndex)
                              .ToList();

                ordered.Remove(model);
                ordered.Insert(index, model);
                int newIndex = 0;
                foreach (var orderedModel in ordered)
                {
                    orderedModel.VisualIndex = newIndex++;
                }

                VisualSettingsRepository.Save();
            }

            Rearrange();
        }
コード例 #2
0
        public ScenarioModel(ScenarioBase scenario)
        {
            Scenario       = scenario;
            VisualSettings = Repository.VisualSettings.FirstOrDefault(x => x.ScenarioId == scenario.Id);
            if (VisualSettings == null)
            {
                Repository.Add(VisualSettings = new UserVisualSettings()
                {
                    UserId      = UsersRepository.SystemUser.Id,
                    ScenarioId  = scenario.Id,
                    VisualIndex = (Repository.VisualSettings.Any() ? Repository.VisualSettings.Max(x => x.VisualIndex) : 0) + 1
                });
                VisualSettings.AddictionalData.Set(Icon1Key, GetStandardIcon1());
                VisualSettings.AddictionalData.Set(Icon2Key, GetStandardIcon2());
                Repository.Save();
            }

            Scenario.SetOnStateChanged(ScenarioValueChanged);
            scenario.SetOnAvailabilityChanged(ScenarioAvailabilityChanged);
            Scenario.CalculateCurrentValueAsync(
                ViewScenarioActionSourceCrutch,
                (value) => {
                _value       = value;
                _smoothValue = ScenarioValueDouble;
                OnPropertyChanged(nameof(ScenarioValue));
                OnPropertyChanged(nameof(SmoothChangeValue));
            },
                null);

            OnPropertyChanged(nameof(Icon1));
            OnPropertyChanged(nameof(Icon2));
            OnPropertyChanged(nameof(AllowClick));
        }
コード例 #3
0
        public void SaveVisualSettings(UserVisualSettings visualSettings)
        {
            var user = GetCurrentUser();

            visualSettings.UserId = user.Id;
            VisualSettings.Add(visualSettings);
            VisualSettings.Save();
        }
コード例 #4
0
 public void SaveVisualSettings(Encrypted <UserVisualSettings> visualSettings)
 {
     Handle((user) =>
     {
         var decryptedVS = visualSettings.Decrypt(_secretKey);
         decryptedVS     = new UserVisualSettings()
         {
             AddictionalData = decryptedVS.AddictionalData,
             VisualIndex     = decryptedVS.VisualIndex,
             ScenarioId      = decryptedVS.ScenarioId,
             UserId          = user.Id
         };
         VisualSettings.Add(decryptedVS);
         VisualSettings.Save();
     });
 }