Added warnings if the set exercise time is not sufficient to complete the exercises.
This commit is contained in:
parent
2e69a0c6d0
commit
4c69721ce5
6 changed files with 83 additions and 25 deletions
|
|
@ -672,7 +672,6 @@ public class ExerciseActivity extends AppCompatActivity implements android.suppo
|
|||
mHandler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||
}
|
||||
}, 1000 * 5);
|
||||
|
|
|
|||
|
|
@ -5,15 +5,19 @@ import android.animation.AnimatorListenerAdapter;
|
|||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.ServiceConnection;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.IBinder;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.content.AsyncTaskLoader;
|
||||
import android.support.v4.content.Loader;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ImageButton;
|
||||
|
|
@ -21,6 +25,7 @@ import android.widget.LinearLayout;
|
|||
import android.widget.ProgressBar;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.secuso.privacyfriendlybreakreminder.activities.tutorial.FirstLaunchManager;
|
||||
import org.secuso.privacyfriendlybreakreminder.exercises.ExerciseLocale;
|
||||
|
|
@ -64,7 +69,6 @@ public class TimerActivity extends BaseActivity implements android.support.v4.ap
|
|||
private Spinner exerciseSetSpinner;
|
||||
private ExerciseSetSpinnerAdapter exerciseSetAdapter;
|
||||
|
||||
|
||||
private boolean isActivityVisible = false;
|
||||
|
||||
// animation
|
||||
|
|
@ -88,6 +92,7 @@ public class TimerActivity extends BaseActivity implements android.support.v4.ap
|
|||
mTimerService = null;
|
||||
}
|
||||
};
|
||||
private ExerciseSet currentExerciseSet;
|
||||
|
||||
private void onServiceConnected() {
|
||||
updateUI();
|
||||
|
|
@ -191,7 +196,16 @@ public class TimerActivity extends BaseActivity implements android.support.v4.ap
|
|||
exerciseSetSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
currentExerciseSet = (ExerciseSet) exerciseSetSpinner.getAdapter().getItem(position);
|
||||
pref.edit().putLong(DEFAULT_EXERCISE_SET, id).apply();
|
||||
|
||||
if(mTimerService != null && mTimerService.isRunning()) {
|
||||
if(currentExerciseSet.getExerciseSetTime(TimerActivity.this)*1000 > getCurrentSetBreakTime()) {
|
||||
Toast toast = Toast.makeText(TimerActivity.this, R.string.toast_not_enough_exercise_time, Toast.LENGTH_SHORT);
|
||||
toast.setGravity(toast.getGravity(), 0, 250);
|
||||
toast.show();
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {}
|
||||
|
|
@ -266,20 +280,54 @@ public class TimerActivity extends BaseActivity implements android.support.v4.ap
|
|||
mTimerService.pauseTimer();
|
||||
|
||||
} else {
|
||||
long duration = getCurrentSetDuration();
|
||||
final long duration = getCurrentSetDuration();
|
||||
saveCurrentSetDuration();
|
||||
mTimerService.startTimer(duration);
|
||||
progressBar.setMax((int) duration);
|
||||
|
||||
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
pref.edit()
|
||||
.putInt(FirstLaunchManager.PREF_BREAK_PICKER_SECONDS, secondsBreakPicker.getValue())
|
||||
.putInt(FirstLaunchManager.PREF_BREAK_PICKER_MINUTES, minutesBreakPicker.getValue())
|
||||
.putLong(PAUSE_TIME, getCurrentSetBreakTime()).apply();
|
||||
ExerciseSet set = getCurrentSelectedExerciseSet();
|
||||
long seconds = set.getExerciseSetTime(this);
|
||||
if(seconds * 1000 > getCurrentSetBreakTime()) {
|
||||
|
||||
showTimeWarningDialog(new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
mTimerService.startTimer(duration);
|
||||
progressBar.setMax((int) duration);
|
||||
saveCurrentSetBreakTime();
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
mTimerService.startTimer(duration);
|
||||
progressBar.setMax((int) duration);
|
||||
|
||||
saveCurrentSetBreakTime();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void showTimeWarningDialog(DialogInterface.OnClickListener listener) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
builder.setTitle(R.string.warning);
|
||||
builder.setMessage(R.string.dialog_warning_not_enough_exercise_time);
|
||||
Drawable icon = getDrawable(R.drawable.ic_about);
|
||||
if (icon != null) {
|
||||
icon.setTint(ActivityCompat.getColor(this, R.color.yellow));
|
||||
builder.setIcon(icon);
|
||||
}
|
||||
builder.setPositiveButton(R.string.start, listener);
|
||||
builder.setNegativeButton(R.string.cancel, null);
|
||||
builder.create().show();
|
||||
}
|
||||
|
||||
private void saveCurrentSetBreakTime() {
|
||||
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
pref.edit()
|
||||
.putInt(FirstLaunchManager.PREF_BREAK_PICKER_SECONDS, secondsBreakPicker.getValue())
|
||||
.putInt(FirstLaunchManager.PREF_BREAK_PICKER_MINUTES, minutesBreakPicker.getValue())
|
||||
.putLong(PAUSE_TIME, getCurrentSetBreakTime()).apply();
|
||||
}
|
||||
|
||||
private void saveCurrentSetDuration() {
|
||||
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
pref.edit().putInt(FirstLaunchManager.PREF_PICKER_SECONDS, secondsPicker.getValue())
|
||||
|
|
@ -424,6 +472,8 @@ public class TimerActivity extends BaseActivity implements android.support.v4.ap
|
|||
|
||||
if(e.getId() == defaultId) {
|
||||
exerciseSetSpinner.setSelection(i);
|
||||
if(exerciseSetSpinner.getOnItemSelectedListener() != null)
|
||||
exerciseSetSpinner.getOnItemSelectedListener().onItemSelected(null, null, i, e.getId());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -431,4 +481,8 @@ public class TimerActivity extends BaseActivity implements android.support.v4.ap
|
|||
|
||||
@Override
|
||||
public void onLoaderReset(Loader<List<ExerciseSet>> loader) {}
|
||||
|
||||
public ExerciseSet getCurrentSelectedExerciseSet() {
|
||||
return currentExerciseSet;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -172,13 +172,7 @@ public class ExerciseSetListAdapter extends RecyclerView.Adapter<RecyclerView.Vi
|
|||
vh.noExercisesText.setVisibility(View.GONE);
|
||||
vh.exerciseTime.setVisibility(View.VISIBLE);
|
||||
|
||||
int result = 0;
|
||||
for(Exercise e : set.getExercises()) {
|
||||
result += e.getImageID().split(",").length;
|
||||
}
|
||||
|
||||
long exerciseDuration = Long.parseLong(PreferenceManager.getDefaultSharedPreferences(mContext).getString(FirstLaunchManager.EXERCISE_DURATION, "30"));
|
||||
int seconds = (int) (result * exerciseDuration);
|
||||
int seconds = (int) set.getExerciseSetTime(mContext);
|
||||
vh.exerciseTime.setText(String.format(Locale.getDefault(), "%02d:%02d", (seconds / 60), (seconds % 60)));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -96,13 +96,7 @@ public class ExerciseSetSpinnerAdapter extends ArrayAdapter<ExerciseSet> {
|
|||
noExercisesText.setVisibility(View.GONE);
|
||||
exerciseTime.setVisibility(View.VISIBLE);
|
||||
|
||||
int result = 0;
|
||||
for(Exercise e : set.getExercises()) {
|
||||
result += e.getImageID().split(",").length;
|
||||
}
|
||||
|
||||
long exerciseDuration = Long.parseLong(PreferenceManager.getDefaultSharedPreferences(getContext()).getString(FirstLaunchManager.EXERCISE_DURATION, "30"));
|
||||
int seconds = (int) (result * exerciseDuration);
|
||||
int seconds = (int) set.getExerciseSetTime(getContext());
|
||||
exerciseTime.setText(String.format(Locale.getDefault(), "%02d:%02d", (seconds / 60), (seconds % 60)));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
package org.secuso.privacyfriendlybreakreminder.database.data;
|
||||
|
||||
import android.content.Context;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import org.secuso.privacyfriendlybreakreminder.activities.tutorial.FirstLaunchManager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -71,4 +76,13 @@ public class ExerciseSet {
|
|||
public void setDefaultSet(boolean defaultSet) {
|
||||
isDefaultSet = defaultSet;
|
||||
}
|
||||
|
||||
public long getExerciseSetTime(Context context) {
|
||||
int result = 0;
|
||||
for(Exercise e : getExercises()) {
|
||||
result += e.getImageID().split(",").length;
|
||||
}
|
||||
long exerciseDuration = Long.parseLong(PreferenceManager.getDefaultSharedPreferences(context).getString(FirstLaunchManager.EXERCISE_DURATION, "30"));
|
||||
return (result * exerciseDuration);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -153,6 +153,9 @@
|
|||
<string name="activity_exercise_button_continuous_on">start timers automatically</string>
|
||||
<string name="activity_exercise_button_continuous_off">start timers manually</string>
|
||||
<string name="exercise_time">Execise Time:\n%s</string>
|
||||
<string name="dialog_warning_not_enough_exercise_time">The chosen exercise time is too short to finish the selected exercise set. Are you sure you want to start the timer?</string>
|
||||
<string name="warning">Warning</string>
|
||||
<string name="toast_not_enough_exercise_time">The currently selected exercise time is not sufficient to complete the chosen exercise set.</string>
|
||||
|
||||
|
||||
</resources>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue