diff --git a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/HabitsActivityTestComponent.kt b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/HabitsActivityTestComponent.kt index dde1b5a90..508077ac7 100644 --- a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/HabitsActivityTestComponent.kt +++ b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/HabitsActivityTestComponent.kt @@ -37,7 +37,6 @@ class TestModule { @ActivityScope @Component(modules = arrayOf( ActivityContextModule::class, - AboutModule::class, HabitsActivityModule::class, ListHabitsModule::class, ShowHabitModule::class, diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/HabitsActivityComponent.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/HabitsActivityComponent.kt index 3a837c937..76b52e78d 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/HabitsActivityComponent.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/HabitsActivityComponent.kt @@ -34,15 +34,12 @@ import org.isoron.uhabits.core.ui.screens.habits.list.* @Component(modules = arrayOf( ActivityContextModule::class, BaseActivityModule::class, - AboutModule::class, HabitsActivityModule::class, ListHabitsModule::class, ShowHabitModule::class, HabitModule::class ), dependencies = arrayOf(HabitsApplicationComponent::class)) interface HabitsActivityComponent { - val aboutRootView: AboutRootView - val aboutScreen: AboutScreen val colorPickerDialogFactory: ColorPickerDialogFactory val habitCardListAdapter: HabitCardListAdapter val listHabitsBehavior: ListHabitsBehavior diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutActivity.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutActivity.java index fc098b3c9..58cf49681 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutActivity.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutActivity.java @@ -21,6 +21,7 @@ package org.isoron.uhabits.activities.about; import android.os.*; +import org.isoron.uhabits.*; import org.isoron.uhabits.activities.*; /** @@ -33,8 +34,12 @@ public class AboutActivity extends HabitsActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - AboutScreen screen = getComponent().getAboutScreen(); - screen.setRootView(getComponent().getAboutRootView()); + HabitsApplication app = (HabitsApplication) getApplication(); + AboutScreen screen = new AboutScreen(this, + app.getComponent().getIntentFactory(), + app.getComponent().getPreferences()); + AboutRootView rootView = new AboutRootView(this, screen); + screen.setRootView(rootView); setScreen(screen); } } diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutModule.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutModule.java deleted file mode 100644 index f75c2258a..000000000 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutModule.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (C) 2017 Á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.activities.about; - -import org.isoron.uhabits.core.ui.screens.about.*; - -import dagger.*; - -@Module -public abstract class AboutModule -{ - @Binds - abstract AboutBehavior.Screen getScreen(AboutScreen screen); -} diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutRootView.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutRootView.java index ed169720a..68cb68551 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutRootView.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutRootView.java @@ -22,13 +22,12 @@ package org.isoron.uhabits.activities.about; import android.content.*; import android.widget.*; -import androidx.annotation.NonNull; +import androidx.annotation.*; import org.isoron.androidbase.activities.*; import org.isoron.androidbase.utils.*; import org.isoron.uhabits.BuildConfig; import org.isoron.uhabits.R; -import org.isoron.uhabits.core.ui.screens.about.*; import javax.inject.*; @@ -40,14 +39,14 @@ public class AboutRootView extends BaseRootView TextView tvVersion; @NonNull - private final AboutBehavior behavior; + private final AboutScreen screen; @Inject public AboutRootView(@NonNull @ActivityContext Context context, - @NonNull AboutBehavior behavior) + @NonNull AboutScreen screen) { super(context); - this.behavior = behavior; + this.screen = screen; addView(inflate(getContext(), R.layout.about, null)); ButterKnife.bind(this); @@ -71,46 +70,45 @@ public class AboutRootView extends BaseRootView @OnClick(R.id.tvFeedback) public void onClickFeedback() { - behavior.onSendFeedback(); + screen.showSendFeedbackScreen(); } @OnClick(R.id.tvVersion) public void onClickIcon() { - behavior.onPressDeveloperCountdown(); + screen.onPressDeveloperCountdown(); } @OnClick(R.id.tvRate) public void onClickRate() { - behavior.onRateApp(); + screen.showRateAppWebsite(); } @OnClick(R.id.tvSource) public void onClickSource() { - behavior.onViewSourceCode(); + screen.showSourceCodeWebsite(); } @OnClick(R.id.tvTranslate) public void onClickTranslate() { - behavior.onTranslateApp(); + screen.showTranslationWebsite(); } @OnClick(R.id.tvPrivacy) public void onClickPrivacy() { - behavior.onClickPrivacy(); + screen.showPrivacyPolicyWebsite(); } @OnClick(R.id.tvContributors) public void onClickContributors() { - behavior.onClickCodeContributors(); + screen.showCodeContributorsWebsite(); } - @Override protected void initToolbar() { diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutScreen.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutScreen.java index 2252d19a6..c5b668ae8 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutScreen.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutScreen.java @@ -21,69 +21,67 @@ package org.isoron.uhabits.activities.about; import android.widget.*; -import androidx.annotation.NonNull; +import androidx.annotation.*; import org.isoron.androidbase.activities.*; -import org.isoron.uhabits.core.ui.screens.about.*; +import org.isoron.uhabits.core.preferences.*; import org.isoron.uhabits.intents.*; -import javax.inject.*; +public class AboutScreen extends BaseScreen +{ + @NonNull + private final Preferences prefs; -import static org.isoron.uhabits.core.ui.screens.about.AboutBehavior.Message.*; + private int developerCountdown = 5; -public class AboutScreen extends BaseScreen implements AboutBehavior.Screen -{ @NonNull private final IntentFactory intents; - @Inject public AboutScreen(@NonNull BaseActivity activity, - @NonNull IntentFactory intents) + @NonNull IntentFactory intents, + @NonNull Preferences prefs) { super(activity); this.intents = intents; + this.prefs = prefs; } - @Override - public void showMessage(AboutBehavior.Message message) - { - if (message == YOU_ARE_NOW_A_DEVELOPER) Toast - .makeText(activity, "You are now a developer", Toast.LENGTH_LONG) - .show(); - } - - @Override public void showRateAppWebsite() { activity.startActivity(intents.rateApp(activity)); } - @Override public void showSendFeedbackScreen() { activity.startActivity(intents.sendFeedback(activity)); } - @Override public void showSourceCodeWebsite() { activity.startActivity(intents.viewSourceCode(activity)); } - @Override public void showTranslationWebsite() { activity.startActivity(intents.helpTranslate(activity)); } - @Override public void showPrivacyPolicyWebsite() { activity.startActivity(intents.privacyPolicy(activity)); } - @Override - public void showCodeContributorsWebsite() { + public void showCodeContributorsWebsite() + { activity.startActivity(intents.codeContributors(activity)); } + + public void onPressDeveloperCountdown() + { + developerCountdown--; + if (developerCountdown == 0) { + prefs.setDeveloper(true); + Toast.makeText(activity, "You are now a developer", Toast.LENGTH_LONG).show(); + } + } } diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/about/AboutBehavior.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/about/AboutBehavior.java deleted file mode 100644 index efd99517a..000000000 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/about/AboutBehavior.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2017 Á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.core.ui.screens.about; - -import androidx.annotation.*; - -import org.isoron.uhabits.core.preferences.*; - -import javax.inject.*; - -public class AboutBehavior -{ - private int developerCountdown = 5; - - @NonNull - private Preferences prefs; - - @NonNull - private Screen screen; - - @Inject - public AboutBehavior(@NonNull Preferences prefs, @NonNull Screen screen) - { - this.prefs = prefs; - this.screen = screen; - } - - public void onPressDeveloperCountdown() - { - developerCountdown--; - if (developerCountdown == 0) - { - prefs.setDeveloper(true); - screen.showMessage(Message.YOU_ARE_NOW_A_DEVELOPER); - } - } - - public void onRateApp() - { - screen.showRateAppWebsite(); - } - - public void onSendFeedback() - { - screen.showSendFeedbackScreen(); - } - - public void onTranslateApp() - { - screen.showTranslationWebsite(); - } - - public void onViewSourceCode() - { - screen.showSourceCodeWebsite(); - } - - public void onClickPrivacy() { - screen.showPrivacyPolicyWebsite(); - } - - public void onClickCodeContributors() { - screen.showCodeContributorsWebsite(); - } - - public enum Message - { - YOU_ARE_NOW_A_DEVELOPER - } - - public interface Screen - { - void showMessage(Message message); - - void showRateAppWebsite(); - - void showSendFeedbackScreen(); - - void showSourceCodeWebsite(); - - void showTranslationWebsite(); - - void showPrivacyPolicyWebsite(); - - void showCodeContributorsWebsite(); - } - -} diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/screens/about/AboutBehaviorTest.java b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/screens/about/AboutBehaviorTest.java deleted file mode 100644 index 66d791c8d..000000000 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/screens/about/AboutBehaviorTest.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (C) 2017 Á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.core.ui.screens.about; - -import org.isoron.uhabits.core.*; -import org.isoron.uhabits.core.preferences.*; -import org.junit.*; -import org.mockito.*; - -import static org.isoron.uhabits.core.ui.screens.about.AboutBehavior.Message.YOU_ARE_NOW_A_DEVELOPER; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; - -public class AboutBehaviorTest extends BaseUnitTest -{ - private AboutBehavior behavior; - - @Mock - private Preferences prefs; - - @Mock - private AboutBehavior.Screen screen; - - @Before - public void setUp() throws Exception - { - super.setUp(); - behavior = new AboutBehavior(prefs, screen); - } - - @Test - public void onPressDeveloperCountdown() throws Exception - { - behavior.onPressDeveloperCountdown(); - behavior.onPressDeveloperCountdown(); - behavior.onPressDeveloperCountdown(); - behavior.onPressDeveloperCountdown(); - verifyZeroInteractions(screen); - verifyZeroInteractions(prefs); - - behavior.onPressDeveloperCountdown(); - verify(screen).showMessage(YOU_ARE_NOW_A_DEVELOPER); - verify(prefs).setDeveloper(true); - - behavior.onPressDeveloperCountdown(); - verifyZeroInteractions(screen); - verifyZeroInteractions(prefs); - } - - @Test - public void onRateApp() throws Exception - { - behavior.onRateApp(); - verify(screen).showRateAppWebsite(); - } - - @Test - public void onSendFeedback() throws Exception - { - behavior.onSendFeedback(); - verify(screen).showSendFeedbackScreen(); - } - - @Test - public void onTranslateApp() throws Exception - { - behavior.onTranslateApp(); - verify(screen).showTranslationWebsite(); - } - - @Test - public void onViewSourceCode() throws Exception - { - behavior.onViewSourceCode(); - verify(screen).showSourceCodeWebsite(); - } - -} \ No newline at end of file