Skip to content

Commit c20fceb

Browse files
neel1998makoteq
authored andcommitted
action bar added to osciiloscope and robotic arm (fossasia#1940)
1 parent 067d19d commit c20fceb

File tree

10 files changed

+533
-504
lines changed

10 files changed

+533
-504
lines changed

app/src/main/java/io/pslab/activity/OscilloscopeActivity.java

Lines changed: 80 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@
2020
import android.support.design.widget.Snackbar;
2121
import android.support.v4.app.Fragment;
2222
import android.support.v7.app.AppCompatActivity;
23+
import android.support.v7.widget.Toolbar;
2324
import android.view.Display;
2425
import android.view.GestureDetector;
26+
import android.view.Menu;
27+
import android.view.MenuItem;
2528
import android.view.MotionEvent;
2629
import android.view.View;
2730
import android.view.Window;
@@ -161,8 +164,6 @@ public class OscilloscopeActivity extends AppCompatActivity implements View.OnCl
161164
private Fragment dataAnalysisFragment;
162165
private Fragment xyPlotFragment;
163166
private Fragment playbackFragment;
164-
@BindView(R.id.imageView_led_os)
165-
ImageView ledImageView;
166167
@BindView(R.id.show_guide_oscilloscope)
167168
TextView showText;
168169
private ScienceLab scienceLab;
@@ -179,9 +180,7 @@ public class OscilloscopeActivity extends AppCompatActivity implements View.OnCl
179180
private volatile boolean monitor = true;
180181
private BottomSheetBehavior bottomSheetBehavior;
181182
private GestureDetector gestureDetector;
182-
private boolean btnLongpressed;
183183
private double maxAmp, maxFreq;
184-
private ImageView recordButton;
185184
private boolean isRecording = false;
186185
private Realm realm;
187186
public RealmResults<OscilloscopeData> recordedOscilloscopeData;
@@ -205,6 +204,9 @@ public class OscilloscopeActivity extends AppCompatActivity implements View.OnCl
205204
private String[] loggingYdata = new String[4];
206205
public String xyPlotAxis1 = "CH1";
207206
public String xyPlotAxis2 = "CH2";
207+
private boolean isPlayingback = false;
208+
private boolean isPlaying = false;
209+
private MenuItem playMenu;
208210

209211
private enum CHANNEL {CH1, CH2, CH3, MIC}
210212

@@ -229,6 +231,14 @@ public void onClick(View v) {
229231
});
230232
mainLayout = findViewById(R.id.oscilloscope_mail_layout);
231233

234+
Toolbar toolbar = findViewById(R.id.toolbar);
235+
setSupportActionBar(toolbar);
236+
getSupportActionBar().setTitle(R.string.oscilloscope);
237+
if (getSupportActionBar() != null) {
238+
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
239+
getSupportActionBar().setDisplayShowHomeEnabled(true);
240+
}
241+
232242
channelIndexMap = new HashMap<>();
233243
channelIndexMap.put(CHANNEL.CH1.toString(), 1);
234244
channelIndexMap.put(CHANNEL.CH2.toString(), 2);
@@ -240,8 +250,6 @@ public void onClick(View v) {
240250
(LocationManager) getSystemService(Context.LOCATION_SERVICE));
241251
csvLogger = new CSVLogger(getString(R.string.oscilloscope));
242252

243-
recordButton = findViewById(R.id.oscilloscope_record_button);
244-
245253
scienceLab = ScienceLabCommon.scienceLab;
246254
x1 = mChart.getXAxis();
247255
y1 = mChart.getAxisLeft();
@@ -447,18 +455,6 @@ public void run() {
447455
}
448456
}
449457

