Change Notifier to be injectable service

Move notify methods to Notifier and change it to be injectable Guice
service.

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
Tomas Slusny
2017-12-24 03:04:29 +01:00
parent 82d277a8a5
commit 82ee4a0036
6 changed files with 121 additions and 46 deletions

View File

@@ -26,6 +26,7 @@ package net.runelite.client;
import com.google.common.escape.Escaper;
import com.google.common.escape.Escapers;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.io.IOException;
import java.util.ArrayList;
@@ -35,7 +36,7 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public class Notifier
{
private static enum OSType
private enum OSType
{
Windows, MacOS, Linux, Other
};
@@ -74,14 +75,28 @@ public class Notifier
log.debug("Detect OS: {}", DETECTED_OS);
}
private final String appName;
private final TrayIcon trayIcon;
public Notifier(final TrayIcon trayIcon)
Notifier(final String appName, final TrayIcon trayIcon)
{
this.appName = appName;
this.trayIcon = trayIcon;
}
public void sendNotification(
public void notify(String message)
{
notify(message, TrayIcon.MessageType.NONE);
}
public void notify(String message, TrayIcon.MessageType type)
{
sendNotification(appName, message, type, null);
Toolkit.getDefaultToolkit().beep();
}
private void sendNotification(
final String title,
final String message,
final TrayIcon.MessageType type,

View File

@@ -34,7 +34,6 @@ import java.awt.AWTException;
import java.awt.Frame;
import java.awt.Image;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
@@ -118,7 +117,7 @@ public class RuneLite
private AccountSession accountSession;
private Notifier notifier;
Notifier notifier;
static
{
@@ -186,7 +185,7 @@ public class RuneLite
eventBus.register(chatMessageManager);
// Setup the notifier
notifier = new Notifier(trayIcon);
notifier = new Notifier(properties.getTitle(), trayIcon);
// Load the plugins, but does not start them yet.
// This will initialize configuration
@@ -409,17 +408,6 @@ public class RuneLite
return trayIcon;
}
public void notify(String message)
{
notify(message, TrayIcon.MessageType.NONE);
}
public void notify(String message, TrayIcon.MessageType type)
{
notifier.sendNotification(properties.getTitle(), message, type, null);
Toolkit.getDefaultToolkit().beep();
}
public AccountSession getAccountSession()
{
return accountSession;

View File

@@ -71,6 +71,12 @@ public class RuneliteModule extends AbstractModule
return runelite.getGui();
}
@Provides
Notifier provideNotifier(RuneLite runeLite)
{
return runeLite.notifier;
}
@Provides
@Singleton
RuneliteConfig provideConfig(ConfigManager configManager)

View File

@@ -25,6 +25,69 @@
*/
package net.runelite.client.plugins.idlenotifier;
import static net.runelite.api.AnimationID.COOKING_FIRE;
import static net.runelite.api.AnimationID.COOKING_RANGE;
import static net.runelite.api.AnimationID.CRAFTING_GLASSBLOWING;
import static net.runelite.api.AnimationID.FISHING_CAGE;
import static net.runelite.api.AnimationID.FISHING_HARPOON;
import static net.runelite.api.AnimationID.FISHING_KARAMBWAN;
import static net.runelite.api.AnimationID.FISHING_NET;
import static net.runelite.api.AnimationID.FISHING_POLE_CAST;
import static net.runelite.api.AnimationID.FLETCHING_BOW_CUTTING;
import static net.runelite.api.AnimationID.FLETCHING_STRING_MAGIC_LONGBOW;
import static net.runelite.api.AnimationID.FLETCHING_STRING_MAGIC_SHORTBOW;
import static net.runelite.api.AnimationID.FLETCHING_STRING_MAPLE_LONGBOW;
import static net.runelite.api.AnimationID.FLETCHING_STRING_MAPLE_SHORTBOW;
import static net.runelite.api.AnimationID.FLETCHING_STRING_NORMAL_LONGBOW;
import static net.runelite.api.AnimationID.FLETCHING_STRING_NORMAL_SHORTBOW;
import static net.runelite.api.AnimationID.FLETCHING_STRING_OAK_LONGBOW;
import static net.runelite.api.AnimationID.FLETCHING_STRING_OAK_SHORTBOW;
import static net.runelite.api.AnimationID.FLETCHING_STRING_WILLOW_LONGBOW;
import static net.runelite.api.AnimationID.FLETCHING_STRING_WILLOW_SHORTBOW;
import static net.runelite.api.AnimationID.FLETCHING_STRING_YEW_LONGBOW;
import static net.runelite.api.AnimationID.FLETCHING_STRING_YEW_SHORTBOW;
import static net.runelite.api.AnimationID.GEM_CUTTING_DIAMOND;
import static net.runelite.api.AnimationID.GEM_CUTTING_EMERALD;
import static net.runelite.api.AnimationID.GEM_CUTTING_JADE;
import static net.runelite.api.AnimationID.GEM_CUTTING_OPAL;
import static net.runelite.api.AnimationID.GEM_CUTTING_REDTOPAZ;
import static net.runelite.api.AnimationID.GEM_CUTTING_RUBY;
import static net.runelite.api.AnimationID.GEM_CUTTING_SAPPHIRE;
import static net.runelite.api.AnimationID.HERBLORE_POTIONMAKING;
import static net.runelite.api.AnimationID.IDLE;
import static net.runelite.api.AnimationID.MAGIC_CHARGING_ORBS;
import static net.runelite.api.AnimationID.MINING_ADAMANT_PICKAXE;
import static net.runelite.api.AnimationID.MINING_BLACK_PICKAXE;
import static net.runelite.api.AnimationID.MINING_BRONZE_PICKAXE;
import static net.runelite.api.AnimationID.MINING_DRAGON_PICKAXE;
import static net.runelite.api.AnimationID.MINING_DRAGON_PICKAXE_ORN;
import static net.runelite.api.AnimationID.MINING_INFERNAL_PICKAXE;
import static net.runelite.api.AnimationID.MINING_IRON_PICKAXE;
import static net.runelite.api.AnimationID.MINING_MITHRIL_PICKAXE;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_ADAMANT;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_BLACK;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_BRONZE;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_DRAGON;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_DRAGON_ORN;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_INFERNAL;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_IRON;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_MITHRIL;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_RUNE;
import static net.runelite.api.AnimationID.MINING_MOTHERLODE_STEEL;
import static net.runelite.api.AnimationID.MINING_RUNE_PICKAXE;
import static net.runelite.api.AnimationID.MINING_STEEL_PICKAXE;
import static net.runelite.api.AnimationID.SMITHING_ANVIL;
import static net.runelite.api.AnimationID.SMITHING_CANNONBALL;
import static net.runelite.api.AnimationID.SMITHING_SMELTING;
import static net.runelite.api.AnimationID.WOODCUTTING_ADAMANT;
import static net.runelite.api.AnimationID.WOODCUTTING_BLACK;
import static net.runelite.api.AnimationID.WOODCUTTING_BRONZE;
import static net.runelite.api.AnimationID.WOODCUTTING_DRAGON;
import static net.runelite.api.AnimationID.WOODCUTTING_INFERNAL;
import static net.runelite.api.AnimationID.WOODCUTTING_IRON;
import static net.runelite.api.AnimationID.WOODCUTTING_MITHRIL;
import static net.runelite.api.AnimationID.WOODCUTTING_RUNE;
import static net.runelite.api.AnimationID.WOODCUTTING_STEEL;
import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides;
import java.time.Duration;
@@ -33,12 +96,11 @@ import java.time.temporal.ChronoUnit;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Actor;
import static net.runelite.api.AnimationID.*;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Player;
import net.runelite.api.Skill;
import net.runelite.client.RuneLite;
import net.runelite.client.Notifier;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.events.AnimationChanged;
import net.runelite.client.events.GameStateChanged;
@@ -53,7 +115,7 @@ import net.runelite.client.ui.ClientUI;
public class IdleNotifierPlugin extends Plugin
{
@Inject
RuneLite runelite;
Notifier notifier;
@Inject
ClientUI gui;
@@ -260,7 +322,7 @@ public class IdleNotifierPlugin extends Plugin
}
if (config.sendTrayNotification())
{
runelite.notify(message);
notifier.notify(message);
}
}
}

