From 85963ae061e8fb30948ae073a7798850c06f231c Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Thu, 10 Mar 2016 05:43:56 -0500 Subject: [PATCH] Add frequency widget --- app/src/main/AndroidManifest.xml | 62 +++++++++++------ .../java/org/isoron/uhabits/MainActivity.java | 2 + .../widgets/FrequencyWidgetProvider.java | 64 ++++++++++++++++++ .../res/drawable/widget_preview_frequency.png | Bin 0 -> 21446 bytes app/src/main/res/values/strings.xml | 1 + .../main/res/xml/widget_frequency_info.xml | 33 +++++++++ 6 files changed, 142 insertions(+), 20 deletions(-) create mode 100644 app/src/main/java/org/isoron/uhabits/widgets/FrequencyWidgetProvider.java create mode 100644 app/src/main/res/drawable/widget_preview_frequency.png create mode 100644 app/src/main/res/xml/widget_frequency_info.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8d7e8eff2..75e3ed840 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,15 +18,18 @@ ~ with this program. If not, see . --> - + + + @@ -38,6 +41,7 @@ android:icon="@mipmap/ic_launcher" android:label="@string/main_activity_title" android:theme="@style/AppBaseTheme"> + @@ -58,8 +62,6 @@ - - + + + + + + + + + + + android:label="@string/checkmark"> @@ -93,9 +110,10 @@ android:name="android.appwidget.provider" android:resource="@xml/widget_checkmark_info"/> + + android:label="@string/history"> @@ -104,9 +122,10 @@ android:name="android.appwidget.provider" android:resource="@xml/widget_history_info"/> + + android:label="@string/habit_strength"> @@ -115,9 +134,10 @@ android:name="android.appwidget.provider" android:resource="@xml/widget_score_info"/> + + android:label="@string/streaks"> @@ -127,18 +147,20 @@ android:resource="@xml/widget_streak_info"/> - + - + - - - + + + + + + diff --git a/app/src/main/java/org/isoron/uhabits/MainActivity.java b/app/src/main/java/org/isoron/uhabits/MainActivity.java index 769e58a8f..697b18d18 100644 --- a/app/src/main/java/org/isoron/uhabits/MainActivity.java +++ b/app/src/main/java/org/isoron/uhabits/MainActivity.java @@ -41,6 +41,7 @@ import org.isoron.uhabits.fragments.ListHabitsFragment; import org.isoron.uhabits.helpers.ReminderHelper; import org.isoron.uhabits.models.Habit; import org.isoron.uhabits.widgets.CheckmarkWidgetProvider; +import org.isoron.uhabits.widgets.FrequencyWidgetProvider; import org.isoron.uhabits.widgets.HistoryWidgetProvider; import org.isoron.uhabits.widgets.ScoreWidgetProvider; import org.isoron.uhabits.widgets.StreakWidgetProvider; @@ -159,6 +160,7 @@ public class MainActivity extends ReplayableActivity updateWidgets(context, HistoryWidgetProvider.class); updateWidgets(context, ScoreWidgetProvider.class); updateWidgets(context, StreakWidgetProvider.class); + updateWidgets(context, FrequencyWidgetProvider.class); } private static void updateWidgets(Context context, Class providerClass) diff --git a/app/src/main/java/org/isoron/uhabits/widgets/FrequencyWidgetProvider.java b/app/src/main/java/org/isoron/uhabits/widgets/FrequencyWidgetProvider.java new file mode 100644 index 000000000..8ea2248df --- /dev/null +++ b/app/src/main/java/org/isoron/uhabits/widgets/FrequencyWidgetProvider.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2016 Álinson Santos Xavier + * + * This file is part of Loop Habit Tracker. + * + * Loop Habit Tracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Loop Habit Tracker 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 General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +package org.isoron.uhabits.widgets; + +import android.app.PendingIntent; +import android.content.Context; +import android.view.View; + +import org.isoron.uhabits.R; +import org.isoron.uhabits.models.Habit; +import org.isoron.uhabits.views.HabitFrequencyView; + +public class FrequencyWidgetProvider extends BaseWidgetProvider +{ + @Override + protected View buildCustomView(Context context, Habit habit) + { + HabitFrequencyView view = new HabitFrequencyView(context, null); + view.setIsBackgroundTransparent(true); + view.setHabit(habit); + return view; + } + + @Override + protected PendingIntent getOnClickPendingIntent(Context context, Habit habit) + { + return null; + } + + @Override + protected int getDefaultHeight() + { + return 200; + } + + @Override + protected int getDefaultWidth() + { + return 200; + } + + @Override + protected int getLayoutId() + { + return R.layout.widget_graph; + } +} diff --git a/app/src/main/res/drawable/widget_preview_frequency.png b/app/src/main/res/drawable/widget_preview_frequency.png new file mode 100644 index 0000000000000000000000000000000000000000..a3fc865057dd7581ef0aa3be20f9caebe7575ae2 GIT binary patch literal 21446 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 agZ~4;KFQ(-xpVmd0000Developers Version %s Frequency + Checkmark \ No newline at end of file diff --git a/app/src/main/res/xml/widget_frequency_info.xml b/app/src/main/res/xml/widget_frequency_info.xml new file mode 100644 index 000000000..32a25906b --- /dev/null +++ b/app/src/main/res/xml/widget_frequency_info.xml @@ -0,0 +1,33 @@ + + + + + + \ No newline at end of file