altoslib/altosui/telegps: Change log size configuration
[fw/altos] / altosui / AltosConfig.java
index e1ffebb4b95f1129144e1a86c70dadf2915ae78d..6eb7d40cb34ea88e7a0d60469ed9a179094bbd6a 100644 (file)
@@ -21,8 +21,9 @@ import java.awt.event.*;
 import javax.swing.*;
 import java.io.*;
 import java.util.concurrent.*;
-import org.altusmetrum.AltosLib.*;
 import java.text.*;
+import org.altusmetrum.altoslib_4.*;
+import org.altusmetrum.altosuilib_2.*;
 
 public class AltosConfig implements ActionListener {
 
@@ -160,9 +161,9 @@ public class AltosConfig implements ActionListener {
                        } finally {
                                try {
                                        stop_serial();
+                                       serial_line.close();
                                } catch (InterruptedException ie) {
                                }
-                               serial_line.close();
                        }
                }
 
@@ -228,22 +229,28 @@ public class AltosConfig implements ActionListener {
 
        void save_data() {
 
-               /* bounds check stuff */
-               if (config_ui.flight_log_max() > data.log_limit()) {
+               try {
+                       /* bounds check stuff */
+                       if (config_ui.flight_log_max() > data.log_space() / 1024) {
+                               JOptionPane.showMessageDialog(owner,
+                                                             String.format("Requested flight log, %dk, is larger than the available space, %dk.\n",
+                                                                           config_ui.flight_log_max(),
+                                                                           data.log_space() / 1024),
+                                                             "Maximum Flight Log Too Large",
+                                                             JOptionPane.ERROR_MESSAGE);
+                               return;
+                       }
+
+                       /* Pull data out of the UI and stuff back into our local data record */
+
+                       data.get_values(config_ui);
+                       run_serial_thread(serial_mode_save);
+               } catch (AltosConfigDataException ae) {
                        JOptionPane.showMessageDialog(owner,
-                                                     String.format("Requested flight log, %dk, is larger than the available space, %dk.\n",
-                                                                   config_ui.flight_log_max(),
-                                                                   data.log_limit()),
-                                                     "Maximum Flight Log Too Large",
+                                                     ae.getMessage(),
+                                                     "Configuration Data Error",
                                                      JOptionPane.ERROR_MESSAGE);
-                       return;
                }
-
-               /* Pull data out of the UI and stuff back into our local data record */
-
-               data.get_values(config_ui);
-
-               run_serial_thread(serial_mode_save);
        }
 
        public void actionPerformed(ActionEvent e) {
@@ -270,7 +277,7 @@ public class AltosConfig implements ActionListener {
        public AltosConfig(JFrame given_owner) {
                owner = given_owner;
 
-               device = AltosDeviceDialog.show(owner, Altos.product_any);
+               device = AltosDeviceUIDialog.show(owner, Altos.product_any);
                if (device != null) {
                        try {
                                serial_line = new AltosSerial(device);
@@ -297,4 +304,4 @@ public class AltosConfig implements ActionListener {
                        }
                }
        }
-}
\ No newline at end of file
+}