11package io .pslab .fragment ;
22
33import android .os .Bundle ;
4-
5- import androidx .fragment .app .Fragment ;
6-
4+ import android .view .KeyEvent ;
75import android .view .LayoutInflater ;
6+ import android .view .MotionEvent ;
87import android .view .View ;
98import android .view .ViewGroup ;
9+ import android .view .inputmethod .EditorInfo ;
1010import android .widget .AdapterView ;
1111import android .widget .ArrayAdapter ;
1212import android .widget .CheckBox ;
1313import android .widget .CompoundButton ;
14+ import android .widget .EditText ;
1415import android .widget .SeekBar ;
1516import android .widget .Spinner ;
1617import android .widget .TextView ;
1718
19+ import androidx .fragment .app .Fragment ;
20+
1821import io .pslab .R ;
1922import io .pslab .activity .OscilloscopeActivity ;
2023import io .pslab .others .FloatSeekBar ;
@@ -29,8 +32,9 @@ public class DataAnalysisFragment extends Fragment {
2932 private Spinner spinnerChannelSelectVerticalOffset ;
3033 private FloatSeekBar seekBarHorizontalOffset ;
3134 private FloatSeekBar seekBarVerticalOffset ;
32- private TextView textViewHorizontalOffset ;
33- private TextView textViewVerticalOffset ;
35+ private EditText editTextHorizontalOffset ;
36+ private EditText editTextVerticalOffset ;
37+ boolean _ignore = false ;
3438
3539 public static DataAnalysisFragment newInstance () {
3640 return new DataAnalysisFragment ();
@@ -50,8 +54,8 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
5054 spinnerChannelSelectVerticalOffset = v .findViewById (R .id .spinner_channel_select_vertical_offset );
5155 seekBarHorizontalOffset = v .findViewById (R .id .seekbar_horizontal_offset );
5256 seekBarVerticalOffset = v .findViewById (R .id .seekbar_vertical_offset );
53- textViewHorizontalOffset = v .findViewById (R .id .textview_horizontal_offset );
54- textViewVerticalOffset = v .findViewById (R .id .textview_vertical_offset );
57+ editTextHorizontalOffset = v .findViewById (R .id .edittext_horizontal_offset );
58+ editTextVerticalOffset = v .findViewById (R .id .edittext_vertical_offset );
5559 checkBoxFouierTransform = v .findViewById (R .id .checkBox_fourier_da );
5660 boolean tabletSize = getResources ().getBoolean (R .bool .isTablet );
5761 ArrayAdapter <String > curveFitAdapter ;
@@ -158,8 +162,10 @@ public void onNothingSelected(AdapterView<?> adapterView) {
158162 seekBarHorizontalOffset .setOnSeekBarChangeListener (new SeekBar .OnSeekBarChangeListener () {
159163 @ Override
160164 public void onProgressChanged (SeekBar seekBar , int i , boolean b ) {
161- textViewHorizontalOffset .setText (String .format ("%sms" , seekBarHorizontalOffset .getValue ()));
162- ((OscilloscopeActivity ) getActivity ()).xOffsets .put (spinnerChannelSelectHorizontalOffset .getSelectedItem ().toString (), seekBarHorizontalOffset .getValue ());
165+ if (!_ignore ) {
166+ editTextHorizontalOffset .setText (String .format ("%s" , seekBarHorizontalOffset .getValue ()));
167+ ((OscilloscopeActivity ) getActivity ()).xOffsets .put (spinnerChannelSelectHorizontalOffset .getSelectedItem ().toString (), seekBarHorizontalOffset .getValue ());
168+ }
163169 }
164170
165171 @ Override
@@ -172,14 +178,17 @@ public void onStopTrackingTouch(SeekBar seekBar) {
172178 // Do nothing
173179 }
174180 });
181+ seekBarHorizontalOffset .setProgress (100 );
175182 seekBarHorizontalOffset .setProgress (0 );
176183
177184 seekBarVerticalOffset .setters (-1 * ((OscilloscopeActivity ) getActivity ()).yAxisScale , ((OscilloscopeActivity ) getActivity ()).yAxisScale );
178185 seekBarVerticalOffset .setOnSeekBarChangeListener (new SeekBar .OnSeekBarChangeListener () {
179186 @ Override
180187 public void onProgressChanged (SeekBar seekBar , int i , boolean b ) {
181- textViewVerticalOffset .setText (String .format ("%sV" , seekBarVerticalOffset .getValue ()));
182- ((OscilloscopeActivity ) getActivity ()).yOffsets .put (spinnerChannelSelectVerticalOffset .getSelectedItem ().toString (), seekBarVerticalOffset .getValue ());
188+ if (!_ignore ) {
189+ editTextVerticalOffset .setText (String .format ("%s" , seekBarVerticalOffset .getValue ()));
190+ ((OscilloscopeActivity ) getActivity ()).yOffsets .put (spinnerChannelSelectVerticalOffset .getSelectedItem ().toString (), seekBarVerticalOffset .getValue ());
191+ }
183192 }
184193
185194 @ Override
@@ -194,13 +203,87 @@ public void onStopTrackingTouch(SeekBar seekBar) {
194203 });
195204 seekBarVerticalOffset .setProgress (50 );
196205
206+ editTextHorizontalOffset .setOnTouchListener (new View .OnTouchListener () {
207+ @ Override
208+ public boolean onTouch (View v , MotionEvent event ) {
209+ editTextHorizontalOffset .setCursorVisible (true );
210+ return false ;
211+ }
212+ });
213+
214+ editTextHorizontalOffset .setOnEditorActionListener (new EditText .OnEditorActionListener () {
215+ @ Override
216+ public boolean onEditorAction (TextView textView , int i , KeyEvent keyEvent ) {
217+ if (i == EditorInfo .IME_ACTION_DONE ) {
218+ if (!editTextHorizontalOffset .getText ().toString ().isEmpty () && !editTextHorizontalOffset .getText ().toString ().equals ("-" ) && !editTextHorizontalOffset .getText ().toString ().equals ("." ) && !editTextVerticalOffset .getText ().toString ().equals ("-." )) {
219+ double xAxisScale = (((OscilloscopeActivity ) getActivity ()).xAxisScale == 875 ) ? ((OscilloscopeActivity ) getActivity ()).xAxisScale / 1000.0 : ((OscilloscopeActivity ) getActivity ()).xAxisScale ;
220+ _ignore = true ;
221+ if (Double .parseDouble (editTextHorizontalOffset .getText ().toString ()) > xAxisScale ) {
222+ editTextHorizontalOffset .setText (String .format ("%s" , xAxisScale ));
223+ seekBarHorizontalOffset .setValue (xAxisScale );
224+ ((OscilloscopeActivity ) getActivity ()).xOffsets .put (spinnerChannelSelectHorizontalOffset .getSelectedItem ().toString (), seekBarHorizontalOffset .getValue ());
225+ _ignore = false ;
226+ } else {
227+ seekBarHorizontalOffset .setValue (Double .parseDouble (editTextHorizontalOffset .getText ().toString ()));
228+ editTextHorizontalOffset .setText (String .format ("%s" , Double .parseDouble (editTextHorizontalOffset .getText ().toString ())));
229+ ((OscilloscopeActivity ) getActivity ()).xOffsets .put (spinnerChannelSelectHorizontalOffset .getSelectedItem ().toString (), seekBarHorizontalOffset .getValue ());
230+ _ignore = false ;
231+ }
232+ } else {
233+ seekBarHorizontalOffset .setProgress (0 );
234+ }
235+ }
236+ editTextHorizontalOffset .setCursorVisible (false );
237+ return false ;
238+ }
239+ });
240+
241+ editTextVerticalOffset .setOnTouchListener (new View .OnTouchListener () {
242+ @ Override
243+ public boolean onTouch (View v , MotionEvent event ) {
244+ editTextVerticalOffset .setCursorVisible (true );
245+ return false ;
246+ }
247+ });
248+
249+ editTextVerticalOffset .setOnEditorActionListener (new EditText .OnEditorActionListener () {
250+ @ Override
251+ public boolean onEditorAction (TextView textView , int i , KeyEvent keyEvent ) {
252+ if (i == EditorInfo .IME_ACTION_DONE ) {
253+ if (!editTextVerticalOffset .getText ().toString ().isEmpty () && !editTextVerticalOffset .getText ().toString ().equals ("-" ) && !editTextVerticalOffset .getText ().toString ().equals ("." ) && !editTextVerticalOffset .getText ().toString ().equals ("-." )) {
254+ _ignore = true ;
255+ if (Double .parseDouble (editTextVerticalOffset .getText ().toString ()) > ((OscilloscopeActivity ) getActivity ()).yAxisScale ) {
256+ editTextVerticalOffset .setText (String .format ("%s" , ((OscilloscopeActivity ) getActivity ()).yAxisScale ));
257+ seekBarVerticalOffset .setValue (((OscilloscopeActivity ) getActivity ()).yAxisScale );
258+ ((OscilloscopeActivity ) getActivity ()).yOffsets .put (spinnerChannelSelectVerticalOffset .getSelectedItem ().toString (), seekBarVerticalOffset .getValue ());
259+ _ignore = false ;
260+ } else if (Double .parseDouble (editTextVerticalOffset .getText ().toString ()) < -((OscilloscopeActivity ) getActivity ()).yAxisScale ) {
261+ editTextVerticalOffset .setText (String .format ("%s" , -((OscilloscopeActivity ) getActivity ()).yAxisScale ));
262+ seekBarVerticalOffset .setValue (-((OscilloscopeActivity ) getActivity ()).yAxisScale );
263+ ((OscilloscopeActivity ) getActivity ()).yOffsets .put (spinnerChannelSelectVerticalOffset .getSelectedItem ().toString (), seekBarVerticalOffset .getValue ());
264+ _ignore = false ;
265+ } else {
266+ seekBarVerticalOffset .setValue (Double .parseDouble (editTextVerticalOffset .getText ().toString ()));
267+ editTextVerticalOffset .setText (String .format ("%s" , Double .parseDouble (editTextVerticalOffset .getText ().toString ())));
268+ ((OscilloscopeActivity ) getActivity ()).yOffsets .put (spinnerChannelSelectVerticalOffset .getSelectedItem ().toString (), seekBarVerticalOffset .getValue ());
269+ _ignore = false ;
270+ }
271+ } else {
272+ seekBarVerticalOffset .setProgress (50 );
273+ }
274+ }
275+ editTextVerticalOffset .setCursorVisible (false );
276+
277+ return false ;
278+ }
279+ });
280+
197281 checkBoxFouierTransform .setOnCheckedChangeListener (new CompoundButton .OnCheckedChangeListener () {
198282 @ Override
199283 public void onCheckedChanged (CompoundButton buttonView , boolean isChecked ) {
200284 ((OscilloscopeActivity ) getActivity ()).isFourierTransformSelected = isChecked ;
201285 }
202286 });
203-
204287 return v ;
205288 }
206289}
0 commit comments