--- /dev/null
+package tim.prune.data;
+
+import java.io.File;
+
+/**
+ * Simple class to represent an entry in the recently-used files list
+ */
+public class RecentFile
+{
+ private boolean _regularLoad = true; // false for load via gpsbabel
+ private File _file = null;
+
+ /**
+ * Constructor
+ * @param inFile file
+ * @param inRegular true for regular load, false for gpsbabel load
+ */
+ public RecentFile(File inFile, boolean inRegular)
+ {
+ _file = inFile;
+ _regularLoad = inRegular;
+ }
+
+ /**
+ * Constructor
+ * @param inDesc String from config
+ */
+ public RecentFile(String inDesc)
+ {
+ if (inDesc != null && inDesc.length() > 3)
+ {
+ _regularLoad = (inDesc.charAt(0) != 'g');
+ _file = new File(inDesc.substring(1));
+ }
+ }
+
+ /**
+ * @return file object
+ */
+ public File getFile() {
+ return _file;
+ }
+
+ /**
+ * @return true for regular load, false for gpsbabel load
+ */
+ public boolean isRegularLoad() {
+ return _regularLoad;
+ }
+
+ /**
+ * @return true if file (still) exists
+ */
+ public boolean isValid() {
+ return _file != null && _file.exists() && _file.isFile();
+ }
+
+ /**
+ * @return string to save in config
+ */
+ public String getConfigString()
+ {
+ if (!isValid()) return "";
+ return (_regularLoad?"r":"g") + _file.getAbsolutePath();
+ }
+
+ /**
+ * Check for equality
+ * @param inOther other RecentFile object
+ * @return true if they both refer to the same file
+ */
+ public boolean isSameFile(RecentFile inOther)
+ {
+ return inOther != null && isValid() && inOther.isValid()
+ && (_file.equals(inOther._file) || _file.getAbsolutePath().equals(inOther._file.getAbsolutePath()));
+ // Note that the file.equals should be sufficient but sometimes it returns false even if the absolute paths are identical
+ }
+}