From 957d4418597418d3be205f43e459e0e93628ace5 Mon Sep 17 00:00:00 2001 From: vanous Date: Tue, 13 Aug 2019 19:54:18 +0200 Subject: [PATCH] Add Status and Alarms widget Squashed commits from #1604 --- app/src/main/AndroidManifest.xml | 23 +- .../freeyourgadget/gadgetbridge/Widget.java | 226 ++++++++++++++++++ .../activities/WidgetAlarmsActivity.java | 127 ++++++++++ .../activities/charts/ActivityAnalysis.java | 6 +- .../gadgetbridge/model/DailyTotals.java | 155 ++++++++++++ .../operations/AbstractFetchOperation.java | 3 + app/src/main/res/drawable/widget_preview.png | Bin 0 -> 55080 bytes app/src/main/res/layout/widget.xml | 121 ++++++++++ .../layout/widget_alarms_activity_list.xml | 103 ++++++++ app/src/main/res/values/strings.xml | 21 +- app/src/main/res/xml/widget_info.xml | 14 ++ 11 files changed, 792 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/Widget.java create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/WidgetAlarmsActivity.java create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DailyTotals.java create mode 100644 app/src/main/res/drawable/widget_preview.png create mode 100644 app/src/main/res/layout/widget.xml create mode 100644 app/src/main/res/layout/widget_alarms_activity_list.xml create mode 100644 app/src/main/res/xml/widget_info.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6e962b68c..dadfcfa39 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -445,7 +445,8 @@ android:resource="@xml/shared_paths" /> - + @@ -456,6 +457,26 @@ android:resource="@xml/sleep_alarm_widget_info" /> + + + + + + + + + + + + . */ +package nodomain.freeyourgadget.gadgetbridge; + +import android.app.PendingIntent; +import android.appwidget.AppWidgetManager; +import android.appwidget.AppWidgetProvider; +import android.content.BroadcastReceiver; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.widget.RemoteViews; +import android.widget.Toast; + +import androidx.localbroadcastmanager.content.LocalBroadcastManager; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Calendar; +import java.util.GregorianCalendar; +import java.util.concurrent.TimeUnit; + +import nodomain.freeyourgadget.gadgetbridge.activities.ControlCenterv2; +import nodomain.freeyourgadget.gadgetbridge.activities.WidgetAlarmsActivity; +import nodomain.freeyourgadget.gadgetbridge.activities.charts.ChartsActivity; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.model.DailyTotals; +import nodomain.freeyourgadget.gadgetbridge.model.RecordedDataTypes; +import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils; +import nodomain.freeyourgadget.gadgetbridge.util.GB; + + +public class Widget extends AppWidgetProvider { + public static final String WIDGET_CLICK = "nodomain.freeyourgadget.gadgetbridge.WidgetClick"; + public static final String NEW_DATA_ACTION = "nodomain.freeyourgadget.gadgetbridge.NewDataTrigger"; + public static final String APPWIDGET_DELETED = "nodomain.freeyourgadget.gadgetbridge.APPWIDGET_DELETED"; + public static final String ACTION_DEVICE_CHANGED = "nodomain.freeyourgadget.gadgetbridge.gbdevice.action.device_changed"; + private static final Logger LOG = LoggerFactory.getLogger(Widget.class); + static BroadcastReceiver broadcastReceiver = null; + + private GBDevice getSelectedDevice() { + + Context context = GBApplication.getContext(); + + if (!(context instanceof GBApplication)) { + return null; + } + + GBApplication gbApp = (GBApplication) context; + + return gbApp.getDeviceManager().getSelectedDevice(); + } + + private float[] getSteps() { + Context context = GBApplication.getContext(); + Calendar day = GregorianCalendar.getInstance(); + + if (!(context instanceof GBApplication)) { + return new float[]{0, 0, 0}; + } + DailyTotals ds = new DailyTotals(); + return ds.getDailyTotalsForAllDevices(day); + } + + private String getHM(long value) { + return DateTimeUtils.formatDurationHoursMinutes(value, TimeUnit.MINUTES); + } + + private void updateAppWidget(Context context, AppWidgetManager appWidgetManager, + int appWidgetId) { + + GBDevice device = getSelectedDevice(); + RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget); + + //onclick refresh + Intent intent = new Intent(context, Widget.class); + intent.setAction(WIDGET_CLICK); + PendingIntent refreshDataIntent = PendingIntent.getBroadcast( + context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); + //views.setOnClickPendingIntent(R.id.todaywidget_bottom_layout, refreshDataIntent); + views.setOnClickPendingIntent(R.id.todaywidget_header_bar, refreshDataIntent); + + //open GB main window + Intent startMainIntent = new Intent(context, ControlCenterv2.class); + PendingIntent startMainPIntent = PendingIntent.getActivity(context, 0, startMainIntent, 0); + views.setOnClickPendingIntent(R.id.todaywidget_header_icon, startMainPIntent); + + //alarms popup menu + Intent startAlarmListIntent = new Intent(context, WidgetAlarmsActivity.class); + PendingIntent startAlarmListPIntent = PendingIntent.getActivity(context, 0, startAlarmListIntent, 0); + views.setOnClickPendingIntent(R.id.todaywidget_header_plus, startAlarmListPIntent); + + //charts, requires device + if (device != null) { + Intent startChartsIntent = new Intent(context, ChartsActivity.class); + startChartsIntent.putExtra(GBDevice.EXTRA_DEVICE, device); + PendingIntent startChartsPIntent = PendingIntent.getActivity(context, 0, startChartsIntent, 0); + views.setOnClickPendingIntent(R.id.todaywidget_bottom_layout, startChartsPIntent); + } + + + float[] DailyTotals = getSteps(); + + views.setTextViewText(R.id.todaywidget_steps, context.getString(R.string.widget_steps_label, (int) DailyTotals[0])); + views.setTextViewText(R.id.todaywidget_sleep, context.getString(R.string.widget_sleep_label, getHM((long) DailyTotals[1]))); + + if (device != null) { + String status = String.format("%1s", device.getStateString()); + if (device.isConnected()) { + if (device.getBatteryLevel() > 1) { + status = String.format("Battery %1s%%", device.getBatteryLevel()); + } + } + + views.setTextViewText(R.id.todaywidget_device_status, status); + views.setTextViewText(R.id.todaywidget_device_name, device.getName()); + + } + + // Instruct the widget manager to update the widget + appWidgetManager.updateAppWidget(appWidgetId, views); + } + + public void refreshData() { + Context context = GBApplication.getContext(); + GBDevice device = getSelectedDevice(); + + if (device == null || !device.isInitialized()) { + GB.toast(context, + context.getString(R.string.device_not_connected), + Toast.LENGTH_SHORT, GB.ERROR); + GBApplication.deviceService().connect(); + GB.toast(context, + context.getString(R.string.connecting), + Toast.LENGTH_SHORT, GB.INFO); + + return; + } + GB.toast(context, + context.getString(R.string.busy_task_fetch_activity_data), + Toast.LENGTH_SHORT, GB.INFO); + + GBApplication.deviceService().onFetchRecordedData(RecordedDataTypes.TYPE_ACTIVITY); + } + + public void updateWidget() { + Context context = GBApplication.getContext(); + + AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); + ComponentName thisAppWidget = new ComponentName(context.getPackageName(), Widget.class.getName()); + int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisAppWidget); + + onUpdate(context, appWidgetManager, appWidgetIds); + + } + + @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + // There may be multiple widgets active, so update all of them + for (int appWidgetId : appWidgetIds) { + updateAppWidget(context, appWidgetManager, appWidgetId); + } + } + + + @Override + public void onEnabled(Context context) { + if (this.broadcastReceiver == null) { + LOG.debug("gbwidget BROADCAST receiver initialized."); + this.broadcastReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + LOG.debug("gbwidget BROADCAST, action" + intent.getAction()); + updateWidget(); + } + }; + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(NEW_DATA_ACTION); + intentFilter.addAction(ACTION_DEVICE_CHANGED); + LocalBroadcastManager.getInstance(context).registerReceiver(this.broadcastReceiver, intentFilter); + } + } + + @Override + public void onDisabled(Context context) { + + if (this.broadcastReceiver != null) { + LocalBroadcastManager.getInstance(context).unregisterReceiver(this.broadcastReceiver); + this.broadcastReceiver=null; + } + } + + @Override + public void onReceive(Context context, Intent intent) { + super.onReceive(context, intent); + LOG.debug("gbwidget LOCAL onReceive, action: " + intent.getAction()); + //this handles widget re-connection after apk updates + if (WIDGET_CLICK.equals(intent.getAction())) { + if (this.broadcastReceiver == null) { + onEnabled(context); + } + refreshData(); + //updateWidget(); + } else if (APPWIDGET_DELETED.equals(intent.getAction())) { + onDisabled(context); + } + } + +} + diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/WidgetAlarmsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/WidgetAlarmsActivity.java new file mode 100644 index 000000000..a58924d2a --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/WidgetAlarmsActivity.java @@ -0,0 +1,127 @@ +package nodomain.freeyourgadget.gadgetbridge.activities; + +import android.app.Activity; +import android.content.Context; +import android.os.Bundle; +import android.os.Handler; +import android.view.View; +import android.widget.TextView; +import android.widget.Toast; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.GregorianCalendar; + +import nodomain.freeyourgadget.gadgetbridge.GBApplication; +import nodomain.freeyourgadget.gadgetbridge.R; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.model.ActivityUser; +import nodomain.freeyourgadget.gadgetbridge.model.Alarm; +import nodomain.freeyourgadget.gadgetbridge.util.AlarmUtils; +import nodomain.freeyourgadget.gadgetbridge.util.GB; + +public class WidgetAlarmsActivity extends Activity implements View.OnClickListener { + + TextView textView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + Context appContext = this.getApplicationContext(); + if (appContext instanceof GBApplication) { + GBApplication gbApp = (GBApplication) appContext; + GBDevice selectedDevice = gbApp.getDeviceManager().getSelectedDevice(); + if (selectedDevice == null || !selectedDevice.isInitialized()) { + GB.toast(this, + this.getString(R.string.not_connected), + Toast.LENGTH_LONG, GB.WARN); + + } else { + setContentView(R.layout.widget_alarms_activity_list); + int userSleepDuration = new ActivityUser().getSleepDuration(); + textView = findViewById(R.id.alarm5); + if (userSleepDuration > 0) { + textView.setText(String.format(this.getString(R.string.widget_alarm_target_hours), userSleepDuration)); + } else { + textView.setVisibility(View.GONE); + } + } + } + } + + @Override + public void onClick(View v) { + + switch (v.getId()) { + case R.id.alarm1: + setAlarm(5); + break; + case R.id.alarm2: + setAlarm(10); + break; + case R.id.alarm3: + setAlarm(20); + break; + case R.id.alarm4: + setAlarm(60); + break; + case R.id.alarm5: + setAlarm(0); + break; + default: + break; + } + //this is to prevent screen flashing during closing + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + finish(); + } + }, 150); + } + + public void setAlarm(int duration) { + // current timestamp + GregorianCalendar calendar = new GregorianCalendar(); + if (duration > 0) { + calendar.add(Calendar.MINUTE, duration); + } else { + int userSleepDuration = new ActivityUser().getSleepDuration(); + // add preferred sleep duration + if (userSleepDuration > 0) { + calendar.add(Calendar.HOUR_OF_DAY, userSleepDuration); + } else { // probably testing + calendar.add(Calendar.MINUTE, 1); + } + } + + // overwrite the first alarm and activate it, without + + Context appContext = this.getApplicationContext(); + if (appContext instanceof GBApplication) { + GBApplication gbApp = (GBApplication) appContext; + GBDevice selectedDevice = gbApp.getDeviceManager().getSelectedDevice(); + if (selectedDevice == null || !selectedDevice.isInitialized()) { + GB.toast(this, + this.getString(R.string.appwidget_not_connected), + Toast.LENGTH_LONG, GB.WARN); + return; + } + } + + int hours = calendar.get(Calendar.HOUR_OF_DAY); + int minutes = calendar.get(Calendar.MINUTE); + + GB.toast(this, + this.getString(R.string.appwidget_setting_alarm, hours, minutes), + Toast.LENGTH_SHORT, GB.INFO); + + Alarm alarm = AlarmUtils.createSingleShot(0, true, calendar); + ArrayList alarms = new ArrayList<>(1); + alarms.add(alarm); + GBApplication.deviceService().onSetAlarms(alarms); + + + } +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ActivityAnalysis.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ActivityAnalysis.java index 155dcf7b2..25e7d342e 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ActivityAnalysis.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ActivityAnalysis.java @@ -28,15 +28,15 @@ import nodomain.freeyourgadget.gadgetbridge.model.ActivityAmounts; import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind; import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; -class ActivityAnalysis { - private static final Logger LOG = LoggerFactory.getLogger(ActivityAnalysis.class); +public class ActivityAnalysis { + public static final Logger LOG = LoggerFactory.getLogger(ActivityAnalysis.class); // store raw steps and duration protected HashMap stats = new HashMap(); // max speed determined from samples private int maxSpeed = 0; - ActivityAmounts calculateActivityAmounts(List samples) { + public ActivityAmounts calculateActivityAmounts(List samples) { ActivityAmount deepSleep = new ActivityAmount(ActivityKind.TYPE_DEEP_SLEEP); ActivityAmount lightSleep = new ActivityAmount(ActivityKind.TYPE_LIGHT_SLEEP); ActivityAmount notWorn = new ActivityAmount(ActivityKind.TYPE_NOT_WORN); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DailyTotals.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DailyTotals.java new file mode 100644 index 000000000..bcd8ff73e --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DailyTotals.java @@ -0,0 +1,155 @@ +/* Copyright (C) 2017-2019 Carsten Pfeiffer, Daniele Gobbetti + + This file is part of Gadgetbridge. + + Gadgetbridge is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Gadgetbridge is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ +package nodomain.freeyourgadget.gadgetbridge.model; + +import android.content.Context; +import android.widget.Toast; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Calendar; +import java.util.List; + +import nodomain.freeyourgadget.gadgetbridge.GBApplication; +import nodomain.freeyourgadget.gadgetbridge.activities.charts.ActivityAnalysis; +import nodomain.freeyourgadget.gadgetbridge.database.DBHandler; +import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.SampleProvider; +import nodomain.freeyourgadget.gadgetbridge.entities.AbstractActivitySample; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.util.DeviceHelper; +import nodomain.freeyourgadget.gadgetbridge.util.GB; + + + +public class DailyTotals { + Logger LOG = LoggerFactory.getLogger(DailyTotals.class); + + + public float[] getDailyTotalsForAllDevices(Calendar day) { + Context context = GBApplication.getContext(); + //get today's steps for all devices in GB + float all_steps = 0; + float all_sleep = 0; + + + if (context instanceof GBApplication) { + GBApplication gbApp = (GBApplication) context; + List devices = gbApp.getDeviceManager().getDevices(); + for (GBDevice device : devices) { + float[] all_daily = getDailyTotalsForDevice(device, day); + all_steps += all_daily[0]; + all_sleep += all_daily[1] + all_daily[2]; + } + } + LOG.debug("gbwidget daily totals, all steps:" + all_steps); + LOG.debug("gbwidget daily totals, all sleep:" + all_sleep); + return new float[]{all_steps, all_sleep}; + } + + + public float[] getDailyTotalsForDevice(GBDevice device, Calendar day + ) { + + try (DBHandler handler = GBApplication.acquireDB()) { + ActivityAnalysis analysis = new ActivityAnalysis(); + ActivityAmounts amountsSteps = null; + ActivityAmounts amountsSleep = null; + + amountsSteps = analysis.calculateActivityAmounts(getSamplesOfDay(handler, day, 0, device)); + amountsSleep = analysis.calculateActivityAmounts(getSamplesOfDay(handler, day, -12, device)); + + float[] Sleep = getTotalsSleepForActivityAmounts(amountsSleep); + float Steps = getTotalsStepsForActivityAmounts(amountsSteps); + + return new float[]{Steps, Sleep[0], Sleep[1]}; + + } catch (Exception e) { + + GB.toast("Error loading activity summaries.", Toast.LENGTH_SHORT, GB.ERROR, e); + return new float[]{0, 0, 0}; + } + } + + private float[] getTotalsSleepForActivityAmounts(ActivityAmounts activityAmounts) { + long totalSecondsDeepSleep = 0; + long totalSecondsLightSleep = 0; + for (ActivityAmount amount : activityAmounts.getAmounts()) { + if (amount.getActivityKind() == ActivityKind.TYPE_DEEP_SLEEP) { + totalSecondsDeepSleep += amount.getTotalSeconds(); + } else if (amount.getActivityKind() == ActivityKind.TYPE_LIGHT_SLEEP) { + totalSecondsLightSleep += amount.getTotalSeconds(); + } + } + int totalMinutesDeepSleep = (int) (totalSecondsDeepSleep / 60); + int totalMinutesLightSleep = (int) (totalSecondsLightSleep / 60); + return new float[]{totalMinutesDeepSleep, totalMinutesLightSleep}; + } + + + private float getTotalsStepsForActivityAmounts(ActivityAmounts activityAmounts) { + long totalSteps = 0; + float totalValue = 0; + + for (ActivityAmount amount : activityAmounts.getAmounts()) { + totalSteps += amount.getTotalSteps(); + } + + float[] totalValues = new float[]{totalSteps}; + + for (int i = 0; i < totalValues.length; i++) { + float value = totalValues[i]; + totalValue += value; + } + return totalValue; + } + + + private List getSamplesOfDay(DBHandler db, Calendar day, int offsetHours, GBDevice device) { + int startTs; + int endTs; + + day = (Calendar) day.clone(); // do not modify the caller's argument + day.set(Calendar.HOUR_OF_DAY, 0); + day.set(Calendar.MINUTE, 0); + day.set(Calendar.SECOND, 0); + day.add(Calendar.HOUR, offsetHours); + + startTs = (int) (day.getTimeInMillis() / 1000); + endTs = startTs + 24 * 60 * 60 - 1; + + return getSamples(db, device, startTs, endTs); + } + + + protected List getSamples(DBHandler db, GBDevice device, int tsFrom, int tsTo) { + return getAllSamples(db, device, tsFrom, tsTo); + } + + + protected SampleProvider getProvider(DBHandler db, GBDevice device) { + DeviceCoordinator coordinator = DeviceHelper.getInstance().getCoordinator(device); + return coordinator.getSampleProvider(device, db.getDaoSession()); + } + + + protected List getAllSamples(DBHandler db, GBDevice device, int tsFrom, int tsTo) { + SampleProvider provider = getProvider(db, device); + return provider.getAllActivitySamples(tsFrom, tsTo); + } +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/operations/AbstractFetchOperation.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/operations/AbstractFetchOperation.java index 915db7cd7..1c9d7691b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/operations/AbstractFetchOperation.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/operations/AbstractFetchOperation.java @@ -19,6 +19,7 @@ package nodomain.freeyourgadget.gadgetbridge.service.devices.huami.operations; import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGattCharacteristic; +import android.content.Intent; import android.content.SharedPreferences; import android.widget.Toast; @@ -126,6 +127,8 @@ public abstract class AbstractFetchOperation extends AbstractHuamiOperation { GB.updateTransferNotification(null, "", false, 100, getContext()); operationFinished(); unsetBusy(); + Intent intent = new Intent("nodomain.freeyourgadget.gadgetbridge.NewDataTrigger"); + getContext().sendBroadcast(intent); } /** diff --git a/app/src/main/res/drawable/widget_preview.png b/app/src/main/res/drawable/widget_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..7ad18604198964b29419757963de0f401aa837ee GIT binary patch literal 55080 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

