Remove AboutBehavior and AboutModule

pull/596/head
Alinson S. Xavier 5 years ago
parent 923b923745
commit 8fd8c2802b

@ -37,7 +37,6 @@ class TestModule {
@ActivityScope
@Component(modules = arrayOf(
ActivityContextModule::class,
AboutModule::class,
HabitsActivityModule::class,
ListHabitsModule::class,
ShowHabitModule::class,

@ -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

@ -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);
}
}

@ -1,30 +0,0 @@
/*
* Copyright (C) 2017 Á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.activities.about;
import org.isoron.uhabits.core.ui.screens.about.*;
import dagger.*;
@Module
public abstract class AboutModule
{
@Binds
abstract AboutBehavior.Screen getScreen(AboutScreen screen);
}

@ -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()
{

@ -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();
}
}
}

@ -1,105 +0,0 @@
/*
* Copyright (C) 2017 Á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.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();
}
}

@ -1,95 +0,0 @@
/*
* Copyright (C) 2017 Á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.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();
}
}
Loading…
Cancel
Save