Skip to content

Commit

Permalink
When pressing the taken/skipped button again, the notification can be… (
Browse files Browse the repository at this point in the history
#346)

* When pressing the taken/skipped button again, the notification can be re-raised now

* Bump version to v1.12.1

* Translation now keeps indentation

* Fix indentation

* Code climate issues
  • Loading branch information
Futsch1 authored Nov 23, 2024
1 parent 7456092 commit d53b4ef
Show file tree
Hide file tree
Showing 15 changed files with 62 additions and 8 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ android {
applicationId = "com.futsch1.medtimer"
minSdk = 33
targetSdk = 35
versionCode = 85
versionName = "1.12.0"
versionCode = 86
versionName = "1.12.1"
base.archivesName = "MedTimer"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@ public interface MedicineDao {
@Query("DELETE FROM ReminderEvent")
void deleteReminderEvents();

@Delete
void deleteReminderEvent(ReminderEvent reminderEvent);

@Query("DELETE FROM Reminder")
void deleteReminders();

Expand All @@ -85,5 +88,4 @@ public interface MedicineDao {

@Query("SELECT * FROM Reminder WHERE linkedReminderId= :reminderId")
List<Reminder> getLinkedReminders(int reminderId);

}
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,10 @@ public void deleteReminderEvents() {
MedicineRoomDatabase.databaseWriteExecutor.execute(medicineDao::deleteReminderEvents);
}

public void deleteReminderEvent(ReminderEvent reminderEvent) {
MedicineRoomDatabase.databaseWriteExecutor.execute(() -> medicineDao.deleteReminderEvent(reminderEvent));
}

public List<Reminder> getLinkedReminders(int reminderId) {
return medicineDao.getLinkedReminders(reminderId);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.futsch1.medtimer.overview;

import android.app.Application;
import android.content.Intent;
import android.os.Handler;
import android.os.HandlerThread;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
Expand All @@ -9,7 +12,9 @@
import androidx.recyclerview.widget.RecyclerView;

import com.futsch1.medtimer.R;
import com.futsch1.medtimer.database.MedicineRepository;
import com.futsch1.medtimer.database.ReminderEvent;
import com.futsch1.medtimer.helpers.DeleteHelper;
import com.futsch1.medtimer.helpers.TimeHelper;
import com.futsch1.medtimer.helpers.ViewColorHelper;
import com.futsch1.medtimer.reminders.ReminderProcessor;
Expand All @@ -24,13 +29,17 @@ public class LatestRemindersViewHolder extends RecyclerView.ViewHolder {
private final Chip chipTaken;
private final Chip chipSkipped;
private final ChipGroup chipGroup;
private final HandlerThread thread;
private boolean checkedChanged = false;

private LatestRemindersViewHolder(View itemView) {
super(itemView);
reminderEventText = itemView.findViewById(R.id.reminderEventText);
chipTaken = itemView.findViewById(R.id.chipTaken);
chipSkipped = itemView.findViewById(R.id.chipSkipped);
chipGroup = itemView.findViewById(R.id.takenOrSkipped);
thread = new HandlerThread("DeleteReminderEvent");
thread.start();
}

static LatestRemindersViewHolder create(ViewGroup parent) {
Expand All @@ -46,6 +55,13 @@ public void bind(ReminderEvent reminderEvent) {
String reminderEventTextString = reminderEventText.getContext().getString(amountStringId, reminderEvent.amount, reminderEvent.medicineName, takenDateTime);
reminderEventText.setText(reminderEventTextString);

setupChips(reminderEvent);
setupColorAndIcon(reminderEvent);

checkedChanged = false;
}

private void setupChips(ReminderEvent reminderEvent) {
chipGroup.setOnCheckedStateChangeListener((group, checkedIds) -> {
// Intentionally empty
});
Expand All @@ -58,9 +74,14 @@ public void bind(ReminderEvent reminderEvent) {
if (!checkedIds.isEmpty()) {
int checkedId = checkedIds.get(0);
processTakenOrSkipped(reminderEvent, R.id.chipTaken == checkedId);
checkedChanged = true;
}
});
chipTaken.setOnClickListener(v -> processDeleteReRaiseReminderEvent(reminderEvent, chipTaken.isChecked()));
chipSkipped.setOnClickListener(v -> processDeleteReRaiseReminderEvent(reminderEvent, chipSkipped.isChecked()));
}

private void setupColorAndIcon(ReminderEvent reminderEvent) {
if (reminderEvent.useColor) {
ViewColorHelper.setCardBackground((MaterialCardView) itemView, Collections.singletonList(reminderEventText), reminderEvent.color);
} else {
Expand All @@ -77,4 +98,20 @@ private void processTakenOrSkipped(ReminderEvent reminderEvent, boolean taken) {
ReminderProcessor.getDismissedActionIntent(itemView.getContext(), reminderEvent.reminderEventId);
itemView.getContext().sendBroadcast(i, "com.futsch1.medtimer.NOTIFICATION_PROCESSED");
}

private void processDeleteReRaiseReminderEvent(ReminderEvent reminderEvent, boolean checked) {
if (checked && !checkedChanged) {
new DeleteHelper(itemView.getContext()).deleteItem(R.string.delete_re_raise_event, () -> {
Handler handler = new Handler(thread.getLooper());
handler.post(() -> {
MedicineRepository medicineRepository = new MedicineRepository((Application) itemView.getContext().getApplicationContext());
medicineRepository.deleteReminderEvent(reminderEvent);
ReminderProcessor.requestReschedule(itemView.getContext());
});
}, () -> {
// Intentionally empty
});
}
checkedChanged = false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ public void onSwiped(@NonNull final RecyclerView.ViewHolder viewHolder, int dire
}

private void setupSwipeDelete(RecyclerView latestReminders) {
SwipeHelper.createLeftSwipeTouchHelper(requireContext(), viewHolder -> deleteItem(requireContext(), viewHolder.getItemId(), viewHolder.getBindingAdapterPosition()))
SwipeHelper.createLeftSwipeTouchHelper(requireContext(), viewHolder -> deleteReminderEvent(requireContext(), viewHolder.getItemId(), viewHolder.getBindingAdapterPosition()))
.attachToRecyclerView(latestReminders);
}

Expand Down Expand Up @@ -137,7 +137,7 @@ private void navigateToEditEvent(long eventId) {
}
}

private void deleteItem(Context context, long itemId, int adapterPosition) {
private void deleteReminderEvent(Context context, long itemId, int adapterPosition) {
DeleteHelper deleteHelper = new DeleteHelper(context);
deleteHelper.deleteItem(R.string.are_you_sure_delete_reminder_event, () -> {
final Handler threadHandler = new Handler(thread.getLooper());
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values-de/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -160,4 +160,5 @@
<string name="linked_reminder_delay">Verzögerung der folgende Dosis</string>
<string name="delay">Verzögerung</string>
<string name="linked_reminder_summary">Nach Erinnerung um %1$s</string>
<string name="delete_re_raise_event">Möchten Sie dieses Ereignis löschen und die Benachrichtigung erneut auslösen?</string>
</resources>
1 change: 1 addition & 0 deletions app/src/main/res/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -162,4 +162,5 @@
<string name="linked_reminder_delay">Retraso para la siguiente dosis</string>
<string name="delay">Retraso</string>
<string name="linked_reminder_summary">Tras recordatorio en %1$s</string>
<string name="delete_re_raise_event">¿Desea eliminar este evento y volver a subir la notificación?</string>
</resources>
1 change: 1 addition & 0 deletions app/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -162,4 +162,5 @@
<string name="linked_reminder_delay">Délai pour la dose suivante</string>
<string name="delay">Délai</string>
<string name="linked_reminder_summary">Après le rappel à %1$s</string>
<string name="delete_re_raise_event">Souhaitez-vous supprimer cet événement et relancer la notification ?</string>
</resources>
1 change: 1 addition & 0 deletions app/src/main/res/values-it/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -162,4 +162,5 @@
<string name="linked_reminder_delay">Ritardo per la dose successiva</string>
<string name="delay">Ritardo</string>
<string name="linked_reminder_summary">Dopo il promemoria a %1$s</string>
<string name="delete_re_raise_event">Si vuole cancellare questo evento e rilanciare la notifica?</string>
</resources>
2 changes: 1 addition & 1 deletion app/src/main/res/values-nl/strings.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="tab_settings">Instellingen</string>
<string name="tab_overview">Overzicht</string>
Expand Down Expand Up @@ -161,4 +160,5 @@
<string name="linked_reminder_delay">Vertraging voor volgende dosis</string>
<string name="delay">Vertraging</string>
<string name="linked_reminder_summary">Na herinnering op %1$s</string>
<string name="delete_re_raise_event">Wil je deze gebeurtenis verwijderen en de melding opnieuw verhogen?</string>
</resources>
1 change: 1 addition & 0 deletions app/src/main/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -164,4 +164,5 @@
<string name="linked_reminder_delay">Задержка для следующей дозы</string>
<string name="delay">Задержка</string>
<string name="linked_reminder_summary">После напоминания на %1$s</string>
<string name="delete_re_raise_event">Хотите ли вы удалить это событие и снова поднять уведомление?</string>
</resources>
2 changes: 1 addition & 1 deletion app/src/main/res/values-tr/strings.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="tab_settings">Ayarlar</string>
<string name="tab_overview">Genel Bakış</string>
Expand Down Expand Up @@ -161,4 +160,5 @@
<string name="linked_reminder_delay">Takip eden doz için gecikme</string>
<string name="delay">Gecikme</string>
<string name="linked_reminder_summary">%1$s adresindeki hatırlatmadan sonra</string>
<string name="delete_re_raise_event">Bu olayı silmek ve bildirimi yeniden yükseltmek istiyor musunuz?</string>
</resources>
1 change: 1 addition & 0 deletions app/src/main/res/values-zh-rCN/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -158,4 +158,5 @@
<string name="linked_reminder_delay">延迟后续剂量</string>
<string name="delay">延迟</string>
<string name="linked_reminder_summary">在 %1$s 处提醒后</string>
<string name="delete_re_raise_event">您想删除此事件并重新发出通知吗?</string>
</resources>
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -162,4 +162,5 @@
<string name="linked_reminder_delay">Delay for following dose</string>
<string name="delay">Delay</string>
<string name="linked_reminder_summary">After reminder at %1$s</string>
<string name="delete_re_raise_event">Do you want to delete this event and re-raise the notification?</string>
</resources>
6 changes: 5 additions & 1 deletion translate.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@ def escape(str_xml: str):

# Update the existing strings.xml files
for language in languages:
with open(f'app/src/main/res/values-{language}/strings.xml', 'r') as f:
line = f.readlines()[3]
indentation = ' ' * (len(line) - len(line.lstrip()))

with open(f'app/src/main/res/values-{language}/strings.xml', 'wb') as f:
ET.indent(language_tree[language])
ET.indent(language_tree[language], indentation)
language_tree[language].write(f, encoding='utf-8')

0 comments on commit d53b4ef

Please sign in to comment.