diff --git a/app/src/main/java/de/tadris/fitness/activity/ListWorkoutsActivity.java b/app/src/main/java/de/tadris/fitness/activity/ListWorkoutsActivity.java
index cde5791..02da20c 100644
--- a/app/src/main/java/de/tadris/fitness/activity/ListWorkoutsActivity.java
+++ b/app/src/main/java/de/tadris/fitness/activity/ListWorkoutsActivity.java
@@ -22,14 +22,13 @@ package de.tadris.fitness.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
+import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
-import android.view.View;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
-import com.github.clans.fab.FloatingActionButton;
import com.github.clans.fab.FloatingActionMenu;
import de.tadris.fitness.Instance;
@@ -66,8 +65,10 @@ public class ListWorkoutsActivity extends Activity implements WorkoutAdapter.Wor
}
public void startRecording(String activity){
+ menu.close(true);
RecordWorkoutActivity.ACTIVITY= activity;
- startActivity(new Intent(this, RecordWorkoutActivity.class));
+ final Intent intent= new Intent(this, RecordWorkoutActivity.class);
+ new Handler().postDelayed(() -> startActivity(intent), 300);
}
@Override
diff --git a/app/src/main/java/de/tadris/fitness/activity/RecordWorkoutActivity.java b/app/src/main/java/de/tadris/fitness/activity/RecordWorkoutActivity.java
index 3d56221..1228a8f 100644
--- a/app/src/main/java/de/tadris/fitness/activity/RecordWorkoutActivity.java
+++ b/app/src/main/java/de/tadris/fitness/activity/RecordWorkoutActivity.java
@@ -20,6 +20,7 @@
package de.tadris.fitness.activity;
import android.Manifest;
+import android.app.AlertDialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Location;
@@ -30,6 +31,7 @@ import android.os.PowerManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup;
+import android.widget.EditText;
import android.widget.TextView;
import androidx.core.app.ActivityCompat;
@@ -53,7 +55,6 @@ import de.tadris.fitness.location.WorkoutRecorder;
import de.tadris.fitness.map.MapManager;
import de.tadris.fitness.util.ThemeManager;
import de.tadris.fitness.util.UnitUtils;
-import de.tadris.fitness.util.WorkoutTypeCalculator;
public class RecordWorkoutActivity extends FitoTrackActivity implements LocationListener.LocationChangeListener {
@@ -152,14 +153,40 @@ public class RecordWorkoutActivity extends FitoTrackActivity implements Location
infoViews[3].setText(getString(R.string.workoutPauseDuration), UnitUtils.getHourMinuteSecondTime(recorder.getPauseDuration()));
}
- private void stopAndSave(){
+ private void stop(){
recorder.stop();
+ if(recorder.getSampleCount() > 3){
+ showEnterDescriptionDialog();
+ }else{
+ finish();
+ }
+ }
+
+ private void saveAndClose(){
if(recorder.getSampleCount() > 3){
recorder.save();
}
finish();
}
+ private void showEnterDescriptionDialog(){
+ final EditText editText= new EditText(this);
+ new AlertDialog.Builder(this).setTitle(R.string.enterComment).setPositiveButton(R.string.okay, (dialog, which) -> {
+ dialog.cancel();
+ recorder.setComment(editText.getText().toString());
+ saveAndClose();
+ }).setView(editText).setCancelable(false).create().show();
+ }
+
+ private void showAreYouSureToStopDialog(){
+ new AlertDialog.Builder(this)
+ .setTitle(R.string.stopRecordingQuestion)
+ .setMessage(R.string.stopRecordingQuestionMessage)
+ .setPositiveButton(R.string.okay, (dialog, which) -> stop())
+ .setNegativeButton(R.string.continue_, null)
+ .create().show();
+ }
+
void checkPermissions(){
if (!hasPermission()) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 10);
@@ -240,12 +267,21 @@ public class RecordWorkoutActivity extends FitoTrackActivity implements Location
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id == R.id.actionRecordingStop){
- stopAndSave();
+ stop();
return true;
}
return super.onOptionsItemSelected(item);
}
+ @Override
+ public void onBackPressed() {
+ if(recorder.getSampleCount() > 3){
+ showAreYouSureToStopDialog();
+ }else{
+ super.onBackPressed();
+ }
+ }
+
public static class InfoViewHolder{
TextView titleView, valueView;
diff --git a/app/src/main/java/de/tadris/fitness/activity/ShowWorkoutActivity.java b/app/src/main/java/de/tadris/fitness/activity/ShowWorkoutActivity.java
index 2721da2..a5f2d50 100644
--- a/app/src/main/java/de/tadris/fitness/activity/ShowWorkoutActivity.java
+++ b/app/src/main/java/de/tadris/fitness/activity/ShowWorkoutActivity.java
@@ -30,6 +30,7 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.EditText;
import android.widget.TextView;
import com.github.mikephil.charting.charts.LineChart;
@@ -93,6 +94,11 @@ public class ShowWorkoutActivity extends FitoTrackActivity {
root= findViewById(R.id.showWorkoutRoot);
+ addText(getString(R.string.comment) + ": " + workout.comment).setOnClickListener(v -> {
+ TextView textView= (TextView)v;
+ openEditCommentDialog(textView);
+ });
+
addTitle(getString(R.string.workoutTime));
addKeyValue(getString(R.string.workoutDate), getDate());
addKeyValue(getString(R.string.workoutDuration), UnitUtils.getHourMinuteSecondTime(workout.duration),
@@ -120,6 +126,21 @@ public class ShowWorkoutActivity extends FitoTrackActivity {
}
+ void openEditCommentDialog(final TextView change){
+ final EditText editText= new EditText(this);
+ editText.setText(workout.comment);
+ new AlertDialog.Builder(this)
+ .setTitle(R.string.enterComment)
+ .setPositiveButton(R.string.okay, (dialog, which) -> changeComment(editText.getText().toString(), change))
+ .setView(editText).create().show();
+ }
+
+ void changeComment(String comment, TextView onChange){
+ workout.comment= comment;
+ Instance.getInstance(this).db.workoutDao().updateWorkout(workout);
+ onChange.setText(getString(R.string.comment) + ": " + workout.comment);
+ }
+
String getDate(){
return SimpleDateFormat.getDateInstance().format(new Date(workout.start));
}
@@ -137,6 +158,18 @@ public class ShowWorkoutActivity extends FitoTrackActivity {
root.addView(textView);
}
+ TextView addText(String text){
+ TextView textView= new TextView(this);
+ textView.setText(text);
+ textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
+ textView.setTextColor(getThemePrimaryColor());
+ textView.setPadding(0, 20, 0, 0);
+
+ root.addView(textView);
+
+ return textView;
+ }
+
void addKeyValue(String key1, String value1){
addKeyValue(key1, value1, "", "");
}
diff --git a/app/src/main/java/de/tadris/fitness/data/Workout.java b/app/src/main/java/de/tadris/fitness/data/Workout.java
index cbbc237..6340695 100644
--- a/app/src/main/java/de/tadris/fitness/data/Workout.java
+++ b/app/src/main/java/de/tadris/fitness/data/Workout.java
@@ -39,6 +39,8 @@ public class Workout{
public long pauseDuration;
+ public String comment;
+
/**
* Length of workout in meters
*/
diff --git a/app/src/main/java/de/tadris/fitness/location/WorkoutRecorder.java b/app/src/main/java/de/tadris/fitness/location/WorkoutRecorder.java
index f535e33..c2de4c8 100644
--- a/app/src/main/java/de/tadris/fitness/location/WorkoutRecorder.java
+++ b/app/src/main/java/de/tadris/fitness/location/WorkoutRecorder.java
@@ -245,6 +245,10 @@ public class WorkoutRecorder implements LocationListener.LocationChangeListener
}
}
+ public void setComment(String comment){
+ workout.comment= comment;
+ }
+
enum RecordingState{
IDLE, RUNNING, PAUSED, STOPPED
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 596eda0..fc1e2f9 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -48,6 +48,16 @@
Record Workout
+ Comment
+ Enter Comment
+ Okay
+
+ Stop Recording?
+ Do you really want to stop the recording?
+
+
+ Continue
+
Delete Workout
Do you really want to delete the workout?