Skip to content
Permalink
15a9e802ea
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
186 lines (164 sloc) 6.54 KB
package com.boba.runassistant;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.Calendar;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
private TextView indoorTimeTextView;
private Calendar startingTime;
private SharedPreferences sharedPreferences;
private TextView previousIndoorTimeTextView;
private TextView previousIndoorDateTextView;
private TextView previousDistTextView;
private TextView previousTimeTextView;
private TextView previousPaceTextView;
private TextView previousDateTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
indoorTimeTextView = findViewById(R.id.textViewIndoorTime);
previousIndoorTimeTextView = findViewById(R.id.textViewPreviousIndoorTime);
previousIndoorDateTextView = findViewById(R.id.textViewPreviousIndoorDate);
previousDistTextView = findViewById(R.id.textViewPreviousDistance);
previousTimeTextView = findViewById(R.id.textViewPreviousTime);
previousPaceTextView = findViewById(R.id.textViewPreviousPace);
previousDateTextView = findViewById(R.id.textViewPreviousDate);
Button startIndoorRunningButton = findViewById(R.id.buttonStartIndoorRun);
Button stopIndoorRunningButton = findViewById(R.id.buttonStopIndoorRun);
Button startOutdoorRunningButton = findViewById(R.id.buttonStartOutdoorRun);
startIndoorRunningButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startIndoorRunning();
}
});
stopIndoorRunningButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
stopIndoorRunning();
}
});
startOutdoorRunningButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
launchMapActivity();
}
});
sharedPreferences = getSharedPreferences("previousRun", Context.MODE_PRIVATE);
// timer that keeps refreshing the gui elements every second
CountDownTimer newTimer = new CountDownTimer(604800000, 1000) {
public void onTick(long millisUntilFinished) {
if (startingTime != null) {
indoorTimeTextView.setText(getStringTimeFromSec((int) ((Calendar.getInstance().getTimeInMillis() - startingTime.getTimeInMillis()) / 1000)));
}
if (sharedPreferences.contains("IND_TIME_KEY")) {
previousIndoorTimeTextView.setText(sharedPreferences.getString("IND_TIME_KEY", ""));
}
if (sharedPreferences.contains("IND_DATE_KEY")) {
previousIndoorDateTextView.setText(sharedPreferences.getString("IND_DATE_KEY", ""));
}
if (sharedPreferences.contains("DIST_KEY")) {
previousDistTextView.setText(sharedPreferences.getString("DIST_KEY", ""));
}
if (sharedPreferences.contains("TIME_KEY")) {
previousTimeTextView.setText(sharedPreferences.getString("TIME_KEY", ""));
}
if (sharedPreferences.contains("PACE_KEY")) {
previousPaceTextView.setText(sharedPreferences.getString("PACE_KEY", ""));
}
if (sharedPreferences.contains("DATE_KEY")) {
previousDateTextView.setText(sharedPreferences.getString("DATE_KEY", ""));
}
}
public void onFinish() {
}
};
newTimer.start();
}
@Override
public void onBackPressed() {
new AlertDialog.Builder(this)
.setTitle("Exit confirmation")
.setMessage("Do you really want to close Run Assistant?")
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
MainActivity.super.onBackPressed();
}
})
.setNegativeButton(android.R.string.no, null).show();
}
private void launchMapActivity() {
Intent intent = new Intent(this, MapsActivity.class);
startActivity(intent);
}
private String getStringTimeFromSec(Integer timeElapsed) {
Integer secondsElapsed = timeElapsed % 60;
Integer minutesElapsed = (timeElapsed / 60) % 60;
Integer hoursElapsed = timeElapsed / 3600;
if (hoursElapsed > 0) {
return String.format(Locale.ENGLISH, "%dh %dm %ds", hoursElapsed, minutesElapsed, secondsElapsed);
} else if (minutesElapsed > 0) {
return String.format(Locale.ENGLISH, "%dm %ds", minutesElapsed, secondsElapsed);
} else {
return String.format(Locale.ENGLISH, "%ds", secondsElapsed);
}
}
private String getStringDate() {
Calendar calendar = Calendar.getInstance();
return String.format(Locale.ENGLISH, "%d-%d-%d %dh %dm %ds",
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH) + 1,
calendar.get(Calendar.DAY_OF_MONTH),
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
calendar.get(Calendar.SECOND));
}
private void startIndoorRunning() {
if (!indoorTimeTextView.getText().toString().equals("-")) {
new AlertDialog.Builder(this)
.setTitle("Confirmation")
.setMessage("Do you really want to restart the running exercise?")
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
startingTime = Calendar.getInstance();
}
})
.setNegativeButton(android.R.string.no, null).show();
} else {
startingTime = Calendar.getInstance();
}
}
private void stopIndoorRunning() {
if (!indoorTimeTextView.getText().toString().equals("-")) {
new AlertDialog.Builder(this)
.setTitle("Confirmation")
.setMessage("Do you really want to stop and save the running exercise?")
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
SharedPreferences sharedPreferences;
sharedPreferences = getSharedPreferences("previousRun", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("IND_TIME_KEY", indoorTimeTextView.getText().toString());
editor.putString("IND_DATE_KEY", getStringDate());
editor.apply();
startingTime = null;
indoorTimeTextView.setText("-");
}
})
.setNegativeButton(android.R.string.no, null).show();
}
}
}