fedora
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
pragma Singleton
|
||||
|
||||
import QtQuick
|
||||
import Quickshell
|
||||
import qs.Commons
|
||||
import qs.Services.UI
|
||||
|
||||
Singleton {
|
||||
id: root
|
||||
|
||||
Connections {
|
||||
target: WallpaperService
|
||||
|
||||
// When the wallpaper changes, regenerate theme if necessary
|
||||
function onWallpaperChanged(screenName, path) {
|
||||
var effectiveMonitor = Settings.data.colorSchemes.monitorForColors;
|
||||
if (effectiveMonitor === "" || effectiveMonitor === undefined) {
|
||||
effectiveMonitor = Screen.name;
|
||||
}
|
||||
|
||||
if (screenName !== effectiveMonitor)
|
||||
return;
|
||||
|
||||
if (Settings.data.colorSchemes.useWallpaperColors) {
|
||||
generateFromWallpaper();
|
||||
} else {
|
||||
// Re-run predefined scheme templates so {{image}} reflects the new wallpaper path
|
||||
ColorSchemeService.applyScheme(Settings.data.colorSchemes.predefinedScheme);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: Settings.data.colorSchemes
|
||||
function onDarkModeChanged() {
|
||||
Logger.d("AppThemeService", "Detected dark mode change");
|
||||
generate();
|
||||
}
|
||||
function onMonitorForColorsChanged() {
|
||||
if (Settings.data.colorSchemes.useWallpaperColors) {
|
||||
Logger.d("AppThemeService", "Monitor for colors changed to:", Settings.data.colorSchemes.monitorForColors);
|
||||
generateFromWallpaper();
|
||||
}
|
||||
}
|
||||
function onGenerationMethodChanged() {
|
||||
Logger.d("AppThemeService", "Generation method changed to:", Settings.data.colorSchemes.generationMethod);
|
||||
generate();
|
||||
}
|
||||
}
|
||||
|
||||
// PUBLIC FUNCTIONS
|
||||
function init() {
|
||||
Logger.i("AppThemeService", "Service started");
|
||||
}
|
||||
|
||||
function generate() {
|
||||
if (Settings.data.colorSchemes.useWallpaperColors) {
|
||||
generateFromWallpaper();
|
||||
} else {
|
||||
// applyScheme will trigger template generation via schemeReader.onLoaded
|
||||
ColorSchemeService.applyScheme(Settings.data.colorSchemes.predefinedScheme);
|
||||
}
|
||||
}
|
||||
|
||||
function generateFromWallpaper() {
|
||||
var effectiveMonitor = Settings.data.colorSchemes.monitorForColors;
|
||||
if (effectiveMonitor === "" || effectiveMonitor === undefined) {
|
||||
effectiveMonitor = Screen.name;
|
||||
}
|
||||
|
||||
const wp = WallpaperService.getWallpaper(effectiveMonitor);
|
||||
if (!wp) {
|
||||
Logger.e("AppThemeService", "No wallpaper found for monitor:", effectiveMonitor);
|
||||
return;
|
||||
}
|
||||
const mode = Settings.data.colorSchemes.darkMode ? "dark" : "light";
|
||||
TemplateProcessor.processWallpaperColors(wp, mode);
|
||||
}
|
||||
|
||||
function generateFromPredefinedScheme(schemeData) {
|
||||
Logger.i("AppThemeService", "Generating templates from predefined color scheme");
|
||||
const mode = Settings.data.colorSchemes.darkMode ? "dark" : "light";
|
||||
var effectiveMonitor = Settings.data.colorSchemes.monitorForColors;
|
||||
if (effectiveMonitor === "" || effectiveMonitor === undefined) {
|
||||
effectiveMonitor = Screen.name;
|
||||
}
|
||||
const wallpaperPath = WallpaperService.getWallpaper(effectiveMonitor) || "";
|
||||
TemplateProcessor.processPredefinedScheme(schemeData, mode, wallpaperPath);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user