mirror of
https://github.com/jayfunc/BetterLyrics.git
synced 2026-01-12 19:24:55 +08:00
137 lines
5.3 KiB
C#
137 lines
5.3 KiB
C#
using BetterLyrics.WinUI3.Enums;
|
|
using BetterLyrics.WinUI3.Hooks;
|
|
using BetterLyrics.WinUI3.Models;
|
|
using BetterLyrics.WinUI3.Models.Settings;
|
|
using BetterLyrics.WinUI3.Services.LocalizationService;
|
|
using BetterLyrics.WinUI3.Views;
|
|
using CommunityToolkit.Mvvm.DependencyInjection;
|
|
using Microsoft.UI.Xaml;
|
|
using Windows.Foundation;
|
|
|
|
namespace BetterLyrics.WinUI3.Extensions
|
|
{
|
|
public static class LyricsWindowStatusExtensions
|
|
{
|
|
private static readonly ILocalizationService _localizationService = Ioc.Default.GetRequiredService<ILocalizationService>();
|
|
|
|
public static LyricsWindowStatus DesktopMode(Window? window = null)
|
|
{
|
|
window ??= WindowHook.GetWindow<SystemTrayWindow>();
|
|
return new LyricsWindowStatus(window)
|
|
{
|
|
Name = _localizationService.GetLocalizedString("DesktopMode"),
|
|
LyricsDisplayType = LyricsDisplayType.LyricsOnly,
|
|
WindowBounds = new Rect(100, 100, 600, 250),
|
|
IsLocked = true,
|
|
IsAlwaysOnTop = true,
|
|
IsAlwaysOnTopPolling = true,
|
|
IsAdaptToEnvironment = true,
|
|
IsShownInSwitchers = false,
|
|
EnvironmentSampleMode = WindowPixelSampleMode.WindowEdge,
|
|
LyricsStyleSettings = new()
|
|
{
|
|
LyricsAlignmentType = TextAlignmentType.Center,
|
|
},
|
|
LyricsBackgroundSettings = new LyricsBackgroundSettings
|
|
{
|
|
IsFluidOverlayEnabled = false,
|
|
}
|
|
};
|
|
}
|
|
|
|
public static LyricsWindowStatus DockedMode(Window? window = null)
|
|
{
|
|
window ??= WindowHook.GetWindow<SystemTrayWindow>();
|
|
var status = new LyricsWindowStatus(window)
|
|
{
|
|
Name = _localizationService.GetLocalizedString("DockedMode"),
|
|
IsWorkArea = true,
|
|
IsAlwaysOnTop = true,
|
|
IsAlwaysOnTopPolling = true,
|
|
IsAdaptToEnvironment = true,
|
|
IsShownInSwitchers = false,
|
|
LyricsDisplayType = LyricsDisplayType.LyricsOnly,
|
|
EnvironmentSampleMode = WindowPixelSampleMode.BelowWindow,
|
|
LyricsStyleSettings = new LyricsStyleSettings
|
|
{
|
|
LyricsAlignmentType = TextAlignmentType.Center,
|
|
},
|
|
LyricsBackgroundSettings = new LyricsBackgroundSettings
|
|
{
|
|
IsFluidOverlayEnabled = false,
|
|
IsPureColorOverlayEnabled = true,
|
|
}
|
|
};
|
|
status.WindowBounds = status.GetWindowBoundsWhenWorkArea();
|
|
return status;
|
|
}
|
|
|
|
public static LyricsWindowStatus FullscreenMode(Window? window = null)
|
|
{
|
|
window ??= WindowHook.GetWindow<SystemTrayWindow>();
|
|
var status = new LyricsWindowStatus(window)
|
|
{
|
|
Name = _localizationService.GetLocalizedString("FullscreenMode"),
|
|
LyricsLayoutOrientation = LyricsLayoutOrientation.Vertical,
|
|
LyricsStyleSettings = new LyricsStyleSettings
|
|
{
|
|
LyricsAlignmentType = TextAlignmentType.Center,
|
|
},
|
|
IsFullscreen = true,
|
|
};
|
|
status.WindowBounds = new Rect(
|
|
status.MonitorBounds.X,
|
|
status.MonitorBounds.Y - 1,
|
|
status.MonitorBounds.Width,
|
|
status.MonitorBounds.Height + 1
|
|
);
|
|
return status;
|
|
}
|
|
|
|
public static LyricsWindowStatus StandardMode(Window? window = null)
|
|
{
|
|
window ??= WindowHook.GetWindow<SystemTrayWindow>();
|
|
return new LyricsWindowStatus(window)
|
|
{
|
|
Name = _localizationService.GetLocalizedString("StandardMode"),
|
|
};
|
|
}
|
|
|
|
public static LyricsWindowStatus NarrowMode(Window? window = null)
|
|
{
|
|
window ??= WindowHook.GetWindow<SystemTrayWindow>();
|
|
return new LyricsWindowStatus(window)
|
|
{
|
|
Name = _localizationService.GetLocalizedString("NarrowMode"),
|
|
WindowBounds = new Rect(100, 100, 400, 800),
|
|
LyricsLayoutOrientation = LyricsLayoutOrientation.Vertical,
|
|
};
|
|
}
|
|
|
|
public static LyricsWindowStatus TaskbarMode(Window? window = null)
|
|
{
|
|
window ??= WindowHook.GetWindow<SystemTrayWindow>();
|
|
return new LyricsWindowStatus(window)
|
|
{
|
|
Name = _localizationService.GetLocalizedString("TaskbarMode"),
|
|
LyricsDisplayType = LyricsDisplayType.LyricsOnly,
|
|
IsPinToTaskbar = true,
|
|
IsLocked = true,
|
|
IsAlwaysOnTop = true,
|
|
IsAlwaysOnTopPolling = true,
|
|
IsAdaptToEnvironment = true,
|
|
IsShownInSwitchers = false,
|
|
EnvironmentSampleMode = WindowPixelSampleMode.WindowEdge,
|
|
LyricsStyleSettings = new()
|
|
{
|
|
LyricsAlignmentType = TextAlignmentType.Center,
|
|
},
|
|
LyricsBackgroundSettings = new LyricsBackgroundSettings
|
|
{
|
|
IsFluidOverlayEnabled = false,
|
|
}
|
|
};
|
|
}
|
|
}
|
|
}
|