diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml
index 1e0426a9f..8974ca9dd 100644
--- a/Habitica/AndroidManifest.xml
+++ b/Habitica/AndroidManifest.xml
@@ -141,15 +141,16 @@
android:value=".ui.activities.MainActivity" />
-
-
+ android:name=".ui.activities.CreateChallengeActivity"
+ android:theme="@style/AppThemeWithActionBar"
+ android:parentActivityName=".ui.activities.MainActivity"
+ android:screenOrientation="portrait"
+ android:launchMode="singleTask"
+ tools:ignore="UnusedAttribute">
+
+
+
+
+
diff --git a/Habitica/res/drawable/ic_close_white_24dp.xml b/Habitica/res/drawable/ic_close_white_24dp.xml
new file mode 100644
index 000000000..4881cf5be
--- /dev/null
+++ b/Habitica/res/drawable/ic_close_white_24dp.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Habitica/res/drawable/ic_info_outline_black_24dp.xml b/Habitica/res/drawable/ic_info_outline_black_24dp.xml
new file mode 100644
index 000000000..cb30cd7c3
--- /dev/null
+++ b/Habitica/res/drawable/ic_info_outline_black_24dp.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Habitica/res/layout/activity_create_challenge.xml b/Habitica/res/layout/activity_create_challenge.xml
index 9cc9228cf..aeae2a567 100644
--- a/Habitica/res/layout/activity_create_challenge.xml
+++ b/Habitica/res/layout/activity_create_challenge.xml
@@ -1,5 +1,5 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:orientation="vertical">
+ android:layout_height="wrap_content"
+ android:background="@color/brand_200"
+ android:orientation="vertical"
+ android:paddingLeft="@dimen/activity_horizontal_margin"
+ android:paddingRight="@dimen/activity_horizontal_margin"
+ android:paddingTop="22dp">
-
-
+ android:textColorHint="@color/brand_500"
+ app:hintTextAppearance="@style/TextAppearance.AppCompat">
-
+
+
+
+ android:textColorHint="@color/brand_500"
+
+ app:hintTextAppearance="@style/TextAppearance.AppCompat">
+
+
+
-
+
+
+ android:orientation="vertical"
+ android:paddingLeft="@dimen/activity_horizontal_margin"
+ android:paddingRight="@dimen/activity_horizontal_margin">
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+ android:nestedScrollingEnabled="false"
+ android:id="@+id/create_challenge_task_list">
+
-
+
diff --git a/Habitica/res/layout/challenge_add_task_item.xml b/Habitica/res/layout/challenge_add_task_item.xml
new file mode 100644
index 000000000..5df449e54
--- /dev/null
+++ b/Habitica/res/layout/challenge_add_task_item.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/menu/menu_create_challenge.xml b/Habitica/res/menu/menu_create_challenge.xml
new file mode 100644
index 000000000..6475f0388
--- /dev/null
+++ b/Habitica/res/menu/menu_create_challenge.xml
@@ -0,0 +1,11 @@
+
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index 4299cd0a6..6e8456de1 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -544,4 +544,8 @@ To start, which parts of your life do you want to improve?
Back
Oh, you must be new here. I’m Justin, I’ll be your guide in Habitica.\n\nTo start, you’ll need to create an avatar.
Randomize
+ Save
+ Location
+ Gem reward
+ Tasks
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java
index 53b52f5c2..c38adbe3d 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/components/AppComponent.java
@@ -28,6 +28,7 @@ import com.habitrpg.android.habitica.ui.activities.SetupActivity;
import com.habitrpg.android.habitica.ui.activities.SkillMemberActivity;
import com.habitrpg.android.habitica.ui.activities.SkillTasksActivity;
import com.habitrpg.android.habitica.ui.activities.TaskFormActivity;
+import com.habitrpg.android.habitica.ui.adapter.social.challenges.ChallengeTasksRecyclerViewAdapter;
import com.habitrpg.android.habitica.ui.adapter.tasks.DailiesRecyclerViewHolder;
import com.habitrpg.android.habitica.ui.adapter.tasks.HabitsRecyclerViewAdapter;
import com.habitrpg.android.habitica.ui.adapter.tasks.RewardsRecyclerViewAdapter;
@@ -226,7 +227,7 @@ public interface AppComponent {
void inject(SubscriptionFragment subscriptionFragment);
- void inject(ChallengeTasksRecyclerViewFragment.ChallengeTasksRecyclerViewAdapter challengeTasksRecyclerViewAdapter);
+ void inject(ChallengeTasksRecyclerViewAdapter challengeTasksRecyclerViewAdapter);
void inject(ChallengeTasksRecyclerViewFragment challengeTasksRecyclerViewFragment);
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java
index 2edb07d06..0e18992b2 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/CreateChallengeActivity.java
@@ -1,20 +1,172 @@
package com.habitrpg.android.habitica.ui.activities;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
+import android.support.v7.app.ActionBar;
+import android.support.v7.view.menu.MenuAdapter;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MotionEvent;
+import android.widget.ArrayAdapter;
+import android.widget.Spinner;
+import com.habitrpg.android.habitica.HabiticaApplication;
import com.habitrpg.android.habitica.R;
import com.habitrpg.android.habitica.components.AppComponent;
+import com.habitrpg.android.habitica.events.TaskSaveEvent;
+import com.habitrpg.android.habitica.ui.adapter.social.challenges.ChallengeTasksRecyclerViewAdapter;
+import com.habitrpg.android.habitica.ui.fragments.social.challenges.ChallengeTasksRecyclerViewFragment;
+import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
+
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+
+import java.util.ArrayList;
+import java.util.UUID;
+
+import butterknife.BindView;
public class CreateChallengeActivity extends BaseActivity {
+ @BindView(R.id.challenge_location_spinner)
+ Spinner challenge_location_spinner;
+
+
+ @BindView(R.id.create_challenge_task_list)
+ RecyclerView create_challenge_task_list;
+
+ private boolean displayingTaskForm;
+
@Override
protected int getLayoutResId() {
return R.layout.activity_create_challenge;
}
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.menu_create_challenge, menu);
+ return true;
+ }
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
+ EventBus.getDefault().register(this);
+
+ Resources resources = getResources();
+
+ ActionBar supportActionBar = getSupportActionBar();
+ if (supportActionBar != null) {
+ supportActionBar.setIcon(R.drawable.ic_close_white_24dp);
+
+ supportActionBar.setBackgroundDrawable(new ColorDrawable(resources.getColor(R.color.brand_200)));
+ supportActionBar.setElevation(0);
+ }
+
+ ArrayAdapter locationAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item);
+ locationAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ locationAdapter.addAll("Tavern", "My Group", "Some other");
+ challenge_location_spinner.setAdapter(locationAdapter);
+
+ Task addHabit = createTask(ChallengeTasksRecyclerViewAdapter.TASK_TYPE_ADD_ITEM, resources.getString(R.string.add_habit));
+ Task addDaily = createTask(ChallengeTasksRecyclerViewAdapter.TASK_TYPE_ADD_ITEM, resources.getString(R.string.add_daily));
+ Task addTodo = createTask(ChallengeTasksRecyclerViewAdapter.TASK_TYPE_ADD_ITEM, resources.getString(R.string.add_todo));
+ Task addReward = createTask(ChallengeTasksRecyclerViewAdapter.TASK_TYPE_ADD_ITEM, resources.getString(R.string.add_reward));
+
+ ArrayList taskList = new ArrayList<>();
+ taskList.add(addHabit);
+ taskList.add(createTask(Task.TYPE_HABIT));
+ taskList.add(addDaily);
+ taskList.add(createTask(Task.TYPE_DAILY));
+ taskList.add(addTodo);
+ taskList.add(createTask(Task.TYPE_TODO));
+ taskList.add(addReward);
+ taskList.add(createTask(Task.TYPE_REWARD));
+
+ ChallengeTasksRecyclerViewAdapter challengeTasks = new ChallengeTasksRecyclerViewAdapter(null, 0, this, "", null, false, true);
+ challengeTasks.setTasks(taskList);
+ challengeTasks.enableAddItem(t -> {
+ if (t.equals(addHabit)) {
+ openNewTaskActivity(Task.TYPE_HABIT);
+ } else if (t.equals(addDaily)) {
+
+ openNewTaskActivity(Task.TYPE_DAILY);
+ } else if (t.equals(addTodo)) {
+
+ openNewTaskActivity(Task.TYPE_TODO);
+ } else if (t.equals(addReward)) {
+
+ openNewTaskActivity(Task.TYPE_REWARD);
+ }
+ });
+
+ create_challenge_task_list.addOnItemTouchListener(new RecyclerView.SimpleOnItemTouchListener() {
+ @Override
+ public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
+ // Stop only scrolling.
+ return rv.getScrollState() == RecyclerView.SCROLL_STATE_DRAGGING;
+ }
+ });
+ create_challenge_task_list.setAdapter(challengeTasks);
+ create_challenge_task_list.setLayoutManager(new LinearLayoutManager(this));
+
+ }
+
+ private void openNewTaskActivity(String type) {
+ if (this.displayingTaskForm) {
+ return;
+ }
+
+ Bundle bundle = new Bundle();
+ bundle.putString(TaskFormActivity.TASK_TYPE_KEY, type);
+ bundle.putBoolean(TaskFormActivity.SAVE_TO_DB, false);
+
+ if (HabiticaApplication.User != null && HabiticaApplication.User.getPreferences() != null) {
+ String allocationMode = HabiticaApplication.User.getPreferences().getAllocationMode();
+
+ bundle.putString(TaskFormActivity.USER_ID_KEY, HabiticaApplication.User.getId());
+ bundle.putString(TaskFormActivity.ALLOCATION_MODE_KEY, allocationMode);
+ }
+
+
+ Intent intent = new Intent(this, TaskFormActivity.class);
+ intent.putExtras(bundle);
+ intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
+
+ this.displayingTaskForm = true;
+ startActivityForResult(intent, 1);
+ }
+
+ @Subscribe
+ public void onEvent(TaskSaveEvent saveEvent)
+ {
+
+ }
+
+ private Task createTask(String taskType) {
+ return createTask(taskType, "example " + taskType);
+ }
+
+ private Task createTask(String taskType, String taskName) {
+ Task t = new Task();
+
+ t.setId(UUID.randomUUID().toString());
+ t.setType(taskType);
+ t.setText(taskName);
+ t.setNotes("example " + taskType + " notes");
+
+ if (taskType.equals(Task.TYPE_HABIT)) {
+ t.setUp(true);
+ t.setDown(false);
+ }
+
+ return t;
}
@Override
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java
index 5057b4d88..8e3fe3f03 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java
@@ -88,6 +88,7 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem
public static final String USER_ID_KEY = "userId";
public static final String TASK_TYPE_KEY = "type";
public static final String ALLOCATION_MODE_KEY = "allocationModeKey";
+ public static final String SAVE_TO_DB = "saveToDb";
@BindView(R.id.task_value_edittext)
EditText taskValue;
@@ -214,6 +215,7 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem
private RemindersManager remindersManager;
private TaskAlarmManager taskAlarmManager;
private FirstDayOfTheWeekHelper firstDayOfTheWeekHelper;
+ private boolean saveToDb;
@Override
protected int getLayoutResId() {
@@ -230,6 +232,7 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem
taskId = bundle.getString(TASK_ID_KEY);
userId = bundle.getString(USER_ID_KEY);
allocationMode = bundle.getString(ALLOCATION_MODE_KEY);
+ saveToDb = bundle.getBoolean(SAVE_TO_DB, true);
tagCheckBoxList = new ArrayList<>();
selectedTags = new ArrayList<>();
if (taskType == null) {
@@ -873,7 +876,10 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem
}
//save
this.task.setTags(taskTags);
- this.task.save();
+ if(saveToDb){
+ this.task.save();
+ }
+
//send back to other elements.
TaskSaveEvent event = new TaskSaveEvent();
if (TaskFormActivity.this.task.getId() == null) {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.java
new file mode 100644
index 000000000..135b43a95
--- /dev/null
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.java
@@ -0,0 +1,155 @@
+package com.habitrpg.android.habitica.ui.adapter.social.challenges;
+
+import android.content.Context;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.habitrpg.android.habitica.R;
+import com.habitrpg.android.habitica.components.AppComponent;
+import com.habitrpg.android.habitica.helpers.TagsHelper;
+import com.habitrpg.android.habitica.ui.adapter.tasks.SortableTasksRecyclerViewAdapter;
+import com.habitrpg.android.habitica.ui.viewHolders.tasks.BaseTaskViewHolder;
+import com.habitrpg.android.habitica.ui.viewHolders.tasks.DailyViewHolder;
+import com.habitrpg.android.habitica.ui.viewHolders.tasks.HabitViewHolder;
+import com.habitrpg.android.habitica.ui.viewHolders.tasks.RewardViewHolder;
+import com.habitrpg.android.habitica.ui.viewHolders.tasks.TodoViewHolder;
+import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
+
+import butterknife.OnClick;
+import rx.functions.Action1;
+
+public class ChallengeTasksRecyclerViewAdapter extends SortableTasksRecyclerViewAdapter {
+ public static final String TASK_TYPE_ADD_ITEM = "ADD_ITEM";
+
+ private static final int TYPE_HEADER = 0;
+ private static final int TYPE_HABIT = 1;
+ private static final int TYPE_DAILY = 2;
+ private static final int TYPE_TODO = 3;
+ private static final int TYPE_REWARD = 4;
+ private static final int TYPE_ADD_ITEM = 5;
+
+ private int dailyResetOffset = 0;
+ private Action1 addItemCallback;
+ private boolean openTaskDisabled;
+ private boolean taskActionsDisabled;
+
+ public ChallengeTasksRecyclerViewAdapter(TagsHelper tagsHelper, int layoutResource,
+ Context newContext, String userID, SortTasksCallback sortCallback,
+ boolean openTaskDisabled, boolean taskActionsDisabled) {
+ super("", tagsHelper, layoutResource, newContext, userID, sortCallback);
+ this.openTaskDisabled = openTaskDisabled;
+ this.taskActionsDisabled = taskActionsDisabled;
+ }
+
+ public void setDailyResetOffset(int newResetOffset){
+ dailyResetOffset = newResetOffset;
+ }
+
+ @Override
+ protected void injectThis(AppComponent component) {
+ component.inject(this);
+ }
+
+ @Override
+ public boolean loadFromDatabase() {
+ return false;
+ }
+
+ @Override
+ public int getItemViewType(int position) {
+ Task task = this.filteredContent.get(position);
+
+ if (task.type.equals(Task.TYPE_HABIT))
+ return TYPE_HABIT;
+
+ if (task.type.equals(Task.TYPE_DAILY))
+ return TYPE_DAILY;
+
+ if (task.type.equals(Task.TYPE_TODO))
+ return TYPE_TODO;
+
+ if (task.type.equals(Task.TYPE_REWARD))
+ return TYPE_REWARD;
+
+ if(addItemCallback != null && task.type.equals(TASK_TYPE_ADD_ITEM))
+ return TYPE_ADD_ITEM;
+
+ return TYPE_HEADER;
+ }
+
+ public void enableAddItem(Action1 cb) {
+ addItemCallback = cb;
+ }
+
+ @Override
+ public BaseTaskViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ BaseTaskViewHolder viewHolder = null;
+
+ switch (viewType) {
+ case TYPE_HABIT:
+ viewHolder = new HabitViewHolder(getContentView(parent, R.layout.habit_item_card));
+ break;
+ case TYPE_DAILY:
+ viewHolder = new DailyViewHolder(getContentView(parent, R.layout.daily_item_card), dailyResetOffset);
+ break;
+ case TYPE_TODO:
+ viewHolder = new TodoViewHolder(getContentView(parent, R.layout.todo_item_card));
+ break;
+ case TYPE_REWARD:
+ viewHolder = new RewardViewHolder(getContentView(parent, R.layout.reward_item_card));
+ break;
+ case TYPE_ADD_ITEM:
+ viewHolder = new AddItemViewHolder(getContentView(parent, R.layout.challenge_add_task_item), addItemCallback);
+ break;
+ default:
+ viewHolder = new DividerViewHolder(getContentView(parent, R.layout.challenge_task_divider));
+ break;
+ }
+
+ viewHolder.setDisabled(openTaskDisabled, taskActionsDisabled);
+ return viewHolder;
+ }
+
+ public class AddItemViewHolder extends BaseTaskViewHolder {
+
+ private Button addBtn;
+ private Action1 callback;
+ private Task newTask;
+
+ public AddItemViewHolder(View itemView, Action1 callback) {
+ super(itemView, false);
+ this.callback = callback;
+
+ addBtn = (Button) itemView.findViewById(R.id.btn_add_task);
+ addBtn.setClickable(true);
+ addBtn.setOnClickListener(view -> callback.call(newTask));
+ context = itemView.getContext();
+ }
+
+ @Override
+ public void bindHolder(Task newTask, int position) {
+ this.newTask = newTask;
+ addBtn.setText(newTask.text);
+ }
+ }
+
+ private class DividerViewHolder extends BaseTaskViewHolder {
+
+ private TextView divider_name;
+
+ public DividerViewHolder(View itemView) {
+ super(itemView, false);
+
+ divider_name = (TextView) itemView.findViewById(R.id.divider_name);
+
+ context = itemView.getContext();
+ }
+
+ @Override
+ public void bindHolder(Task newTask, int position) {
+ divider_name.setText(newTask.text);
+ }
+ }
+}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java
index eccb79d65..4395bc985 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/challenges/ChallengeTasksRecyclerViewFragment.java
@@ -5,6 +5,7 @@ import com.habitrpg.android.habitica.APIHelper;
import com.habitrpg.android.habitica.R;
import com.habitrpg.android.habitica.components.AppComponent;
import com.habitrpg.android.habitica.helpers.TagsHelper;
+import com.habitrpg.android.habitica.ui.adapter.social.challenges.ChallengeTasksRecyclerViewAdapter;
import com.habitrpg.android.habitica.ui.adapter.tasks.BaseTasksRecyclerViewAdapter;
import com.habitrpg.android.habitica.ui.adapter.tasks.SortableTasksRecyclerViewAdapter;
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
@@ -86,7 +87,10 @@ public class ChallengeTasksRecyclerViewFragment extends BaseFragment {
}
public void setInnerAdapter() {
- this.recyclerAdapter = new ChallengeTasksRecyclerViewAdapter(null, 0, getContext(), userID, null);
+ ChallengeTasksRecyclerViewAdapter challengeTasksRecyclerViewAdapter = new ChallengeTasksRecyclerViewAdapter(null, 0, getContext(), userID, null, true, true);
+ this.recyclerAdapter = challengeTasksRecyclerViewAdapter;
+
+ challengeTasksRecyclerViewAdapter.setDailyResetOffset(user.getPreferences().getDayStart());
if (tasksOnInitialize.size() != 0 && recyclerAdapter != null && recyclerAdapter.getItemCount() == 0) {
recyclerAdapter.setTasks(tasksOnInitialize);
@@ -137,96 +141,8 @@ public class ChallengeTasksRecyclerViewFragment extends BaseFragment {
// region Challenge specific RecyclerViewAdapters
- public class ChallengeTasksRecyclerViewAdapter extends SortableTasksRecyclerViewAdapter {
- private static final int TYPE_HEADER = 0;
- private static final int TYPE_HABIT = 1;
- private static final int TYPE_DAILY = 2;
- private static final int TYPE_TODO = 3;
- private static final int TYPE_REWARD = 4;
- private int dailyResetOffset = 0;
- public ChallengeTasksRecyclerViewAdapter(TagsHelper tagsHelper, int layoutResource, Context newContext, String userID, SortTasksCallback sortCallback) {
- super("", tagsHelper, layoutResource, newContext, userID, sortCallback);
-
- if (user != null) {
- dailyResetOffset = user.getPreferences().getDayStart();
- }
- }
-
- @Override
- protected void injectThis(AppComponent component) {
- component.inject(this);
- }
-
- @Override
- public boolean loadFromDatabase() {
- return false;
- }
-
- @Override
- public int getItemViewType(int position) {
- Task task = this.filteredContent.get(position);
-
- if (task.type.equals(Task.TYPE_HABIT))
- return TYPE_HABIT;
-
- if (task.type.equals(Task.TYPE_DAILY))
- return TYPE_DAILY;
-
- if (task.type.equals(Task.TYPE_TODO))
- return TYPE_TODO;
-
- if (task.type.equals(Task.TYPE_REWARD))
- return TYPE_REWARD;
-
- return TYPE_HEADER;
- }
-
- @Override
- public BaseTaskViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- BaseTaskViewHolder viewHolder = null;
-
- switch (viewType) {
- case TYPE_HABIT:
- viewHolder = new HabitViewHolder(getContentView(parent, R.layout.habit_item_card));
- break;
- case TYPE_DAILY:
- viewHolder = new DailyViewHolder(getContentView(parent, R.layout.daily_item_card), dailyResetOffset);
- break;
- case TYPE_TODO:
- viewHolder = new TodoViewHolder(getContentView(parent, R.layout.todo_item_card));
- break;
- case TYPE_REWARD:
- viewHolder = new RewardViewHolder(getContentView(parent, R.layout.reward_item_card));
- break;
- default:
- viewHolder = new DividerViewHolder(getContentView(parent, R.layout.challenge_task_divider));
- break;
- }
-
- viewHolder.setDisabled(true);
- return viewHolder;
- }
- }
-
- private class DividerViewHolder extends BaseTaskViewHolder {
-
- private TextView divider_name;
-
- public DividerViewHolder(View itemView) {
- super(itemView, false);
-
- divider_name = (TextView) itemView.findViewById(R.id.divider_name);
-
- context = itemView.getContext();
- }
-
- @Override
- public void bindHolder(Task newTask, int position) {
- divider_name.setText(newTask.text);
- }
- }
// endregion
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.java
index 21e9a23a4..1b100c586 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.java
@@ -63,7 +63,6 @@ public abstract class BaseTaskViewHolder extends RecyclerView.ViewHolder impleme
@BindView(R.id.approvalRequiredTextField)
TextView approvalRequiredTextView;
- boolean disabled;
public BaseTaskViewHolder(View itemView) {
this(itemView, true);
@@ -187,7 +186,7 @@ public abstract class BaseTaskViewHolder extends RecyclerView.ViewHolder impleme
@Override
public void onClick(View v) {
- if (v != itemView || isDisabled()) {
+ if (v != itemView || this.openTaskDisabled) {
return;
}
@@ -201,13 +200,11 @@ public abstract class BaseTaskViewHolder extends RecyclerView.ViewHolder impleme
return true;
}
- public boolean isDisabled() {
- return disabled;
- }
+ protected boolean openTaskDisabled, taskActionsDisabled;
- public void setDisabled(boolean disabled) {
- this.disabled = disabled;
+ public void setDisabled(boolean openTaskDisabled, boolean taskActionsDisabled) {
+ this.openTaskDisabled = openTaskDisabled;
+ this.taskActionsDisabled = taskActionsDisabled;
- itemView.setEnabled(!disabled);
}
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/ChecklistedViewHolder.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/ChecklistedViewHolder.java
index 3431d56c0..7d8fd515f 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/ChecklistedViewHolder.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/ChecklistedViewHolder.java
@@ -167,9 +167,9 @@ public abstract class ChecklistedViewHolder extends BaseTaskViewHolder implement
}
@Override
- public void setDisabled(boolean disabled) {
- super.setDisabled(disabled);
+ public void setDisabled(boolean openTaskDisabled, boolean taskActionsDisabled) {
+ super.setDisabled(openTaskDisabled, taskActionsDisabled);
- this.checkbox.setEnabled(!disabled);
+ this.checkbox.setEnabled(!taskActionsDisabled);
}
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.java
index 86c3116b6..679719c81 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.java
@@ -88,10 +88,10 @@ public class HabitViewHolder extends BaseTaskViewHolder {
}
@Override
- public void setDisabled(boolean disabled) {
- super.setDisabled(disabled);
+ public void setDisabled(boolean openTaskDisabled, boolean taskActionsDisabled) {
+ super.setDisabled(openTaskDisabled, taskActionsDisabled);
- this.btnPlus.setEnabled(!disabled);
- this.btnMinus.setEnabled(!disabled);
+ this.btnPlus.setEnabled(!taskActionsDisabled);
+ this.btnMinus.setEnabled(!taskActionsDisabled);
}
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/RewardViewHolder.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/RewardViewHolder.java
index f620fd6c5..1412c1032 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/RewardViewHolder.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/RewardViewHolder.java
@@ -85,10 +85,10 @@ public class RewardViewHolder extends BaseTaskViewHolder {
}
@Override
- public void setDisabled(boolean disabled) {
- super.setDisabled(disabled);
+ public void setDisabled(boolean openTaskDisabled, boolean taskActionsDisabled) {
+ super.setDisabled(openTaskDisabled, taskActionsDisabled);
- this.rewardButton.setEnabled(!disabled);
+ this.rewardButton.setEnabled(!taskActionsDisabled);
}
}