* 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
41 lines
2.4 KiB
C#
41 lines
2.4 KiB
C#
using FluentTerminal.App.Services;
|
|
using FluentTerminal.App.ViewModels.Settings;
|
|
using GalaSoft.MvvmLight;
|
|
using System;
|
|
|
|
namespace FluentTerminal.App.ViewModels
|
|
{
|
|
public class SettingsViewModel : ViewModelBase
|
|
{
|
|
public SettingsViewModel(ISettingsService settingsService, IDefaultValueProvider defaultValueProvider, IDialogService dialogService,
|
|
ITrayProcessCommunicationService trayProcessCommunicationService, IThemeParserFactory themeParserFactory, ISystemFontService systemFontService,
|
|
IFileSystemService fileSystemService, IStartupTaskService startupTaskService, IApplicationView applicationView,
|
|
IApplicationLanguageService applicationLanguageService, ApplicationDataContainers containers,
|
|
IImageFileSystemService imageFileSystemService)
|
|
{
|
|
KeyBindings = new KeyBindingsPageViewModel(settingsService, dialogService, trayProcessCommunicationService);
|
|
General = new GeneralPageViewModel(settingsService, dialogService, defaultValueProvider, startupTaskService, applicationLanguageService, trayProcessCommunicationService, fileSystemService);
|
|
Profiles = new ProfilesPageViewModel(settingsService, dialogService, defaultValueProvider, fileSystemService, applicationView);
|
|
Terminal = new TerminalPageViewModel(settingsService, dialogService, defaultValueProvider, systemFontService);
|
|
Themes = new ThemesPageViewModel(settingsService, dialogService, defaultValueProvider, themeParserFactory, fileSystemService, imageFileSystemService);
|
|
Mouse = new MousePageViewModel(settingsService, dialogService, defaultValueProvider);
|
|
SshProfiles = new SshProfilesPageViewModel(settingsService, dialogService, fileSystemService,
|
|
applicationView, trayProcessCommunicationService, containers.HistoryContainer);
|
|
}
|
|
|
|
public event EventHandler Closed;
|
|
|
|
public GeneralPageViewModel General { get; }
|
|
public KeyBindingsPageViewModel KeyBindings { get; }
|
|
public ProfilesPageViewModel Profiles { get; }
|
|
public TerminalPageViewModel Terminal { get; }
|
|
public ThemesPageViewModel Themes { get; }
|
|
public MousePageViewModel Mouse { get; }
|
|
public SshProfilesPageViewModel SshProfiles { get; }
|
|
|
|
public void Close()
|
|
{
|
|
Closed?.Invoke(this, EventArgs.Empty);
|
|
}
|
|
}
|
|
} |