diff --git a/app/src/androidTest/java/org/isoron/uhabits/AndroidTestComponent.java b/app/src/androidTest/java/org/isoron/uhabits/AndroidTestComponent.java index 1ea2d7c0e..55a756d92 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/AndroidTestComponent.java +++ b/app/src/androidTest/java/org/isoron/uhabits/AndroidTestComponent.java @@ -23,11 +23,9 @@ package org.isoron.uhabits; import org.isoron.uhabits.models.sqlite.*; import org.isoron.uhabits.tasks.*; -import javax.inject.*; - import dagger.*; -@Singleton +@AppScope @Component(modules = { AppModule.class, SingleThreadTaskRunner.class, SQLModelFactory.class }) diff --git a/app/src/main/java/org/isoron/uhabits/AppComponent.java b/app/src/main/java/org/isoron/uhabits/AppComponent.java index 077457b56..1113bd645 100644 --- a/app/src/main/java/org/isoron/uhabits/AppComponent.java +++ b/app/src/main/java/org/isoron/uhabits/AppComponent.java @@ -30,11 +30,9 @@ import org.isoron.uhabits.tasks.*; import org.isoron.uhabits.utils.*; import org.isoron.uhabits.widgets.*; -import javax.inject.*; - import dagger.*; -@Singleton +@AppScope @Component(modules = { AppModule.class, AndroidTaskRunner.class, SQLModelFactory.class }) diff --git a/app/src/main/java/org/isoron/uhabits/AppScope.java b/app/src/main/java/org/isoron/uhabits/AppScope.java new file mode 100644 index 000000000..75c59577a --- /dev/null +++ b/app/src/main/java/org/isoron/uhabits/AppScope.java @@ -0,0 +1,25 @@ +/* + * 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; + +import javax.inject.*; + +@Scope +public @interface AppScope {} diff --git a/app/src/main/java/org/isoron/uhabits/HabitLogger.java b/app/src/main/java/org/isoron/uhabits/HabitLogger.java index 57deafbb0..fb781c273 100644 --- a/app/src/main/java/org/isoron/uhabits/HabitLogger.java +++ b/app/src/main/java/org/isoron/uhabits/HabitLogger.java @@ -30,7 +30,7 @@ import java.util.*; import javax.inject.*; -@Singleton +@AppScope public class HabitLogger { @Inject diff --git a/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListCache.java b/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListCache.java index 150cf7d13..56356ec3f 100644 --- a/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListCache.java +++ b/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListCache.java @@ -21,6 +21,7 @@ package org.isoron.uhabits.activities.habits.list.model; import android.support.annotation.*; +import org.isoron.uhabits.*; import org.isoron.uhabits.commands.*; import org.isoron.uhabits.models.*; import org.isoron.uhabits.tasks.*; @@ -41,7 +42,7 @@ import javax.inject.*; * Note that this class is singleton-scoped, therefore it is shared among all * activities. */ -@Singleton +@AppScope public class HabitCardListCache implements CommandRunner.Listener { private int checkmarkCount; diff --git a/app/src/main/java/org/isoron/uhabits/commands/CommandRunner.java b/app/src/main/java/org/isoron/uhabits/commands/CommandRunner.java index bd4d52b9e..8ef46f6ec 100644 --- a/app/src/main/java/org/isoron/uhabits/commands/CommandRunner.java +++ b/app/src/main/java/org/isoron/uhabits/commands/CommandRunner.java @@ -21,6 +21,7 @@ package org.isoron.uhabits.commands; import android.support.annotation.*; +import org.isoron.uhabits.*; import org.isoron.uhabits.tasks.*; import java.util.*; @@ -33,7 +34,7 @@ import javax.inject.*; * CommandRunners also allows objects to subscribe to it, and receive events * whenever a command is performed. */ -@Singleton +@AppScope public class CommandRunner { private TaskRunner taskRunner; diff --git a/app/src/main/java/org/isoron/uhabits/intents/IntentParser.java b/app/src/main/java/org/isoron/uhabits/intents/IntentParser.java index 465773044..a6dc23e3f 100644 --- a/app/src/main/java/org/isoron/uhabits/intents/IntentParser.java +++ b/app/src/main/java/org/isoron/uhabits/intents/IntentParser.java @@ -23,6 +23,7 @@ import android.content.*; import android.net.*; import android.support.annotation.*; +import org.isoron.uhabits.*; import org.isoron.uhabits.models.*; import org.isoron.uhabits.utils.*; @@ -30,7 +31,7 @@ import javax.inject.*; import static android.content.ContentUris.*; -@Singleton +@AppScope public class IntentParser { private HabitList habits; diff --git a/app/src/main/java/org/isoron/uhabits/intents/IntentScheduler.java b/app/src/main/java/org/isoron/uhabits/intents/IntentScheduler.java index a5c89801e..47dd4eebf 100644 --- a/app/src/main/java/org/isoron/uhabits/intents/IntentScheduler.java +++ b/app/src/main/java/org/isoron/uhabits/intents/IntentScheduler.java @@ -31,7 +31,7 @@ import javax.inject.*; import static android.app.AlarmManager.*; import static android.content.Context.*; -@Singleton +@AppScope public class IntentScheduler { private final AlarmManager manager; diff --git a/app/src/main/java/org/isoron/uhabits/intents/PendingIntentFactory.java b/app/src/main/java/org/isoron/uhabits/intents/PendingIntentFactory.java index 475283707..1d077b4ae 100644 --- a/app/src/main/java/org/isoron/uhabits/intents/PendingIntentFactory.java +++ b/app/src/main/java/org/isoron/uhabits/intents/PendingIntentFactory.java @@ -32,7 +32,7 @@ import javax.inject.*; import static android.app.PendingIntent.*; -@Singleton +@AppScope public class PendingIntentFactory { private final Context context; diff --git a/app/src/main/java/org/isoron/uhabits/models/memory/MemoryModelFactory.java b/app/src/main/java/org/isoron/uhabits/models/memory/MemoryModelFactory.java index 6b76ab426..0a934d97a 100644 --- a/app/src/main/java/org/isoron/uhabits/models/memory/MemoryModelFactory.java +++ b/app/src/main/java/org/isoron/uhabits/models/memory/MemoryModelFactory.java @@ -19,24 +19,23 @@ package org.isoron.uhabits.models.memory; +import org.isoron.uhabits.*; import org.isoron.uhabits.models.*; -import javax.inject.*; - import dagger.*; @Module public class MemoryModelFactory implements ModelFactory { @Provides - @Singleton + @AppScope public static HabitList provideHabitList() { return new MemoryHabitList(); } @Provides - @Singleton + @AppScope public static ModelFactory provideModelFactory() { return new MemoryModelFactory(); diff --git a/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLModelFactory.java b/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLModelFactory.java index b51e9c062..7cdbcbc4f 100644 --- a/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLModelFactory.java +++ b/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLModelFactory.java @@ -19,10 +19,9 @@ package org.isoron.uhabits.models.sqlite; +import org.isoron.uhabits.*; import org.isoron.uhabits.models.*; -import javax.inject.*; - import dagger.*; /** @@ -38,7 +37,7 @@ public class SQLModelFactory implements ModelFactory } @Provides - @Singleton + @AppScope public static HabitList provideHabitList() { return SQLiteHabitList.getInstance(provideModelFactory()); diff --git a/app/src/main/java/org/isoron/uhabits/preferences/Preferences.java b/app/src/main/java/org/isoron/uhabits/preferences/Preferences.java index 58aa651a2..6cf2f7b12 100644 --- a/app/src/main/java/org/isoron/uhabits/preferences/Preferences.java +++ b/app/src/main/java/org/isoron/uhabits/preferences/Preferences.java @@ -27,7 +27,7 @@ import org.isoron.uhabits.activities.*; import javax.inject.*; -@Singleton +@AppScope public class Preferences implements SharedPreferences.OnSharedPreferenceChangeListener { diff --git a/app/src/main/java/org/isoron/uhabits/preferences/WidgetPreferences.java b/app/src/main/java/org/isoron/uhabits/preferences/WidgetPreferences.java index 4f4b0a0bb..f7830e2ba 100644 --- a/app/src/main/java/org/isoron/uhabits/preferences/WidgetPreferences.java +++ b/app/src/main/java/org/isoron/uhabits/preferences/WidgetPreferences.java @@ -26,7 +26,7 @@ import org.isoron.uhabits.*; import javax.inject.*; -@Singleton +@AppScope public class WidgetPreferences { private final SharedPreferences prefs; diff --git a/app/src/main/java/org/isoron/uhabits/tasks/AndroidTaskRunner.java b/app/src/main/java/org/isoron/uhabits/tasks/AndroidTaskRunner.java index 41ed2f074..72ed08457 100644 --- a/app/src/main/java/org/isoron/uhabits/tasks/AndroidTaskRunner.java +++ b/app/src/main/java/org/isoron/uhabits/tasks/AndroidTaskRunner.java @@ -21,14 +21,14 @@ package org.isoron.uhabits.tasks; import android.os.*; -import java.util.*; +import org.isoron.uhabits.*; -import javax.inject.*; +import java.util.*; import dagger.*; @Module -@Singleton +@AppScope public class AndroidTaskRunner implements TaskRunner { private final LinkedList activeTasks; diff --git a/app/src/main/java/org/isoron/uhabits/tasks/SingleThreadTaskRunner.java b/app/src/main/java/org/isoron/uhabits/tasks/SingleThreadTaskRunner.java index 5b2c1da42..e289e7530 100644 --- a/app/src/main/java/org/isoron/uhabits/tasks/SingleThreadTaskRunner.java +++ b/app/src/main/java/org/isoron/uhabits/tasks/SingleThreadTaskRunner.java @@ -19,7 +19,7 @@ package org.isoron.uhabits.tasks; -import javax.inject.*; +import org.isoron.uhabits.*; import dagger.*; @@ -27,7 +27,7 @@ import dagger.*; public class SingleThreadTaskRunner implements TaskRunner { @Provides - @Singleton + @AppScope public static TaskRunner getInstance() { return new SingleThreadTaskRunner(); diff --git a/app/src/main/java/org/isoron/uhabits/utils/ReminderScheduler.java b/app/src/main/java/org/isoron/uhabits/utils/ReminderScheduler.java index 6423d3286..d31e923ba 100644 --- a/app/src/main/java/org/isoron/uhabits/utils/ReminderScheduler.java +++ b/app/src/main/java/org/isoron/uhabits/utils/ReminderScheduler.java @@ -33,7 +33,7 @@ import javax.inject.*; import static org.isoron.uhabits.utils.DateUtils.*; -@Singleton +@AppScope public class ReminderScheduler implements CommandRunner.Listener { private final PendingIntentFactory pendingIntentFactory;