*Jko 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/widget.xml b/app/src/main/res/layout/widget.xml new file mode 100644 index 000000000..e6aca5181 --- /dev/null +++ b/app/src/main/res/layout/widget.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/widget_alarms_activity_list.xml b/app/src/main/res/layout/widget_alarms_activity_list.xml new file mode 100644 index 000000000..c646f189a --- /dev/null +++ b/app/src/main/res/layout/widget_alarms_activity_list.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 96cc3b117..47fd8a23b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -527,10 +527,7 @@ Authenticating Authentication required - Zzz - Add widget Preferred sleep duration in hours - Setting alarm for %1$02d:%2$02d Hardware revision: %1$s Firmware version: %1$s Error creating directory for log files: %1$s @@ -715,5 +712,23 @@ Filter Mode Mode Configuration Save Configuration + Not connected, alarm not set. + Zzz + Add widget + Setting alarm for %1$02d:%2$02d + Sleep Alarm + + Steps: %1$02d + Sleep: %1$s + Status and Alarms + Set alarm after: + 5 minutes + 10 minutes + 20 minutes + 1 hour + Icon + %d hours + + diff --git a/app/src/main/res/xml/widget_info.xml b/app/src/main/res/xml/widget_info.xml new file mode 100644 index 000000000..9bc0b9b98 --- /dev/null +++ b/app/src/main/res/xml/widget_info.xml @@ -0,0 +1,14 @@ + + + +