diff --git a/app/build.gradle b/app/build.gradle index f6e9017..505da39 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,15 +1,15 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 25 + compileSdkVersion 26 buildToolsVersion '26.0.2' defaultConfig { applicationId "org.secuso.privacyfriendlybreakreminder" minSdkVersion 21 - targetSdkVersion 25 - versionCode 2 - versionName "2.0" + targetSdkVersion 26 + versionCode 3 + versionName "2.1" vectorDrawables.useSupportLibrary = true } buildTypes { @@ -32,13 +32,12 @@ repositories { dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') - compile 'com.android.support:appcompat-v7:25.4.0' - //compile 'com.android.support:preference-v7:25.4.0' - compile 'com.android.support:design:25.4.0' + compile 'com.android.support:appcompat-v7:26.1.0' + compile 'com.android.support:design:26.1.0' compile 'com.github.bumptech.glide:glide:3.7.0' - compile 'com.android.support:support-v4:25.4.0' + compile 'com.android.support:support-v4:26.1.0' compile 'com.android.support:support-annotations:27.0.0' - compile 'com.android.support:cardview-v7:25.4.0' + compile 'com.android.support:cardview-v7:26.1.0' compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'com.nex3z:flow-layout:1.0.0' compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7f788ff..c0b6d54 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -111,6 +111,20 @@ android:enabled="true" android:exported="false" /> + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/ExerciseActivity.java b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/ExerciseActivity.java index bd5c481..6e06b22 100644 --- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/ExerciseActivity.java +++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/ExerciseActivity.java @@ -18,6 +18,7 @@ import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.view.Gravity; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -38,7 +39,6 @@ import org.secuso.privacyfriendlybreakreminder.exercises.ExerciseLocale; import java.util.Locale; import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; -import static android.support.design.R.id.center_vertical; /** * This activity handles showing the exercises and the exercise timer. @@ -106,7 +106,7 @@ public class ExerciseActivity extends AppCompatActivity implements android.suppo exerciseSetId = pref.getLong(PrefManager.DEFAULT_EXERCISE_SET, 0L); pauseDuration = pref.getLong(PrefManager.PAUSE_TIME, 5 * 60 * 1000); repeatStatus = pref.getBoolean(PrefManager.REPEAT_STATUS, false); - continuousStatus = pref.getBoolean(PrefManager.CONTINUOUS_STATUS, false); + continuousStatus = pref.getBoolean(PrefManager.REPEAT_EXERCISES, false); try { exerciseTime = Long.parseLong(pref.getString(PrefManager.EXERCISE_DURATION, "30")) * 1000; } catch(NumberFormatException e) { @@ -175,7 +175,7 @@ public class ExerciseActivity extends AppCompatActivity implements android.suppo breakTimerText = (TextView) MenuItemCompat.getActionView(timerItem); breakTimerText.setTextColor(Color.WHITE); breakTimerText.setTextSize(20); - breakTimerText.setGravity(center_vertical); + breakTimerText.setGravity(Gravity.CENTER_HORIZONTAL); breakTimerText.setPadding(16, 0, 16, 0); //breakTimerText.set(10, 0, 10, 0); @@ -552,7 +552,7 @@ public class ExerciseActivity extends AppCompatActivity implements android.suppo private void handleContinuousClicked() { continuousStatus = !continuousStatus; - pref.edit().putBoolean(PrefManager.CONTINUOUS_STATUS, continuousStatus).apply(); + pref.edit().putBoolean(PrefManager.REPEAT_EXERCISES, continuousStatus).apply(); setContinuousButtonStatus(continuousStatus); } diff --git a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/SettingsActivity.java b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/SettingsActivity.java index 85fd5cf..ea1edf2 100644 --- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/SettingsActivity.java +++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/SettingsActivity.java @@ -10,6 +10,7 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.preference.ListPreference; +import android.preference.MultiSelectListPreference; import android.preference.Preference; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; @@ -18,7 +19,11 @@ import android.view.MenuItem; import org.secuso.privacyfriendlybreakreminder.R; import org.secuso.privacyfriendlybreakreminder.activities.helper.AppCompatPreferenceActivity; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; /** * @author Christopher Beckmann @@ -26,8 +31,6 @@ import java.util.List; */ public class SettingsActivity extends AppCompatPreferenceActivity { - // Helper - private Handler mHandler; protected SharedPreferences mSharedPreferences; @Override @@ -35,7 +38,6 @@ public class SettingsActivity extends AppCompatPreferenceActivity { super.onCreate(savedInstanceState); mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); - mHandler = new Handler(); overridePendingTransition(0, 0); } @@ -94,6 +96,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity { String stringValue = value.toString(); if (preference instanceof ListPreference) { + // For list preferences, look up the correct display value in // the preference's 'entries' list. ListPreference listPreference = (ListPreference) preference; @@ -104,6 +107,42 @@ public class SettingsActivity extends AppCompatPreferenceActivity { index >= 0 ? listPreference.getEntries()[index] : null); + } if(preference instanceof MultiSelectListPreference) { + MultiSelectListPreference mslPreference = (MultiSelectListPreference) preference; + + if(stringValue.length() >= 2) { + stringValue = stringValue.substring(1, stringValue.length() - 1); + } + + String[] setValues = stringValue.split(","); + + if(setValues.length == 7) { + mslPreference.setSummary(preference.getContext().getString(R.string.pref_schedule_exercise_days_allselectedsummary)); + return true; + } + + StringBuilder sb = new StringBuilder(); + for(int i = 0; i < mslPreference.getEntries().length; i++) { + String preferenceEntryString = mslPreference.getEntryValues()[i].toString(); + + for(String chosenValue : setValues) { + if (chosenValue.trim().equals(preferenceEntryString)) { + sb.append(mslPreference.getEntries()[i]); + sb.append(", "); + break; + } + } + } + + if(sb.length() > 0) { + sb.setLength(sb.length() - 2); + } + + if(sb.length() == 0) { + sb.append(preference.getContext().getString(R.string.pref_schedule_exercise_days_defaultsummary)); + } + + mslPreference.setSummary(sb.toString()); } else { // For all other preferences, set the summary to the value's @@ -129,10 +168,15 @@ public class SettingsActivity extends AppCompatPreferenceActivity { // Trigger the listener immediately with the preference's // current value. - sBindPreferenceSummaryToValueListener.onPreferenceChange(preference, - PreferenceManager - .getDefaultSharedPreferences(preference.getContext()) - .getString(preference.getKey(), "")); + if(preference instanceof MultiSelectListPreference) { + sBindPreferenceSummaryToValueListener.onPreferenceChange(preference, PreferenceManager + .getDefaultSharedPreferences(preference.getContext()) + .getStringSet(preference.getKey(), new HashSet())); + } else { + sBindPreferenceSummaryToValueListener.onPreferenceChange(preference, PreferenceManager + .getDefaultSharedPreferences(preference.getContext()) + .getString(preference.getKey(), "")); + } } protected int getNavigationDrawerID() { @@ -161,6 +205,8 @@ public class SettingsActivity extends AppCompatPreferenceActivity { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref_scheduler); setHasOptionsMenu(true); + + bindPreferenceSummaryToValue(findPreference("pref_schedule_exercise_days")); } } } \ No newline at end of file diff --git a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/TimerActivity.java b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/TimerActivity.java index d6df563..8b04097 100644 --- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/TimerActivity.java +++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/TimerActivity.java @@ -278,7 +278,8 @@ public class TimerActivity extends BaseActivity implements android.support.v4.ap SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); pref.edit().putInt(PrefManager.PREF_PICKER_SECONDS, secondsPicker.getValue()) .putInt(PrefManager.PREF_PICKER_MINUTES, minutesPicker.getValue()) - .putInt(PrefManager.PREF_PICKER_HOURS, hoursPicker.getValue()).apply(); + .putInt(PrefManager.PREF_PICKER_HOURS, hoursPicker.getValue()) + .putLong(PrefManager.WORK_TIME, getCurrentSetDuration()).apply(); } private long getCurrentSetDuration() { diff --git a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/helper/ExpandableListAdapter.java b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/helper/ExpandableListAdapter.java index f4012ef..36e16f6 100644 --- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/helper/ExpandableListAdapter.java +++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/helper/ExpandableListAdapter.java @@ -49,9 +49,9 @@ public class ExpandableListAdapter extends BaseExpandableListAdapter { final String expandedListText = (String) getChild(listPosition, expandedListPosition); if (convertView == null) { LayoutInflater layoutInflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - convertView = layoutInflater.inflate(R.layout.help_list_item, parent); + convertView = layoutInflater.inflate(R.layout.help_list_item, parent, false); } - TextView expandedListTextView = (TextView) convertView.findViewById(R.id.expandedListItem); + TextView expandedListTextView = convertView.findViewById(R.id.expandedListItem); expandedListTextView.setText(expandedListText); return convertView; } diff --git a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/tutorial/PrefManager.java b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/tutorial/PrefManager.java index 34f298a..2fb07e9 100644 --- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/tutorial/PrefManager.java +++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/tutorial/PrefManager.java @@ -4,6 +4,9 @@ import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; +import java.util.Arrays; +import java.util.HashSet; + /** * Class structure taken from tutorial at http://www.androidhive.info/2016/05/android-build-intro-slider-app/ */ @@ -19,9 +22,12 @@ public class PrefManager { public static final String DEFAULT_EXERCISE_SET = "DEFAULT_EXERCISE_SET"; public static final String PAUSE_TIME = "PAUSE TIME"; public static final String REPEAT_STATUS = "REPEAT_STATUS"; - public static final String CONTINUOUS_STATUS = "CONTINUOUS_STATUS"; + public static final String REPEAT_EXERCISES = "REPEAT_EXERCISES"; public static final String EXERCISE_DURATION = "pref_exercise_time"; public static final String KEEP_SCREEN_ON_DURING_EXERCISE = "pref_keep_screen_on_during_exercise"; + public static final String PREF_SCHEDULE_EXERCISE_DAYS = "pref_schedule_exercise_days"; + public static final String PREF_EXERCISE_CONTINUOUS = "pref_exercise_continuous"; + public static final String WORK_TIME = "WORK_TIME"; private SharedPreferences pref; @@ -42,16 +48,19 @@ public class PrefManager { if(isFirstTimeLaunch) pref.edit() .putLong(DEFAULT_EXERCISE_SET, 0L) - .putLong(PAUSE_TIME, 5 * 60 * 1000) + .putLong(PAUSE_TIME, 5 * 60 * 1000) // 5 minutes .putBoolean(REPEAT_STATUS, false) - .putBoolean(CONTINUOUS_STATUS, false) + .putBoolean(REPEAT_EXERCISES, false) .putInt(PREF_BREAK_PICKER_SECONDS, 0) .putInt(PREF_BREAK_PICKER_MINUTES, 5) .putInt(PREF_PICKER_SECONDS, 0) .putInt(PREF_PICKER_MINUTES, 0) .putInt(PREF_PICKER_HOURS, 1) + .putLong(WORK_TIME, 1000L * 60L * 60L) // 1 hour .putString(EXERCISE_DURATION, "30") .putBoolean(KEEP_SCREEN_ON_DURING_EXERCISE, true) + .putBoolean(PREF_EXERCISE_CONTINUOUS, false) + .putStringSet(PREF_SCHEDULE_EXERCISE_DAYS, new HashSet(Arrays.asList("Mo","Di","Mi","Do","Fr","Sa","So"))) .apply(); return isFirstTimeLaunch; diff --git a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/NotificationDeletedReceiver.java b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/NotificationDeletedReceiver.java index e264683..9bc7629 100644 --- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/NotificationDeletedReceiver.java +++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/NotificationDeletedReceiver.java @@ -1,10 +1,19 @@ package org.secuso.privacyfriendlybreakreminder.service; import android.content.BroadcastReceiver; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.ServiceConnection; +import android.content.SharedPreferences; +import android.os.IBinder; +import android.preference.PreferenceManager; import android.util.Log; +import org.secuso.privacyfriendlybreakreminder.activities.TimerActivity; + +import static org.secuso.privacyfriendlybreakreminder.activities.tutorial.PrefManager.PREF_EXERCISE_CONTINUOUS; + /** * @author Christopher Beckmann * @version 2.0 @@ -18,8 +27,12 @@ public class NotificationDeletedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - // TODO: Notification was swiped away. - Log.d(TAG, "Notification swiped away"); + SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context); + if(pref.getBoolean(PREF_EXERCISE_CONTINUOUS, false)) { + Intent serviceIntent = new Intent(context, TimerService.class); + serviceIntent.setAction(TimerService.ACTION_START_TIMER); + context.startService(serviceIntent); + } } } diff --git a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/PreferenceChangeReceiver.java b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/PreferenceChangeReceiver.java new file mode 100644 index 0000000..7ddf294 --- /dev/null +++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/PreferenceChangeReceiver.java @@ -0,0 +1,63 @@ +package org.secuso.privacyfriendlybreakreminder.service; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.util.Log; + +import java.util.Map; +import java.util.Set; + +import static org.secuso.privacyfriendlybreakreminder.activities.tutorial.PrefManager.PREF_EXERCISE_CONTINUOUS; + +/** + * @author Christopher Beckmann + * @version 1.0 + * @since 02.11.2017 + * created 02.11.2017 + */ + +public class PreferenceChangeReceiver extends BroadcastReceiver { + + private static final String TAG = PreferenceManager.class.getSimpleName(); + + public static final String ACTION_PREF_CHANGE = "org.secuso.privacyfriendlybreakreminder.ACTION_PREF_CHANGE"; + public static final String EXTRA_DISABLE_CONTINUOUS = "EXTRA_DISABLE_CONTINUOUS"; + + @Override + public void onReceive(Context context, Intent intent) { + + if(intent == null) return; + + Bundle bundle = intent.getExtras(); + + if(bundle == null) return; + + SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context); +// Map prefMap = pref.getAll(); + + for(String key : intent.getExtras().keySet()) { + + if(EXTRA_DISABLE_CONTINUOUS.equals(key)) { + pref.edit().putBoolean(PREF_EXERCISE_CONTINUOUS, false).apply(); + } + +// if(prefMap.containsKey(key)) { +// +// Object bundleValue = bundle.get(key); +// +// if(prefMap.get(key).getClass().isInstance(bundleValue)) { +// if(bundleValue instanceof String) { +// pref.edit().putString(key, (String)bundleValue).apply(); +// } else if(bundleValue instanceof Boolean) { +// pref.edit().putBoolean(key, (Boolean)bundleValue).apply(); +// } +// } +// } + } + + } +} diff --git a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/TimerService.java b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/TimerService.java index 419b674..b691a2f 100644 --- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/TimerService.java +++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/TimerService.java @@ -8,16 +8,19 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.SharedPreferences; import android.os.Binder; import android.os.CountDownTimer; import android.os.IBinder; import android.os.IInterface; import android.os.Parcel; import android.os.RemoteException; +import android.preference.PreferenceManager; import android.provider.Settings; import android.support.annotation.Nullable; +import android.support.v4.app.NotificationCompat; import android.support.v4.content.ContextCompat; -import android.support.v7.app.NotificationCompat; +import android.util.Log; import org.secuso.privacyfriendlybreakreminder.R; import org.secuso.privacyfriendlybreakreminder.activities.ExerciseActivity; @@ -30,6 +33,10 @@ import java.util.Timer; import static android.app.PendingIntent.FLAG_CANCEL_CURRENT; import static android.app.PendingIntent.FLAG_UPDATE_CURRENT; import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; +import static org.secuso.privacyfriendlybreakreminder.activities.tutorial.PrefManager.PREF_EXERCISE_CONTINUOUS; +import static org.secuso.privacyfriendlybreakreminder.activities.tutorial.PrefManager.WORK_TIME; +import static org.secuso.privacyfriendlybreakreminder.service.PreferenceChangeReceiver.ACTION_PREF_CHANGE; +import static org.secuso.privacyfriendlybreakreminder.service.PreferenceChangeReceiver.EXTRA_DISABLE_CONTINUOUS; /** * The main timer service. It handles the work timer and sends updates to the notification and the {@link TimerActivity}. @@ -44,6 +51,14 @@ public class TimerService extends Service { public static final String NOTIFICATION_BROADCAST = TAG + ".NOTIFICATION_BROADCAST"; public static final String TIMER_BROADCAST = TAG + ".TIMER_BROADCAST"; + public static final String ACTION_START_TIMER = TAG + "ACTION_START_TIMER"; + public static final String ACTION_PAUSE_TIMER = TAG + "ACTION_PAUSE_TIMER"; + public static final String ACTION_RESUME_TIMER = TAG + "ACTION_RESUME_TIMER"; + public static final String ACTION_STOP_TIMER = TAG + "ACTION_STOP_TIMER"; + public static final String ACTION_SNOOZE_TIMER = TAG + "ACTION_SNOOZE_TIMER"; + + public static final String NOTIFICATION_DELETED_ACTION = "org.secuso.privacyfriendlybreakreminder.NotificationDeleted"; + private static final int UPDATE_INTERVAL = 100; private static final int NOTIFICATION_ID = 31337; @@ -77,10 +92,9 @@ public class TimerService extends Service { // limit the notification updates int remainingSeconds = intent.getIntExtra("countdown_seconds", 0); - if(remainingSeconds != lastTime) { + if(remainingSeconds != lastTime || isPaused()) { lastTime = remainingSeconds; updateNotification(); - } } }; @@ -90,10 +104,12 @@ public class TimerService extends Service { // send a notification with sound and vibration stopForeground(false); + PendingIntent startExercises = PendingIntent.getActivity(this, 0, new Intent(this, ExerciseActivity.class), FLAG_CANCEL_CURRENT); + NotificationCompat.Builder builder = new NotificationCompat.Builder(this); builder.setContentTitle(getString(R.string.app_name)) .setContentText(getString(R.string.take_a_break_now)) - .setContentIntent(PendingIntent.getActivity(this, 0, new Intent(this, ExerciseActivity.class), FLAG_CANCEL_CURRENT)) + .setContentIntent(startExercises) .setColor(ContextCompat.getColor(this, R.color.colorAccent)) .setPriority(NotificationCompat.PRIORITY_MAX) .setWhen(0) @@ -104,7 +120,18 @@ public class TimerService extends Service { .setVibrate(new long[] { 0, 1000, 1000, 1000, 1000, 1000, 1000 }) .setSound(Settings.System.DEFAULT_NOTIFICATION_URI) .setOnlyAlertOnce(false) - .setDeleteIntent(PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(this, NotificationDeletedReceiver.class), 0)); + .setDeleteIntent(PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(NOTIFICATION_DELETED_ACTION), 0)); + + SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); + if(pref.getBoolean(PREF_EXERCISE_CONTINUOUS, false)) { + Intent prefIntent = new Intent(ACTION_PREF_CHANGE); + prefIntent.putExtra(EXTRA_DISABLE_CONTINUOUS, false); + builder.addAction(0, getString(R.string.dismiss_and_dont_repeat), PendingIntent.getBroadcast(getApplicationContext(), 0, prefIntent, 0)); + } + + + builder.addAction(R.drawable.ic_play_arrow_black, getString(R.string.start), startExercises); + notificationManager.notify(NOTIFICATION_ID, builder.build()); } @@ -230,11 +257,38 @@ public class TimerService extends Service { public int onStartCommand(Intent intent, int flags, int startId) { super.onStartCommand(intent, flags, startId); + if (intent != null) { + + String action = intent.getAction(); + + if (ACTION_START_TIMER.equals(action)) handleRestartTimer(); + else if (ACTION_PAUSE_TIMER.equals(action)) pauseTimer(); + else if (ACTION_RESUME_TIMER.equals(action)) resumeTimer(); + else if (ACTION_STOP_TIMER.equals(action)) stopAndResetTimer(); + else if (ACTION_SNOOZE_TIMER.equals(action)) handleSnoozeTimer(); + } + notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); return START_STICKY; } + private void handleSnoozeTimer() { + SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); + + long snoozeTime = (long)((float)pref.getLong(WORK_TIME, 1000 * 60 * 60) / 60f * 5f); + + startTimer(snoozeTime); + } + + private void handleRestartTimer() { + SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this); + + if(pref.getBoolean(PREF_EXERCISE_CONTINUOUS, false)) { + long duration = pref.getLong(WORK_TIME, 1000 * 60 * 60); + startTimer(duration); + } + } private Notification buildNotification() { @@ -250,17 +304,29 @@ public class TimerService extends Service { String time = String.format(Locale.US, "%02d:%02d:%02d", hours, minutes, seconds); builder.setContentText(time); - + builder.setColor(ContextCompat.getColor(this, R.color.colorAccent)); + builder.setPriority(NotificationCompat.PRIORITY_DEFAULT); + builder.setWhen(0); + builder.setProgress((int) initialDuration, (int) (initialDuration - remainingDuration), false); + builder.setSmallIcon(R.mipmap.ic_launcher); + builder.setOngoing(isRunning() || isPaused()); Intent intent = new Intent(this, TimerActivity.class); intent.addFlags(FLAG_ACTIVITY_CLEAR_TOP); - builder.setContentIntent(PendingIntent.getActivity(this, 0, intent, FLAG_UPDATE_CURRENT)); - builder.setColor(ContextCompat.getColor(this, R.color.colorAccent)); - builder.setPriority(NotificationCompat.PRIORITY_HIGH); - builder.setWhen(0); - builder.setSmallIcon(R.mipmap.ic_launcher); - builder.setOngoing(isRunning() || isPaused()); + + Intent stopIntent = new Intent(this, TimerService.class); + stopIntent.setAction(ACTION_STOP_TIMER); + builder.addAction(R.drawable.ic_replay_black_48dp, getString(R.string.stop), PendingIntent.getService(this, 0, stopIntent, FLAG_UPDATE_CURRENT)); + + Intent pauseIntent = new Intent(this, TimerService.class); + if(!isPaused()) { + pauseIntent.setAction(ACTION_PAUSE_TIMER); + builder.addAction(R.drawable.ic_pause_black_48dp, getString(R.string.pause), PendingIntent.getService(this, 0, pauseIntent, FLAG_UPDATE_CURRENT)); + } else { + pauseIntent.setAction(ACTION_RESUME_TIMER); + builder.addAction(R.drawable.ic_play_arrow_black, getString(R.string.resume), PendingIntent.getService(this, 0, pauseIntent, FLAG_UPDATE_CURRENT)); + } return builder.build(); } @@ -268,7 +334,6 @@ public class TimerService extends Service { private void updateNotification() { if(isRunning() || isPaused()) { startForeground(NOTIFICATION_ID, buildNotification()); - notificationManager.notify(NOTIFICATION_ID, buildNotification()); } else { stopForeground(true); } diff --git a/app/src/main/res/drawable/BreakReminder_0.png b/app/src/main/res/drawable/BreakReminder_0.png index 5372254..f54422a 100644 Binary files a/app/src/main/res/drawable/BreakReminder_0.png and b/app/src/main/res/drawable/BreakReminder_0.png differ diff --git a/app/src/main/res/drawable/BreakReminder_1.png b/app/src/main/res/drawable/BreakReminder_1.png index ddb1eb1..eb961b1 100644 Binary files a/app/src/main/res/drawable/BreakReminder_1.png and b/app/src/main/res/drawable/BreakReminder_1.png differ diff --git a/app/src/main/res/drawable/BreakReminder_10.png b/app/src/main/res/drawable/BreakReminder_10.png index 920bf5e..b5c4f2a 100644 Binary files a/app/src/main/res/drawable/BreakReminder_10.png and b/app/src/main/res/drawable/BreakReminder_10.png differ diff --git a/app/src/main/res/drawable/BreakReminder_11.png b/app/src/main/res/drawable/BreakReminder_11.png index e9bcdf3..6cf0f83 100644 Binary files a/app/src/main/res/drawable/BreakReminder_11.png and b/app/src/main/res/drawable/BreakReminder_11.png differ diff --git a/app/src/main/res/drawable/BreakReminder_12.png b/app/src/main/res/drawable/BreakReminder_12.png index a65f8f9..b858daa 100644 Binary files a/app/src/main/res/drawable/BreakReminder_12.png and b/app/src/main/res/drawable/BreakReminder_12.png differ diff --git a/app/src/main/res/drawable/BreakReminder_13.png b/app/src/main/res/drawable/BreakReminder_13.png index 8eb061b..fad8834 100644 Binary files a/app/src/main/res/drawable/BreakReminder_13.png and b/app/src/main/res/drawable/BreakReminder_13.png differ diff --git a/app/src/main/res/drawable/BreakReminder_14.png b/app/src/main/res/drawable/BreakReminder_14.png index 9cf62e5..93c623e 100644 Binary files a/app/src/main/res/drawable/BreakReminder_14.png and b/app/src/main/res/drawable/BreakReminder_14.png differ diff --git a/app/src/main/res/drawable/BreakReminder_15.png b/app/src/main/res/drawable/BreakReminder_15.png index 9989210..0db85cd 100644 Binary files a/app/src/main/res/drawable/BreakReminder_15.png and b/app/src/main/res/drawable/BreakReminder_15.png differ diff --git a/app/src/main/res/drawable/BreakReminder_16.png b/app/src/main/res/drawable/BreakReminder_16.png index ff6230d..70541f9 100644 Binary files a/app/src/main/res/drawable/BreakReminder_16.png and b/app/src/main/res/drawable/BreakReminder_16.png differ diff --git a/app/src/main/res/drawable/BreakReminder_17.png b/app/src/main/res/drawable/BreakReminder_17.png index c8a967f..73eed99 100644 Binary files a/app/src/main/res/drawable/BreakReminder_17.png and b/app/src/main/res/drawable/BreakReminder_17.png differ diff --git a/app/src/main/res/drawable/BreakReminder_18.png b/app/src/main/res/drawable/BreakReminder_18.png index da15256..55161c5 100644 Binary files a/app/src/main/res/drawable/BreakReminder_18.png and b/app/src/main/res/drawable/BreakReminder_18.png differ diff --git a/app/src/main/res/drawable/BreakReminder_19.png b/app/src/main/res/drawable/BreakReminder_19.png index 6b3eda4..cbe188d 100644 Binary files a/app/src/main/res/drawable/BreakReminder_19.png and b/app/src/main/res/drawable/BreakReminder_19.png differ diff --git a/app/src/main/res/drawable/BreakReminder_2.png b/app/src/main/res/drawable/BreakReminder_2.png index 818a3a8..a85f30f 100644 Binary files a/app/src/main/res/drawable/BreakReminder_2.png and b/app/src/main/res/drawable/BreakReminder_2.png differ diff --git a/app/src/main/res/drawable/BreakReminder_20.png b/app/src/main/res/drawable/BreakReminder_20.png index eac440a..b94fed5 100644 Binary files a/app/src/main/res/drawable/BreakReminder_20.png and b/app/src/main/res/drawable/BreakReminder_20.png differ diff --git a/app/src/main/res/drawable/BreakReminder_21.png b/app/src/main/res/drawable/BreakReminder_21.png index c721382..8712a6b 100644 Binary files a/app/src/main/res/drawable/BreakReminder_21.png and b/app/src/main/res/drawable/BreakReminder_21.png differ diff --git a/app/src/main/res/drawable/BreakReminder_22.png b/app/src/main/res/drawable/BreakReminder_22.png index 9f90742..5930f2a 100644 Binary files a/app/src/main/res/drawable/BreakReminder_22.png and b/app/src/main/res/drawable/BreakReminder_22.png differ diff --git a/app/src/main/res/drawable/BreakReminder_23.png b/app/src/main/res/drawable/BreakReminder_23.png index 352c299..14e4676 100644 Binary files a/app/src/main/res/drawable/BreakReminder_23.png and b/app/src/main/res/drawable/BreakReminder_23.png differ diff --git a/app/src/main/res/drawable/BreakReminder_24.png b/app/src/main/res/drawable/BreakReminder_24.png index 53f23ca..ca38983 100644 Binary files a/app/src/main/res/drawable/BreakReminder_24.png and b/app/src/main/res/drawable/BreakReminder_24.png differ diff --git a/app/src/main/res/drawable/BreakReminder_25.png b/app/src/main/res/drawable/BreakReminder_25.png index 4a7aaf9..3688808 100644 Binary files a/app/src/main/res/drawable/BreakReminder_25.png and b/app/src/main/res/drawable/BreakReminder_25.png differ diff --git a/app/src/main/res/drawable/BreakReminder_26.png b/app/src/main/res/drawable/BreakReminder_26.png index 9b2ec10..7933a4d 100644 Binary files a/app/src/main/res/drawable/BreakReminder_26.png and b/app/src/main/res/drawable/BreakReminder_26.png differ diff --git a/app/src/main/res/drawable/BreakReminder_27.png b/app/src/main/res/drawable/BreakReminder_27.png index c554872..0169467 100644 Binary files a/app/src/main/res/drawable/BreakReminder_27.png and b/app/src/main/res/drawable/BreakReminder_27.png differ diff --git a/app/src/main/res/drawable/BreakReminder_28.png b/app/src/main/res/drawable/BreakReminder_28.png index 513dfbb..c4b801b 100644 Binary files a/app/src/main/res/drawable/BreakReminder_28.png and b/app/src/main/res/drawable/BreakReminder_28.png differ diff --git a/app/src/main/res/drawable/BreakReminder_29.png b/app/src/main/res/drawable/BreakReminder_29.png index 696b178..8883b5e 100644 Binary files a/app/src/main/res/drawable/BreakReminder_29.png and b/app/src/main/res/drawable/BreakReminder_29.png differ diff --git a/app/src/main/res/drawable/BreakReminder_3.png b/app/src/main/res/drawable/BreakReminder_3.png index 0342c24..b08b4c7 100644 Binary files a/app/src/main/res/drawable/BreakReminder_3.png and b/app/src/main/res/drawable/BreakReminder_3.png differ diff --git a/app/src/main/res/drawable/BreakReminder_30.png b/app/src/main/res/drawable/BreakReminder_30.png index 874cfd2..7992104 100644 Binary files a/app/src/main/res/drawable/BreakReminder_30.png and b/app/src/main/res/drawable/BreakReminder_30.png differ diff --git a/app/src/main/res/drawable/BreakReminder_31.png b/app/src/main/res/drawable/BreakReminder_31.png index f6a646a..be9bc0a 100644 Binary files a/app/src/main/res/drawable/BreakReminder_31.png and b/app/src/main/res/drawable/BreakReminder_31.png differ diff --git a/app/src/main/res/drawable/BreakReminder_32.png b/app/src/main/res/drawable/BreakReminder_32.png index d1d75c9..9865633 100644 Binary files a/app/src/main/res/drawable/BreakReminder_32.png and b/app/src/main/res/drawable/BreakReminder_32.png differ diff --git a/app/src/main/res/drawable/BreakReminder_33.png b/app/src/main/res/drawable/BreakReminder_33.png index 95d2276..6d272ea 100644 Binary files a/app/src/main/res/drawable/BreakReminder_33.png and b/app/src/main/res/drawable/BreakReminder_33.png differ diff --git a/app/src/main/res/drawable/BreakReminder_34.png b/app/src/main/res/drawable/BreakReminder_34.png index e68479c..1f88da5 100644 Binary files a/app/src/main/res/drawable/BreakReminder_34.png and b/app/src/main/res/drawable/BreakReminder_34.png differ diff --git a/app/src/main/res/drawable/BreakReminder_35.png b/app/src/main/res/drawable/BreakReminder_35.png index 6003458..cf39a64 100644 Binary files a/app/src/main/res/drawable/BreakReminder_35.png and b/app/src/main/res/drawable/BreakReminder_35.png differ diff --git a/app/src/main/res/drawable/BreakReminder_36.png b/app/src/main/res/drawable/BreakReminder_36.png index 9672288..15450b7 100644 Binary files a/app/src/main/res/drawable/BreakReminder_36.png and b/app/src/main/res/drawable/BreakReminder_36.png differ diff --git a/app/src/main/res/drawable/BreakReminder_37.png b/app/src/main/res/drawable/BreakReminder_37.png index 8d14550..0f90a2a 100644 Binary files a/app/src/main/res/drawable/BreakReminder_37.png and b/app/src/main/res/drawable/BreakReminder_37.png differ diff --git a/app/src/main/res/drawable/BreakReminder_38.png b/app/src/main/res/drawable/BreakReminder_38.png index 94b6558..65c56bb 100644 Binary files a/app/src/main/res/drawable/BreakReminder_38.png and b/app/src/main/res/drawable/BreakReminder_38.png differ diff --git a/app/src/main/res/drawable/BreakReminder_39.png b/app/src/main/res/drawable/BreakReminder_39.png index 8792547..8fd1c31 100644 Binary files a/app/src/main/res/drawable/BreakReminder_39.png and b/app/src/main/res/drawable/BreakReminder_39.png differ diff --git a/app/src/main/res/drawable/BreakReminder_4.png b/app/src/main/res/drawable/BreakReminder_4.png index dbb3534..30d062a 100644 Binary files a/app/src/main/res/drawable/BreakReminder_4.png and b/app/src/main/res/drawable/BreakReminder_4.png differ diff --git a/app/src/main/res/drawable/BreakReminder_40.png b/app/src/main/res/drawable/BreakReminder_40.png index 2c83022..6fb2d10 100644 Binary files a/app/src/main/res/drawable/BreakReminder_40.png and b/app/src/main/res/drawable/BreakReminder_40.png differ diff --git a/app/src/main/res/drawable/BreakReminder_41.png b/app/src/main/res/drawable/BreakReminder_41.png index 134b2ee..0d1ac0f 100644 Binary files a/app/src/main/res/drawable/BreakReminder_41.png and b/app/src/main/res/drawable/BreakReminder_41.png differ diff --git a/app/src/main/res/drawable/BreakReminder_42.png b/app/src/main/res/drawable/BreakReminder_42.png index 4ad226c..b3fe9e8 100644 Binary files a/app/src/main/res/drawable/BreakReminder_42.png and b/app/src/main/res/drawable/BreakReminder_42.png differ diff --git a/app/src/main/res/drawable/BreakReminder_43.png b/app/src/main/res/drawable/BreakReminder_43.png index 9f454ae..9dd8ecf 100644 Binary files a/app/src/main/res/drawable/BreakReminder_43.png and b/app/src/main/res/drawable/BreakReminder_43.png differ diff --git a/app/src/main/res/drawable/BreakReminder_44.png b/app/src/main/res/drawable/BreakReminder_44.png index 0252636..8ee29de 100644 Binary files a/app/src/main/res/drawable/BreakReminder_44.png and b/app/src/main/res/drawable/BreakReminder_44.png differ diff --git a/app/src/main/res/drawable/BreakReminder_45.png b/app/src/main/res/drawable/BreakReminder_45.png index 1edceb5..690d8b5 100644 Binary files a/app/src/main/res/drawable/BreakReminder_45.png and b/app/src/main/res/drawable/BreakReminder_45.png differ diff --git a/app/src/main/res/drawable/BreakReminder_46.png b/app/src/main/res/drawable/BreakReminder_46.png index 8cac1dc..e6a3242 100644 Binary files a/app/src/main/res/drawable/BreakReminder_46.png and b/app/src/main/res/drawable/BreakReminder_46.png differ diff --git a/app/src/main/res/drawable/BreakReminder_47.png b/app/src/main/res/drawable/BreakReminder_47.png index d59f8e0..91be5b4 100644 Binary files a/app/src/main/res/drawable/BreakReminder_47.png and b/app/src/main/res/drawable/BreakReminder_47.png differ diff --git a/app/src/main/res/drawable/BreakReminder_48.png b/app/src/main/res/drawable/BreakReminder_48.png index a3508b5..ed558aa 100644 Binary files a/app/src/main/res/drawable/BreakReminder_48.png and b/app/src/main/res/drawable/BreakReminder_48.png differ diff --git a/app/src/main/res/drawable/BreakReminder_49.png b/app/src/main/res/drawable/BreakReminder_49.png index 5249249..68c4ce6 100644 Binary files a/app/src/main/res/drawable/BreakReminder_49.png and b/app/src/main/res/drawable/BreakReminder_49.png differ diff --git a/app/src/main/res/drawable/BreakReminder_5.png b/app/src/main/res/drawable/BreakReminder_5.png index 6a20180..8403316 100644 Binary files a/app/src/main/res/drawable/BreakReminder_5.png and b/app/src/main/res/drawable/BreakReminder_5.png differ diff --git a/app/src/main/res/drawable/BreakReminder_50.png b/app/src/main/res/drawable/BreakReminder_50.png index cce18e5..b818102 100644 Binary files a/app/src/main/res/drawable/BreakReminder_50.png and b/app/src/main/res/drawable/BreakReminder_50.png differ diff --git a/app/src/main/res/drawable/BreakReminder_51.png b/app/src/main/res/drawable/BreakReminder_51.png index 0ee2b31..89f72bc 100644 Binary files a/app/src/main/res/drawable/BreakReminder_51.png and b/app/src/main/res/drawable/BreakReminder_51.png differ diff --git a/app/src/main/res/drawable/BreakReminder_52.png b/app/src/main/res/drawable/BreakReminder_52.png index 746bfe9..0f8e3c6 100644 Binary files a/app/src/main/res/drawable/BreakReminder_52.png and b/app/src/main/res/drawable/BreakReminder_52.png differ diff --git a/app/src/main/res/drawable/BreakReminder_53.png b/app/src/main/res/drawable/BreakReminder_53.png index 24eacab..67f4215 100644 Binary files a/app/src/main/res/drawable/BreakReminder_53.png and b/app/src/main/res/drawable/BreakReminder_53.png differ diff --git a/app/src/main/res/drawable/BreakReminder_54.png b/app/src/main/res/drawable/BreakReminder_54.png index b093da5..e22321e 100644 Binary files a/app/src/main/res/drawable/BreakReminder_54.png and b/app/src/main/res/drawable/BreakReminder_54.png differ diff --git a/app/src/main/res/drawable/BreakReminder_55.png b/app/src/main/res/drawable/BreakReminder_55.png index fe92adc..db3fd57 100644 Binary files a/app/src/main/res/drawable/BreakReminder_55.png and b/app/src/main/res/drawable/BreakReminder_55.png differ diff --git a/app/src/main/res/drawable/BreakReminder_56.png b/app/src/main/res/drawable/BreakReminder_56.png index f1774d6..8ecd38b 100644 Binary files a/app/src/main/res/drawable/BreakReminder_56.png and b/app/src/main/res/drawable/BreakReminder_56.png differ diff --git a/app/src/main/res/drawable/BreakReminder_6.png b/app/src/main/res/drawable/BreakReminder_6.png index 9b08452..d738c87 100644 Binary files a/app/src/main/res/drawable/BreakReminder_6.png and b/app/src/main/res/drawable/BreakReminder_6.png differ diff --git a/app/src/main/res/drawable/BreakReminder_7.png b/app/src/main/res/drawable/BreakReminder_7.png index a7bb9db..9d3bc0a 100644 Binary files a/app/src/main/res/drawable/BreakReminder_7.png and b/app/src/main/res/drawable/BreakReminder_7.png differ diff --git a/app/src/main/res/drawable/BreakReminder_8.png b/app/src/main/res/drawable/BreakReminder_8.png index 89234ef..658d328 100644 Binary files a/app/src/main/res/drawable/BreakReminder_8.png and b/app/src/main/res/drawable/BreakReminder_8.png differ diff --git a/app/src/main/res/drawable/BreakReminder_9.png b/app/src/main/res/drawable/BreakReminder_9.png index 8401d0e..608eac5 100644 Binary files a/app/src/main/res/drawable/BreakReminder_9.png and b/app/src/main/res/drawable/BreakReminder_9.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_app.png b/app/src/main/res/mipmap-hdpi/ic_app.png index 318f94d..106eb26 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_app.png and b/app/src/main/res/mipmap-hdpi/ic_app.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png index b4435a3..1059fe5 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_splash.png b/app/src/main/res/mipmap-hdpi/ic_splash.png index 318f94d..90e1e1e 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_splash.png and b/app/src/main/res/mipmap-hdpi/ic_splash.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_app.png b/app/src/main/res/mipmap-mdpi/ic_app.png index 73626a4..943dd96 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_app.png and b/app/src/main/res/mipmap-mdpi/ic_app.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png index 743d40f..02ec742 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_splash.png b/app/src/main/res/mipmap-mdpi/ic_splash.png index 73626a4..4aadc99 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_splash.png and b/app/src/main/res/mipmap-mdpi/ic_splash.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_app.png b/app/src/main/res/mipmap-xhdpi/ic_app.png index 5c866fc..3364786 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_app.png and b/app/src/main/res/mipmap-xhdpi/ic_app.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 2908cd6..bb292ff 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_splash.png b/app/src/main/res/mipmap-xhdpi/ic_splash.png index 5c866fc..ea93f95 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_splash.png and b/app/src/main/res/mipmap-xhdpi/ic_splash.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_app.png b/app/src/main/res/mipmap-xxhdpi/ic_app.png index fe40929..4a4fe5d 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_app.png and b/app/src/main/res/mipmap-xxhdpi/ic_app.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index a25d533..a0db396 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_splash.png b/app/src/main/res/mipmap-xxhdpi/ic_splash.png deleted file mode 100644 index fe40929..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_splash.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_app.png b/app/src/main/res/mipmap-xxxhdpi/ic_app.png index 465165a..668ac90 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_app.png and b/app/src/main/res/mipmap-xxxhdpi/ic_app.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 7d6eb37..6eb7426 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_splash.png b/app/src/main/res/mipmap-xxxhdpi/ic_splash.png deleted file mode 100644 index 465165a..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_splash.png and /dev/null differ diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml index dbbdd40..8cd2155 100644 --- a/app/src/main/res/values-v21/styles.xml +++ b/app/src/main/res/values-v21/styles.xml @@ -1,9 +1,35 @@ + + + + + + + + + diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml new file mode 100644 index 0000000..9fa28ab --- /dev/null +++ b/app/src/main/res/values/arrays.xml @@ -0,0 +1,21 @@ + + + + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + Sunday + + + Mo + Di + Mi + Do + Fr + Sa + So + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ad44ee6..6ca69ac 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -156,10 +156,10 @@ %02d Exercise time (in Seconds) Keep screen on during exercise - exercise settings + Exercise Settings schedule an exercise - enable exercise schedule - Schedule Time + Enable exercise schedule + Schedule time What is Privacy Friendly Break Reminder? Privacy Friendly Break Reminder is an app, that reminds you to take breaks during your work sessions. It allows you to select exercises, that are then shown during your break time. Which permissions does the app require? @@ -231,8 +231,17 @@ System sync settings New message notifications - Continuous Exercises + Continuous exercises Start the next timer automatically + Choose days + Only trigger on certain days + No days selected. + every day + Pause + Resume + Stop + Start + Dismiss and don\'t start again diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 663299e..9648c27 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -6,6 +6,24 @@ @color/colorPrimary @color/colorPrimaryDark @color/colorAccent + + @style/AppTheme.AlertDialog + + + + + + +