mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-08 21:37:53 +00:00
Fix editing custom rewards
This commit is contained in:
parent
8eed9cb197
commit
644b4d8840
22 changed files with 108 additions and 171 deletions
|
|
@ -1,12 +0,0 @@
|
|||
package com.habitrpg.android.habitica.events;
|
||||
|
||||
import com.habitrpg.android.habitica.models.tasks.Task;
|
||||
|
||||
/**
|
||||
* Created by Negue on 10.07.2015.
|
||||
*/
|
||||
public class HabitScoreEvent {
|
||||
public boolean Up = false;
|
||||
|
||||
public Task habit;
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
package com.habitrpg.android.habitica.events;
|
||||
|
||||
/**
|
||||
* Created by Negue on 10.07.2015.
|
||||
*/
|
||||
public class TaskTappedEvent {
|
||||
public com.habitrpg.android.habitica.models.tasks.Task Task;
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
package com.habitrpg.android.habitica.events.commands;
|
||||
|
||||
import com.habitrpg.android.habitica.models.tasks.Task;
|
||||
|
||||
/**
|
||||
* Created by Negue on 11.07.2015.
|
||||
*/
|
||||
public class BuyRewardCommand {
|
||||
public Task Reward;
|
||||
}
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
package com.habitrpg.android.habitica.events.commands;
|
||||
|
||||
/**
|
||||
* Created by keithholliday on 6/22/16.
|
||||
*/
|
||||
public class SendNewInboxMessageCommand {
|
||||
public String message;
|
||||
public String userToSendTo;
|
||||
|
||||
public SendNewInboxMessageCommand(String userToSendTo, String message) {
|
||||
this.userToSendTo = userToSendTo;
|
||||
this.message = message;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
package com.habitrpg.android.habitica.events.commands;
|
||||
|
||||
import com.habitrpg.android.habitica.models.tasks.Task;
|
||||
|
||||
/**
|
||||
* Created by Negue on 11.07.2015.
|
||||
*/
|
||||
public class TaskCheckedCommand {
|
||||
public Task Task;
|
||||
public boolean completed;
|
||||
}
|
||||
|
|
@ -17,7 +17,6 @@ import com.habitrpg.android.habitica.components.UserComponent
|
|||
import com.habitrpg.android.habitica.data.ChallengeRepository
|
||||
import com.habitrpg.android.habitica.data.SocialRepository
|
||||
import com.habitrpg.android.habitica.data.UserRepository
|
||||
import com.habitrpg.android.habitica.events.TaskTappedEvent
|
||||
import com.habitrpg.android.habitica.extensions.notNull
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.models.social.Challenge
|
||||
|
|
@ -27,11 +26,10 @@ import com.habitrpg.android.habitica.models.user.User
|
|||
import com.habitrpg.android.habitica.modules.AppModule
|
||||
import com.habitrpg.android.habitica.ui.adapter.social.challenges.ChallengeTasksRecyclerViewAdapter
|
||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
|
||||
import io.reactivex.Flowable
|
||||
import io.reactivex.functions.Consumer
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Named
|
||||
|
|
@ -212,6 +210,7 @@ class ChallengeFormActivity : BaseActivity() {
|
|||
val bundle = intent.extras
|
||||
|
||||
challengeTasks = ChallengeTasksRecyclerViewAdapter(null, 0, this, "", null, false, true)
|
||||
compositeSubscription.add(challengeTasks.taskOpenEvents.subscribe { openNewTaskActivity(it.type, it) })
|
||||
locationAdapter = GroupArrayAdapter(this)
|
||||
|
||||
if (bundle != null) {
|
||||
|
|
@ -238,11 +237,6 @@ class ChallengeFormActivity : BaseActivity() {
|
|||
super.onDestroy()
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
fun onEvent(tappedEvent: TaskTappedEvent) {
|
||||
openNewTaskActivity(null, tappedEvent.Task)
|
||||
}
|
||||
|
||||
private fun onAddGem() {
|
||||
var stringValue = createChallengePrize.text.toString()
|
||||
if (stringValue.isEmpty()) {
|
||||
|
|
|
|||
|
|
@ -26,6 +26,9 @@ class ChallengeTasksRecyclerViewAdapter(taskFilterHelper: TaskFilterHelper?, lay
|
|||
val taskList: MutableList<Task>
|
||||
get() = content?.map { t -> t }?.toMutableList() ?: mutableListOf()
|
||||
|
||||
protected var taskOpenEventsSubject = PublishSubject.create<Task>()
|
||||
val taskOpenEvents: Flowable<Task> = taskOpenEventsSubject.toFlowable(BackpressureStrategy.LATEST)
|
||||
|
||||
override fun injectThis(component: UserComponent) {
|
||||
component.inject(this)
|
||||
}
|
||||
|
|
@ -61,10 +64,18 @@ class ChallengeTasksRecyclerViewAdapter(taskFilterHelper: TaskFilterHelper?, lay
|
|||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BindableViewHolder<Task> {
|
||||
val viewHolder: BindableViewHolder<Task> = when (viewType) {
|
||||
TYPE_HABIT -> HabitViewHolder(getContentView(parent, R.layout.habit_item_card)) { _, _ -> }
|
||||
TYPE_DAILY -> DailyViewHolder(getContentView(parent, R.layout.daily_item_card)) { _, _ -> }
|
||||
TYPE_TODO -> TodoViewHolder(getContentView(parent, R.layout.todo_item_card)) { _, _ -> }
|
||||
TYPE_REWARD -> RewardViewHolder(getContentView(parent, R.layout.reward_item_card)) { _, _ -> }
|
||||
TYPE_HABIT -> HabitViewHolder(getContentView(parent, R.layout.habit_item_card), { _, _ -> }) { task ->
|
||||
taskOpenEventsSubject.onNext(task)
|
||||
}
|
||||
TYPE_DAILY -> DailyViewHolder(getContentView(parent, R.layout.daily_item_card), { _, _ -> }) { task ->
|
||||
taskOpenEventsSubject.onNext(task)
|
||||
}
|
||||
TYPE_TODO -> TodoViewHolder(getContentView(parent, R.layout.todo_item_card), { _, _ -> }) { task ->
|
||||
taskOpenEventsSubject.onNext(task)
|
||||
}
|
||||
TYPE_REWARD -> RewardViewHolder(getContentView(parent, R.layout.reward_item_card), { _, _ -> }) { task ->
|
||||
taskOpenEventsSubject.onNext(task)
|
||||
}
|
||||
TYPE_ADD_ITEM -> AddItemViewHolder(getContentView(parent, R.layout.challenge_add_task_item), addItemSubject)
|
||||
else -> DividerViewHolder(getContentView(parent, R.layout.challenge_task_divider))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,5 +11,7 @@ import io.realm.OrderedRealmCollection
|
|||
class DailiesRecyclerViewHolder(data: OrderedRealmCollection<Task>?, autoUpdate: Boolean, layoutResource: Int, taskFilterHelper: TaskFilterHelper) : RealmBaseTasksRecyclerViewAdapter<DailyViewHolder>(data, autoUpdate, layoutResource, taskFilterHelper) {
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DailyViewHolder =
|
||||
DailyViewHolder(getContentView(parent)) { task, direction -> taskScoreEventsSubject.onNext(Pair(task, direction)) }
|
||||
DailyViewHolder(getContentView(parent), { task, direction -> taskScoreEventsSubject.onNext(Pair(task, direction)) }) {
|
||||
task -> taskOpenEventsSubject.onNext(task)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,5 +10,7 @@ class HabitsRecyclerViewAdapter(data: OrderedRealmCollection<Task>?, autoUpdate:
|
|||
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HabitViewHolder =
|
||||
HabitViewHolder(getContentView(parent)) { task, direction -> taskScoreEventsSubject.onNext(Pair(task, direction)) }
|
||||
HabitViewHolder(getContentView(parent), { task, direction -> taskScoreEventsSubject.onNext(Pair(task, direction)) }) {
|
||||
task -> taskOpenEventsSubject.onNext(task)
|
||||
}
|
||||
}
|
||||
|
|
@ -18,7 +18,7 @@ import io.realm.RealmResults
|
|||
|
||||
abstract class RealmBaseTasksRecyclerViewAdapter<VH : BaseTaskViewHolder>(private var unfilteredData: OrderedRealmCollection<Task>?, private val hasAutoUpdates: Boolean, private val layoutResource: Int, private val taskFilterHelper: TaskFilterHelper?) : androidx.recyclerview.widget.RecyclerView.Adapter<VH>(), TaskRecyclerViewAdapter {
|
||||
private var updateOnModification: Boolean = false
|
||||
private var ignoreUpdates: Boolean = false
|
||||
override var ignoreUpdates: Boolean = false
|
||||
private val listener: OrderedRealmCollectionChangeListener<OrderedRealmCollection<Task>> by lazy {
|
||||
OrderedRealmCollectionChangeListener<OrderedRealmCollection<Task>> { _, changeSet ->
|
||||
if (ignoreUpdates) {
|
||||
|
|
@ -50,9 +50,11 @@ abstract class RealmBaseTasksRecyclerViewAdapter<VH : BaseTaskViewHolder>(privat
|
|||
private set
|
||||
|
||||
private var errorButtonEventsSubject = PublishSubject.create<String>()
|
||||
|
||||
override val errorButtonEvents = errorButtonEventsSubject.toFlowable(BackpressureStrategy.DROP)
|
||||
protected var taskScoreEventsSubject = PublishSubject.create<Pair<Task, TaskDirection>>()
|
||||
val taskScoreEvents: Flowable<Pair<Task, TaskDirection>> = taskScoreEventsSubject.toFlowable(BackpressureStrategy.LATEST)
|
||||
override val taskScoreEvents: Flowable<Pair<Task, TaskDirection>> = taskScoreEventsSubject.toFlowable(BackpressureStrategy.LATEST)
|
||||
protected var taskOpenEventsSubject = PublishSubject.create<Task>()
|
||||
override val taskOpenEvents: Flowable<Task> = taskOpenEventsSubject.toFlowable(BackpressureStrategy.LATEST)
|
||||
|
||||
private val isDataValid: Boolean
|
||||
get() = data?.isValid ?: false
|
||||
|
|
@ -159,17 +161,7 @@ abstract class RealmBaseTasksRecyclerViewAdapter<VH : BaseTaskViewHolder>(privat
|
|||
}
|
||||
}
|
||||
|
||||
override fun getIgnoreUpdates(): Boolean = ignoreUpdates
|
||||
|
||||
override fun setIgnoreUpdates(ignoreUpdates: Boolean) {
|
||||
this.ignoreUpdates = ignoreUpdates
|
||||
}
|
||||
|
||||
override fun getTaskIDAt(position: Int): String {
|
||||
return data?.get(position)?.id ?: ""
|
||||
}
|
||||
|
||||
override fun getErrorButtonEvents(): Flowable<String> {
|
||||
return errorButtonEventsSubject.toFlowable(BackpressureStrategy.DROP)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,9 +20,12 @@ import io.realm.OrderedRealmCollection
|
|||
class RewardsRecyclerViewAdapter(private var customRewards: OrderedRealmCollection<Task>?, private val layoutResource: Int, private val user: User?) : RecyclerView.Adapter<RecyclerView.ViewHolder>(), TaskRecyclerViewAdapter {
|
||||
private var inAppRewards: OrderedRealmCollection<ShopItem>? = null
|
||||
|
||||
private val errorButtonEvents = PublishSubject.create<String>()
|
||||
val errorButtonEventsSubject = PublishSubject.create<String>()
|
||||
override val errorButtonEvents = errorButtonEventsSubject.toFlowable(BackpressureStrategy.DROP)
|
||||
private var taskScoreEventsSubject = PublishSubject.create<Pair<Task, TaskDirection>>()
|
||||
val taskScoreEvents: Flowable<Pair<Task, TaskDirection>> = taskScoreEventsSubject.toFlowable(BackpressureStrategy.LATEST)
|
||||
override val taskScoreEvents: Flowable<Pair<Task, TaskDirection>> = taskScoreEventsSubject.toFlowable(BackpressureStrategy.LATEST)
|
||||
protected var taskOpenEventsSubject = PublishSubject.create<Task>()
|
||||
override val taskOpenEvents: Flowable<Task> = taskOpenEventsSubject.toFlowable(BackpressureStrategy.LATEST)
|
||||
|
||||
private val inAppRewardCount: Int
|
||||
get() = inAppRewards?.size ?: 0
|
||||
|
|
@ -30,13 +33,19 @@ class RewardsRecyclerViewAdapter(private var customRewards: OrderedRealmCollecti
|
|||
private val customRewardCount: Int
|
||||
get() = customRewards?.size ?: 0
|
||||
|
||||
override var ignoreUpdates: Boolean
|
||||
get() = false
|
||||
set(_) {}
|
||||
|
||||
private fun getContentView(parent: ViewGroup): View {
|
||||
return LayoutInflater.from(parent.context).inflate(layoutResource, parent, false)
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
|
||||
return if (viewType == VIEWTYPE_CUSTOM_REWARD) {
|
||||
RewardViewHolder(getContentView(parent)) { task, direction -> taskScoreEventsSubject.onNext(Pair(task, direction)) }
|
||||
RewardViewHolder(getContentView(parent), { task, direction -> taskScoreEventsSubject.onNext(Pair(task, direction)) }) {
|
||||
task -> taskOpenEventsSubject.onNext(task)
|
||||
}
|
||||
} else {
|
||||
ShopItemViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.row_shopitem, parent, false))
|
||||
}
|
||||
|
|
@ -65,22 +74,10 @@ class RewardsRecyclerViewAdapter(private var customRewards: OrderedRealmCollecti
|
|||
}
|
||||
}
|
||||
|
||||
override fun setIgnoreUpdates(ignoreUpdates: Boolean) {
|
||||
|
||||
}
|
||||
|
||||
override fun getIgnoreUpdates(): Boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
override fun updateUnfilteredData(data: OrderedRealmCollection<Task>?) {
|
||||
updateData(data)
|
||||
}
|
||||
|
||||
override fun getErrorButtonEvents(): Flowable<String> {
|
||||
return errorButtonEvents.toFlowable(BackpressureStrategy.DROP)
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
var rewardCount = customRewardCount
|
||||
rewardCount += inAppRewardCount
|
||||
|
|
|
|||
|
|
@ -1,29 +0,0 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.tasks;
|
||||
|
||||
import com.habitrpg.android.habitica.models.tasks.Task;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import io.reactivex.Flowable;
|
||||
import io.reactivex.Observable;
|
||||
import io.realm.OrderedRealmCollection;
|
||||
import io.realm.RealmResults;
|
||||
|
||||
public interface TaskRecyclerViewAdapter {
|
||||
|
||||
void updateData(OrderedRealmCollection<Task> tasks);
|
||||
|
||||
void filter();
|
||||
|
||||
void notifyItemMoved(int adapterPosition, int adapterPosition1);
|
||||
void notifyDataSetChanged();
|
||||
int getItemViewType(int position);
|
||||
String getTaskIDAt(int position);
|
||||
|
||||
void setIgnoreUpdates(boolean ignoreUpdates);
|
||||
boolean getIgnoreUpdates();
|
||||
|
||||
void updateUnfilteredData(@Nullable OrderedRealmCollection<Task> data);
|
||||
|
||||
Flowable<String> getErrorButtonEvents();
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.tasks
|
||||
|
||||
import com.habitrpg.android.habitica.models.responses.TaskDirection
|
||||
import com.habitrpg.android.habitica.models.tasks.Task
|
||||
import io.reactivex.Flowable
|
||||
import io.realm.OrderedRealmCollection
|
||||
|
||||
interface TaskRecyclerViewAdapter {
|
||||
var ignoreUpdates: Boolean
|
||||
|
||||
val errorButtonEvents: Flowable<String>
|
||||
|
||||
fun updateData(tasks: OrderedRealmCollection<Task>?)
|
||||
|
||||
fun filter()
|
||||
|
||||
fun notifyItemMoved(adapterPosition: Int, adapterPosition1: Int)
|
||||
fun notifyDataSetChanged()
|
||||
fun getItemViewType(position: Int): Int
|
||||
fun getTaskIDAt(position: Int): String?
|
||||
|
||||
fun updateUnfilteredData(data: OrderedRealmCollection<Task>?)
|
||||
|
||||
val taskScoreEvents: Flowable<Pair<Task, TaskDirection>>
|
||||
val taskOpenEvents: Flowable<Task>
|
||||
}
|
||||
|
|
@ -11,6 +11,8 @@ import io.realm.OrderedRealmCollection
|
|||
class TodosRecyclerViewAdapter(data: OrderedRealmCollection<Task>?, autoUpdate: Boolean, layoutResource: Int, taskFilterHelper: TaskFilterHelper) : RealmBaseTasksRecyclerViewAdapter<TodoViewHolder>(data, autoUpdate, layoutResource, taskFilterHelper) {
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TodoViewHolder =
|
||||
TodoViewHolder(getContentView(parent)) { task, direction -> taskScoreEventsSubject.onNext(Pair(task, direction)) }
|
||||
TodoViewHolder(getContentView(parent), { task, direction -> taskScoreEventsSubject.onNext(Pair(task, direction)) }) {
|
||||
task -> taskOpenEventsSubject.onNext(task)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.tasks
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.BitmapDrawable
|
||||
import android.os.Bundle
|
||||
|
|
@ -26,6 +27,7 @@ import com.habitrpg.android.habitica.models.tasks.Task
|
|||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.modules.AppModule
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity
|
||||
import com.habitrpg.android.habitica.ui.activities.TaskFormActivity
|
||||
import com.habitrpg.android.habitica.ui.adapter.tasks.*
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment
|
||||
import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator
|
||||
|
|
@ -111,7 +113,6 @@ open class TaskRecyclerViewFragment : BaseFragment(), androidx.swiperefreshlayou
|
|||
}
|
||||
else -> null
|
||||
}
|
||||
compositeSubscription
|
||||
|
||||
if (classType != Task.TYPE_REWARD) {
|
||||
allowReordering()
|
||||
|
|
@ -123,6 +124,9 @@ open class TaskRecyclerViewFragment : BaseFragment(), androidx.swiperefreshlayou
|
|||
recyclerAdapter?.errorButtonEvents?.subscribe(Consumer {
|
||||
taskRepository.syncErroredTasks().subscribe(Consumer {}, RxErrorHandler.handleEmptyError())
|
||||
}, RxErrorHandler.handleEmptyError()).notNull { compositeSubscription.add(it) }
|
||||
recyclerAdapter?.taskOpenEvents?.subscribeWithErrorHandler(Consumer {
|
||||
openTaskForm(it)
|
||||
})
|
||||
|
||||
if (this.classType != null) {
|
||||
compositeSubscription.add(taskRepository.getTasks(this.classType ?: "", userID).firstElement().subscribe(Consumer {
|
||||
|
|
@ -304,6 +308,23 @@ open class TaskRecyclerViewFragment : BaseFragment(), androidx.swiperefreshlayou
|
|||
}
|
||||
}
|
||||
|
||||
fun openTaskForm(task: Task) {
|
||||
if (TasksFragment.displayingTaskForm) {
|
||||
return
|
||||
}
|
||||
|
||||
val bundle = Bundle()
|
||||
bundle.putString(TaskFormActivity.TASK_TYPE_KEY, task.type)
|
||||
bundle.putString(TaskFormActivity.TASK_ID_KEY, task.id)
|
||||
|
||||
val intent = Intent(activity, TaskFormActivity::class.java)
|
||||
intent.putExtras(bundle)
|
||||
TasksFragment.displayingTaskForm = true
|
||||
if (isAdded) {
|
||||
startActivityForResult(intent, TasksFragment.TASK_UPDATED_RESULT)
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val CLASS_TYPE_KEY = "CLASS_TYPE_KEY"
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ import com.habitrpg.android.habitica.HabiticaBaseApplication
|
|||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.components.UserComponent
|
||||
import com.habitrpg.android.habitica.data.TagRepository
|
||||
import com.habitrpg.android.habitica.events.TaskTappedEvent
|
||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
|
|
@ -19,7 +18,6 @@ import com.habitrpg.android.habitica.ui.activities.TaskFormActivity
|
|||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||
import com.habitrpg.android.habitica.ui.views.tasks.TaskFilterDialog
|
||||
import io.reactivex.functions.Consumer
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
||||
|
|
@ -36,7 +34,6 @@ class TasksFragment : BaseMainFragment() {
|
|||
private var refreshItem: MenuItem? = null
|
||||
internal var viewFragmentsDictionary: MutableMap<Int, TaskRecyclerViewFragment>? = WeakHashMap()
|
||||
|
||||
private var displayingTaskForm: Boolean = false
|
||||
private var filterMenuItem: MenuItem? = null
|
||||
|
||||
private val activeFragment: TaskRecyclerViewFragment?
|
||||
|
|
@ -46,7 +43,6 @@ class TasksFragment : BaseMainFragment() {
|
|||
savedInstanceState: Bundle?): View? {
|
||||
this.usesTabLayout = false
|
||||
this.usesBottomNavigation = true
|
||||
this.displayingTaskForm = false
|
||||
super.onCreateView(inflater, container, savedInstanceState)
|
||||
val v = inflater.inflate(R.layout.fragment_viewpager, container, false)
|
||||
|
||||
|
|
@ -251,7 +247,7 @@ class TasksFragment : BaseMainFragment() {
|
|||
// endregion
|
||||
|
||||
private fun openNewTaskActivity(type: String) {
|
||||
if (this.displayingTaskForm) {
|
||||
if (displayingTaskForm) {
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -273,29 +269,11 @@ class TasksFragment : BaseMainFragment() {
|
|||
intent.putExtras(bundle)
|
||||
intent.flags = Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
|
||||
if (this.isAdded) {
|
||||
this.displayingTaskForm = true
|
||||
displayingTaskForm = true
|
||||
startActivityForResult(intent, TASK_CREATED_RESULT)
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
fun onEvent(event: TaskTappedEvent) {
|
||||
if (this.displayingTaskForm) {
|
||||
return
|
||||
}
|
||||
|
||||
val bundle = Bundle()
|
||||
bundle.putString(TaskFormActivity.TASK_TYPE_KEY, event.Task.type)
|
||||
bundle.putString(TaskFormActivity.TASK_ID_KEY, event.Task.id)
|
||||
|
||||
val intent = Intent(activity, TaskFormActivity::class.java)
|
||||
intent.putExtras(bundle)
|
||||
this.displayingTaskForm = true
|
||||
if (isAdded) {
|
||||
startActivityForResult(intent, TASK_UPDATED_RESULT)
|
||||
}
|
||||
}
|
||||
|
||||
//endregion Events
|
||||
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
|
|
@ -303,10 +281,10 @@ class TasksFragment : BaseMainFragment() {
|
|||
|
||||
when (requestCode) {
|
||||
TASK_CREATED_RESULT -> {
|
||||
this.displayingTaskForm = false
|
||||
displayingTaskForm = false
|
||||
onTaskCreatedResult(resultCode, data)
|
||||
}
|
||||
TASK_UPDATED_RESULT -> this.displayingTaskForm = false
|
||||
TASK_UPDATED_RESULT -> displayingTaskForm = false
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -345,7 +323,8 @@ class TasksFragment : BaseMainFragment() {
|
|||
override fun addToBackStack(): Boolean = false
|
||||
|
||||
companion object {
|
||||
var displayingTaskForm: Boolean = false
|
||||
private const val TASK_CREATED_RESULT = 1
|
||||
private const val TASK_UPDATED_RESULT = 2
|
||||
const val TASK_UPDATED_RESULT = 2
|
||||
}
|
||||
}
|
||||
|
|
@ -4,7 +4,6 @@ import android.content.Context
|
|||
import android.view.View
|
||||
import android.widget.*
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.events.TaskTappedEvent
|
||||
import com.habitrpg.android.habitica.extensions.notNull
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.models.responses.TaskDirection
|
||||
|
|
@ -20,9 +19,8 @@ import io.reactivex.android.schedulers.AndroidSchedulers
|
|||
import io.reactivex.functions.Action
|
||||
import io.reactivex.functions.Consumer
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
abstract class BaseTaskViewHolder constructor(itemView: View, var scoreTaskFunc: ((Task, TaskDirection) -> Unit)) : BindableViewHolder<Task>(itemView), View.OnClickListener {
|
||||
abstract class BaseTaskViewHolder constructor(itemView: View, var scoreTaskFunc: ((Task, TaskDirection) -> Unit), var openTaskFunc: ((Task) -> Unit)) : BindableViewHolder<Task>(itemView), View.OnClickListener {
|
||||
|
||||
|
||||
var task: Task? = null
|
||||
|
|
@ -186,10 +184,7 @@ abstract class BaseTaskViewHolder constructor(itemView: View, var scoreTaskFunc:
|
|||
return
|
||||
}
|
||||
|
||||
val event = TaskTappedEvent()
|
||||
event.Task = task
|
||||
|
||||
EventBus.getDefault().post(event)
|
||||
task?.let { openTaskFunc(it) }
|
||||
}
|
||||
|
||||
open fun canContainMarkdown(): Boolean {
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ import io.reactivex.functions.Consumer
|
|||
import io.reactivex.schedulers.Schedulers
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
abstract class ChecklistedViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> Unit)) : BaseTaskViewHolder(itemView, scoreTaskFunc), CompoundButton.OnCheckedChangeListener {
|
||||
abstract class ChecklistedViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> Unit), openTaskFunc: ((Task) -> Unit)) : BaseTaskViewHolder(itemView, scoreTaskFunc, openTaskFunc), CompoundButton.OnCheckedChangeListener {
|
||||
|
||||
private val checkboxHolder: ViewGroup by bindView(itemView, R.id.checkBoxHolder)
|
||||
internal val checkbox: CheckBox by bindView(itemView, R.id.checkBox)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import com.habitrpg.android.habitica.models.responses.TaskDirection
|
|||
import com.habitrpg.android.habitica.models.tasks.Task
|
||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
||||
|
||||
class DailyViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> Unit)) : ChecklistedViewHolder(itemView, scoreTaskFunc) {
|
||||
class DailyViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> Unit), openTaskFunc: ((Task) -> Unit)) : ChecklistedViewHolder(itemView, scoreTaskFunc, openTaskFunc) {
|
||||
|
||||
private val streakTextView: TextView by bindView(itemView, R.id.streakTextView)
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import com.habitrpg.android.habitica.models.responses.TaskDirection
|
|||
import com.habitrpg.android.habitica.models.tasks.Task
|
||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
||||
|
||||
class HabitViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> Unit)) : BaseTaskViewHolder(itemView, scoreTaskFunc) {
|
||||
class HabitViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> Unit), openTaskFunc: ((Task) -> Unit)) : BaseTaskViewHolder(itemView, scoreTaskFunc, openTaskFunc) {
|
||||
|
||||
private val btnPlusWrapper: FrameLayout by bindView(itemView, R.id.btnPlusWrapper)
|
||||
private val btnPlusIconView: ImageView by bindView(itemView, R.id.btnPlusIconView)
|
||||
|
|
@ -85,11 +85,11 @@ class HabitViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> U
|
|||
super.bind(newTask, position)
|
||||
}
|
||||
|
||||
fun onPlusButtonClicked() {
|
||||
private fun onPlusButtonClicked() {
|
||||
task?.let { scoreTaskFunc.invoke(it, TaskDirection.UP) }
|
||||
}
|
||||
|
||||
fun onMinusButtonClicked() {
|
||||
private fun onMinusButtonClicked() {
|
||||
task?.let { scoreTaskFunc.invoke(it, TaskDirection.DOWN) }
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,9 +13,9 @@ import com.habitrpg.android.habitica.ui.ItemDetailDialog
|
|||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
|
||||
class RewardViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> Unit)) : BaseTaskViewHolder(itemView, scoreTaskFunc) {
|
||||
class RewardViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> Unit), openTaskFunc: ((Task) -> Unit)) : BaseTaskViewHolder(itemView, scoreTaskFunc, openTaskFunc) {
|
||||
|
||||
internal val buyButton: View by bindView(itemView, R.id.buyButton)
|
||||
private val buyButton: View by bindView(itemView, R.id.buyButton)
|
||||
internal val priceLabel: TextView by bindView(itemView, R.id.priceLabel)
|
||||
private val goldIconView: ImageView by bindView(itemView, R.id.gold_icon)
|
||||
|
||||
|
|
@ -53,7 +53,7 @@ class RewardViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) ->
|
|||
dialog.setBuyListener( DialogInterface.OnClickListener { _, _ -> this.buyReward() })
|
||||
dialog.show()
|
||||
} else {
|
||||
task?.let { scoreTaskFunc(it, TaskDirection.UP) }
|
||||
super.onClick(v)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import com.habitrpg.android.habitica.models.tasks.Task
|
|||
|
||||
import java.text.DateFormat
|
||||
|
||||
class TodoViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> Unit)) : ChecklistedViewHolder(itemView, scoreTaskFunc) {
|
||||
class TodoViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> Unit), openTaskFunc: ((Task) -> Unit)) : ChecklistedViewHolder(itemView, scoreTaskFunc, openTaskFunc) {
|
||||
|
||||
private val dateFormatter: DateFormat = android.text.format.DateFormat.getDateFormat(context)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue