Implemented layer elements

Added a brush layer element
Corsair - Added ST100 RGB layout
This commit is contained in:
SpoinkyNL committed 2019-12-01 18:55:49 +01:00
1 parent 482cbe79ed
commit 9148323ad5
81 files changed
+1610 -365

No files matched your search

@@ -12,5 +12,12 @@ namespace Artemis.Core.Services.Storage.Interfaces
Profile GetActiveProfile(ProfileModule module);
void UpdateProfile(Profile profile, bool includeChildren);
void DeleteProfile(Profile profile);
/// <summary>
/// Activates the profile for the given <see cref="ProfileModule" /> with the currently active surface
/// </summary>
/// <param name="module">The module to activate the profile for</param>
/// <param name="profile">The profile to activate</param>
void ActivateProfile(ProfileModule module, Profile profile);
}
}
@@ -16,8 +16,8 @@ namespace Artemis.Core.Services.Storage
public class ProfileService : IProfileService
{
private readonly IPluginService _pluginService;
private readonly ISurfaceService _surfaceService;
private readonly IProfileRepository _profileRepository;
private readonly ISurfaceService _surfaceService;
internal ProfileService(IPluginService pluginService, ISurfaceService surfaceService, IProfileRepository profileRepository)
{
@@ -29,6 +29,73 @@ namespace Artemis.Core.Services.Storage
_surfaceService.SurfaceConfigurationUpdated += SurfaceServiceOnSurfaceConfigurationUpdated;
}
public List<Profile> GetProfiles(ProfileModule module)
{
var profileEntities = _profileRepository.GetByPluginGuid(module.PluginInfo.Guid);
var profiles = new List<Profile>();
foreach (var profileEntity in profileEntities)
{
// If the profile entity matches the module's currently active profile, use that instead
if (module.ActiveProfile != null && module.ActiveProfile.EntityId == profileEntity.Id)
profiles.Add(module.ActiveProfile);
else
profiles.Add(new Profile(module.PluginInfo, profileEntity));
}
return profiles;
}
public Profile GetActiveProfile(ProfileModule module)
{
if (module.ActiveProfile != null)
return module.ActiveProfile;
var moduleProfiles = _profileRepository.GetByPluginGuid(module.PluginInfo.Guid);
var profileEntity = moduleProfiles.FirstOrDefault(p => p.IsActive) ?? moduleProfiles.FirstOrDefault();
if (profileEntity == null)
return null;
return new Profile(module.PluginInfo, profileEntity);
}
public Profile CreateProfile(ProfileModule module, string name)
{
var profile = new Profile(module.PluginInfo, name);
_profileRepository.Add(profile.ProfileEntity);
if (_surfaceService.ActiveSurface != null)
profile.ApplySurface(_surfaceService.ActiveSurface);
return profile;
}
public void ActivateProfile(ProfileModule module, Profile profile)
{
module.ChangeActiveProfile(profile, _surfaceService.ActiveSurface);
}
public void DeleteProfile(Profile profile)
{
_profileRepository.Remove(profile.ProfileEntity);
}
public void UpdateProfile(Profile profile, bool includeChildren)
{
profile.ApplyToEntity();
if (includeChildren)
{
foreach (var folder in profile.GetAllFolders())
folder.ApplyToEntity();
foreach (var layer in profile.GetAllLayers())
layer.ApplyToEntity();
if (_surfaceService.ActiveSurface != null)
profile.ApplySurface(_surfaceService.ActiveSurface);
}
_profileRepository.Save(profile.ProfileEntity);
}
private void SurfaceServiceOnActiveSurfaceConfigurationChanged(object sender, SurfaceConfigurationEventArgs e)
{
ApplySurfaceToProfiles(e.Surface);
@@ -47,66 +114,5 @@ namespace Artemis.Core.Services.Storage
foreach (var profileModule in profileModules.Where(p => p.ActiveProfile != null).ToList())
profileModule.ActiveProfile.ApplySurface(surface);
}
public List<Profile> GetProfiles(ProfileModule module)
{
var profileEntities = _profileRepository.GetByPluginGuid(module.PluginInfo.Guid);
var profiles = new List<Profile>();
foreach (var profileEntity in profileEntities)
{
// If the profile entity matches the module's currently active profile, use that instead
if (module.ActiveProfile != null && module.ActiveProfile.EntityId == profileEntity.Id)
profiles.Add(module.ActiveProfile);
else
profiles.Add(new Profile(module.PluginInfo, profileEntity, _pluginService));
}
return profiles;
}
public Profile GetActiveProfile(ProfileModule module)
{
if (module.ActiveProfile != null)
return module.ActiveProfile;
var moduleProfiles = _profileRepository.GetByPluginGuid(module.PluginInfo.Guid);
var profileEntity = moduleProfiles.FirstOrDefault(p => p.IsActive) ?? moduleProfiles.FirstOrDefault();
if (profileEntity == null)
return null;
return new Profile(module.PluginInfo, profileEntity, _pluginService);
}
public Profile CreateProfile(ProfileModule module, string name)
{
var profile = new Profile(module.PluginInfo, name);
_profileRepository.Add(profile.ProfileEntity);
if (_surfaceService.ActiveSurface != null)
profile.ApplySurface(_surfaceService.ActiveSurface);
return profile;
}
public void DeleteProfile(Profile profile)
{
_profileRepository.Remove(profile.ProfileEntity);
}
public void UpdateProfile(Profile profile, bool includeChildren)
{
profile.ApplyToEntity();
if (includeChildren)
{
foreach (var folder in profile.GetAllFolders())
folder.ApplyToEntity();
foreach (var layer in profile.GetAllLayers())
layer.ApplyToEntity();
if (_surfaceService.ActiveSurface != null)
profile.ApplySurface(_surfaceService.ActiveSurface);
}
_profileRepository.Save(profile.ProfileEntity);
}
}
}