View File

@@ -25,31 +25,11 @@
*/
package net.runelite.client.plugins.volcanicmine;
import static java.lang.Math.abs;
import com.google.common.eventbus.Subscribe;
import com.google.inject.Binder;
import com.google.inject.Provides;
import java.awt.Color;
import static java.lang.Math.abs;
import net.runelite.api.ChatMessageType;
import net.runelite.api.Client;
import net.runelite.api.GameObject;
import net.runelite.api.GameState;
import net.runelite.api.NPC;
import net.runelite.api.Player;
import net.runelite.api.Point;
import net.runelite.api.Region;
import net.runelite.api.Tile;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.RuneLite;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule;
import net.runelite.client.ui.overlay.Overlay;
import javax.annotation.Nullable;
import javax.inject.Inject;
import java.time.Duration;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
@@ -59,10 +39,31 @@ import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.ChatMessageType;
import net.runelite.api.Client;
import net.runelite.api.GameObject;
import net.runelite.api.GameState;
import net.runelite.api.NPC;
import net.runelite.api.Player;
import net.runelite.api.Point;
import net.runelite.api.Prayer;
import net.runelite.api.Query;
import net.runelite.api.Region;
import net.runelite.api.Tile;
import net.runelite.api.queries.NPCQuery;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.Notifier;
import net.runelite.client.RuneLite;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule;
import net.runelite.client.ui.overlay.Overlay;
@PluginDescriptor(
name = "Volcanic mine helper"
@@ -87,6 +88,9 @@ public class VolcanicMinePlugin extends Plugin
@Inject
RuneLite runeLite;
@Inject
Notifier notifier;
@Inject
VolcanicMineConfig config;
@@ -302,7 +306,7 @@ public class VolcanicMinePlugin extends Plugin
}
if (config.sendTrayNotification())
{
runeLite.notify(message);
notifier.notify(message);
}
}

View File

@@ -32,7 +32,7 @@ import java.time.Instant;
import java.time.temporal.ChronoUnit;
import javax.inject.Inject;
import net.runelite.api.ChatMessageType;
import net.runelite.client.RuneLite;
import net.runelite.client.Notifier;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.events.ChatMessage;
import net.runelite.client.plugins.Plugin;
@@ -46,7 +46,7 @@ import net.runelite.client.ui.overlay.Overlay;
public class WoodcuttingPlugin extends Plugin
{
@Inject
RuneLite runelite;
Notifier notifier;
@Inject
WoodcuttingOverlay overlay;
@@ -91,7 +91,7 @@ public class WoodcuttingPlugin extends Plugin
if (event.getMessage().contains("A bird's nest falls out of the tree") && config.showNestNotification())
{
runelite.notify("A bird nest has spawned!");
notifier.notify("A bird nest has spawned!");
}
}
}