diff --git a/src/main/java/org/fenix/llanfair/Llanfair.java b/src/main/java/org/fenix/llanfair/Llanfair.java index ce524a7..14915c5 100644 --- a/src/main/java/org/fenix/llanfair/Llanfair.java +++ b/src/main/java/org/fenix/llanfair/Llanfair.java @@ -3,6 +3,7 @@ package org.fenix.llanfair; import org.fenix.llanfair.config.Settings; import org.fenix.llanfair.gui.RunPane; import org.fenix.utils.Resources; +import org.fenix.utils.UserSettings; import org.fenix.utils.gui.BorderlessFrame; import org.fenix.utils.locale.LocaleDelegate; import org.fenix.utils.locale.LocaleEvent; @@ -63,6 +64,9 @@ public class Llanfair extends BorderlessFrame implements TableModelListener, */ private Llanfair() { super( "Llanfair" ); + + UserSettings.initDirectory(); + LocaleDelegate.setDefault( Settings.language.get() ); LocaleDelegate.addLocaleListener( this ); diff --git a/src/main/java/org/fenix/llanfair/config/Settings.java b/src/main/java/org/fenix/llanfair/config/Settings.java index 9c4427f..8379b4d 100644 --- a/src/main/java/org/fenix/llanfair/config/Settings.java +++ b/src/main/java/org/fenix/llanfair/config/Settings.java @@ -2,6 +2,7 @@ package org.fenix.llanfair.config; import org.fenix.llanfair.Language; import org.fenix.llanfair.Run; +import org.fenix.utils.UserSettings; import org.fenix.utils.config.Configuration; import java.awt.*; @@ -179,7 +180,7 @@ public class Settings { * whose value is requested. */ private static void retrieve() { - global = Configuration.newInstance( new File( "./llanfair.xml" ) ); + global = Configuration.newInstance( new File(UserSettings.getSettingsPath() + File.separator + "llanfair.xml" ) ); if ( global.isEmpty() ) { setDefaultValues(); } diff --git a/src/main/java/org/fenix/utils/UserSettings.java b/src/main/java/org/fenix/utils/UserSettings.java new file mode 100644 index 0000000..ceb1729 --- /dev/null +++ b/src/main/java/org/fenix/utils/UserSettings.java @@ -0,0 +1,37 @@ +package org.fenix.utils; + +import java.io.File; + +public class UserSettings { + private static File settingsPath = new File(System.getProperty("user.home") + File.separator + ".llanfair"); + private static File splitsPath = new File(settingsPath.getPath() + File.separator + "splits"); + + /** + * Checks for the existence of the directory used to store the user's settings for the + * application. If it does not exist, we attempt to create it. + */ + public static void initDirectory() { + Boolean settingsPathExists = settingsPath.exists(); + + if (!settingsPathExists) + settingsPathExists = settingsPath.mkdir(); + + if (!splitsPath.exists() && settingsPathExists) + splitsPath.mkdir(); + } + + /** + * Returns the path to the location where user settings can be saved in. + */ + public static String getSettingsPath() { + return settingsPath.getPath(); + } + + /** + * Returns the path to the location where splits can be saved in. This is + * located as a subdirectory within the user settings directory. + */ + public static String getSplitsPath() { + return splitsPath.getPath(); + } +}