Files
FluentTerminal/FluentTerminal.Models/TerminalTheme.cs
T
Leonardo Di Stasio 37b4fd283a Add theme background image feature (#545)
* Add a background image property in theme

* Add the browse command to theme settings page

The goal was to create a command that permit to browse user pictures.
The user can now select is picture by browsing file or to simply copy the
link of the image in the textbox.

* Try to show the image that we download

* Change the save image method in file service

We call the method `ImportImageFile` so that we can show a picker dialog
and directly import the image in the roaming folder.
We make some check to avoid the application crash, still need to test

* Reorganize the UI for image import

* Add background brush converter

Now that we have a background image we need to set the background according
to the theme color or the selected image.
To do this we need to use the `ThemeViewModel` and the new converter to
select the right brush to use (`ImageBrush` or ` AcrylicBrush`)

* Use the File object insted of a image path

* Add background style to content and toolbar

* Create the ImageFile object

* Use the ImageFile object so that we can serialize the theme

* Remove commented code

* Remove the base64 string of the image file

* Disable if it's a preinstalled theme

* Add new event when background image changed

* Make the RemoveImportedImage method async

* Subscribe to background image event and change background in code behind

* Add the delete background image command

* Remove unused converters that we created

* Save background image in temporary folder

* Remove the temporary images and save the last one

* Implement the cancel and delete background

* Show the background image in terminal

* Split the image file methods in another interface

* Change the name of image saving method

* Prepare the object and methods to export encoded image

* Add import method to deserialize correctly the theme

* Remove the private from the set accessor

* Implememnt the import method

* Implement the conversion base64 image to real image

* Create the background image and import it

* Fix some actions bug

* Get the new image file name after import

* Fix some bugs when the image is deleted

* Move the background image in terminal view

* Translate the background image text

* Add the delete background command

* Fix the background image deletion if we click on cancel

* Add background opacity property to terminal view model

* Need to create a theme changed event

If we don't notify the view that the selected theme has changed with
another theme that has the same background but a different background image
we'll never see this image appear.
In fact the background change is triggered by the background color change.

* Remove the background from the theme settings page

* Fix error of last edited image

* Fix image background aspect ratio
2019-10-20 10:30:52 +02:00

45 lines
1.2 KiB
C#

using System;
namespace FluentTerminal.Models
{
public class TerminalTheme
{
public TerminalTheme()
{
}
public TerminalTheme(TerminalTheme other)
{
Id = other.Id;
Name = other.Name;
Author = other.Author;
PreInstalled = other.PreInstalled;
Colors = new TerminalColors(other.Colors);
BackgroundImage = other.BackgroundImage;
}
public Guid Id { get; set; }
public string Name { get; set; }
public string Author { get; set; }
public bool PreInstalled { get; set; }
public TerminalColors Colors { get; set; }
public ImageFile BackgroundImage { get; set; }
public override bool Equals(object obj)
{
if (obj is TerminalTheme other)
{
return Equals(other.Name, Name)
&& Equals(other.Author, Author)
&& Equals(other.Colors, Colors)
&& Equals(other.BackgroundImage, BackgroundImage);
}
return false;
}
public override int GetHashCode()
{
return HashCode.Combine(Name, Author, Colors);
}
}
}