diff --git a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/EditExerciseSetActivity.java b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/EditExerciseSetActivity.java index bdfc2ed..d14842d 100644 --- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/EditExerciseSetActivity.java +++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/EditExerciseSetActivity.java @@ -104,10 +104,12 @@ public class EditExerciseSetActivity extends AppCompatActivity implements androi exerciseSetNameText.setText(exerciseSetName); exerciseSetNameText.addTextChangedListener(new TextWatcher() { @Override - public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } + public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { + } @Override - public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { } + public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { + } @Override public void afterTextChanged(Editable editable) { 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 420a85e..7f00c69 100644 --- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/ExerciseActivity.java +++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/ExerciseActivity.java @@ -214,6 +214,9 @@ public class ExerciseActivity extends AppCompatActivity implements android.suppo startService(timerServiceIntent); } + if(breakTimer != null) breakTimer.cancel(); + if(exerciseTimer != null) exerciseTimer.cancel(); + super.finish(); if(isActivityVisible) { 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 8b04097..4b8eb4b 100644 --- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/TimerActivity.java +++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/TimerActivity.java @@ -69,6 +69,9 @@ public class TimerActivity extends BaseActivity implements android.support.v4.ap private Spinner exerciseSetSpinner; private ExerciseSetSpinnerAdapter exerciseSetAdapter; + + private boolean isActivityVisible = false; + // animation private int mShortAnimationDuration; private boolean currentStatusIsPickerVisible = false; @@ -103,6 +106,10 @@ public class TimerActivity extends BaseActivity implements android.support.v4.ap boolean isRunning = intent.getBooleanExtra("isRunning", false); boolean isPaused = intent.getBooleanExtra("isPaused", false); + //if(intent.getBooleanExtra("done" ,false)) { + // TODO: show a dialog here to start the exercise? + //} + //Log.d(TAG, millisUntilDone + "/" + initialDuration + " (" + (isRunning ? "Running" : "") + (isPaused ? "Paused" : "") + (!isRunning && !isPaused ? "Stopped" : "") + ")"); updateUI(isRunning, isPaused, initialDuration, millisUntilDone); @@ -134,6 +141,8 @@ public class TimerActivity extends BaseActivity implements android.support.v4.ap protected void onPause() { super.onPause(); + isActivityVisible = false; + unregisterReceiver(timerReceiver); } @@ -141,6 +150,8 @@ public class TimerActivity extends BaseActivity implements android.support.v4.ap protected void onResume() { super.onResume(); + isActivityVisible = true; + registerReceiver(timerReceiver, new IntentFilter(TimerService.TIMER_BROADCAST)); if(mTimerService != null && !mTimerService.isRunning()) { diff --git a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/receivers/NotificationPreferenceChangedReceiver.java b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/receivers/NotificationCancelReceiver.java similarity index 56% rename from app/src/main/java/org/secuso/privacyfriendlybreakreminder/receivers/NotificationPreferenceChangedReceiver.java rename to app/src/main/java/org/secuso/privacyfriendlybreakreminder/receivers/NotificationCancelReceiver.java index 20d019d..969e4b5 100644 --- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/receivers/NotificationPreferenceChangedReceiver.java +++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/receivers/NotificationCancelReceiver.java @@ -19,27 +19,12 @@ import static org.secuso.privacyfriendlybreakreminder.activities.tutorial.PrefMa * created 02.11.2017 */ -public class NotificationPreferenceChangedReceiver extends BroadcastReceiver { +public class NotificationCancelReceiver extends BroadcastReceiver { - public static final String ACTION_PREF_CHANGE = "org.secuso.privacyfriendlybreakreminder.ACTION_PREF_CHANGE"; - public static final String EXTRA_DISABLE_CONTINUOUS = "EXTRA_DISABLE_CONTINUOUS"; + public static final String ACTION_NOTIFICATION_CANCELED = "org.secuso.privacyfriendlybreakreminder.ACTION_NOTIFICATION_CANCELED"; @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); - - for (String key : intent.getExtras().keySet()) { - if (EXTRA_DISABLE_CONTINUOUS.equals(key)) { - pref.edit().putBoolean(PREF_EXERCISE_CONTINUOUS, false).apply(); - } - } - NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); if (manager != null) { manager.cancel(TimerService.NOTIFICATION_ID); diff --git a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/receivers/NotificationDeletedReceiver.java b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/receivers/NotificationDeletedReceiver.java index b59e7ac..d909f85 100644 --- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/receivers/NotificationDeletedReceiver.java +++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/receivers/NotificationDeletedReceiver.java @@ -22,6 +22,9 @@ public class NotificationDeletedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { + + //boolean disableContinuous = intent.getBooleanExtra(EXTRA_DISABLE_CONTINUOUS, false); + SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context); if(pref.getBoolean(PREF_EXERCISE_CONTINUOUS, false)) { 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 67aa302..bf20608 100644 --- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/TimerService.java +++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/service/TimerService.java @@ -10,12 +10,8 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.os.Binder; -import android.os.Bundle; import android.os.CountDownTimer; -import android.os.Handler; -import android.os.HandlerThread; import android.os.IBinder; -import android.os.Looper; import android.preference.PreferenceManager; import android.provider.Settings; import android.support.v4.app.NotificationCompat; @@ -24,8 +20,8 @@ import android.support.v4.content.ContextCompat; import org.secuso.privacyfriendlybreakreminder.R; import org.secuso.privacyfriendlybreakreminder.activities.ExerciseActivity; import org.secuso.privacyfriendlybreakreminder.activities.TimerActivity; +import org.secuso.privacyfriendlybreakreminder.receivers.NotificationCancelReceiver; import org.secuso.privacyfriendlybreakreminder.receivers.NotificationDeletedReceiver; -import org.secuso.privacyfriendlybreakreminder.receivers.NotificationPreferenceChangedReceiver; import java.util.Locale; @@ -34,9 +30,8 @@ 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.receivers.NotificationCancelReceiver.ACTION_NOTIFICATION_CANCELED; import static org.secuso.privacyfriendlybreakreminder.receivers.NotificationDeletedReceiver.ACTION_NOTIFICATION_DELETED; -import static org.secuso.privacyfriendlybreakreminder.receivers.NotificationPreferenceChangedReceiver.ACTION_PREF_CHANGE; -import static org.secuso.privacyfriendlybreakreminder.receivers.NotificationPreferenceChangedReceiver.EXTRA_DISABLE_CONTINUOUS; /** * The main timer service. It handles the work timer and sends updates to the notification and the {@link TimerActivity}. @@ -96,7 +91,7 @@ public class TimerService extends Service { } }; private BroadcastReceiver notificationDeletedReceiver = new NotificationDeletedReceiver(); - private BroadcastReceiver notificationPreferenceChangedReceiver = new NotificationPreferenceChangedReceiver(); + private BroadcastReceiver notificationPreferenceChangedReceiver = new NotificationCancelReceiver(); private void onTimerDone() { @@ -127,9 +122,7 @@ public class TimerService extends Service { 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, FLAG_UPDATE_CURRENT)); + builder.addAction(0, getString(R.string.dismiss_and_dont_repeat), PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(ACTION_NOTIFICATION_CANCELED), FLAG_UPDATE_CURRENT)); } builder.addAction(R.drawable.ic_replay_black_48dp, getString(R.string.snooze), snoozeExercise); @@ -144,7 +137,7 @@ public class TimerService extends Service { registerReceiver(timerReceiver, new IntentFilter(TIMER_BROADCAST)); registerReceiver(notificationDeletedReceiver, new IntentFilter(ACTION_NOTIFICATION_DELETED)); - registerReceiver(notificationPreferenceChangedReceiver, new IntentFilter(ACTION_PREF_CHANGE)); + registerReceiver(notificationPreferenceChangedReceiver, new IntentFilter(ACTION_NOTIFICATION_CANCELED)); } @Override diff --git a/app/src/main/res/drawable/button_section.xml b/app/src/main/res/drawable/button_section.xml index ab7da09..8ace8f7 100644 --- a/app/src/main/res/drawable/button_section.xml +++ b/app/src/main/res/drawable/button_section.xml @@ -5,6 +5,11 @@ + @@ -12,6 +17,11 @@ + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_edit_exercise_set.xml b/app/src/main/res/layout/activity_edit_exercise_set.xml index 16bc613..01754da 100644 --- a/app/src/main/res/layout/activity_edit_exercise_set.xml +++ b/app/src/main/res/layout/activity_edit_exercise_set.xml @@ -1,66 +1,65 @@ - + android:fitsSystemWindows="true"> + + + android:theme="@style/AppTheme.AppBarOverlay"> - + app:popupTheme="@style/AppTheme.PopupOverlay"/> + android:maxLines="1" + android:textColor="@color/white" + android:textColorHint="@color/white"/> + app:layout_behavior="@string/appbar_scrolling_view_behavior"> @@ -70,16 +69,11 @@ style="?android:attr/progressBarStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginBottom="8dp" - android:layout_marginLeft="8dp" - android:layout_marginRight="8dp" - android:layout_marginTop="8dp" + android:visibility="visible" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toTopOf="parent" - android:layout_marginStart="8dp" - android:layout_marginEnd="8dp" /> + app:layout_constraintTop_toTopOf="parent" /> @@ -87,14 +81,16 @@ android:id="@+id/add_button" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignParentBottom="true" android:layout_marginBottom="16dp" android:layout_marginRight="16dp" android:clickable="true" + android:focusable="true" android:onClick="onClick" app:fabSize="normal" app:layout_anchor="@id/constraintLayout2" app:layout_anchorGravity="bottom|end" app:srcCompat="@drawable/ic_edit_white_24dp" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_manage_exercise_set.xml b/app/src/main/res/layout/activity_manage_exercise_set.xml index 9ff1a30..95343d5 100644 --- a/app/src/main/res/layout/activity_manage_exercise_set.xml +++ b/app/src/main/res/layout/activity_manage_exercise_set.xml @@ -36,6 +36,8 @@ android:id="@+id/no_exercise_sets_text" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:gravity="center" + android:textAlignment="center" android:text="@string/no_exercise_sets" android:visibility="gone" app:layout_constraintBottom_toBottomOf="parent" diff --git a/app/src/main/res/layout/layout_section_filter_button.xml b/app/src/main/res/layout/layout_section_filter_button.xml index a633e19..1b9cb4f 100644 --- a/app/src/main/res/layout/layout_section_filter_button.xml +++ b/app/src/main/res/layout/layout_section_filter_button.xml @@ -7,21 +7,20 @@ + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent" /> \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 9ce919f..4056463 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -82,8 +82,8 @@ Zeit auswählen Zeitpläne Übungseinstellungen - Fortlaufende Intervalle - Starte das nächste Arbeitsinterval automatisch + Fortlaufende Arbeitsintervalle + Starte das nächste Arbeitsintervall automatisch Tage auswählen Nur an bestimmten Tagen auslösen Keine Tage ausgewählt @@ -134,7 +134,7 @@ Später Pause starten Okay - Nächste + Weiter Überspringen Hilfe Speichern diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b478f2a..2b0ba13 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -71,8 +71,8 @@ Schedule time Schedule Times Exercise Settings - Continuous exercises - Start the next timer automatically + Continuous work intervals + Start the next work timer automatically Choose days Only trigger on certain days No days selected.