mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-22 21:57:11 +00:00
Add Event Sender / Receiver
Rename RecyclerViewFragment.java to TaskRecyclerViewFragment.java
This commit is contained in:
parent
4416366fa7
commit
07f975e68d
3 changed files with 129 additions and 31 deletions
|
|
@ -3,13 +3,10 @@ package com.habitrpg.android.habitica;
|
|||
import android.content.Intent;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
|
@ -23,11 +20,15 @@ import com.habitrpg.android.habitica.callbacks.TaskCreationCallback;
|
|||
import com.habitrpg.android.habitica.callbacks.TaskDeletionCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.TaskScoringCallback;
|
||||
import com.habitrpg.android.habitica.callbacks.TaskUpdateCallback;
|
||||
import com.habitrpg.android.habitica.events.AddTaskTappedEvent;
|
||||
import com.habitrpg.android.habitica.events.HabitScoreEvent;
|
||||
import com.habitrpg.android.habitica.events.TaskLongPressedEvent;
|
||||
import com.habitrpg.android.habitica.events.TaskTappedEvent;
|
||||
import com.habitrpg.android.habitica.prefs.PrefsActivity;
|
||||
import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel;
|
||||
import com.habitrpg.android.habitica.ui.EditTextDrawer;
|
||||
import com.habitrpg.android.habitica.ui.adapter.HabitItemRecyclerViewAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.RecyclerViewFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.TaskRecyclerViewFragment;
|
||||
import com.instabug.wrapper.support.activity.InstabugAppCompatActivity;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Tag;
|
||||
|
|
@ -57,6 +58,7 @@ import java.util.Map;
|
|||
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.InjectView;
|
||||
import de.greenrobot.event.EventBus;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
|
@ -76,7 +78,7 @@ public class MainActivity extends InstabugAppCompatActivity implements OnTaskCre
|
|||
Drawer filterDrawer;
|
||||
//endregion
|
||||
|
||||
Map<Integer, RecyclerViewFragment> ViewFragmentsDictionary = new HashMap<Integer, RecyclerViewFragment>();
|
||||
Map<Integer, TaskRecyclerViewFragment> ViewFragmentsDictionary = new HashMap<Integer, TaskRecyclerViewFragment>();
|
||||
|
||||
List<HabitItem> TaskList = new ArrayList<HabitItem>();
|
||||
|
||||
|
|
@ -100,6 +102,9 @@ public class MainActivity extends InstabugAppCompatActivity implements OnTaskCre
|
|||
// Inject Controls
|
||||
ButterKnife.inject(this);
|
||||
|
||||
// Receive Events
|
||||
EventBus.getDefault().register(this);
|
||||
|
||||
this.hostConfig = PrefsActivity.fromContext(this);
|
||||
if (hostConfig == null || hostConfig.getApi() == null || hostConfig.getApi().equals("") || hostConfig.getUser() == null || hostConfig.getUser().equals("")) {
|
||||
startActivity(new Intent(this, LoginActivity.class));
|
||||
|
|
@ -208,7 +213,7 @@ public class MainActivity extends InstabugAppCompatActivity implements OnTaskCre
|
|||
|
||||
this.observer.addSpecificModelChangeListener(this);
|
||||
|
||||
SetUserData();
|
||||
SetUserData(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -225,10 +230,27 @@ public class MainActivity extends InstabugAppCompatActivity implements OnTaskCre
|
|||
if (observer != null) {
|
||||
this.observer.unregisterForContentChanges(this.getApplicationContext());
|
||||
}
|
||||
EventBus.getDefault().unregister(this);
|
||||
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
public void onEvent(TaskTappedEvent event){
|
||||
Toast.makeText(this, event.Task.text, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
public void onEvent(TaskLongPressedEvent event){
|
||||
Toast.makeText(this, "LongPress: " +event.Task.text, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
public void onEvent(HabitScoreEvent event){
|
||||
Toast.makeText(this, "Score Up="+event.Up+" " +event.Habit.text, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
public void onEvent(AddTaskTappedEvent event){
|
||||
Toast.makeText(this, "Add Task " +event.ClassType.getSimpleName(), Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
||||
public void loadTaskLists() {
|
||||
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
|
||||
|
||||
|
|
@ -239,7 +261,7 @@ public class MainActivity extends InstabugAppCompatActivity implements OnTaskCre
|
|||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
int layoutOfType;
|
||||
RecyclerViewFragment fragment;
|
||||
TaskRecyclerViewFragment fragment;
|
||||
|
||||
String fragmentkey = "Recycler$" + position;
|
||||
final android.content.Context context = getApplicationContext();
|
||||
|
|
@ -247,19 +269,19 @@ public class MainActivity extends InstabugAppCompatActivity implements OnTaskCre
|
|||
switch (position) {
|
||||
case 0:
|
||||
layoutOfType = R.layout.habit_item_card;
|
||||
fragment = RecyclerViewFragment.newInstance(new HabitItemRecyclerViewAdapter(Habit.class, layoutOfType, HabitItemRecyclerViewAdapter.HabitViewHolder.class, context), fragmentkey);
|
||||
fragment = TaskRecyclerViewFragment.newInstance(new HabitItemRecyclerViewAdapter(Habit.class, layoutOfType, HabitItemRecyclerViewAdapter.HabitViewHolder.class, context), Habit.class);
|
||||
break;
|
||||
case 1:
|
||||
layoutOfType = R.layout.daily_item_card;
|
||||
fragment = RecyclerViewFragment.newInstance(new HabitItemRecyclerViewAdapter(Daily.class, layoutOfType, HabitItemRecyclerViewAdapter.DailyViewHolder.class, context), fragmentkey);
|
||||
fragment = TaskRecyclerViewFragment.newInstance(new HabitItemRecyclerViewAdapter(Daily.class, layoutOfType, HabitItemRecyclerViewAdapter.DailyViewHolder.class, context), Daily.class);
|
||||
break;
|
||||
case 3:
|
||||
layoutOfType = R.layout.reward_item_card;
|
||||
fragment = RecyclerViewFragment.newInstance(new HabitItemRecyclerViewAdapter(Reward.class, layoutOfType, HabitItemRecyclerViewAdapter.RewardViewHolder.class, context), fragmentkey);
|
||||
fragment = TaskRecyclerViewFragment.newInstance(new HabitItemRecyclerViewAdapter(Reward.class, layoutOfType, HabitItemRecyclerViewAdapter.RewardViewHolder.class, context), Reward.class);
|
||||
break;
|
||||
default:
|
||||
layoutOfType = R.layout.todo_item_card;
|
||||
fragment = RecyclerViewFragment.newInstance(new HabitItemRecyclerViewAdapter(ToDo.class, layoutOfType, HabitItemRecyclerViewAdapter.TodoViewHolder.class, context), fragmentkey);
|
||||
fragment = TaskRecyclerViewFragment.newInstance(new HabitItemRecyclerViewAdapter(ToDo.class, layoutOfType, HabitItemRecyclerViewAdapter.TodoViewHolder.class, context), ToDo.class);
|
||||
}
|
||||
|
||||
// ViewFragmentsDictionary.put(position, fragment);
|
||||
|
|
@ -450,16 +472,21 @@ public class MainActivity extends InstabugAppCompatActivity implements OnTaskCre
|
|||
public void onModelStateChanged(Class<? extends Model> aClass, BaseModel.Action action, String s, String s1) {
|
||||
User = new Select().from(HabitRPGUser.class).where(Condition.column("id").eq(hostConfig.getUser())).querySingle();
|
||||
|
||||
SetUserData();
|
||||
SetUserData(!taskListAlreadyAdded);
|
||||
}
|
||||
|
||||
private void SetUserData() {
|
||||
private boolean taskListAlreadyAdded;
|
||||
|
||||
private void SetUserData(final boolean onlyHeader) {
|
||||
if (User != null) {
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
loadTaskLists();
|
||||
FillTagFilterDrawer();
|
||||
if(!onlyHeader) {
|
||||
taskListAlreadyAdded = true;
|
||||
loadTaskLists();
|
||||
FillTagFilterDrawer();
|
||||
}
|
||||
updateHeader();
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -16,6 +16,9 @@ import com.habitrpg.android.habitica.databinding.DailyItemCardBinding;
|
|||
import com.habitrpg.android.habitica.databinding.HabitItemCardBinding;
|
||||
import com.habitrpg.android.habitica.databinding.RewardItemCardBinding;
|
||||
import com.habitrpg.android.habitica.databinding.TodoItemCardBinding;
|
||||
import com.habitrpg.android.habitica.events.HabitScoreEvent;
|
||||
import com.habitrpg.android.habitica.events.TaskLongPressedEvent;
|
||||
import com.habitrpg.android.habitica.events.TaskTappedEvent;
|
||||
import com.habitrpg.android.habitica.ui.helpers.HabitColorHelper;
|
||||
import com.habitrpg.android.habitica.ui.helpers.ViewHelper;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Daily;
|
||||
|
|
@ -32,6 +35,7 @@ import java.util.List;
|
|||
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.InjectView;
|
||||
import de.greenrobot.event.EventBus;
|
||||
|
||||
public class HabitItemRecyclerViewAdapter<THabitItem extends HabitItem>
|
||||
extends RecyclerView.Adapter<HabitItemRecyclerViewAdapter.ViewHolder>
|
||||
|
|
@ -104,7 +108,6 @@ public class HabitItemRecyclerViewAdapter<THabitItem extends HabitItem>
|
|||
case "TodoViewHolder":
|
||||
return new HabitItemRecyclerViewAdapter.TodoViewHolder(view);
|
||||
case "RewardViewHolder":
|
||||
|
||||
return new HabitItemRecyclerViewAdapter.RewardViewHolder(view);
|
||||
}
|
||||
}
|
||||
|
|
@ -125,7 +128,7 @@ public class HabitItemRecyclerViewAdapter<THabitItem extends HabitItem>
|
|||
this.loadContent();
|
||||
}
|
||||
|
||||
public abstract class ViewHolder<THabitItem extends HabitItem> extends RecyclerView.ViewHolder {
|
||||
public abstract class ViewHolder<THabitItem extends HabitItem> extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
|
||||
|
||||
@InjectView(R.id.card_view)
|
||||
protected CardView cardView;
|
||||
|
|
@ -146,6 +149,12 @@ public class HabitItemRecyclerViewAdapter<THabitItem extends HabitItem>
|
|||
public ViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
|
||||
itemView.setOnClickListener(this);
|
||||
itemView.setClickable(true);
|
||||
|
||||
itemView.setOnLongClickListener(this);
|
||||
itemView.setLongClickable(true);
|
||||
|
||||
ButterKnife.inject(this, itemView);
|
||||
|
||||
resources = itemView.getResources();
|
||||
|
|
@ -158,6 +167,27 @@ public class HabitItemRecyclerViewAdapter<THabitItem extends HabitItem>
|
|||
SetCardBackgroundColor(resources.getColor(itemColorRes));
|
||||
Item = habitItem;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (v != itemView)
|
||||
return;
|
||||
|
||||
TaskTappedEvent event = new TaskTappedEvent();
|
||||
event.Task = Item;
|
||||
|
||||
EventBus.getDefault().post(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
TaskLongPressedEvent event = new TaskLongPressedEvent();
|
||||
event.Task = Item;
|
||||
|
||||
EventBus.getDefault().post(event);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
public class HabitViewHolder extends ViewHolder<Habit> {
|
||||
|
|
@ -174,6 +204,28 @@ public class HabitItemRecyclerViewAdapter<THabitItem extends HabitItem>
|
|||
super(itemView);
|
||||
|
||||
binding = DataBindingUtil.bind(itemView);
|
||||
|
||||
btnPlus.setClickable(true);
|
||||
btnPlus.setOnClickListener(this);
|
||||
|
||||
btnMinus.setClickable(true);
|
||||
btnMinus.setOnClickListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
HabitScoreEvent event = new HabitScoreEvent();
|
||||
|
||||
if (v == btnPlus) {
|
||||
event.Up = true;
|
||||
event.Habit = Item;
|
||||
|
||||
EventBus.getDefault().post(event);
|
||||
} else if (v == btnMinus) {
|
||||
event.Habit = Item;
|
||||
|
||||
EventBus.getDefault().post(event);
|
||||
} else super.onClick(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -15,22 +15,29 @@ import android.view.ViewGroup;
|
|||
import com.github.florent37.materialviewpager.MaterialViewPagerHelper;
|
||||
import com.github.florent37.materialviewpager.adapter.RecyclerViewMaterialAdapter;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.AddTaskTappedEvent;
|
||||
import com.habitrpg.android.habitica.events.TaskTappedEvent;
|
||||
import com.habitrpg.android.habitica.ui.adapter.HabitItemRecyclerViewAdapter;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.HabitItem;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ToDo;
|
||||
import com.mikepenz.iconics.IconicsDrawable;
|
||||
import com.mikepenz.iconics.typeface.FontAwesome;
|
||||
|
||||
import de.greenrobot.event.EventBus;
|
||||
|
||||
/**
|
||||
RecyclerViewFragment
|
||||
- Creates the View only once
|
||||
- Adds FAB Icon
|
||||
- Handles the ScrollPosition - if anyone has a better solution please share it
|
||||
|
||||
|
||||
* TaskRecyclerViewFragment
|
||||
* - Creates the View only once
|
||||
* - Adds FAB Icon
|
||||
* - Handles the ScrollPosition - if anyone has a better solution please share it
|
||||
*/
|
||||
public class RecyclerViewFragment extends Fragment {
|
||||
public class TaskRecyclerViewFragment extends Fragment implements View.OnClickListener {
|
||||
public RecyclerView mRecyclerView;
|
||||
private RecyclerView.Adapter mAdapter;
|
||||
private Class<?> classType;
|
||||
|
||||
public void SetInnerAdapter(RecyclerView.Adapter adapter, String tag) {
|
||||
public void SetInnerAdapter(RecyclerView.Adapter adapter, Class<?> classType) {
|
||||
this.classType = classType;
|
||||
mAdapter = new RecyclerViewMaterialAdapter(adapter);
|
||||
}
|
||||
|
||||
|
|
@ -60,9 +67,13 @@ public class RecyclerViewFragment extends Fragment {
|
|||
|
||||
FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.fab);
|
||||
|
||||
IconicsDrawable icon = new IconicsDrawable(context, FontAwesome.Icon.faw_plus).color(Color.WHITE).sizeDp(24);
|
||||
if (fab.getDrawable() == null) {
|
||||
IconicsDrawable icon = new IconicsDrawable(context, FontAwesome.Icon.faw_plus).color(Color.WHITE).sizeDp(24);
|
||||
|
||||
fab.setImageDrawable(icon);
|
||||
fab.setImageDrawable(icon);
|
||||
fab.setOnClickListener(this);
|
||||
fab.setClickable(true);
|
||||
}
|
||||
|
||||
layoutManager = (LinearLayoutManager) mRecyclerView.getLayoutManager();
|
||||
|
||||
|
|
@ -81,13 +92,21 @@ public class RecyclerViewFragment extends Fragment {
|
|||
alreadyCreated = true;
|
||||
}
|
||||
|
||||
public static RecyclerViewFragment newInstance(RecyclerView.Adapter adapter, String tag) {
|
||||
RecyclerViewFragment fragment = new RecyclerViewFragment();
|
||||
public static TaskRecyclerViewFragment newInstance(RecyclerView.Adapter adapter, Class<?> classType) {
|
||||
TaskRecyclerViewFragment fragment = new TaskRecyclerViewFragment();
|
||||
|
||||
fragment.SetInnerAdapter(adapter, tag);
|
||||
fragment.SetInnerAdapter(adapter, classType);
|
||||
|
||||
Log.d("RecyclerViewFragment", "newInstance");
|
||||
Log.d("TaskRecyclerViewFragment", "newInstance");
|
||||
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
AddTaskTappedEvent event = new AddTaskTappedEvent();
|
||||
event.ClassType = classType;
|
||||
|
||||
EventBus.getDefault().post(event);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue