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; } }
public async Task AddPreset(VirtualDesktopPreset preset) { var e = dbContext.Add(preset); await dbContext.SaveChangesAsync(); e.State = EntityState.Detached; }
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)); }
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 }); }
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; } }
public async Task RemovePreset(VirtualDesktopPreset preset) { dbContext.Remove(preset); await dbContext.SaveChangesAsync(); }
public VDPDetailsViewModel Build(VirtualDesktopPreset vdp = null) { return(new VDPDetailsViewModel(vdp, dbService)); }
public static void SignalOpenEdit(VirtualDesktopPreset vdp) { OpenEdit?.Invoke(vdp); }