Пример #1
0
        public VDPDetailsViewModel(VirtualDesktopPreset vdp, IDatabaseService dbService)
        {
            this.dbService = dbService;

            SaveCommand                    = new RelayCommand <object>(x => ExecuteSave(), c => CanExecuteSave);
            CancelCommand                  = new RelayCommand <object>(x => ExecuteCancel());
            BrowseIconCommand              = new RelayCommand <object>(x => ExecuteBrowseIcon());
            DeleteIconCommand              = new RelayCommand <object>(x => ExecuteDeleteIcon(), c => CanExecuteDeleteIcon);
            AddNewProcessCommand           = new RelayCommand <object>(x => ExecuteAddNewProcess());
            RemoveSelectedProcessCommand   = new RelayCommand <object>(x => ExecuteRemoveSelectedProcess(), c => CanExecuteRemoveSelectedProcess);
            RemoveAllEmptyProcessesCommand = new RelayCommand <object>(x => ExecuteRemoveAllEmptyProcessesCommand());

            Model = vdp ?? new VirtualDesktopPreset();

            Name = Model.Name;
            IsOpenedOnSystemStart = Model.IsOpenedOnSystemStart;

            if (Model.AttachedProcesses == null)
            {
                AttachedProcesses = new ObservableCollection <Process>();
            }
            else
            {
                AttachedProcesses = new ObservableCollection <Process>(Model.AttachedProcesses);
            }

            if (Model.Icon != null)
            {
                IconSource = Converters.ByteArrayToImageSource(Model.Icon);
            }
            else
            {
                IconSource = null;
            }
        }
Пример #2
0
        public async Task AddPreset(VirtualDesktopPreset preset)
        {
            var e = dbContext.Add(preset);
            await dbContext.SaveChangesAsync();

            e.State = EntityState.Detached;
        }
Пример #3
0
        public Task StartPresetOnDesktopAsync(VirtualDesktopPreset preset, int desktopNumber)
        {
            if (desktopNumber <= VDCount)
            {
                SetDesktopCount(desktopNumber + 1, false);
            }
            var targetDesktop = VirtualDesktops[desktopNumber];

            targetDesktop.Switch();
            var openJobs = preset.AttachedProcesses.Select(p => StartProcessAsync(p.Path, p.CommandLineArgs)).ToList();

            return(Task.WhenAll(openJobs));
        }
Пример #4
0
        public static SelectableVDP VDPModelToGUI(VirtualDesktopPreset vdp)
        {
            return(new SelectableVDP()
            {
                Id = vdp.Id,
                Name = vdp.Name,
                Icon = vdp.Icon,
                IsOpenedOnSystemStart = vdp.IsOpenedOnSystemStart,
                AttachedProcesses = vdp.AttachedProcesses,

                IsSelected = false
            });
        }
Пример #5
0
        public async Task UpdatePreset(VirtualDesktopPreset preset)
        {
            var processIds        = preset.AttachedProcesses.Select(p => p.Id);
            var dbPresetProcesses = dbContext.Processes.Where(p => p.PresetId == preset.Id && !processIds.Contains(p.Id));

            dbContext.Processes.RemoveRange(dbPresetProcesses);

            var ePreset = dbContext.VirtualDesktopPresets.Update(preset);
            await dbContext.SaveChangesAsync();

            ePreset.State = EntityState.Detached;
            foreach (var e in dbContext.ChangeTracker.Entries <Process>().Where(p => processIds.Contains(p.Entity.Id)))
            {
                e.State = EntityState.Detached;
            }
        }
Пример #6
0
 public async Task RemovePreset(VirtualDesktopPreset preset)
 {
     dbContext.Remove(preset);
     await dbContext.SaveChangesAsync();
 }
Пример #7
0
 public VDPDetailsViewModel Build(VirtualDesktopPreset vdp = null)
 {
     return(new VDPDetailsViewModel(vdp, dbService));
 }
Пример #8
0
 public static void SignalOpenEdit(VirtualDesktopPreset vdp)
 {
     OpenEdit?.Invoke(vdp);
 }