diff --git a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/BabyLayoutHolder.java b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/BabyLayoutHolder.java
index b0b44861..6412ce96 100644
--- a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/BabyLayoutHolder.java
+++ b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/BabyLayoutHolder.java
@@ -21,9 +21,7 @@
import eu.pkgsoftware.babybuddywidgets.networking.BabyBuddyClient;
import eu.pkgsoftware.babybuddywidgets.networking.ChildrenStateTracker;
import eu.pkgsoftware.babybuddywidgets.networking.babybuddy.models.TimeEntry;
-import eu.pkgsoftware.babybuddywidgets.timers.EmptyTimerListProvider;
import eu.pkgsoftware.babybuddywidgets.timers.TimerControlInterface;
-import eu.pkgsoftware.babybuddywidgets.timers.TimerListProvider;
import eu.pkgsoftware.babybuddywidgets.timers.TimersUpdatedCallback;
import eu.pkgsoftware.babybuddywidgets.timers.TranslatedException;
import eu.pkgsoftware.babybuddywidgets.utils.Promise;
@@ -32,7 +30,6 @@ public class BabyLayoutHolder extends RecyclerView.ViewHolder implements TimerCo
private final BabyManagerBinding binding;
private final BaseFragment baseFragment;
private final BabyBuddyClient client;
- private TimerListProvider timerListProvider = null;
private BabyBuddyClient.Child child = null;
@@ -55,9 +52,6 @@ public BabyLayoutHolder(BaseFragment fragment, BabyManagerBinding bmb) {
baseFragment = fragment;
client = fragment.getMainActivity().getClient();
- GridLayoutManager l = new GridLayoutManager(binding.timersList.getContext(), 1);
- binding.timersList.setLayoutManager(l);
-
binding.mainScrollView.setOnScrollChangeListener((v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
if (childHistoryLoader != null) {
childHistoryLoader.updateTop();
@@ -87,7 +81,6 @@ private void resetChildHistoryLoader() {
childHistoryLoader.close();
}
childHistoryLoader = null;
- binding.timersList.setAdapter(new EmptyTimerListProvider());
}
public void updateChild(BabyBuddyClient.Child c, ChildrenStateTracker stateTracker) {
@@ -117,8 +110,6 @@ public void updateChild(BabyBuddyClient.Child c, ChildrenStateTracker stateTrack
}
);
- timerListProvider = new TimerListProvider(baseFragment, this);
- binding.timersList.setAdapter(timerListProvider);
loggingButtonController = new LoggingButtonController(
baseFragment,
@@ -208,7 +199,6 @@ public void clear() {
public void close() {
clear();
- timerListProvider.close();
}
private class UpdateBufferingPromise implements Promise {
@@ -253,29 +243,6 @@ public void stopTimer(@NotNull BabyBuddyClient.Timer timer, @NonNull Promise cb
- ) {
- baseFragment.getMainActivity().getChildTimerControl(child).storeActivity(
- timer,
- activity,
- notes,
- new UpdateBufferingPromise<>(cb) {
- @Override
- public void succeeded(Boolean aBoolean) {
- super.succeeded(aBoolean);
- if (childHistoryLoader != null) {
- childHistoryLoader.forceRefresh();
- }
- }
- }
- );
- }
-
@Override
public void registerTimersUpdatedCallback(@NonNull TimersUpdatedCallback callback) {
if (updateTimersCallbacks.contains(callback)) {
diff --git a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/activitycomponents/TimerControl.kt b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/activitycomponents/TimerControl.kt
index 4557804c..099c3087 100644
--- a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/activitycomponents/TimerControl.kt
+++ b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/activitycomponents/TimerControl.kt
@@ -70,15 +70,6 @@ class TimerControl(val mainActivity: MainActivity, val childId: Int) : TimerCont
})
}
- override fun storeActivity(
- timer: Timer,
- activity: String,
- notes: String,
- cb: Promise
- ) {
- throw NotImplementedError()
- }
-
override fun registerTimersUpdatedCallback(callback: TimersUpdatedCallback) {
updateTimersCallback = callback
}
diff --git a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/compat/BabyBuddyV2TimerAdapter.kt b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/compat/BabyBuddyV2TimerAdapter.kt
index 4adec1ec..dcb36485 100644
--- a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/compat/BabyBuddyV2TimerAdapter.kt
+++ b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/compat/BabyBuddyV2TimerAdapter.kt
@@ -236,19 +236,6 @@ class BabyBuddyV2TimerAdapter(
}
}
- override fun storeActivity(
- timer: Timer,
- activity: String,
- notes: String,
- cb: Promise
- ) {
- virtualToActualTimer(timer)?.let {
- wrap.storeActivity(it, activity, notes, cb)
- } ?: {
- cb.failed(java.lang.Exception("Timer ${timer.name} does not exist"))
- }
- }
-
override fun registerTimersUpdatedCallback(callback: TimersUpdatedCallback) {
timersCallback = callback
triggerTimerCallback()
diff --git a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/timers/EmptyTimerListProvider.kt b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/timers/EmptyTimerListProvider.kt
deleted file mode 100644
index ea02749c..00000000
--- a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/timers/EmptyTimerListProvider.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-package eu.pkgsoftware.babybuddywidgets.timers
-
-import android.view.ViewGroup
-import androidx.recyclerview.widget.RecyclerView
-
-class EmptyTimerListProvider : RecyclerView.Adapter() {
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TimerListViewHolder {
- throw NotImplementedError()
- }
-
- override fun onBindViewHolder(holder: TimerListViewHolder, position: Int) {}
-
- override fun getItemCount(): Int {
- return 0
- }
-}
diff --git a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/timers/TimerControlInterface.kt b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/timers/TimerControlInterface.kt
index bd3009d2..84b9313c 100644
--- a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/timers/TimerControlInterface.kt
+++ b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/timers/TimerControlInterface.kt
@@ -17,12 +17,6 @@ interface TimerControlInterface {
fun createNewTimer(timer: Timer, cb: Promise)
fun startTimer(timer: Timer, cb: Promise)
fun stopTimer(timer: Timer, cb: Promise)
- fun storeActivity(
- timer: Timer,
- activity: String,
- notes: String,
- cb: Promise
- )
fun registerTimersUpdatedCallback(callback: TimersUpdatedCallback)
fun unregisterTimersUpdatedCallback(callback: TimersUpdatedCallback)
fun getNotes(timer: Timer): Notes
diff --git a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/timers/TimerListProvider.java b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/timers/TimerListProvider.java
deleted file mode 100644
index e0341a5a..00000000
--- a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/timers/TimerListProvider.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package eu.pkgsoftware.babybuddywidgets.timers;
-
-import android.view.LayoutInflater;
-import android.view.ViewGroup;
-
-import org.jetbrains.annotations.NotNull;
-
-import java.util.Arrays;
-import java.util.LinkedList;
-import java.util.List;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-import eu.pkgsoftware.babybuddywidgets.BaseFragment;
-import eu.pkgsoftware.babybuddywidgets.history.ChildEventHistoryLoader;
-import eu.pkgsoftware.babybuddywidgets.networking.BabyBuddyClient;
-
-public class TimerListProvider extends RecyclerView.Adapter implements TimersUpdatedCallback {
- private BabyBuddyClient.Timer[] timers = new BabyBuddyClient.Timer[0];
-
- private final BaseFragment baseFragment;
- private final List holders = new LinkedList<>();
- private final TimerControlInterface timerControls;
-
- public TimerListProvider(
- @NotNull BaseFragment baseFragment,
- @NotNull TimerControlInterface timerControls
- ) {
- super();
- this.baseFragment = baseFragment;
- this.timerControls = timerControls;
- this.timerControls.registerTimersUpdatedCallback(this);
- }
-
- private int[] listIds(BabyBuddyClient.Timer[] t) {
- int[] result = new int[t.length];
- for (int i = 0; i < t.length; i++) {
- result[i] = t[i].id;
- }
- Arrays.sort(result);
- return result;
- }
-
- private boolean compareIds(BabyBuddyClient.Timer[] t1, BabyBuddyClient.Timer[] t2) {
- return Arrays.equals(listIds(t1), listIds(t2));
- }
-
- private TimerListViewHolder findHolderForTimer(BabyBuddyClient.Timer t) {
- TimerListViewHolder result = null;
- for (TimerListViewHolder h : holders) {
- if (h.getTimer().id == t.id) {
- if (result != null) {
- return null; // Multiple timers - dismiss
- } else {
- result = h;
- }
- }
- }
- return result;
- }
-
- @Override
- public TimerListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- eu.pkgsoftware.babybuddywidgets.databinding.QuickTimerEntryBinding entryBinding = eu.pkgsoftware.babybuddywidgets.databinding.QuickTimerEntryBinding.inflate(LayoutInflater.from(parent.getContext()));
- return new TimerListViewHolder(baseFragment, entryBinding, timerControls);
- }
-
- @Override
- public void onViewAttachedToWindow(@NonNull TimerListViewHolder holder) {
- super.onViewAttachedToWindow(holder);
- holders.add(holder);
- }
-
- @Override
- public void onViewDetachedFromWindow(@NonNull TimerListViewHolder holder) {
- super.onViewDetachedFromWindow(holder);
- holders.remove(holder);
- }
-
- @Override
- public void onBindViewHolder(TimerListViewHolder holder, int position) {
- holder.assignTimer(timers[position]);
- }
-
- @Override
- public int getItemCount() {
- return timers.length;
- }
-
- public void close() {
- for (TimerListViewHolder h : holders) {
- h.close();
- }
- }
-
- @Override
- public void newTimerListLoaded(@NonNull BabyBuddyClient.Timer[] timers) {
- timers = timers.clone();
- Arrays.sort(timers, (a, b) -> Integer.compare(a.id, b.id));
-
- if (!compareIds(timers, this.timers)) {
- this.timers = timers;
- notifyDataSetChanged();
- } else {
- for (int i = 0; i < timers.length; i++) {
- final TimerListViewHolder timerHolder = findHolderForTimer(timers[i]);
- if (!this.timers[i].equals(timers[i])) {
- BabyBuddyClient.Timer probeTimer = timers[i].clone();
- probeTimer.start = this.timers[i].start;
- probeTimer.end = this.timers[i].end;
- boolean probeTimerEqual = probeTimer.equals(this.timers[i]);
-
- this.timers[i] = timers[i];
- if (probeTimerEqual && (timerHolder != null)) {
- timerHolder.assignTimer(timers[i]);
- } else {
- notifyItemChanged(i);
- }
- } else if (timerHolder != null) {
- timerHolder.updateNoChange();
- }
- }
- }
- }
-}
diff --git a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/timers/TimerListViewHolder.java b/app/src/main/java/eu/pkgsoftware/babybuddywidgets/timers/TimerListViewHolder.java
deleted file mode 100644
index a99f208e..00000000
--- a/app/src/main/java/eu/pkgsoftware/babybuddywidgets/timers/TimerListViewHolder.java
+++ /dev/null
@@ -1,243 +0,0 @@
-package eu.pkgsoftware.babybuddywidgets.timers;
-
-import android.os.Handler;
-
-import com.squareup.phrase.Phrase;
-
-import org.jetbrains.annotations.NotNull;
-
-import java.util.Date;
-
-import androidx.annotation.NonNull;
-import androidx.recyclerview.widget.RecyclerView;
-import eu.pkgsoftware.babybuddywidgets.BaseFragment;
-import eu.pkgsoftware.babybuddywidgets.CredStore;
-import eu.pkgsoftware.babybuddywidgets.NotesControl;
-import eu.pkgsoftware.babybuddywidgets.NotesEditorLogic;
-import eu.pkgsoftware.babybuddywidgets.R;
-import eu.pkgsoftware.babybuddywidgets.databinding.NotesEditorBinding;
-import eu.pkgsoftware.babybuddywidgets.databinding.QuickTimerEntryBinding;
-import eu.pkgsoftware.babybuddywidgets.login.Utils;
-import eu.pkgsoftware.babybuddywidgets.networking.BabyBuddyClient;
-import eu.pkgsoftware.babybuddywidgets.networking.RequestCodeFailure;
-import eu.pkgsoftware.babybuddywidgets.utils.Promise;
-import eu.pkgsoftware.babybuddywidgets.widgets.SwitchButtonLogic;
-
-public class TimerListViewHolder extends RecyclerView.ViewHolder {
- private final @NotNull QuickTimerEntryBinding binding;
-
- private final @NotNull BaseFragment baseFragment;
- private final BabyBuddyClient client;
- private final Handler timerHandler;
- private final TimerControlInterface timerControl;
-
- private final SwitchButtonLogic notesEditorSwitch;
- private final NotesEditorLogic notesEditor;
-
- private SwitchButtonLogic startStopLogic = null;
-
- private BabyBuddyClient.Timer timer = null;
- private Long timerStartTime = null;
-
- private boolean isClosed = false;
-
- private boolean newUpdatedPosted = false;
-
- private void updateTimerTime() {
- if (timerStartTime == null) {
- binding.currentTimerTime.setText("");
- } else {
- long diff = System.currentTimeMillis() + timerStartTime;
-
- int seconds = (int) diff / 1000;
- int minutes = seconds / 60;
- int hours = minutes / 60;
-
- binding.currentTimerTime.setText(
- "HH:MM:ss"
- .replaceAll("HH", "" + hours)
- .replaceAll("MM", Utils.Companion.padToLen("" + (minutes % 60), '0', 2))
- .replaceAll("ss", Utils.Companion.padToLen("" + (seconds % 60), '0', 2))
- );
-
- if (!newUpdatedPosted) {
- timerHandler.postDelayed(() -> {
- newUpdatedPosted = false;
- if (!isClosed) {
- updateTimerTime();
- }
- }, 500);
- newUpdatedPosted = true;
- }
- }
- }
-
- public TimerListViewHolder(
- BaseFragment baseFragment,
- QuickTimerEntryBinding binding,
- TimerControlInterface timerControl
- ) {
- super(binding.getRoot());
-
- this.baseFragment = baseFragment;
- this.binding = binding;
- this.timerControl = timerControl;
-
- client = baseFragment.getMainActivity().getClient();
-
- binding.currentTimerTime.setText("");
- timerHandler = new Handler(baseFragment.getMainActivity().getMainLooper());
-
- notesEditorSwitch = new SwitchButtonLogic(
- binding.addNoteButton, binding.removeNoteButton, false
- );
- NotesEditorBinding notesBinding = NotesEditorBinding.inflate(
- baseFragment.getMainActivity().getLayoutInflater()
- );
- binding.verticalRoot.addView(notesBinding.getRoot());
- notesEditor = new NotesEditorLogic(notesBinding, false);
- notesEditorSwitch.addStateListener((v, userTriggered) -> notesEditor.setVisible(v));
-
- startStopLogic = new SwitchButtonLogic(
- binding.appStartTimerButton,
- binding.appStopTimerButton,
- false
- );
- startStopLogic.addStateListener(
- (active, userClicked) -> {
- if (timer == null) {
- return;
- }
- if (!userClicked) {
- return;
- }
-
- if (active) {
- this.timerControl.startTimer(timer, new Promise<>() {
- @Override
- public void succeeded(BabyBuddyClient.Timer t) {
- timer = t;
- updateActiveState();
- }
-
- @Override
- public void failed(TranslatedException s) {
- }
- });
- } else {
- if (BabyBuddyClient.ACTIVITIES.index(timer.name) < 0) {
- throw new UnsupportedOperationException("Activity does not exist: " + timer.name);
- }
- this.timerControl.storeActivity(
- timer,
- timer.name,
- notesEditor.getText(),
- new Promise<>() {
- @Override
- public void succeeded(Boolean stopped) {
- if (stopped == null) {
- stopped = true;
- }
-
- if (stopped) {
- timer.active = false;
- updateActiveState();
-
- notesEditor.clearText();
- notesEditorSwitch.setState(false);
- }
- }
-
- @Override
- public void failed(Exception e) {
- tryResolveStoreError(e);
- }
- }
- );
- }
- }
- );
- }
-
- private void tryResolveStoreError(@NotNull Exception error) {
- new ResolveConflicts(baseFragment, timer, timerControl) {
- @Override
- protected void updateTimerActiveState() {
- updateActiveState();
- }
-
- @Override
- protected void finished() {
- }
- }.tryResolveStoreError(error);
- }
-
- private void updateActiveState() {
- startStopLogic.setState(timer.active);
- if ((timer == null) || (!timer.active)) {
- timerStartTime = null;
- } else {
- timerStartTime = new Date().getTime() - timer.start.getTime() + client.getServerDateOffsetMillis() - System.currentTimeMillis();
- }
- updateTimerTime();
- }
-
- public void assignTimer(BabyBuddyClient.Timer timer) {
- if (isClosed) {
- isClosed = false;
- updateTimerTime();
- }
-
- this.timer = timer;
-
- String name = timer.readableName();
- final int activityIndex = BabyBuddyClient.ACTIVITIES.index(timer.name);
- if (activityIndex >= 0) {
- final String[] names = baseFragment.getResources().getStringArray(R.array.timerTypeNames);
- name = names[activityIndex];
- }
- binding.timerName.setText(name);
-
- updateActiveState();
-
- notesEditor.setNotes(
- new NotesControl() {
- @Override
- public void persistChanges() {
- baseFragment.getMainActivity().getCredStore().storePrefs();
- }
-
- @Override
- public void setNotes(@NonNull CredStore.Notes notes) {
- timerControl.setNotes(timer, notes);
- }
-
- @NonNull
- @Override
- public CredStore.Notes getNotes() {
- return timerControl.getNotes(timer);
- }
- }
- );
- notesEditorSwitch.setState(notesEditor.isVisible());
- }
-
- /**
- * Called if a new data frame was received from the server, but no timer-data was
- * changed.
- */
- public void updateNoChange() {
- // We might have "short circuited" the timer-active state. If this was the case,
- // re-enable the timer now!
- updateActiveState();
- }
-
- public BabyBuddyClient.Timer getTimer() {
- return timer.clone();
- }
-
- public void close() {
- timerStartTime = null;
- isClosed = true;
- }
-}
diff --git a/app/src/main/res/layout/baby_manager.xml b/app/src/main/res/layout/baby_manager.xml
index b6a9bcbe..06f452c0 100644
--- a/app/src/main/res/layout/baby_manager.xml
+++ b/app/src/main/res/layout/baby_manager.xml
@@ -174,12 +174,6 @@
app:tint="@color/fixed_color_button_text_color" />
-
-