Merge pull request #4465 from deathbeam/add-username-to-title

Add toggle for displaying username in title
This commit is contained in:
Tomas Slusny
2018-10-16 09:07:34 +02:00
committed by GitHub
2 changed files with 72 additions and 1 deletions

View File

@@ -119,6 +119,17 @@ public interface RuneLiteConfig extends Config
return WarningOnExit.LOGGED_IN;
}
@ConfigItem(
keyName = "usernameInTitle",
name = "Display username in title",
description = "Toggles displaying of username in client title",
position = 18
)
default boolean usernameInTitle()
{
return true;
}
@ConfigItem(
keyName = "notificationTray",
name = "Enable tray notifications",

View File

@@ -24,6 +24,7 @@
*/
package net.runelite.client.ui;
import com.google.common.base.Strings;
import com.google.common.eventbus.Subscribe;
import java.applet.Applet;
import java.awt.Canvas;
@@ -42,6 +43,7 @@ import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
@@ -58,10 +60,13 @@ import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.Constants;
import net.runelite.api.GameState;
import net.runelite.api.Player;
import net.runelite.api.Point;
import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.GameStateChanged;
import net.runelite.client.RuneLite;
import net.runelite.client.RuneLiteProperties;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.config.ExpandResizeType;
import net.runelite.client.config.Keybind;
@@ -111,6 +116,7 @@ public class ClientUI
private final KeyManager keyManager;
private final Applet client;
private final ConfigManager configManager;
private final Provider<ClientThread> clientThreadProvider;
private final CardLayout cardLayout = new CardLayout();
private ContainableFrame frame;
private JPanel navContainer;
@@ -131,13 +137,15 @@ public class ClientUI
RuneLiteConfig config,
KeyManager keyManager,
@Nullable Applet client,
ConfigManager configManager)
ConfigManager configManager,
Provider<ClientThread> clientThreadProvider)
{
this.properties = properties;
this.config = config;
this.keyManager = keyManager;
this.client = client;
this.configManager = configManager;
this.clientThreadProvider = clientThreadProvider;
}
@Subscribe
@@ -235,6 +243,44 @@ public class ClientUI
});
}
@Subscribe
public void onGameStateChanged(final GameStateChanged event)
{
if (event.getGameState() != GameState.LOGGED_IN || !(client instanceof Client) || !config.usernameInTitle())
{
return;
}
final Client client = (Client)this.client;
final ClientThread clientThread = clientThreadProvider.get();
// Keep scheduling event until we get our name
clientThread.invokeLater(() ->
{
if (client.getGameState() != GameState.LOGGED_IN)
{
return true;
}
final Player player = client.getLocalPlayer();
if (player == null)
{
return false;
}
final String name = player.getName();
if (Strings.isNullOrEmpty(name))
{
return false;
}
frame.setTitle(properties.getTitle() + " - " + name);
return true;
});
}
/**
* Initialize UI.
*
@@ -680,6 +726,20 @@ public class ClientUI
return;
}
if (config.usernameInTitle() && (client instanceof Client))
{
final Player player = ((Client)client).getLocalPlayer();
if (player != null && player.getName() != null)
{
frame.setTitle(properties.getTitle() + " - " + player.getName());
}
}
else
{
frame.setTitle(properties.getTitle());
}
if (frame.isAlwaysOnTopSupported())
{
frame.setAlwaysOnTop(config.gameAlwaysOnTop());