450-
if (!isInBuiltMicSelected && (!scienceLab.isConnected() || (!isCH1Selected && !isCH2Selected && !isCH3Selected && !isAudioInputSelected))) {
451-
if (!String.valueOf(ledImageView.getTag()).equals("red")) {
452-
runOnUiThread(new Runnable() {
453-
@Override
454-
public void run() {
455-
ledImageView.setImageResource(R.drawable.red_led);
456-
ledImageView.setTag("red");
457-
}
458-
});
459-
}
460-
}
461-
462458
if (scienceLab.isConnected() && isXYPlotSelected) {
463459
xyPlotTask = new XYPlotTask();
464460
xyPlotTask.execute(xyPlotAxis1, xyPlotAxis2);
@@ -481,42 +477,38 @@ public void run() {
481477
monitorThread = new Thread(runnable);
482478
monitorThread.start();
483479

484-
ImageView guideImageView = findViewById(R.id.oscilloscope_guide_button);
485-
guideImageView.setOnClickListener(new View.OnClickListener() {
486-
@Override
487-
public void onClick(View v) {
488-
bottomSheetBehavior.setState(bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_HIDDEN ?
489-
BottomSheetBehavior.STATE_EXPANDED : BottomSheetBehavior.STATE_HIDDEN);
490-
}
491-
});
492-
guideImageView.setOnLongClickListener(new View.OnLongClickListener() {
493-
@Override
494-
public boolean onLongClick(View v) {
495-
showText.setVisibility(View.VISIBLE);
496-
btnLongpressed = true;
497-
return true;
498-
}
499-
});
500-
guideImageView.setOnTouchListener(new View.OnTouchListener() {
501-
@Override
502-
public boolean onTouch(View v, MotionEvent event) {
503-
v.onTouchEvent(event);
504-
if (event.getAction() == MotionEvent.ACTION_UP) {
505-
if (btnLongpressed) {
506-
showText.setVisibility(View.GONE);
507-
btnLongpressed = false;
508-
}
509-
}
510-
return true;
511-
}
512-
});
480+
if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) {
481+
recordedOscilloscopeData = LocalDataLog.with()
482+
.getBlockOfOscilloscopeRecords(getIntent().getExtras().getLong(DATA_BLOCK));
483+
isPlayingback = true;
484+
setLayoutForPlayback();
485+
}
486+
}
513487

