Copy online settings if they're newer than offline (#285)

* Copy online settings if they're newer than offline

* Add range for opacity
This commit is contained in:
Lucwousin
2019-05-17 15:40:24 +02:00
committed by Kyleeld
parent 279b964b50
commit eb8077b885
3 changed files with 45 additions and 12 deletions

View File

@@ -147,7 +147,7 @@ public class SessionManager
{ {
// Initialize config for new session // Initialize config for new session
// If the session isn't logged in yet, don't switch to the new config // If the session isn't logged in yet, don't switch to the new config
configManager.switchSession(session); configManager.switchSession();
} }
eventBus.post(new SessionOpen()); eventBus.post(new SessionOpen());
@@ -177,7 +177,7 @@ public class SessionManager
accountSession = null; // No more account accountSession = null; // No more account
// Restore config // Restore config
configManager.switchSession(null); configManager.switchSession();
eventBus.post(new SessionClose()); eventBus.post(new SessionClose());
} }

View File

@@ -62,7 +62,7 @@ import lombok.extern.slf4j.Slf4j;
import net.runelite.api.coords.WorldPoint; import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.ConfigChanged;
import net.runelite.client.RuneLite; import net.runelite.client.RuneLite;
import net.runelite.client.account.AccountSession; import static net.runelite.client.RuneLite.PROFILES_DIR;
import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.EventBus;
import net.runelite.client.util.ColorUtil; import net.runelite.client.util.ColorUtil;
@@ -71,14 +71,14 @@ import net.runelite.client.util.ColorUtil;
public class ConfigManager public class ConfigManager
{ {
private static final String SETTINGS_FILE_NAME = "runeliteplus.properties"; private static final String SETTINGS_FILE_NAME = "runeliteplus.properties";
private static final String STANDARD_SETTINGS_FILE_NAME = "settings.properties";
private static final File SETTINGS_FILE = new File(RuneLite.RUNELITE_DIR, SETTINGS_FILE_NAME); private static final File SETTINGS_FILE = new File(RuneLite.RUNELITE_DIR, SETTINGS_FILE_NAME);
private static final File STANDARD_SETTINGS_FILE = new File(RuneLite.RUNELITE_DIR, "settings.properties"); private static final File STANDARD_SETTINGS_FILE = new File(RuneLite.RUNELITE_DIR, STANDARD_SETTINGS_FILE_NAME);
@Inject @Inject
EventBus eventBus; EventBus eventBus;
private final ScheduledExecutorService executor; private final ScheduledExecutorService executor;
private final ConfigInvocationHandler handler = new ConfigInvocationHandler(this); private final ConfigInvocationHandler handler = new ConfigInvocationHandler(this);
private final Properties properties = new Properties(); private final Properties properties = new Properties();
private final Map<String, String> pendingChanges = new HashMap<>(); private final Map<String, String> pendingChanges = new HashMap<>();
@@ -91,7 +91,7 @@ public class ConfigManager
executor.scheduleWithFixedDelay(this::sendConfig, 30, 30, TimeUnit.SECONDS); executor.scheduleWithFixedDelay(this::sendConfig, 30, 30, TimeUnit.SECONDS);
} }
public final void switchSession(AccountSession session) public final void switchSession()
{ {
// Ensure existing config is saved // Ensure existing config is saved
load(); load();
@@ -164,7 +164,7 @@ public class ConfigManager
catch (FileNotFoundException ex) catch (FileNotFoundException ex)
{ {
log.debug("Unable to load settings - no such file, syncing from standard settings"); log.debug("Unable to load settings - no such file, syncing from standard settings");
syncPropertiesFromFile(STANDARD_SETTINGS_FILE); syncLastModified();
} }
catch (IllegalArgumentException | IOException ex) catch (IllegalArgumentException | IOException ex)
{ {
@@ -201,11 +201,11 @@ public class ConfigManager
} }
} }
private void saveToFile(final File propertiesFile) throws IOException private void saveToFile() throws IOException
{ {
propertiesFile.getParentFile().mkdirs(); ConfigManager.SETTINGS_FILE.getParentFile().mkdirs();
try (FileOutputStream out = new FileOutputStream(propertiesFile)) try (FileOutputStream out = new FileOutputStream(ConfigManager.SETTINGS_FILE))
{ {
final FileLock lock = out.getChannel().lock(); final FileLock lock = out.getChannel().lock();
@@ -589,7 +589,7 @@ public class ConfigManager
{ {
try try
{ {
saveToFile(SETTINGS_FILE); saveToFile();
} }
catch (IOException ex) catch (IOException ex)
{ {
@@ -597,4 +597,32 @@ public class ConfigManager
} }
} }
} }
private void syncLastModified()
{
File newestFile;
newestFile = STANDARD_SETTINGS_FILE;
for (File profileDir : PROFILES_DIR.listFiles())
{
if (!profileDir.isDirectory())
{
continue;
}
for (File settings : profileDir.listFiles())
{
if (!settings.getName().equals(STANDARD_SETTINGS_FILE_NAME) ||
settings.lastModified() < newestFile.lastModified())
{
continue;
}
newestFile = settings;
}
}
syncPropertiesFromFile(newestFile);
}
} }

View File

@@ -29,6 +29,7 @@ package net.runelite.client.plugins.runeliteplus;
import net.runelite.client.config.Config; import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
import net.runelite.client.config.Range;
@ConfigGroup("runeliteplus") @ConfigGroup("runeliteplus")
public interface RuneLitePlusConfig extends Config public interface RuneLitePlusConfig extends Config
@@ -55,6 +56,10 @@ public interface RuneLitePlusConfig extends Config
return false; return false;
} }
@Range(
min = 15,
max = 100
)
@ConfigItem( @ConfigItem(
keyName = "opacityPercentage", keyName = "opacityPercentage",
name = "Opacity percentage", name = "Opacity percentage",