timers plugin: add option to loop timers

This commit is contained in:
Mitchell Kovacs
2020-04-22 17:48:39 -04:00
committed by GitHub
parent 188a9414ff
commit 15b3d39446
6 changed files with 30 additions and 0 deletions

View File

@@ -122,6 +122,11 @@ public class ClockManager
{ {
notifier.notify("[" + timer.getName() + "] has finished counting down."); notifier.notify("[" + timer.getName() + "] has finished counting down.");
} }
if (timer.isLoop())
{
timer.start();
}
} }
} }

View File

@@ -57,6 +57,10 @@ public class ClockTabPanel extends TabContentPanel
static final ImageIcon RESET_ICON_HOVER; static final ImageIcon RESET_ICON_HOVER;
static final ImageIcon START_ICON; static final ImageIcon START_ICON;
static final ImageIcon START_ICON_HOVER; static final ImageIcon START_ICON_HOVER;
static final ImageIcon LOOP_ICON;
static final ImageIcon LOOP_ICON_HOVER;
static final ImageIcon LOOP_SELECTED_ICON;
static final ImageIcon LOOP_SELECTED_ICON_HOVER;
private static final ImageIcon ADD_ICON; private static final ImageIcon ADD_ICON;
private static final ImageIcon ADD_ICON_HOVER; private static final ImageIcon ADD_ICON_HOVER;
@@ -73,6 +77,8 @@ public class ClockTabPanel extends TabContentPanel
BufferedImage resetIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "reset_icon.png"); BufferedImage resetIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "reset_icon.png");
BufferedImage startIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "start_icon.png"); BufferedImage startIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "start_icon.png");
BufferedImage addIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "add_icon.png"); BufferedImage addIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "add_icon.png");
BufferedImage loopIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "loop_icon.png");
BufferedImage loopSelectedIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "loop_selected_icon.png");
DELETE_ICON = new ImageIcon(deleteIcon); DELETE_ICON = new ImageIcon(deleteIcon);
DELETE_ICON_HOVER = new ImageIcon(ImageUtil.luminanceOffset(deleteIcon, -80)); DELETE_ICON_HOVER = new ImageIcon(ImageUtil.luminanceOffset(deleteIcon, -80));
@@ -86,6 +92,10 @@ public class ClockTabPanel extends TabContentPanel
START_ICON_HOVER = new ImageIcon(ImageUtil.luminanceOffset(startIcon, -80)); START_ICON_HOVER = new ImageIcon(ImageUtil.luminanceOffset(startIcon, -80));
ADD_ICON = new ImageIcon(addIcon); ADD_ICON = new ImageIcon(addIcon);
ADD_ICON_HOVER = new ImageIcon(ImageUtil.alphaOffset(addIcon, 0.53f)); ADD_ICON_HOVER = new ImageIcon(ImageUtil.alphaOffset(addIcon, 0.53f));
LOOP_ICON = new ImageIcon(loopIcon);
LOOP_ICON_HOVER = new ImageIcon(ImageUtil.luminanceOffset(loopIcon, -80));
LOOP_SELECTED_ICON = new ImageIcon(loopSelectedIcon);
LOOP_SELECTED_ICON_HOVER = new ImageIcon(ImageUtil.luminanceOffset(loopSelectedIcon, -80));
} }
ClockTabPanel(ClockManager clockManager) ClockTabPanel(ClockManager clockManager)

View File

@@ -45,6 +45,9 @@ class Timer extends Clock
@Getter(AccessLevel.NONE) @Getter(AccessLevel.NONE)
private transient boolean warning; private transient boolean warning;
// whether this timer should loop or not
private boolean loop;
Timer(String name, long duration) Timer(String name, long duration)
{ {
super(name); super(name);

View File

@@ -27,6 +27,7 @@ package net.runelite.client.plugins.timetracking.clocks;
import java.awt.Color; import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import javax.swing.JButton; import javax.swing.JButton;
import javax.swing.JToggleButton;
import net.runelite.client.ui.ColorScheme; import net.runelite.client.ui.ColorScheme;
import net.runelite.client.util.SwingUtil; import net.runelite.client.util.SwingUtil;
@@ -38,6 +39,17 @@ class TimerPanel extends ClockPanel
{ {
super(clockManager, timer, "timer", true); super(clockManager, timer, "timer", true);
JToggleButton loopButton = new JToggleButton(ClockTabPanel.LOOP_ICON);
loopButton.setRolloverIcon(ClockTabPanel.LOOP_ICON_HOVER);
loopButton.setSelectedIcon(ClockTabPanel.LOOP_SELECTED_ICON);
loopButton.setRolloverSelectedIcon(ClockTabPanel.LOOP_SELECTED_ICON_HOVER);
SwingUtil.removeButtonDecorations(loopButton);
loopButton.setPreferredSize(new Dimension(16, 14));
loopButton.setToolTipText("Loop timer");
loopButton.addActionListener(e -> timer.setLoop(!timer.isLoop()));
loopButton.setSelected(timer.isLoop());
leftActions.add(loopButton);
JButton deleteButton = new JButton(ClockTabPanel.DELETE_ICON); JButton deleteButton = new JButton(ClockTabPanel.DELETE_ICON);
SwingUtil.removeButtonDecorations(deleteButton); SwingUtil.removeButtonDecorations(deleteButton);
deleteButton.setRolloverIcon(ClockTabPanel.DELETE_ICON_HOVER); deleteButton.setRolloverIcon(ClockTabPanel.DELETE_ICON_HOVER);

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B