/* * Copyright (C) 2016 Álinson Santos Xavier <isoron@gmail.com> * * 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 <http://www.gnu.org/licenses/>. */ package org.isoron.uhabits.automation; import android.content.*; import android.os.*; import org.isoron.uhabits.*; import org.isoron.uhabits.models.*; import org.isoron.uhabits.receivers.*; import org.isoron.uhabits.utils.*; import dagger.*; public class FireSettingReceiver extends BroadcastReceiver { public static final int ACTION_CHECK = 0; public static final int ACTION_UNCHECK = 1; public static final int ACTION_TOGGLE = 2; public static final String EXTRA_BUNDLE = "com.twofortyfouram.locale.intent.extra.BUNDLE"; public static final String EXTRA_STRING_BLURB = "com.twofortyfouram.locale.intent.extra.BLURB"; private HabitList allHabits; @Override public void onReceive(Context context, Intent intent) { HabitsApplication app = (HabitsApplication) context.getApplicationContext(); ReceiverComponent component = DaggerFireSettingReceiver_ReceiverComponent .builder() .appComponent(app.getComponent()) .build(); allHabits = app.getComponent().getHabitList(); Arguments args = parseIntent(intent); if (args == null) return; long timestamp = DateUtils.getStartOfToday(); WidgetController controller = component.getWidgetController(); switch (args.action) { case ACTION_CHECK: controller.onAddRepetition(args.habit, timestamp); break; case ACTION_UNCHECK: controller.onRemoveRepetition(args.habit, timestamp); break; case ACTION_TOGGLE: controller.onToggleRepetition(args.habit, timestamp); break; } } private Arguments parseIntent(Intent intent) { Arguments args = new Arguments(); Bundle bundle = intent.getBundleExtra(EXTRA_BUNDLE); if (bundle == null) return null; args.action = bundle.getInt("action"); if (args.action < 0 || args.action > 2) return null; Habit habit = allHabits.getById(bundle.getLong("habit")); if (habit == null) return null; args.habit = habit; return args; } @ReceiverScope @Component(dependencies = AppComponent.class) interface ReceiverComponent { WidgetController getWidgetController(); } private class Arguments { int action; Habit habit; } }