/*
* 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.receivers;
import android.content.*;
import android.util.*;
import org.isoron.uhabits.*;
import org.isoron.uhabits.intents.*;
import dagger.*;
/**
* The Android BroadcastReceiver for Loop Habit Tracker.
* <p>
* All broadcast messages are received and processed by this class.
*/
public class WidgetReceiver extends BroadcastReceiver
{
public static final String ACTION_ADD_REPETITION =
"org.isoron.uhabits.ACTION_ADD_REPETITION";
public static final String ACTION_DISMISS_REMINDER =
"org.isoron.uhabits.ACTION_DISMISS_REMINDER";
public static final String ACTION_REMOVE_REPETITION =
"org.isoron.uhabits.ACTION_REMOVE_REPETITION";
public static final String ACTION_TOGGLE_REPETITION =
"org.isoron.uhabits.ACTION_TOGGLE_REPETITION";
@Override
public void onReceive(final Context context, Intent intent)
{
HabitsApplication app =
(HabitsApplication) context.getApplicationContext();
WidgetComponent component = DaggerWidgetReceiver_WidgetComponent
.builder()
.appComponent(app.getComponent())
.build();
IntentParser parser = app.getComponent().getIntentParser();
WidgetController controller = component.getWidgetController();
try
{
IntentParser.CheckmarkIntentData data;
data = parser.parseCheckmarkIntent(intent);
switch (intent.getAction())
{
case ACTION_ADD_REPETITION:
controller.onAddRepetition(data.habit, data.timestamp);
break;
case ACTION_TOGGLE_REPETITION:
controller.onToggleRepetition(data.habit, data.timestamp);
break;
case ACTION_REMOVE_REPETITION:
controller.onRemoveRepetition(data.habit, data.timestamp);
break;
}
}
catch (RuntimeException e)
{
Log.e("WidgetReceiver", "could not process intent", e);
}
}
@ReceiverScope
@Component(dependencies = AppComponent.class)
interface WidgetComponent
{
WidgetController getWidgetController();
}
}