package org.runnerup.notification;
import android.annotation.TargetApi;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.v4.app.NotificationCompat;
import org.runnerup.R;
import org.runnerup.common.util.Constants;
import org.runnerup.util.Formatter;
import org.runnerup.view.RunActivity;
import org.runnerup.workout.Scope;
import org.runnerup.workout.WorkoutInfo;
@TargetApi(Build.VERSION_CODES.FROYO)
public class OngoingState implements NotificationState {
private final Formatter formatter;
private final WorkoutInfo workoutInfo;
private final Context context;
private final NotificationCompat.Builder builder;
public OngoingState(Formatter formatter, WorkoutInfo workoutInfo, Context context) {
this.formatter = formatter;
this.workoutInfo = workoutInfo;
this.context = context;
builder = new NotificationCompat.Builder(context);
Intent i = new Intent(context, RunActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
i.putExtra(Constants.Intents.FROM_NOTIFICATION, true);
PendingIntent pi = PendingIntent.getActivity(context, 0, i, 0);
builder.setTicker(context.getString(R.string.RunnerUp_activity_started));
builder.setContentIntent(pi);
builder.setContentTitle(context.getString(R.string.Activity_ongoing));
builder.setSmallIcon(R.drawable.ic_stat_notify);
builder.setOngoing(true);
builder.setOnlyAlertOnce(true);
org.runnerup.util.NotificationCompat.setLocalOnly(builder);
org.runnerup.util.NotificationCompat.setVisibility(builder);
org.runnerup.util.NotificationCompat.setCategory(builder);
}
@Override
public Notification createNotification() {
String distance = formatter.formatDistance(Formatter.Format.TXT_SHORT,
Math.round(workoutInfo.getDistance(Scope.ACTIVITY)));
String time = formatter.formatElapsedTime(Formatter.Format.TXT_LONG,
Math.round(workoutInfo.getTime(Scope.ACTIVITY)));
String pace = formatter.formatPace(Formatter.Format.TXT_SHORT,
workoutInfo.getPace(Scope.ACTIVITY));
String content = String.format("%s: %s %s: %s %s: %s",
context.getString(R.string.distance), distance,
context.getString(R.string.time), time,
context.getString(R.string.pace), pace);
builder.setContentText(content);
NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle(builder);
bigTextStyle.setBigContentTitle(context.getString(R.string.Activity_ongoing));
bigTextStyle.bigText(String.format("%s: %s,\n%s: %s\n%s: %s",
context.getString(R.string.distance), distance,
context.getString(R.string.time), time,
context.getString(R.string.pace), pace));
builder.setStyle(bigTextStyle);
return builder.build();
}
}