diff --git a/fuel_gauge_icon.odg b/fuel_gauge_icon.odg new file mode 100644 index 0000000..be24a41 Binary files /dev/null and b/fuel_gauge_icon.odg differ diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java index 5cfbcfb..ac6a8ec 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcConfiguration.java @@ -197,6 +197,8 @@ public class TimeCalcConfiguration { = new BooleanProperty(TimeCalcProperty.FUEL_HIDDEN.getKey()); public final StringProperty fuelTypeProperty = new StringProperty(TimeCalcProperty.FUEL_TYPE.getKey()); + public final BooleanProperty fuelIconVisibleProperty + = new BooleanProperty(TimeCalcProperty.FUEL_ICON_VISIBLE.getKey()); public final BooleanProperty circleVisibleProperty = new BooleanProperty(TimeCalcProperty.CIRCLE_VISIBLE.getKey()); public final BooleanProperty circleHiddenProperty @@ -328,6 +330,7 @@ public class TimeCalcConfiguration { circleVisibleProperty,circleTypeProperty, dotVisibleProperty,dotTypeProperty, fuelVisibleProperty, fuelTypeProperty, fuelHiddenProperty, + fuelIconVisibleProperty, swingVisibleProperty, swingTypeProperty, swingQuarterIconVisibleProperty, diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperty.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperty.java index 416166f..ad1d1cc 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperty.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/app/TimeCalcProperty.java @@ -95,6 +95,7 @@ public enum TimeCalcProperty { FUEL_VISIBLE("fuel.visible", "Fuel"), FUEL_TYPE("fuel.type", "Fuel : Type"), FUEL_HIDDEN("fuel.hidden", "Fuel : Hidden"), + FUEL_ICON_VISIBLE("fuel.icon.visible", "Fuel : Icon"), CIRCLE_VISIBLE("circle.visible", "Circle"), CIRCLE_TYPE("circle.type", "Circle : Type"), CIRCLE_HIDDEN("circle.hidden", "Circle : Hidden"), diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/FuelGaugeIcon.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/FuelGaugeIcon.java new file mode 100644 index 0000000..aed9ac0 --- /dev/null +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/FuelGaugeIcon.java @@ -0,0 +1,41 @@ +package org.nanoboot.utils.timecalc.swing.progress; + +import lombok.Getter; +import org.nanoboot.utils.timecalc.utils.common.ProgressSmiley; + +import javax.swing.ImageIcon; +import java.awt.Image; +import java.util.HashMap; +import java.util.Map; + +/** + * @author Robert Vokac + * @since 27.02.2024 + */ +public class FuelGaugeIcon extends ImageIcon { + + private static final Map cache + = new HashMap<>(); + @Getter + private boolean reserve; + @Getter + private final ImageIcon icon; + + private FuelGaugeIcon(boolean reserve) { + this.reserve = reserve; + java.net.URL smileyUrl = getClass() + .getResource("/fuel_gauge/fuel_gauge_icon_" + (reserve + ? "orange" : "white") + ".gif"); + ImageIcon tmpIcon = new ImageIcon(smileyUrl); + this.icon = new ImageIcon(tmpIcon.getImage() + .getScaledInstance(32, 132, Image.SCALE_SMOOTH)); + } + + public static FuelGaugeIcon getInstance(boolean reserve) { + if (!cache.containsKey(reserve)) { + cache.put(reserve, new FuelGaugeIcon(reserve)); + } + return cache.get(reserve); + } + +} diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressFuelGauge.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressFuelGauge.java index b0c1756..fd49246 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressFuelGauge.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/progress/ProgressFuelGauge.java @@ -1,6 +1,7 @@ package org.nanoboot.utils.timecalc.swing.progress; import org.nanoboot.utils.timecalc.app.GetProperty; +import org.nanoboot.utils.timecalc.app.TimeCalcProperty; import org.nanoboot.utils.timecalc.entity.Visibility; import org.nanoboot.utils.timecalc.entity.WidgetType; import org.nanoboot.utils.timecalc.swing.common.Brush; @@ -9,8 +10,10 @@ import org.nanoboot.utils.timecalc.swing.common.Widget; import org.nanoboot.utils.timecalc.swing.progress.battery.Battery; import org.nanoboot.utils.timecalc.swing.windows.MainWindow; import org.nanoboot.utils.timecalc.utils.common.NumberFormats; +import org.nanoboot.utils.timecalc.utils.property.BooleanProperty; import org.nanoboot.utils.timecalc.utils.property.Property; +import javax.swing.JLabel; import javax.swing.JMenuItem; import javax.swing.Timer; import java.awt.BasicStroke; @@ -33,6 +36,13 @@ public class ProgressFuelGauge extends Widget implements GetProperty { public static final Color BLACK2 = new Color(64, 64,64); public static final Color LIGHT_GRAY2 = new Color(160,160,160); + + protected JLabel fuelIconOrange = null; + protected JLabel fuelIconWhite = null; + + public final BooleanProperty fuelIconVisibleProperty + = new BooleanProperty(TimeCalcProperty.FUEL_ICON_VISIBLE.getKey()); + private List menuItems = null; public ProgressFuelGauge() { @@ -42,6 +52,17 @@ public class ProgressFuelGauge extends Widget implements GetProperty { setFocusable(false); setForeground(Color.GRAY); setBackground(MainWindow.BACKGROUND_COLOR); + + this.fuelIconOrange = new JLabel(FuelGaugeIcon.getInstance(true)); + this.fuelIconWhite = new JLabel(FuelGaugeIcon.getInstance(false)); + fuelIconOrange.setVisible(false); + fuelIconWhite.setVisible(false); + add(fuelIconOrange); + add(fuelIconWhite); + this.setLayout(null); + fuelIconOrange.setBounds(1, 1, 40, 40); + fuelIconWhite.setBounds(fuelIconOrange.getBounds()); + this.typeProperty.setValue(WidgetType.DAY.name().toLowerCase(Locale.ROOT)); new Timer(100, e -> { @@ -156,6 +177,19 @@ public class ProgressFuelGauge extends Widget implements GetProperty { ); brush.setColor(Color.WHITE); + if (fuelIconVisibleProperty.isEnabled()) { + if (donePercent() <= 0.15d) { + this.fuelIconOrange.setVisible(true); + this.fuelIconWhite.setVisible(false); + } else { + this.fuelIconOrange.setVisible(false); + this.fuelIconWhite.setVisible(true); + } + } else { + this.fuelIconOrange.setVisible(false); + this.fuelIconWhite.setVisible(false); + } + //tBrush.drawBorder(startX, startY, 10, length_ - 4 - 5, getAngle.apply(donePercent()), 3f, brush.getColor()); this.setToolTipText(NumberFormats.FORMATTER_TWO_DECIMAL_PLACES.format(donePercent() * 100d) + "%"); } diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/ConfigWindow.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/ConfigWindow.java index f1f4b28..a91f88f 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/ConfigWindow.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/ConfigWindow.java @@ -241,6 +241,8 @@ public class ConfigWindow extends TWindow { new JTextField(TimeCalcProperty.FUEL_TYPE.getKey()); private final JCheckBox fuelHiddenProperty = new JCheckBox(TimeCalcProperty.FUEL_HIDDEN.getKey()); + private final JCheckBox fuelIconVisibleProperty + = new JCheckBox(TimeCalcProperty.FUEL_ICON_VISIBLE.getKey()); // public final JCheckBox clockHiddenProperty = new JCheckBox(TimeCalcProperty.CLOCK_HIDDEN.getKey()); @@ -462,6 +464,7 @@ public class ConfigWindow extends TWindow { swingQuarterIconVisibleProperty.setSelected(enable); walkingHumanVisibleProperty.setSelected(enable); fuelVisibleProperty.setSelected(enable); + fuelIconVisibleProperty.setSelected(enable); // clockHiddenProperty.setSelected(!enable); // batteryMinuteHiddenProperty.setSelected(!enable); // batteryHourHiddenProperty.setSelected(!enable); @@ -547,7 +550,7 @@ public class ConfigWindow extends TWindow { squareVisibleProperty,squareHiddenProperty,squareTypeProperty, circleVisibleProperty,circleHiddenProperty,circleTypeProperty, dotVisibleProperty,dotHiddenProperty,dotTypeProperty, - fuelVisibleProperty,fuelTypeProperty,fuelHiddenProperty, + fuelVisibleProperty,fuelTypeProperty,fuelHiddenProperty,fuelIconVisibleProperty, swingVisibleProperty,swingHiddenProperty,swingTypeProperty,swingQuarterIconVisibleProperty, walkingHumanVisibleProperty,walkingHumanHiddenProperty,walkingHumanTypeProperty, lifeVisibleProperty,lifeHiddenProperty,lifeTypeProperty,lifeBirthDateProperty, diff --git a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java index e2b6679..d7b1f44 100644 --- a/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java +++ b/modules/time-calc-app/src/main/java/org/nanoboot/utils/timecalc/swing/windows/MainWindow.java @@ -423,6 +423,8 @@ public class MainWindow extends TWindow { .bindTo(timeCalcConfiguration.fuelTypeProperty); progressFuelGauge.hiddenProperty .bindTo(timeCalcConfiguration.fuelHiddenProperty); + progressFuelGauge.fuelIconVisibleProperty + .bindTo(timeCalcConfiguration.fuelIconVisibleProperty); add(progressFuelGauge); diff --git a/modules/time-calc-app/src/main/resources/fuel_gauge/fuel_gauge_icon_orange.gif b/modules/time-calc-app/src/main/resources/fuel_gauge/fuel_gauge_icon_orange.gif new file mode 100644 index 0000000..3977557 Binary files /dev/null and b/modules/time-calc-app/src/main/resources/fuel_gauge/fuel_gauge_icon_orange.gif differ diff --git a/modules/time-calc-app/src/main/resources/fuel_gauge/fuel_gauge_icon_white.gif b/modules/time-calc-app/src/main/resources/fuel_gauge/fuel_gauge_icon_white.gif new file mode 100644 index 0000000..e1738a6 Binary files /dev/null and b/modules/time-calc-app/src/main/resources/fuel_gauge/fuel_gauge_icon_white.gif differ diff --git a/modules/time-calc-app/src/main/resources/timecalc-default.conf b/modules/time-calc-app/src/main/resources/timecalc-default.conf index 4b795e5..8129cc9 100644 --- a/modules/time-calc-app/src/main/resources/timecalc-default.conf +++ b/modules/time-calc-app/src/main/resources/timecalc-default.conf @@ -64,6 +64,7 @@ dot.hidden=false fuel.visible=true fuel.type=day fuel.hidden=false +fuel.icon.visible=true swing.visible=true swing.type=day swing.hidden=false