/*
* 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.activities.habits.show;
import android.content.*;
import android.os.*;
import android.support.annotation.*;
import android.support.v7.widget.*;
import org.isoron.uhabits.R;
import org.isoron.uhabits.activities.*;
import org.isoron.uhabits.activities.habits.show.views.*;
import org.isoron.uhabits.models.*;
import org.isoron.uhabits.utils.*;
import javax.inject.*;
import butterknife.*;
@ActivityScope
public class ShowHabitRootView extends BaseRootView
implements ModelObservable.Listener
{
@NonNull
private Habit habit;
@BindView(R.id.frequencyCard)
FrequencyCard frequencyCard;
@BindView(R.id.streakCard)
StreakCard streakCard;
@BindView(R.id.subtitleCard)
SubtitleCard subtitleCard;
@BindView(R.id.overviewCard)
OverviewCard overviewCard;
@BindView(R.id.scoreCard)
ScoreCard scoreCard;
@BindView(R.id.historyCard)
HistoryCard historyCard;
@BindView(R.id.toolbar)
Toolbar toolbar;
@NonNull
private Controller controller;
@Inject
public ShowHabitRootView(@NonNull @ActivityContext Context context,
@NonNull Habit habit)
{
super(context);
this.habit = habit;
addView(inflate(getContext(), R.layout.show_habit, null));
ButterKnife.bind(this);
controller = new Controller() {};
initCards();
initToolbar();
}
@Override
public boolean getDisplayHomeAsUp()
{
return true;
}
@NonNull
@Override
public Toolbar getToolbar()
{
return toolbar;
}
@Override
public int getToolbarColor()
{
StyledResources res = new StyledResources(getContext());
if (!res.getBoolean(R.attr.useHabitColorAsPrimary))
return super.getToolbarColor();
return ColorUtils.getColor(getContext(), habit.getColor());
}
@Override
public void onModelChange()
{
new Handler(Looper.getMainLooper()).post(() -> {
toolbar.setTitle(habit.getName());
});
controller.onToolbarChanged();
}
public void setController(@NonNull Controller controller)
{
this.controller = controller;
historyCard.setController(controller);
}
@Override
protected void initToolbar()
{
super.initToolbar();
toolbar.setTitle(habit.getName());
}
@Override
protected void onAttachedToWindow()
{
super.onAttachedToWindow();
habit.getObservable().addListener(this);
}
@Override
protected void onDetachedFromWindow()
{
habit.getObservable().removeListener(this);
super.onDetachedFromWindow();
}
private void initCards()
{
subtitleCard.setHabit(habit);
overviewCard.setHabit(habit);
scoreCard.setHabit(habit);
historyCard.setHabit(habit);
streakCard.setHabit(habit);
frequencyCard.setHabit(habit);
}
public interface Controller extends HistoryCard.Controller
{
default void onToolbarChanged() {}
}
}