|
|
|
|
@ -7,6 +7,7 @@ declare(strict_types=1); |
|
|
|
|
*/ |
|
|
|
|
namespace OCA\Theming\Themes; |
|
|
|
|
|
|
|
|
|
use OC\AppFramework\Http\Request; |
|
|
|
|
use OCA\Theming\ImageManager; |
|
|
|
|
use OCA\Theming\ITheme; |
|
|
|
|
use OCA\Theming\ThemingDefaults; |
|
|
|
|
@ -14,41 +15,27 @@ use OCA\Theming\Util; |
|
|
|
|
use OCP\App\IAppManager; |
|
|
|
|
use OCP\IConfig; |
|
|
|
|
use OCP\IL10N; |
|
|
|
|
use OCP\IRequest; |
|
|
|
|
use OCP\IURLGenerator; |
|
|
|
|
use OCP\IUserSession; |
|
|
|
|
|
|
|
|
|
class DefaultTheme implements ITheme { |
|
|
|
|
use CommonThemeTrait; |
|
|
|
|
|
|
|
|
|
public Util $util; |
|
|
|
|
public ThemingDefaults $themingDefaults; |
|
|
|
|
public IUserSession $userSession; |
|
|
|
|
public IURLGenerator $urlGenerator; |
|
|
|
|
public ImageManager $imageManager; |
|
|
|
|
public IConfig $config; |
|
|
|
|
public IL10N $l; |
|
|
|
|
public IAppManager $appManager; |
|
|
|
|
|
|
|
|
|
public string $defaultPrimaryColor; |
|
|
|
|
public string $primaryColor; |
|
|
|
|
|
|
|
|
|
public function __construct(Util $util, |
|
|
|
|
ThemingDefaults $themingDefaults, |
|
|
|
|
IUserSession $userSession, |
|
|
|
|
IURLGenerator $urlGenerator, |
|
|
|
|
ImageManager $imageManager, |
|
|
|
|
IConfig $config, |
|
|
|
|
IL10N $l, |
|
|
|
|
IAppManager $appManager) { |
|
|
|
|
$this->util = $util; |
|
|
|
|
$this->themingDefaults = $themingDefaults; |
|
|
|
|
$this->userSession = $userSession; |
|
|
|
|
$this->urlGenerator = $urlGenerator; |
|
|
|
|
$this->imageManager = $imageManager; |
|
|
|
|
$this->config = $config; |
|
|
|
|
$this->l = $l; |
|
|
|
|
$this->appManager = $appManager; |
|
|
|
|
|
|
|
|
|
public function __construct( |
|
|
|
|
public Util $util, |
|
|
|
|
public ThemingDefaults $themingDefaults, |
|
|
|
|
public IUserSession $userSession, |
|
|
|
|
public IURLGenerator $urlGenerator, |
|
|
|
|
public ImageManager $imageManager, |
|
|
|
|
public IConfig $config, |
|
|
|
|
public IL10N $l, |
|
|
|
|
public IAppManager $appManager, |
|
|
|
|
private ?IRequest $request, |
|
|
|
|
) { |
|
|
|
|
$this->defaultPrimaryColor = $this->themingDefaults->getDefaultColorPrimary(); |
|
|
|
|
$this->primaryColor = $this->themingDefaults->getColorPrimary(); |
|
|
|
|
} |
|
|
|
|
@ -96,12 +83,29 @@ class DefaultTheme implements ITheme { |
|
|
|
|
$colorSuccess = '#2d7b41'; |
|
|
|
|
$colorInfo = '#0071ad'; |
|
|
|
|
|
|
|
|
|
$user = $this->userSession->getUser(); |
|
|
|
|
// Chromium based browsers currently (2024) have huge performance issues with blur filters |
|
|
|
|
$isChromium = $this->request !== null && $this->request->isUserAgent([Request::USER_AGENT_CHROME, Request::USER_AGENT_MS_EDGE]); |
|
|
|
|
// Ignore MacOS because they always have hardware accelartion |
|
|
|
|
$isChromium = $isChromium && !$this->request->isUserAgent(['/Macintosh/']); |
|
|
|
|
// Allow to force the blur filter |
|
|
|
|
$forceEnableBlur = $user === null ? false : $this->config->getUserValue( |
|
|
|
|
$user->getUID(), |
|
|
|
|
'theming', |
|
|
|
|
'force_enable_blur_filter', |
|
|
|
|
); |
|
|
|
|
$workingBlur = match($forceEnableBlur) { |
|
|
|
|
'yes' => true, |
|
|
|
|
'no' => false, |
|
|
|
|
default => !$isChromium |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
$variables = [ |
|
|
|
|
'--color-main-background' => $colorMainBackground, |
|
|
|
|
'--color-main-background-rgb' => $colorMainBackgroundRGB, |
|
|
|
|
'--color-main-background-translucent' => 'rgba(var(--color-main-background-rgb), .97)', |
|
|
|
|
'--color-main-background-blur' => 'rgba(var(--color-main-background-rgb), .8)', |
|
|
|
|
'--filter-background-blur' => 'blur(25px)', |
|
|
|
|
'--filter-background-blur' => $workingBlur ? 'blur(25px)' : 'none', |
|
|
|
|
|
|
|
|
|
// to use like this: background-image: linear-gradient(0, var('--gradient-main-background)); |
|
|
|
|
'--gradient-main-background' => 'var(--color-main-background) 0%, var(--color-main-background-translucent) 85%, transparent 100%', |
|
|
|
|
|