mirror of https://github.com/weisJ/darklaf.git
Browse Source
Reduce amount of times ColoredRadioButton patches the underlying icon. Ensure color returned by ForegroundColorGenerationTask is an UIResource. Improve ForegroundColorGenerationTask to account for saturation of color.pull/189/head
weisj
4 years ago
11 changed files with 816 additions and 327 deletions
@ -0,0 +1,39 @@
|
||||
/* |
||||
* MIT License |
||||
* |
||||
* Copyright (c) 2020 Jannis Weis |
||||
* |
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy |
||||
* of this software and associated documentation files (the "Software"), to deal |
||||
* in the Software without restriction, including without limitation the rights |
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||
* copies of the Software, and to permit persons to whom the Software is |
||||
* furnished to do so, subject to the following conditions: |
||||
* |
||||
* The above copyright notice and this permission notice shall be included in all |
||||
* copies or substantial portions of the Software. |
||||
* |
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||
* SOFTWARE. |
||||
* |
||||
*/ |
||||
package com.github.weisj.darklaf.settings; |
||||
|
||||
import com.github.weisj.darklaf.LafManager; |
||||
import com.github.weisj.darklaf.theme.Theme; |
||||
|
||||
public class DefaultSettingsConfiguration extends SettingsConfiguration { |
||||
|
||||
public DefaultSettingsConfiguration() { |
||||
setEnabledSystemPreferences(LafManager.isPreferenceChangeReportingEnabled()); |
||||
Theme theme = LafManager.getTheme(); |
||||
setTheme(theme); |
||||
setFontSizeRule(theme.getFontSizeRule()); |
||||
setAccentColorRule(theme.getAccentColorRule()); |
||||
} |
||||
} |
@ -0,0 +1,255 @@
|
||||
/* |
||||
* MIT License |
||||
* |
||||
* Copyright (c) 2020 Jannis Weis |
||||
* |
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy |
||||
* of this software and associated documentation files (the "Software"), to deal |
||||
* in the Software without restriction, including without limitation the rights |
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||
* copies of the Software, and to permit persons to whom the Software is |
||||
* furnished to do so, subject to the following conditions: |
||||
* |
||||
* The above copyright notice and this permission notice shall be included in all |
||||
* copies or substantial portions of the Software. |
||||
* |
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||
* SOFTWARE. |
||||
* |
||||
*/ |
||||
package com.github.weisj.darklaf.settings; |
||||
|
||||
import com.github.weisj.darklaf.LafManager; |
||||
import com.github.weisj.darklaf.platform.ThemePreferencesHandler; |
||||
import com.github.weisj.darklaf.theme.Theme; |
||||
import com.github.weisj.darklaf.theme.info.AccentColorRule; |
||||
import com.github.weisj.darklaf.theme.info.FontSizeRule; |
||||
|
||||
public class SettingsConfiguration { |
||||
|
||||
private boolean isSystemPreferencesEnabled; |
||||
private boolean isAccentColorFollowsSystem; |
||||
private boolean isFontSizeFollowsSystem; |
||||
private boolean isThemeFollowsSystem; |
||||
private boolean isSelectionColorFollowsSystem; |
||||
|
||||
private AccentColorRule accentColorRule; |
||||
private FontSizeRule fontSizeRule; |
||||
|
||||
private Theme theme; |
||||
|
||||
public void load(final SettingsConfiguration config) { |
||||
setEnabledSystemPreferences(config.isSystemPreferencesEnabled()); |
||||
setAccentColorFollowsSystem(config.isAccentColorFollowsSystem()); |
||||
setSelectionColorFollowsSystem(config.isSelectionColorFollowsSystem()); |
||||
setFontSizeFollowsSystem(config.isFontSizeFollowsSystem()); |
||||
setThemeFollowsSystem(config.isThemeFollowsSystem()); |
||||
|
||||
setFontSizeRule(config.getFontSizeRule()); |
||||
setAccentColorRule(config.getAccentColorRule()); |
||||
setTheme(config.getTheme()); |
||||
} |
||||
|
||||
/** |
||||
* Returns whether the option to follow the system settings is enabled. |
||||
* |
||||
* @return true if enabled. |
||||
* @see #isSystemPreferencesEnabled() (boolean) |
||||
* @see #isThemeFollowsSystem() |
||||
* @see #isAccentColorFollowsSystem() |
||||
* @see #isSelectionColorFollowsSystem() |
||||
* @see #isFontSizeFollowsSystem() |
||||
*/ |
||||
public boolean isSystemPreferencesEnabled() { |
||||
return isSystemPreferencesEnabled; |
||||
} |
||||
|
||||
/** |
||||
* Returns whether the accent color follows the system settings. |
||||
* |
||||
* @return true if accent color follows system settings. |
||||
* @see #setAccentColorFollowsSystem(boolean) |
||||
*/ |
||||
public boolean isAccentColorFollowsSystem() { |
||||
return isAccentColorFollowsSystem; |
||||
} |
||||
|
||||
/** |
||||
* Returns whether the font size follows the system settings. |
||||
* |
||||
* @return true if font size follows system settings. |
||||
* @see #setFontSizeFollowsSystem(boolean) |
||||
*/ |
||||
public boolean isFontSizeFollowsSystem() { |
||||
return isFontSizeFollowsSystem; |
||||
} |
||||
|
||||
/** |
||||
* Returns whether the selection color follows the system settings. |
||||
* |
||||
* @return true if selection color follows system settings. |
||||
* @see #setSelectionColorFollowsSystem(boolean) |
||||
*/ |
||||
public boolean isSelectionColorFollowsSystem() { |
||||
return isSelectionColorFollowsSystem; |
||||
} |
||||
|
||||
/** |
||||
* Returns whether the theme follows the system settings. |
||||
* |
||||
* @return true if theme follows system settings. |
||||
* @see #setThemeFollowsSystem(boolean) |
||||
*/ |
||||
public boolean isThemeFollowsSystem() { |
||||
return isThemeFollowsSystem; |
||||
} |
||||
|
||||
/** |
||||
* Get the currently selected accent color rule. This is not the same as the rule of {@link LafManager#getTheme()} |
||||
* as the current settings might not have been applied. |
||||
* |
||||
* @return the current selected accent color rule. |
||||
* @see #setAccentColorRule(AccentColorRule) |
||||
*/ |
||||
public AccentColorRule getAccentColorRule() { |
||||
return accentColorRule; |
||||
} |
||||
|
||||
/** |
||||
* Get the currently selected font size rule. This is not the same as the rule of {@link LafManager#getTheme()} as |
||||
* the current settings might not have been applied. |
||||
* |
||||
* @return the current selected font size rule. |
||||
* @see #setFontSizeRule(FontSizeRule) |
||||
*/ |
||||
public FontSizeRule getFontSizeRule() { |
||||
return fontSizeRule; |
||||
} |
||||
|
||||
/** |
||||
* Get the currently selected theme. This is not the same as {@link LafManager#getTheme()} as the current settings |
||||
* might not have been applied. |
||||
* |
||||
* @return the current selected theme. |
||||
* @see #setTheme(Theme) |
||||
*/ |
||||
public Theme getTheme() { |
||||
return theme; |
||||
} |
||||
|
||||
/** |
||||
* Enables the option to follow system preferences. |
||||
* |
||||
* @param enabled true if enabled. |
||||
* @see #setAccentColorFollowsSystem(boolean) |
||||
* @see #setSelectionColorFollowsSystem(boolean) |
||||
* @see #setFontSizeFollowsSystem(boolean) |
||||
* @see #setThemeFollowsSystem(boolean) |
||||
*/ |
||||
public void setEnabledSystemPreferences(final boolean enabled) { |
||||
isSystemPreferencesEnabled = enabled; |
||||
} |
||||
|
||||
/** |
||||
* Sets whether the accent color should follow the system settings. This only works if {@link |
||||
* #isSelectionColorFollowsSystem()} is true. |
||||
* |
||||
* @param accentColorFollowsSystem true if accent color should follow system. |
||||
* @see #isAccentColorFollowsSystem() |
||||
*/ |
||||
public void setAccentColorFollowsSystem(final boolean accentColorFollowsSystem) { |
||||
isAccentColorFollowsSystem = accentColorFollowsSystem; |
||||
} |
||||
|
||||
/** |
||||
* Sets whether the font size should follow the system settings. This only works if {@link |
||||
* #isSelectionColorFollowsSystem()} is true. |
||||
* |
||||
* @param fontSizeFollowsSystem true if font size should follow system. |
||||
* @see #isFontSizeFollowsSystem() |
||||
*/ |
||||
public void setFontSizeFollowsSystem(final boolean fontSizeFollowsSystem) { |
||||
isFontSizeFollowsSystem = fontSizeFollowsSystem; |
||||
} |
||||
|
||||
/** |
||||
* Sets whether the selection color should follow the system settings. This only works if {@link |
||||
* #isSelectionColorFollowsSystem()} is true. |
||||
* |
||||
* @param selectionColorFollowsSystem true if selection color should follow system. |
||||
* @see #isSelectionColorFollowsSystem() |
||||
*/ |
||||
public void setSelectionColorFollowsSystem(final boolean selectionColorFollowsSystem) { |
||||
isSelectionColorFollowsSystem = selectionColorFollowsSystem; |
||||
} |
||||
|
||||
/** |
||||
* Sets whether the theme should follow the system settings. This only works if {@link |
||||
* #isSelectionColorFollowsSystem()} is true. |
||||
* |
||||
* @param themeFollowsSystem true if theme should follow system. |
||||
* @see #isThemeFollowsSystem() |
||||
*/ |
||||
public void setThemeFollowsSystem(final boolean themeFollowsSystem) { |
||||
isThemeFollowsSystem = themeFollowsSystem; |
||||
} |
||||
|
||||
/** |
||||
* Sets the font accent color rule. |
||||
* |
||||
* @param accentColorRule the accent color rule. |
||||
* @see #getAccentColorRule() |
||||
*/ |
||||
public void setAccentColorRule(final AccentColorRule accentColorRule) { |
||||
this.accentColorRule = accentColorRule; |
||||
} |
||||
|
||||
/** |
||||
* Sets the font size rule. |
||||
* |
||||
* @param fontSizeRule the font size rule. |
||||
* @see #getFontSizeRule() |
||||
*/ |
||||
public void setFontSizeRule(final FontSizeRule fontSizeRule) { |
||||
this.fontSizeRule = fontSizeRule; |
||||
} |
||||
|
||||
/** |
||||
* Sets the theme. |
||||
* |
||||
* @param theme the theme. |
||||
* @see #getTheme() |
||||
*/ |
||||
public void setTheme(final Theme theme) { |
||||
this.theme = theme; |
||||
} |
||||
|
||||
public boolean isSystemPreferencesSupported() { |
||||
return ThemePreferencesHandler.getSharedInstance().canReport(); |
||||
} |
||||
|
||||
public boolean isSystemAccentColorSupported() { |
||||
return isSystemPreferencesEnabled() |
||||
&& ThemePreferencesHandler.getSharedInstance().supportsNativeAccentColor(); |
||||
} |
||||
|
||||
public boolean isSystemFontSizeSupported() { |
||||
return isSystemPreferencesEnabled() |
||||
&& ThemePreferencesHandler.getSharedInstance().supportsNativeFontSize(); |
||||
} |
||||
|
||||
public boolean isSystemSelectionColorSupported() { |
||||
return isSystemPreferencesEnabled() |
||||
&& ThemePreferencesHandler.getSharedInstance().supportsNativeSelectionColor(); |
||||
} |
||||
|
||||
public boolean isSystemThemeSupported() { |
||||
return isSystemPreferencesEnabled() |
||||
&& ThemePreferencesHandler.getSharedInstance().supportsNativeTheme(); |
||||
} |
||||
} |
Loading…
Reference in new issue