Profiles - Finished dispose implementation

Profiles - Added transition between active profiles
Core - Added startup animation
This commit is contained in:
Robert committed 2020-08-10 19:16:21 +02:00
1 parent c0bdd8cf26
commit d955bc8635
43 files changed
+1908 -361

No files matched your search

@@ -1,10 +1,14 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Artemis.Core.Models.Profile;
using Artemis.Core.Plugins.Abstract;
using Artemis.Core.Services.Interfaces;
namespace Artemis.Core.Services.Storage.Interfaces
{
/// <summary>
/// Provides access to profile storage and is responsible for activating default profiles
/// </summary>
public interface IProfileService : IArtemisService
{
/// <summary>
@@ -18,14 +22,14 @@ namespace Artemis.Core.Services.Storage.Interfaces
/// <param name="module">The profile module to create the profile for</param>
/// <param name="name">The name of the new profile</param>
/// <returns></returns>
ProfileDescriptor CreateProfile(ProfileModule module, string name);
ProfileDescriptor CreateProfileDescriptor(ProfileModule module, string name);
/// <summary>
/// Gets a descriptor for each profile stored for the given <see cref="ProfileModule" />
/// </summary>
/// <param name="module">The module to return profile descriptors for</param>
/// <returns></returns>
List<ProfileDescriptor> GetProfiles(ProfileModule module);
List<ProfileDescriptor> GetProfileDescriptors(ProfileModule module);
/// <summary>
/// Writes the profile to persistent storage
@@ -40,30 +44,53 @@ namespace Artemis.Core.Services.Storage.Interfaces
/// <param name="profile">The profile to delete</param>
void DeleteProfile(Profile profile);
/// <summary>
/// Permanently deletes the profile described by the provided profile descriptor
/// </summary>
/// <param name="profileDescriptor">The descriptor pointing to the profile to delete</param>
void DeleteProfile(ProfileDescriptor profileDescriptor);
/// <summary>
/// Activates the profile described in the given <see cref="ProfileDescriptor" /> with the currently active surface
/// </summary>
/// <param name="profileDescriptor">The descriptor describing the profile to activate</param>
Profile ActivateProfile(ProfileDescriptor profileDescriptor);
/// <summary>
/// Asynchronously activates the profile described in the given <see cref="ProfileDescriptor" /> with the currently
/// active surface using a fade animation
/// </summary>
/// <param name="profileDescriptor">The descriptor describing the profile to activate</param>
Task<Profile> ActivateProfileAnimated(ProfileDescriptor profileDescriptor);
/// <summary>
/// Clears the active profile on the given <see cref="ProfileModule" />
/// </summary>
/// <param name="module">The profile module to deactivate the active profile on</param>
void ClearActiveProfile(ProfileModule module);
/// <summary>
/// Asynchronously clears the active profile on the given <see cref="ProfileModule" /> using a fade animation
/// </summary>
/// <param name="module">The profile module to deactivate the active profile on</param>
Task ClearActiveProfileAnimated(ProfileModule module);
/// <summary>
/// Attempts to restore the profile to the state it had before the last <see cref="UpdateProfile" /> call.
/// </summary>
/// <param name="selectedProfile"></param>
/// <param name="module"></param>
bool UndoUpdateProfile(Profile selectedProfile, ProfileModule module);
/// <param name="profile"></param>
bool UndoUpdateProfile(Profile profile);
/// <summary>
/// Attempts to restore the profile to the state it had before the last <see cref="UndoUpdateProfile" /> call.
/// </summary>
/// <param name="selectedProfile"></param>
/// <param name="module"></param>
bool RedoUpdateProfile(Profile selectedProfile, ProfileModule module);
/// <param name="profile"></param>
bool RedoUpdateProfile(Profile profile);
/// <summary>
/// Prepares the profile for rendering. You should not need to call this, it is exposed for some niche usage in the core
/// </summary>
/// <param name="profile"></param>
void InstantiateProfile(Profile profile);
}
}