diff --git a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/NotesCardTest.java b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/NotesCardTest.java deleted file mode 100644 index 6f91bf4d6..000000000 --- a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/NotesCardTest.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * 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.activities.habits.show.views; - -import android.view.LayoutInflater; - -import androidx.test.ext.junit.runners.AndroidJUnit4; -import androidx.test.filters.MediumTest; - -import org.isoron.uhabits.BaseViewTest; -import org.isoron.uhabits.R; -import org.isoron.uhabits.core.models.Habit; -import org.isoron.uhabits.core.models.Reminder; -import org.isoron.uhabits.core.models.WeekdayList; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -@RunWith(AndroidJUnit4.class) -@MediumTest -public class NotesCardTest extends BaseViewTest -{ - public static final String PATH = "habits/show/NotesCard/"; - - private NotesCard view; - - private Habit habit; - - @Before - @Override - public void setUp() - { - super.setUp(); - - habit = fixtures.createLongHabit(); - habit.setReminder(new Reminder(8, 30, WeekdayList.EVERY_DAY)); - - view = LayoutInflater - .from(targetContext) - .inflate(R.layout.show_habit, null) - .findViewById(R.id.notesCard); - - view.setHabit(habit); - view.refreshData(); - - measureView(view, 800, 200); - } - - @Test - public void testRender() throws Exception - { - assertRenders(view, PATH + "render.png"); - } - - @Test - public void testRenderEmptyDescription() throws Exception - { - habit.setDescription(""); - view.refreshData(); - assertRenders(view, PATH + "render-empty-description.png"); - } -} diff --git a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/NotesCardTest.kt b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/NotesCardTest.kt new file mode 100644 index 000000000..0fe9ff0aa --- /dev/null +++ b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/NotesCardTest.kt @@ -0,0 +1,62 @@ +/* + * 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.activities.habits.show.views + +import android.view.* +import androidx.test.ext.junit.runners.* +import androidx.test.filters.* +import org.isoron.uhabits.* +import org.isoron.uhabits.activities.habits.show.* +import org.junit.* +import org.junit.runner.* + +@RunWith(AndroidJUnit4::class) +@MediumTest +class NotesCardTest : BaseViewTest() { + val PATH = "habits/show/NotesCard" + private lateinit var view: NotesCard + + @Before + override fun setUp() { + super.setUp() + view = LayoutInflater + .from(targetContext) + .inflate(R.layout.show_habit, null) + .findViewById(R.id.notesCard) + view.onData(ShowHabitViewModel( + description = "This is a test description", + )) + measureView(view, 800f, 200f) + } + + @Test + @Throws(Exception::class) + fun testRender() { + assertRenders(view, "$PATH/render.png") + } + + @Test + @Throws(Exception::class) + fun testRenderEmptyDescription() { + view.onData(ShowHabitViewModel( + description = "", + )) + assertRenders(view, "$PATH/render-empty-description.png") + } +} \ No newline at end of file diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitPresenter.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitPresenter.kt index 0255cc39f..841929c72 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitPresenter.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitPresenter.kt @@ -76,6 +76,7 @@ class ShowHabitPresenter val scoreLastYear = scores.getValue(lastYear).toFloat() data = ShowHabitViewModel( title = habit.name, + description = habit.description, color = habit.color, isNumerical = habit.isNumerical, scoreToday = scoreToday, diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitRootView.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitRootView.kt index 28cd32010..fbdd0ecb6 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitRootView.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitRootView.kt @@ -45,9 +45,9 @@ class ShowHabitRootView displayHomeAsUp = true binding.overviewCard.presenter = presenter + binding.notesCard.presenter = presenter binding.subtitleCard.habit = habit - binding.notesCard.habit = habit binding.scoreCard.habit = habit binding.historyCard.habit = habit binding.streakCard.habit = habit diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitViewModel.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitViewModel.kt index ba5796e00..7bacbeb06 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitViewModel.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitViewModel.kt @@ -23,6 +23,7 @@ import org.isoron.uhabits.core.models.* data class ShowHabitViewModel( val title: String = "", + val description: String = "", val isNumerical: Boolean = false, val scoreToday: Float = 0f, val scoreMonthDiff: Float = 0f, diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/NotesCard.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/NotesCard.kt index 5e9d6864b..86d9f55ed 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/NotesCard.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/NotesCard.kt @@ -1,26 +1,37 @@ package org.isoron.uhabits.activities.habits.show.views -import android.content.Context -import android.util.AttributeSet -import android.view.View -import android.widget.TextView -import org.isoron.uhabits.R -import org.isoron.uhabits.core.tasks.Task +import android.content.* +import android.util.* +import android.view.* +import android.widget.* +import org.isoron.uhabits.activities.habits.show.* +import org.isoron.uhabits.databinding.* -class NotesCard(context: Context?, attrs: AttributeSet?) : HabitCard(context, attrs) { +class NotesCard( + context: Context, + attrs: AttributeSet +) : LinearLayout(context, attrs), ShowHabitPresenter.Listener { - private val notesTextView: TextView + private val binding = ShowHabitNotesBinding.inflate(LayoutInflater.from(context), this) + lateinit var presenter: ShowHabitPresenter - init { - View.inflate(getContext(), R.layout.show_habit_notes, this) - notesTextView = findViewById(R.id.habitNotes) + override fun onAttachedToWindow() { + super.onAttachedToWindow() + presenter.addListener(this) + presenter.requestData(this) } - override fun refreshData() { - notesTextView.text = habit.description - visibility = if(habit.description.isEmpty()) View.GONE else View.VISIBLE - notesTextView.visibility = visibility + override fun onDetachedFromWindow() { + presenter.removeListener(this) + super.onDetachedFromWindow() } - override fun createRefreshTask(): Task = error("refresh task should never be called.") + override fun onData(data: ShowHabitViewModel) { + if (data.description.isEmpty()) { + visibility = GONE + } else { + visibility = VISIBLE + binding.habitNotes.text = data.description + } + } } \ No newline at end of file diff --git a/android/uhabits-android/src/main/res/layout/show_habit_notes.xml b/android/uhabits-android/src/main/res/layout/show_habit_notes.xml index ce1da19b5..5957ee494 100644 --- a/android/uhabits-android/src/main/res/layout/show_habit_notes.xml +++ b/android/uhabits-android/src/main/res/layout/show_habit_notes.xml @@ -30,6 +30,5 @@ android:layout_height="wrap_content" android:gravity="center" android:textColor="?highContrastTextColor" - android:visibility="gone" tools:text="This is some example text for the notes" /> \ No newline at end of file