From 3839855fefa99402242cdabf58b12d2c75912b2d Mon Sep 17 00:00:00 2001 From: Andrew Lord Date: Fri, 30 Sep 2016 22:46:02 +0100 Subject: [PATCH] Fixes #404. After creating a new task, switch to the tab of that type. --- .../ui/activities/TaskFormActivity.java | 14 ++++++--- .../tasks/TaskRecyclerViewFragment.java | 30 +++++++++---------- .../ui/fragments/tasks/TasksFragment.java | 20 +++++++++++++ 3 files changed, 44 insertions(+), 20 deletions(-) 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 c07337324..e8c0d8fce 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 @@ -631,7 +631,7 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem //noinspection SimplifiableIfStatement if (id == R.id.action_save_changes) { - finishActivitySuccessfuly(); + finishActivitySuccessfully(); return true; } @@ -847,7 +847,6 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem } private void prepareSave() { - if (this.task == null) { this.task = new Task(); this.task.setType(taskType); @@ -888,12 +887,19 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem dismissKeyboard(); } - private void finishActivitySuccessfuly() { + private void finishActivitySuccessfully() { this.prepareSave(); - finish(); + finishWithSuccess(); dismissKeyboard(); } + private void finishWithSuccess() { + Intent resultIntent = new Intent(); + resultIntent.putExtra(TaskFormActivity.TASK_TYPE_KEY, taskType); + setResult(RESULT_OK, resultIntent); + finish(); + } + private void dismissKeyboard() { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); View currentFocus = getCurrentFocus(); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java index 61e258d50..8678d4401 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.java @@ -1,8 +1,17 @@ package com.habitrpg.android.habitica.ui.fragments.tasks; +import android.graphics.Color; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.helper.ItemTouchHelper; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + import com.habitrpg.android.habitica.APIHelper; import com.habitrpg.android.habitica.R; -import com.habitrpg.android.habitica.callbacks.HabitRPGUserCallback; import com.habitrpg.android.habitica.components.AppComponent; import com.habitrpg.android.habitica.events.commands.AddNewTaskCommand; import com.habitrpg.android.habitica.helpers.TagsHelper; @@ -21,21 +30,6 @@ import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task; import org.greenrobot.eventbus.EventBus; -import android.graphics.Color; -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.helper.ItemTouchHelper; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import javax.inject.Inject; import javax.inject.Named; @@ -229,4 +223,8 @@ public class TaskRecyclerViewFragment extends BaseFragment implements View.OnCli public String getDisplayedClassName() { return this.classType + super.getDisplayedClassName(); } + + String getClassName() { + return classType; + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java index ca77a135f..11efd1398 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.java @@ -47,6 +47,7 @@ import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; +import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; @@ -578,14 +579,33 @@ public class TasksFragment extends BaseMainFragment implements OnCheckedChangeLi @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); + switch (requestCode) { case (TASK_CREATED_RESULT): + this.displayingTaskForm = false; + onTaskCreatedResult(resultCode, data); + break; case (TASK_UPDATED_RESULT): this.displayingTaskForm = false; break; } } + private void onTaskCreatedResult(int resultCode, Intent data) { + if (resultCode == Activity.RESULT_OK) { + String taskType = data.getStringExtra(TaskFormActivity.TASK_TYPE_KEY); + switchToTaskTab(taskType); + } + } + + private void switchToTaskTab(String taskType) { + for (Map.Entry tabEntry : ViewFragmentsDictionary.entrySet()) { + if (tabEntry.getValue().getClassName().equals(taskType)) { + viewPager.setCurrentItem(tabEntry.getKey()); + } + } + } + @Override public String getDisplayedClassName() { return null;