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?