diff options
Diffstat (limited to 'altosuilib/AltosEepromMonitorUI.java')
| -rw-r--r-- | altosuilib/AltosEepromMonitorUI.java | 40 | 
1 files changed, 30 insertions, 10 deletions
diff --git a/altosuilib/AltosEepromMonitorUI.java b/altosuilib/AltosEepromMonitorUI.java index 11dd4adb..b72dfdf4 100644 --- a/altosuilib/AltosEepromMonitorUI.java +++ b/altosuilib/AltosEepromMonitorUI.java @@ -37,6 +37,8 @@ public class AltosEepromMonitorUI extends AltosUIDialog implements AltosEepromMo  	int		min_state, max_state;  	ActionListener	listener; +	static final int	progress_max = 10000; +  	public AltosEepromMonitorUI(JFrame owner) {  		super (owner, "Download Flight Data", false); @@ -102,7 +104,7 @@ public class AltosEepromMonitorUI extends AltosUIDialog implements AltosEepromMo  		pbar = new JProgressBar();  		pbar.setMinimum(0); -		pbar.setMaximum(1000); +		pbar.setMaximum(progress_max);  		pbar.setValue(0);  		pbar.setString("startup");  		pbar.setStringPainted(true); @@ -155,16 +157,34 @@ public class AltosEepromMonitorUI extends AltosUIDialog implements AltosEepromMo  	}  	private void set_value_internal(String state_name, int state, int state_block, int block) { -		if (state_block > 100) -			state_block = 100; -		if (state < min_state) state = min_state; -		if (state >= max_state) state = max_state - 1; -		state -= min_state; - -		int pos = state * 100 + state_block; +		double	pos; +		String	s; + +		if (min_state == AltosLib.ao_flight_invalid) { +			int	lblock = block; +			if (lblock > 1000) +				lblock = 1000; +			pos = lblock / 1000.0; +			s = String.format("block %d", block); +		} else { +			if (state_block > 100) +				state_block = 100; +			if (state < min_state) state = min_state; +			if (state >= max_state) state = max_state - 1; +			state -= min_state; + +			int	nstate = max_state - min_state; + +			double	spos = (double) (state - min_state) / (double) nstate; +			double	bpos = state_block / 100.0; + +			pos = spos + bpos / nstate; + +			s = String.format("block %d state %s", block, state_name); +		} -		pbar.setString(String.format("block %d state %s", block, state_name)); -		pbar.setValue(pos); +		pbar.setString(s); +		pbar.setValue((int) (pos * progress_max));  	}  	public void set_value(String in_state_name, int in_state, int in_state_block, int in_block) {  | 
