diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AlarmDetails.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AlarmDetails.java index f0d88d805..1dceb49f2 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AlarmDetails.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AlarmDetails.java @@ -22,6 +22,7 @@ import android.text.format.DateFormat; import android.view.MenuItem; import android.view.View; import android.widget.CheckedTextView; +import android.widget.EditText; import android.widget.TimePicker; import nodomain.freeyourgadget.gadgetbridge.GBApplication; @@ -46,6 +47,8 @@ public class AlarmDetails extends AbstractGBActivity { private CheckedTextView cbFriday; private CheckedTextView cbSaturday; private CheckedTextView cbSunday; + private EditText title; + private EditText description; private GBDevice device; @Override @@ -56,6 +59,9 @@ public class AlarmDetails extends AbstractGBActivity { alarm = (Alarm) getIntent().getSerializableExtra(nodomain.freeyourgadget.gadgetbridge.model.Alarm.EXTRA_ALARM); device = getIntent().getParcelableExtra(GBDevice.EXTRA_DEVICE); + title = findViewById(R.id.alarm_title); + description = findViewById(R.id.alarm_description); + timePicker = findViewById(R.id.alarm_time_picker); cbSmartWakeup = findViewById(R.id.alarm_cb_smart_wakeup); cbSnooze = findViewById(R.id.alarm_cb_snooze); @@ -126,6 +132,12 @@ public class AlarmDetails extends AbstractGBActivity { int snoozeVisibility = supportsSnoozing() ? View.VISIBLE : View.GONE; cbSnooze.setVisibility(snoozeVisibility); + int descriptionVisibility = supportsDescription() ? View.VISIBLE : View.GONE; + title.setVisibility(descriptionVisibility); + title.setText(alarm.getTitle()); + description.setVisibility(descriptionVisibility); + description.setText(alarm.getDescription()); + cbMonday.setChecked(alarm.getRepetition(Alarm.ALARM_MON)); cbTuesday.setChecked(alarm.getRepetition(Alarm.ALARM_TUE)); cbWednesday.setChecked(alarm.getRepetition(Alarm.ALARM_WED)); @@ -144,6 +156,14 @@ public class AlarmDetails extends AbstractGBActivity { return false; } + private boolean supportsDescription() { + if (device != null) { + DeviceCoordinator coordinator = DeviceHelper.getInstance().getCoordinator(device); + return coordinator.supportsAlarmDescription(device); + } + return false; + } + private boolean supportsSnoozing() { if (device != null) { DeviceCoordinator coordinator = DeviceHelper.getInstance().getCoordinator(device); @@ -170,6 +190,8 @@ public class AlarmDetails extends AbstractGBActivity { alarm.setRepetition(repetitionMask); alarm.setHour(timePicker.getCurrentHour()); alarm.setMinute(timePicker.getCurrentMinute()); + alarm.setTitle(title.getText().toString()); + alarm.setDescription(description.getText().toString()); DBHelper.store(alarm); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinator.java index eea9dd67f..693767c44 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinator.java @@ -152,6 +152,11 @@ public abstract class AbstractDeviceCoordinator implements DeviceCoordinator { return false; } + @Override + public boolean supportsAlarmDescription(GBDevice device) { + return false; + } + @Override public boolean supportsMusicInfo() { return false; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java index 4c08012bd..877f6d727 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java @@ -207,6 +207,12 @@ public interface DeviceCoordinator { */ boolean supportsAlarmSnoozing(); + /** + * Returns true if this device/coordinator supports alarm descriptions + * @return + */ + boolean supportsAlarmDescription(GBDevice device); + /** * Returns true if the given device supports heart rate measurements. * @return diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java index 28d5e3d08..ee9cbec3a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java @@ -125,6 +125,11 @@ public class QHybridCoordinator extends AbstractDeviceCoordinator { return this.supportsAlarmConfiguration() ? 5 : 0; } + @Override + public boolean supportsAlarmDescription(GBDevice device) { + return isHybridHR(); + } + @Override public boolean supportsSmartWakeup(GBDevice device) { return false; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/Alarm.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/Alarm.java index d996bfa20..970c794cd 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/Alarm.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/Alarm.java @@ -52,4 +52,8 @@ public interface Alarm extends Serializable { int getHour(); int getMinute(); + + String getTitle(); + + String getDescription(); } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_alarm_details.xml b/app/src/main/res/layout/activity_alarm_details.xml index f3ab4f7dd..a82069e06 100644 --- a/app/src/main/res/layout/activity_alarm_details.xml +++ b/app/src/main/res/layout/activity_alarm_details.xml @@ -9,133 +9,153 @@ android:id="@+id/scrollView" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_alignParentEnd="true" android:layout_alignParentStart="true" - android:layout_alignParentTop="true"> + android:layout_alignParentTop="true" + android:layout_alignParentEnd="true" + android:layout_alignParentBottom="true"> - - - - - - - - + android:paddingRight="@dimen/activity_horizontal_margin" + android:paddingBottom="@dimen/activity_vertical_margin"> - + android:ems="10" + android:hint="Title" + android:inputType="text" + android:maxLength="32" /> - + android:ems="10" + android:gravity="start|top" + android:hint="Description" + android:inputType="textMultiLine" + android:maxLength="256" + android:singleLine="false" /> - + android:layout_marginBottom="20dp" + android:scaleX="1" + android:scaleY="1" /> - + android:baselineAligned="false" + android:orientation="horizontal"> - + - + + + + + + + + + + + + +