mirror of https://github.com/tasks/tasks
Convert TaskEditControlSetFragmentMgr to Kotlin
parent
067b8e4ad8
commit
964dff6b76
@ -1,172 +0,0 @@
|
||||
package org.tasks.fragments;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import com.todoroo.astrid.activity.BeastModePreferences;
|
||||
import com.todoroo.astrid.activity.TaskEditFragment;
|
||||
import com.todoroo.astrid.data.Task;
|
||||
import com.todoroo.astrid.files.FilesControlSet;
|
||||
import com.todoroo.astrid.repeats.RepeatControlSet;
|
||||
import com.todoroo.astrid.tags.TagsControlSet;
|
||||
import com.todoroo.astrid.timers.TimerControlSet;
|
||||
import com.todoroo.astrid.ui.HideUntilControlSet;
|
||||
import com.todoroo.astrid.ui.ReminderControlSet;
|
||||
import dagger.hilt.android.qualifiers.ActivityContext;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.inject.Inject;
|
||||
import org.tasks.BuildConfig;
|
||||
import org.tasks.R;
|
||||
import org.tasks.preferences.Preferences;
|
||||
import org.tasks.ui.CalendarControlSet;
|
||||
import org.tasks.ui.DeadlineControlSet;
|
||||
import org.tasks.ui.DescriptionControlSet;
|
||||
import org.tasks.ui.ListFragment;
|
||||
import org.tasks.ui.LocationControlSet;
|
||||
import org.tasks.ui.PriorityControlSet;
|
||||
import org.tasks.ui.SubtaskControlSet;
|
||||
import org.tasks.ui.TaskEditControlFragment;
|
||||
|
||||
public class TaskEditControlSetFragmentManager {
|
||||
|
||||
public static final int[] TASK_EDIT_CONTROL_FRAGMENT_ROWS =
|
||||
new int[] {
|
||||
R.id.comment_bar,
|
||||
R.id.row_1,
|
||||
R.id.row_2,
|
||||
R.id.row_3,
|
||||
R.id.row_4,
|
||||
R.id.row_5,
|
||||
R.id.row_6,
|
||||
R.id.row_7,
|
||||
R.id.row_8,
|
||||
R.id.row_9,
|
||||
R.id.row_10,
|
||||
R.id.row_11,
|
||||
R.id.row_12,
|
||||
R.id.row_13
|
||||
};
|
||||
|
||||
private static final int[] TASK_EDIT_CONTROL_SET_FRAGMENTS =
|
||||
new int[] {
|
||||
DeadlineControlSet.TAG,
|
||||
TimerControlSet.TAG,
|
||||
DescriptionControlSet.TAG,
|
||||
CalendarControlSet.TAG,
|
||||
PriorityControlSet.TAG,
|
||||
HideUntilControlSet.TAG,
|
||||
ReminderControlSet.TAG,
|
||||
LocationControlSet.TAG,
|
||||
FilesControlSet.TAG,
|
||||
TagsControlSet.TAG,
|
||||
RepeatControlSet.TAG,
|
||||
CommentBarFragment.TAG,
|
||||
ListFragment.TAG,
|
||||
SubtaskControlSet.TAG
|
||||
};
|
||||
|
||||
static {
|
||||
//noinspection ConstantConditions
|
||||
if (BuildConfig.DEBUG
|
||||
&& TASK_EDIT_CONTROL_FRAGMENT_ROWS.length != TASK_EDIT_CONTROL_SET_FRAGMENTS.length) {
|
||||
throw new AssertionError();
|
||||
}
|
||||
}
|
||||
|
||||
private final Map<String, Integer> controlSetFragments = new LinkedHashMap<>();
|
||||
private final List<String> displayOrder;
|
||||
private int numRows;
|
||||
|
||||
@Inject
|
||||
public TaskEditControlSetFragmentManager(@ActivityContext Context context, Preferences preferences) {
|
||||
displayOrder = BeastModePreferences.constructOrderedControlList(preferences, context);
|
||||
displayOrder.add(0, context.getString(CommentBarFragment.TAG));
|
||||
String hideAlwaysTrigger = context.getString(R.string.TEA_ctrl_hide_section_pref);
|
||||
for (numRows = 0; numRows < displayOrder.size(); numRows++) {
|
||||
if (displayOrder.get(numRows).equals(hideAlwaysTrigger)) {
|
||||
displayOrder.remove(numRows);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (int resId : TASK_EDIT_CONTROL_SET_FRAGMENTS) {
|
||||
controlSetFragments.put(context.getString(resId), resId);
|
||||
}
|
||||
}
|
||||
|
||||
public List<TaskEditControlFragment> getFragmentsInPersistOrder(FragmentManager fragmentManager) {
|
||||
List<TaskEditControlFragment> fragments = new ArrayList<>();
|
||||
for (String tag : controlSetFragments.keySet()) {
|
||||
TaskEditControlFragment fragment =
|
||||
(TaskEditControlFragment) fragmentManager.findFragmentByTag(tag);
|
||||
if (fragment != null) {
|
||||
fragments.add(fragment);
|
||||
}
|
||||
}
|
||||
return fragments;
|
||||
}
|
||||
|
||||
public List<TaskEditControlFragment> getOrCreateFragments(
|
||||
TaskEditFragment taskEditFragment, Task task) {
|
||||
Bundle arguments = new Bundle();
|
||||
arguments.putParcelable(TaskEditControlFragment.EXTRA_TASK, task);
|
||||
arguments.putBoolean(TaskEditControlFragment.EXTRA_IS_NEW, task.isNew());
|
||||
|
||||
List<TaskEditControlFragment> fragments = new ArrayList<>();
|
||||
FragmentManager fragmentManager = taskEditFragment.getChildFragmentManager();
|
||||
for (int i = 0; i < displayOrder.size(); i++) {
|
||||
String tag = displayOrder.get(i);
|
||||
TaskEditControlFragment fragment =
|
||||
(TaskEditControlFragment) fragmentManager.findFragmentByTag(tag);
|
||||
if (fragment == null) {
|
||||
Integer resId = controlSetFragments.get(tag);
|
||||
fragment = createFragment(resId);
|
||||
fragment.setArguments(arguments);
|
||||
}
|
||||
fragments.add(fragment);
|
||||
}
|
||||
return fragments;
|
||||
}
|
||||
|
||||
private TaskEditControlFragment createFragment(int fragmentId) {
|
||||
switch (fragmentId) {
|
||||
case DeadlineControlSet.TAG:
|
||||
return new DeadlineControlSet();
|
||||
case PriorityControlSet.TAG:
|
||||
return new PriorityControlSet();
|
||||
case DescriptionControlSet.TAG:
|
||||
return new DescriptionControlSet();
|
||||
case CalendarControlSet.TAG:
|
||||
return new CalendarControlSet();
|
||||
case HideUntilControlSet.TAG:
|
||||
return new HideUntilControlSet();
|
||||
case ReminderControlSet.TAG:
|
||||
return new ReminderControlSet();
|
||||
case LocationControlSet.TAG:
|
||||
return new LocationControlSet();
|
||||
case FilesControlSet.TAG:
|
||||
return new FilesControlSet();
|
||||
case TimerControlSet.TAG:
|
||||
return new TimerControlSet();
|
||||
case TagsControlSet.TAG:
|
||||
return new TagsControlSet();
|
||||
case RepeatControlSet.TAG:
|
||||
return new RepeatControlSet();
|
||||
case CommentBarFragment.TAG:
|
||||
return new CommentBarFragment();
|
||||
case ListFragment.TAG:
|
||||
return new ListFragment();
|
||||
case SubtaskControlSet.TAG:
|
||||
return new SubtaskControlSet();
|
||||
default:
|
||||
throw new RuntimeException("Unsupported fragment");
|
||||
}
|
||||
}
|
||||
|
||||
public int getVisibleSize() {
|
||||
return numRows;
|
||||
}
|
||||
}
|
@ -0,0 +1,134 @@
|
||||
package org.tasks.fragments
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import com.todoroo.astrid.activity.BeastModePreferences
|
||||
import com.todoroo.astrid.activity.TaskEditFragment
|
||||
import com.todoroo.astrid.data.Task
|
||||
import com.todoroo.astrid.files.FilesControlSet
|
||||
import com.todoroo.astrid.repeats.RepeatControlSet
|
||||
import com.todoroo.astrid.tags.TagsControlSet
|
||||
import com.todoroo.astrid.timers.TimerControlSet
|
||||
import com.todoroo.astrid.ui.HideUntilControlSet
|
||||
import com.todoroo.astrid.ui.ReminderControlSet
|
||||
import dagger.hilt.android.qualifiers.ActivityContext
|
||||
import org.tasks.BuildConfig
|
||||
import org.tasks.R
|
||||
import org.tasks.preferences.Preferences
|
||||
import org.tasks.ui.*
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
||||
class TaskEditControlSetFragmentManager @Inject constructor(
|
||||
@ActivityContext context: Context,
|
||||
preferences: Preferences?) {
|
||||
|
||||
private val controlSetFragments: MutableMap<String, Int> = LinkedHashMap()
|
||||
private val displayOrder: List<String>
|
||||
var visibleSize = 0
|
||||
|
||||
fun getFragmentsInPersistOrder(fragmentManager: FragmentManager): List<TaskEditControlFragment> {
|
||||
return controlSetFragments.keys
|
||||
.mapNotNull { fragmentManager.findFragmentByTag(it) as TaskEditControlFragment? }
|
||||
}
|
||||
|
||||
fun getOrCreateFragments(
|
||||
taskEditFragment: TaskEditFragment, task: Task): List<TaskEditControlFragment> {
|
||||
val arguments = Bundle()
|
||||
arguments.putParcelable(TaskEditControlFragment.EXTRA_TASK, task)
|
||||
arguments.putBoolean(TaskEditControlFragment.EXTRA_IS_NEW, task.isNew)
|
||||
val fragments: MutableList<TaskEditControlFragment> = ArrayList()
|
||||
val fragmentManager = taskEditFragment.childFragmentManager
|
||||
for (i in displayOrder.indices) {
|
||||
val tag = displayOrder[i]
|
||||
var fragment = fragmentManager.findFragmentByTag(tag) as TaskEditControlFragment?
|
||||
if (fragment == null) {
|
||||
val resId = controlSetFragments[tag]
|
||||
fragment = createFragment(resId!!)
|
||||
fragment.arguments = arguments
|
||||
}
|
||||
fragments.add(fragment)
|
||||
}
|
||||
return fragments
|
||||
}
|
||||
|
||||
private fun createFragment(fragmentId: Int): TaskEditControlFragment {
|
||||
return when (fragmentId) {
|
||||
DeadlineControlSet.TAG -> DeadlineControlSet()
|
||||
PriorityControlSet.TAG -> PriorityControlSet()
|
||||
DescriptionControlSet.TAG -> DescriptionControlSet()
|
||||
CalendarControlSet.TAG -> CalendarControlSet()
|
||||
HideUntilControlSet.TAG -> HideUntilControlSet()
|
||||
ReminderControlSet.TAG -> ReminderControlSet()
|
||||
LocationControlSet.TAG -> LocationControlSet()
|
||||
FilesControlSet.TAG -> FilesControlSet()
|
||||
TimerControlSet.TAG -> TimerControlSet()
|
||||
TagsControlSet.TAG -> TagsControlSet()
|
||||
RepeatControlSet.TAG -> RepeatControlSet()
|
||||
CommentBarFragment.TAG -> CommentBarFragment()
|
||||
ListFragment.TAG -> ListFragment()
|
||||
SubtaskControlSet.TAG -> SubtaskControlSet()
|
||||
else -> throw RuntimeException("Unsupported fragment")
|
||||
}
|
||||
}
|
||||
|
||||
init {
|
||||
displayOrder = BeastModePreferences.constructOrderedControlList(preferences, context)
|
||||
displayOrder.add(0, context.getString(CommentBarFragment.TAG))
|
||||
val hideAlwaysTrigger = context.getString(R.string.TEA_ctrl_hide_section_pref)
|
||||
visibleSize = 0
|
||||
while (visibleSize < displayOrder.size) {
|
||||
if (displayOrder[visibleSize] == hideAlwaysTrigger) {
|
||||
displayOrder.removeAt(visibleSize)
|
||||
break
|
||||
}
|
||||
visibleSize++
|
||||
}
|
||||
for (resId in TASK_EDIT_CONTROL_SET_FRAGMENTS) {
|
||||
controlSetFragments[context.getString(resId)] = resId
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
val TASK_EDIT_CONTROL_FRAGMENT_ROWS = intArrayOf(
|
||||
R.id.comment_bar,
|
||||
R.id.row_1,
|
||||
R.id.row_2,
|
||||
R.id.row_3,
|
||||
R.id.row_4,
|
||||
R.id.row_5,
|
||||
R.id.row_6,
|
||||
R.id.row_7,
|
||||
R.id.row_8,
|
||||
R.id.row_9,
|
||||
R.id.row_10,
|
||||
R.id.row_11,
|
||||
R.id.row_12,
|
||||
R.id.row_13
|
||||
)
|
||||
private val TASK_EDIT_CONTROL_SET_FRAGMENTS = intArrayOf(
|
||||
DeadlineControlSet.TAG,
|
||||
TimerControlSet.TAG,
|
||||
DescriptionControlSet.TAG,
|
||||
CalendarControlSet.TAG,
|
||||
PriorityControlSet.TAG,
|
||||
HideUntilControlSet.TAG,
|
||||
ReminderControlSet.TAG,
|
||||
LocationControlSet.TAG,
|
||||
FilesControlSet.TAG,
|
||||
TagsControlSet.TAG,
|
||||
RepeatControlSet.TAG,
|
||||
CommentBarFragment.TAG,
|
||||
ListFragment.TAG,
|
||||
SubtaskControlSet.TAG
|
||||
)
|
||||
|
||||
init {
|
||||
if (BuildConfig.DEBUG
|
||||
&& TASK_EDIT_CONTROL_FRAGMENT_ROWS.size != TASK_EDIT_CONTROL_SET_FRAGMENTS.size) {
|
||||
throw AssertionError()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue