From 1429f9b06a7d048454f4dda88f1f9cd2106d5a14 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Tue, 8 Dec 2015 17:54:31 +0100 Subject: [PATCH] prevent multiple forms at once --- .../habitica/ui/fragments/TasksFragment.java | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/Habitica/src/com/habitrpg/android/habitica/ui/fragments/TasksFragment.java b/Habitica/src/com/habitrpg/android/habitica/ui/fragments/TasksFragment.java index 102465f1b..3912ac42a 100644 --- a/Habitica/src/com/habitrpg/android/habitica/ui/fragments/TasksFragment.java +++ b/Habitica/src/com/habitrpg/android/habitica/ui/fragments/TasksFragment.java @@ -1,5 +1,6 @@ package com.habitrpg.android.habitica.ui.fragments; +import android.app.Activity; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -33,6 +34,7 @@ import com.habitrpg.android.habitica.MainActivity; import com.habitrpg.android.habitica.R; import com.habitrpg.android.habitica.TaskFormActivity; import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback; +import com.habitrpg.android.habitica.callbacks.SkillCallback; import com.habitrpg.android.habitica.callbacks.TaskCreationCallback; import com.habitrpg.android.habitica.callbacks.TaskScoringCallback; import com.habitrpg.android.habitica.callbacks.TaskUpdateCallback; @@ -98,6 +100,8 @@ public class TasksFragment extends BaseFragment implements TaskScoringCallback.O private TagsHelper tagsHelper; private ContentCache contentCache; + private boolean displayingTaskForm; + public void setActivity(MainActivity activity) { super.setActivity(activity); contentCache = new ContentCache(mAPIHelper.apiService); @@ -107,6 +111,7 @@ public class TasksFragment extends BaseFragment implements TaskScoringCallback.O public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { this.usesTabLayout = true; + this.displayingTaskForm = false; super.onCreateView(inflater, container, savedInstanceState); View v = inflater.inflate(R.layout.fragment_tasks, container, false); @@ -374,6 +379,9 @@ public class TasksFragment extends BaseFragment implements TaskScoringCallback.O private void openNewTaskActivity(String type) { + if (this.displayingTaskForm) { + return; + } Bundle bundle = new Bundle(); bundle.putString("type", type); bundle.putStringArrayList("tagsId", new ArrayList(this.tagsHelper.getTags())); @@ -381,7 +389,7 @@ public class TasksFragment extends BaseFragment implements TaskScoringCallback.O Intent intent = new Intent(activity, TaskFormActivity.class); intent.putExtras(bundle); intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); - + this.displayingTaskForm = true; startActivityForResult(intent, TASK_CREATED_RESULT); } @@ -399,7 +407,7 @@ public class TasksFragment extends BaseFragment implements TaskScoringCallback.O @Override public void success(List tags, Response response) { // Since we get a list of all tags, we just save them all - for(Tag onlineTag : tags){ + for (Tag onlineTag : tags) { onlineTag.user_id = user.getId(); onlineTag.async().save(); } @@ -415,12 +423,16 @@ public class TasksFragment extends BaseFragment implements TaskScoringCallback.O } public void onEvent(TaskTappedEvent event) { + if (this.displayingTaskForm) { + return; + } Bundle bundle = new Bundle(); bundle.putString("type", event.Task.getType()); bundle.putString("taskId", event.Task.getId()); bundle.putStringArrayList("tagsId", new ArrayList(this.tagsHelper.getTags())); Intent intent = new Intent(activity, TaskFormActivity.class); intent.putExtras(bundle); + this.displayingTaskForm = true; startActivityForResult(intent, TASK_UPDATED_RESULT); } @@ -641,4 +653,15 @@ public class TasksFragment extends BaseFragment implements TaskScoringCallback.O layout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT); super.onDestroyView(); } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + switch(requestCode) { + case (TASK_CREATED_RESULT) : + case (TASK_UPDATED_RESULT) : + this.displayingTaskForm = false; + break; + } + } }