514-
recordButton.setOnClickListener(new View.OnClickListener() {
515-
@Override
516-
public void onClick(View v) {
488+
@Override
489+
public boolean onCreateOptionsMenu(Menu menu) {
490+
getMenuInflater().inflate(R.menu.activity_landscape_menu, menu);
491+
return true;
492+
}
493+
494+
@Override
495+
public boolean onPrepareOptionsMenu(Menu menu) {
496+
playMenu = menu.findItem(R.id.play_data);
497+
menu.findItem(R.id.record_pause_data).setVisible(!isPlayingback);
498+
menu.findItem(R.id.play_data).setVisible(isPlayingback);
499+
return super.onPrepareOptionsMenu(menu);
500+
}
501+
502+
@Override
503+
public boolean onOptionsItemSelected(MenuItem item) {
504+
switch (item.getItemId()) {
505+
case android.R.id.home:
506+
finish();
507+
break;
508+
case R.id.record_pause_data:
517509
if (isRecording) {
518510
isRecording = false;
519-
recordButton.setImageResource(R.drawable.ic_record_white);
511+
item.setIcon(R.drawable.ic_record_white);
520512
CustomSnackBar.showSnackBar(mainLayout,
521513
getString(R.string.csv_store_text) + " " + csvLogger.getCurrentFilePath()
522514
, getString(R.string.open), new View.OnClickListener() {
@@ -529,7 +521,7 @@ public void onClick(View view) {
529521
}, Snackbar.LENGTH_SHORT);
530522
} else {
531523
isRecording = true;
532-
recordButton.setImageResource(R.drawable.ic_record_stop_white);
524+
item.setIcon(R.drawable.ic_record_stop_white);
533525
block = System.currentTimeMillis();
534526
if (gpsLogger.isGPSEnabled()) {
535527
Location location = gpsLogger.getDeviceLocation();
@@ -551,26 +543,42 @@ public void onClick(View view) {
551543
recordSensorDataBlockID(new SensorDataBlock(block, getResources().getString(R.string.oscilloscope)));
552544
CustomSnackBar.showSnackBar(mainLayout, getString(R.string.data_recording_start), null, null, Snackbar.LENGTH_SHORT);
553545
}
554-
}
555-
});
556-
557-
if (getIntent().getExtras() != null && getIntent().getExtras().getBoolean(KEY_LOG)) {
558-
recordedOscilloscopeData = LocalDataLog.with()
559-
.getBlockOfOscilloscopeRecords(getIntent().getExtras().getLong(DATA_BLOCK));
560-
setLayoutForPlayback();
546+
break;
547+
case R.id.show_guide:
548+
bottomSheetBehavior.setState(bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_HIDDEN ?
549+
BottomSheetBehavior.STATE_EXPANDED : BottomSheetBehavior.STATE_HIDDEN);
550+
break;
551+
case R.id.show_logged_data:
552+
Intent intent = new Intent(OscilloscopeActivity.this, DataLoggerActivity.class);
553+
intent.putExtra(DataLoggerActivity.CALLER_ACTIVITY, getResources().getString(R.string.oscilloscope));
554+
startActivity(intent);
555+
break;
556+
case R.id.play_data:
557+
if (isPlaying) {
558+
isPlaying = false;
559+
item.setIcon(R.drawable.ic_play_arrow_white_24dp);
560+
pauseData();
561+
} else {
562+
isPlaying = true;
563+
item.setIcon(R.drawable.ic_pause_white_24dp);
564+
playRecordedData();
565+
}
566+
break;
567+
default:
568+
break;
561569
}
570+
return true;
562571
}
563572

564573
private void setLayoutForPlayback() {
565574
findViewById(R.id.layout_dock_os1).setVisibility(View.GONE);
566-
recordButton.setVisibility(View.GONE);
567575
RelativeLayout.LayoutParams lineChartParams = (RelativeLayout.LayoutParams) mChartLayout.getLayoutParams();
568576
RelativeLayout.LayoutParams frameLayoutParams = (RelativeLayout.LayoutParams) frameLayout.getLayoutParams();
569-
lineChartParams.height = height * 4 / 5;
570-
lineChartParams.width = width;
577+
lineChartParams.height = height * 3 / 4;
578+
lineChartParams.width = RelativeLayout.LayoutParams.MATCH_PARENT;
571579
mChartLayout.setLayoutParams(lineChartParams);
572-
frameLayoutParams.height = height / 5;
573-
frameLayoutParams.width = width;
580+
frameLayoutParams.height = height / 4;
581+
frameLayoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT;
574582
frameLayout.setLayoutParams(frameLayoutParams);
575583
replaceFragment(R.id.layout_dock_os2, playbackFragment, "Playback Fragment");
576584
}
@@ -643,15 +651,15 @@ public void run() {
643651
} else {
644652
playbackTimer.cancel();
645653
playbackTimer = null;
646-
((OscilloscopePlaybackFragment) playbackFragment).resetPlayButton();
654+
playMenu.setIcon(R.drawable.ic_play_arrow_white_24dp);
647655
currentPosition = 0;
648656
}
649657
} catch (Exception e) {
650658
if (playbackTimer != null) {
651659
playbackTimer.cancel();
652660
playbackTimer = null;
653661
}
654-
((OscilloscopePlaybackFragment) playbackFragment).resetPlayButton();
662+
playMenu.setIcon(R.drawable.ic_play_arrow_white_24dp);
655663
currentPosition = 0;
656664
}
657665
}
@@ -662,8 +670,10 @@ public void run() {
662670
}
663671

664672
public void pauseData() {
665-
playbackTimer.cancel();
666-
playbackTimer = null;
673+
if (playbackTimer != null) {
674+
playbackTimer.cancel();
675+
playbackTimer = null;
676+
}
667677
}
668678

669679
private void logChannelData(String[] channels) {
@@ -760,10 +770,10 @@ public void onWindowFocusChanged() {
760770
frameLayoutParams.width = width * 7 / 8;
761771
frameLayout.setLayoutParams(frameLayoutParams);
762772
} else {
763-
lineChartParams.height = height * 2 / 3;
773+
lineChartParams.height = height * 3 / 5;
764774
lineChartParams.width = width * 5 / 6;
765775
mChartLayout.setLayoutParams(lineChartParams);
766-
frameLayoutParams.height = height / 3;
776+
frameLayoutParams.height = height * 2 / 5;
767777
frameLayoutParams.width = width * 5 / 6;
768778
frameLayout.setLayoutParams(frameLayoutParams);
769779
}
@@ -1131,10 +1141,6 @@ public void run() {
11311141
@Override
11321142
protected void onPostExecute(Void aVoid) {
11331143
super.onPostExecute(aVoid);
1134-
if (!String.valueOf(ledImageView.getTag()).equals("green")) {
1135-
ledImageView.setImageResource(R.drawable.green_led);
1136-
ledImageView.setTag("green");
1137-
}
11381144

11391145
List<ILineDataSet> dataSets = new ArrayList<>();
11401146
for (int i = 0; i < Math.min(entries.size(), paramsChannels.length); i++) {

0 commit comments

Comments
 (0)