From 864101288b346d1745176fc2cfd005ce62dca27e Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Wed, 22 Apr 2020 14:52:46 +0200 Subject: [PATCH] Add setting for task list display mode --- Habitica/build.gradle | 12 +++- Habitica/res/values/strings.xml | 2 +- Habitica/res/values/values.xml | 12 ++++ Habitica/res/xml/preferences_fragment.xml | 18 ++++-- Habitica/res/xml/remote_config_defaults.xml | 4 ++ .../habitica/helpers/AppConfigManager.kt | 11 ++++ .../habitica/ui/activities/SetupActivity.kt | 36 ++++++++++- .../ui/activities/SkillTasksActivity.kt | 16 +++++ .../ChallengeTasksRecyclerViewAdapter.kt | 4 +- .../tasks/BaseTasksRecyclerViewAdapter.kt | 2 +- .../RealmBaseTasksRecyclerViewAdapter.kt | 10 ++- .../tasks/RewardsRecyclerViewAdapter.kt | 11 +++- .../adapter/tasks/TaskRecyclerViewAdapter.kt | 2 + .../preferences/PreferencesFragment.kt | 8 +++ .../tasks/TaskRecyclerViewFragment.kt | 7 +++ .../ui/viewHolders/BindableViewHolder.kt | 2 +- .../viewHolders/tasks/BaseTaskViewHolder.kt | 61 +++++++++++-------- .../tasks/ChecklistedViewHolder.kt | 4 +- .../ui/viewHolders/tasks/DailyViewHolder.kt | 4 +- .../ui/viewHolders/tasks/HabitViewHolder.kt | 4 +- .../ui/viewHolders/tasks/RewardViewHolder.kt | 4 +- .../ui/viewHolders/tasks/TodoViewHolder.kt | 4 +- fastlane/README.md | 5 ++ 23 files changed, 191 insertions(+), 52 deletions(-) diff --git a/Habitica/build.gradle b/Habitica/build.gradle index 9f73511ad..df5f08341 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -64,7 +64,7 @@ dependencies { compileOnly 'com.github.pengrad:jdk9-deps:1.0' //App Compatibility and Material Design implementation 'androidx.appcompat:appcompat:1.1.0' - implementation 'com.google.android.material:material:1.1.0' + implementation 'com.google.android.material:material:1.0.0' implementation 'androidx.recyclerview:recyclerview:1.1.0' implementation 'androidx.legacy:legacy-preference-v14:1.0.0' // Emojis @@ -162,8 +162,8 @@ android { multiDexEnabled true resConfigs "en", "bg", "de", "en-rGB", "es", "fr", "hr-rHR", "in", "it", "iw", "ja", "ko", "lt", "nl", "pl", "pt-rBR", "pt-rPT", "ru", "tr", "zh", "zh-rTW" - versionCode 2408 - versionName "2.6" + versionCode 2412 + versionName "2.6.1" } viewBinding { @@ -213,6 +213,12 @@ android { dimension "buildType" } + staff { + dimension "buildType" + buildConfigField "String", "TESTING_LEVEL", "\"staff\"" + resValue "string", "app_name", "Habitica Staff" + } + alpha { dimension "buildType" buildConfigField "String", "TESTING_LEVEL", "\"alpha\"" diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index d04de354c..7d067f293 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -1014,5 +1014,5 @@ Read More You are unable to buy that amount. Still have a question? - Delete Checklist entry + Task list display diff --git a/Habitica/res/values/values.xml b/Habitica/res/values/values.xml index b6510e863..3eec99b73 100644 --- a/Habitica/res/values/values.xml +++ b/Habitica/res/values/values.xml @@ -33,6 +33,18 @@ @string/avatar_size_broad + + Standard + Compact + Minimal + + + + standard + compact + minimal + + English Български diff --git a/Habitica/res/xml/preferences_fragment.xml b/Habitica/res/xml/preferences_fragment.xml index f88a0744a..853d672b3 100644 --- a/Habitica/res/xml/preferences_fragment.xml +++ b/Habitica/res/xml/preferences_fragment.xml @@ -112,6 +112,13 @@ android:shouldDisableView="false" android:summary="@string/SP_APIToken_summary" android:layout="@layout/preference_child_summary"/> + - raiseShops false + + enableTaskDisplayMode + true + \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AppConfigManager.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AppConfigManager.kt index b8d1d85af..446874b68 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AppConfigManager.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AppConfigManager.kt @@ -1,5 +1,7 @@ package com.habitrpg.android.habitica.helpers +import android.content.Context +import androidx.preference.PreferenceManager import com.google.firebase.remoteconfig.FirebaseRemoteConfig import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -82,4 +84,13 @@ class AppConfigManager { fun raiseShops(): Boolean { return remoteConfig.getBoolean("raiseShops") } + + fun taskDisplayMode(context: Context): String { + return if (remoteConfig.getBoolean("enableTaskDisplayMode")) { + val preferences = PreferenceManager.getDefaultSharedPreferences(context) + preferences.getString("task_display", "standard") ?: "standard" + } else { + "standard" + } + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.kt index 538e5ce7e..288c93de2 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.kt @@ -6,6 +6,7 @@ import android.graphics.drawable.Drawable import android.os.Build import android.os.Bundle import android.view.View +import android.view.ViewGroup import android.view.inputmethod.InputMethodManager import android.widget.Button import androidx.appcompat.content.res.AppCompatResources @@ -61,6 +62,7 @@ class SetupActivity : BaseActivity(), ViewPager.OnPageChangeListener { internal var taskSetupFragment: TaskSetupFragment? = null internal var user: User? = null private var completedSetup = false + private var createdTasks = false private val isLastPage: Boolean get() = this.pager.adapter == null || this.pager.currentItem == (this.pager.adapter?.count ?: 0) - 1 @@ -127,8 +129,13 @@ class SetupActivity : BaseActivity(), ViewPager.OnPageChangeListener { if (this.taskSetupFragment == null) { return } + if (createdTasks) { + onUserReceived(user) + return + } val newTasks = this.taskSetupFragment?.createSampleTasks() this.completedSetup = true + createdTasks = true newTasks?.let { this.taskRepository.createTasks(it).subscribe(Consumer { onUserReceived(user) }, RxErrorHandler.handleEmptyError()) } @@ -194,14 +201,14 @@ class SetupActivity : BaseActivity(), ViewPager.OnPageChangeListener { private fun onUserReceived(user: User?) { if (completedSetup) { - if (!compositeSubscription.isDisposed) { - compositeSubscription.dispose() - } val additionalData = HashMap() additionalData["status"] = "completed" AmplitudeManager.sendEvent("setup", AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR, AmplitudeManager.EVENT_HITTYPE_EVENT, additionalData) compositeSubscription.add(userRepository.updateUser(user, "flags.welcomed", true).subscribe(Consumer { + if (!compositeSubscription.isDisposed) { + compositeSubscription.dispose() + } startMainActivity() }, RxErrorHandler.handleEmptyError())) return @@ -256,6 +263,29 @@ class SetupActivity : BaseActivity(), ViewPager.OnPageChangeListener { } } + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val item = super.instantiateItem(container, position) + when (item) { + is AvatarSetupFragment -> { + avatarSetupFragment = item + item.activity = this@SetupActivity + item.setUser(user) + item.width = pager.width + } + is TaskSetupFragment -> { + taskSetupFragment = item + item.setUser(user) + } + is WelcomeFragment -> { + welcomeFragment = item + item.nameValidEvents.toFlowable(BackpressureStrategy.DROP)?.subscribe { + setNextButtonEnabled(it) + } + } + } + return item + } + override fun getCount(): Int { return 3 } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillTasksActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillTasksActivity.kt index 795c005d8..50b1f405c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillTasksActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillTasksActivity.kt @@ -5,6 +5,7 @@ import android.content.Intent import android.os.Bundle import android.util.SparseArray import android.view.MenuItem +import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentPagerAdapter import androidx.viewpager.widget.ViewPager @@ -67,6 +68,21 @@ class SkillTasksActivity : BaseActivity() { return fragment } + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val item = super.instantiateItem(container, position) + if (item is SkillTasksRecyclerViewFragment) { + item.taskType = when (position) { + 0 -> Task.TYPE_HABIT + 1 -> Task.TYPE_DAILY + else -> Task.TYPE_TODO + } + + compositeSubscription.add(item.getTaskSelectionEvents().subscribe(Consumer { task -> taskSelected(task) }, RxErrorHandler.handleEmptyError())) + viewFragmentsDictionary.put(position, item) + } + return item + } + override fun getCount(): Int { return 3 } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.kt index b9cf62730..d1f32b9e3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.kt @@ -116,7 +116,7 @@ class ChallengeTasksRecyclerViewAdapter(taskFilterHelper: TaskFilterHelper?, lay addBtn.setOnClickListener { newTask?.let { callback.onNext(it) } } } - override fun bind(data: Task, position: Int) { + override fun bind(data: Task, position: Int, displayMode: String) { this.newTask = data addBtn.text = data.text } @@ -126,7 +126,7 @@ class ChallengeTasksRecyclerViewAdapter(taskFilterHelper: TaskFilterHelper?, lay private val dividerName: TextView = itemView.findViewById(R.id.divider_name) - override fun bind(data: Task, position: Int) { + override fun bind(data: Task, position: Int, displayMode: String) { dividerName.text = data.text } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/BaseTasksRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/BaseTasksRecyclerViewAdapter.kt index 1ddbbbfd6..e471cfe80 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/BaseTasksRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/BaseTasksRecyclerViewAdapter.kt @@ -46,7 +46,7 @@ abstract class BaseTasksRecyclerViewAdapter>(var t override fun onBindViewHolder(holder: VH, position: Int) { val item = filteredContent?.get(position) if (item != null) { - holder.bind(item, position) + holder.bind(item, position, "normal") } /*if (this.displayedChecklist != null && ChecklistedViewHolder.class.isAssignableFrom(holder.getClass())) { ChecklistedViewHolder checklistedHolder = (ChecklistedViewHolder) holder; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt index 661b72ce5..40e18dc74 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt @@ -24,6 +24,14 @@ abstract class RealmBaseTasksRecyclerViewAdapter( private var updateOnModification: Boolean = false override var ignoreUpdates: Boolean = false + override var taskDisplayMode: String = "standard" + set(value) { + if (field != value) { + field = value + notifyDataSetChanged() + } + } + private val resultsListener: OrderedRealmCollectionChangeListener> by lazy { OrderedRealmCollectionChangeListener> { _, changeSet -> buildChangeSet(changeSet) @@ -128,7 +136,7 @@ abstract class RealmBaseTasksRecyclerViewAdapter( override fun onBindViewHolder(holder: VH, position: Int) { val item = getItem(position) if (item != null) { - holder.bind(item, position) + holder.bind(item, position, taskDisplayMode) holder.errorButtonClicked = Action { errorButtonEventsSubject.onNext("") } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.kt index 89ab638fa..deda9fe5e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.kt @@ -33,6 +33,15 @@ class RewardsRecyclerViewAdapter(private var customRewards: OrderedRealmCollecti private var purchaseCardSubject = PublishSubject.create() val purchaseCardEvents: Flowable = purchaseCardSubject.toFlowable(BackpressureStrategy.LATEST) + + override var taskDisplayMode: String = "standard" + set(value) { + if (field != value) { + field = value + notifyDataSetChanged() + } + } + private val inAppRewardCount: Int get() { if (inAppRewards?.isValid != true) return 0 @@ -71,7 +80,7 @@ class RewardsRecyclerViewAdapter(private var customRewards: OrderedRealmCollecti if (customRewards != null && position < customRewardCount) { val reward = customRewards?.get(position) ?: return val gold = user?.stats?.gp ?: 0.0 - (holder as? RewardViewHolder)?.bind(reward, position, reward.value < gold) + (holder as? RewardViewHolder)?.bind(reward, position, reward.value < gold, taskDisplayMode) } else if (inAppRewards != null) { val item = inAppRewards?.get(position - customRewardCount) ?: return if (holder is ShopItemViewHolder) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TaskRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TaskRecyclerViewAdapter.kt index 0fc57f5f3..7f9a4b5db 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TaskRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TaskRecyclerViewAdapter.kt @@ -11,6 +11,8 @@ interface TaskRecyclerViewAdapter { val errorButtonEvents: Flowable + var taskDisplayMode: String + fun updateData(tasks: OrderedRealmCollection?) fun filter() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.kt index 37a0ca815..30576af98 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.kt @@ -78,6 +78,10 @@ class PreferencesFragment : BasePreferencesFragment(), SharedPreferences.OnShare val themePreference = findPreference("theme_name") as? ListPreference themePreference?.isVisible = configManager.testingLevel() == AppTestingLevel.ALPHA || BuildConfig.DEBUG themePreference?.summary = themePreference?.entry + + + val taskDisplayPreference = findPreference("task_display") as? ListPreference + taskDisplayPreference?.summary = taskDisplayPreference?.entry } override fun onResume() { @@ -224,6 +228,10 @@ class PreferencesFragment : BasePreferencesFragment(), SharedPreferences.OnShare apiClient.updateServerUrl(sharedPreferences.getString(key, "")) findPreference(key).summary = sharedPreferences.getString(key, "") } + "task_display" -> { + val preference = findPreference(key) as ListPreference + preference.summary = preference.entry + } } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt index ef6f1a1a3..7308bd439 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt @@ -102,6 +102,8 @@ open class TaskRecyclerViewFragment : BaseFragment(), androidx.swiperefreshlayou this.recyclerAdapter?.filter() }, RxErrorHandler.handleEmptyError())) } + + context?.let { recyclerAdapter?.taskDisplayMode = configManager.taskDisplayMode(it) } } private fun handleTaskResult(result: TaskScoringResult, value: Int) { @@ -359,6 +361,11 @@ open class TaskRecyclerViewFragment : BaseFragment(), androidx.swiperefreshlayou }.subscribe(Consumer { }, RxErrorHandler.handleEmptyError())) } + override fun onResume() { + super.onResume() + context?.let { recyclerAdapter?.taskDisplayMode = configManager.taskDisplayMode(it) } + } + fun setActiveFilter(activeFilter: String) { taskFilterHelper.setActiveFilter(classType ?: "", activeFilter) recyclerAdapter?.filter() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/BindableViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/BindableViewHolder.kt index a7e011a44..a4fec802e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/BindableViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/BindableViewHolder.kt @@ -5,5 +5,5 @@ import androidx.recyclerview.widget.RecyclerView abstract class BindableViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - abstract fun bind(data: T, position: Int) + abstract fun bind(data: T, position: Int, displayMode: String) } \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt index 0913d78ec..06a94adc6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt @@ -104,7 +104,7 @@ abstract class BaseTaskViewHolder constructor(itemView: View, var scoreTaskFunc: } } - override fun bind(data: Task, position: Int) { + override fun bind(data: Task, position: Int, displayMode: String) { task = data itemView.setBackgroundResource(R.color.white) @@ -134,40 +134,53 @@ abstract class BaseTaskViewHolder constructor(itemView: View, var scoreTaskFunc: titleTextView.setParsedMarkdown(parsedText) }, RxErrorHandler.handleEmptyError()) } - if (data.parsedNotes != null) { - notesTextView?.setParsedMarkdown(data.parsedText) - } else { - notesTextView?.text = data.notes - notesTextView?.setSpannableFactory(NoCopySpannableFactory.getInstance()); - data.notes?.let {notes -> - if (notes.isEmpty()) { - return@let + if (displayMode != "minimal") { + if (data.parsedNotes != null) { + notesTextView?.setParsedMarkdown(data.parsedText) + } else { + notesTextView?.text = data.notes + notesTextView?.setSpannableFactory(NoCopySpannableFactory.getInstance()); + data.notes?.let {notes -> + if (notes.isEmpty()) { + return@let + } + Single.just(notes) + .map { MarkdownParser.parseMarkdown(it) } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(Consumer { parsedNotes -> + notesTextView?.text = parsedNotes + notesTextView?.setParsedMarkdown(parsedNotes) + }, RxErrorHandler.handleEmptyError()) + } } - Single.just(notes) - .map { MarkdownParser.parseMarkdown(it) } - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(Consumer { parsedNotes -> - notesTextView?.text = parsedNotes - notesTextView?.setParsedMarkdown(parsedNotes) - }, RxErrorHandler.handleEmptyError()) + } else { + notesTextView?.visibility = View.GONE } } - } } else { titleTextView.text = data.text - notesTextView?.text = data.notes + if (displayMode != "minimal") { + notesTextView?.text = data.notes + } else { + notesTextView?.visibility = View.GONE + } } rightBorderView?.setBackgroundResource(data.lightTaskColor) - iconViewReminder?.visibility = if (data.reminders?.size ?: 0 > 0) View.VISIBLE else View.GONE - iconViewTag?.visibility = if (data.tags?.size ?: 0 > 0) View.VISIBLE else View.GONE + if (displayMode == "standard") { + iconViewReminder?.visibility = if (data.reminders?.size ?: 0 > 0) View.VISIBLE else View.GONE + iconViewTag?.visibility = if (data.tags?.size ?: 0 > 0) View.VISIBLE else View.GONE - iconViewChallenge?.visibility = if (task?.challengeID != null) View.VISIBLE else View.GONE + iconViewChallenge?.visibility = if (task?.challengeID != null) View.VISIBLE else View.GONE - configureSpecialTaskTextView(data) + configureSpecialTaskTextView(data) + + taskIconWrapper?.visibility = if (taskIconWrapperIsVisible) View.VISIBLE else View.GONE + } else { + taskIconWrapper?.visibility = View.GONE + } - taskIconWrapper?.visibility = if (taskIconWrapperIsVisible) View.VISIBLE else View.GONE if (data.isPendingApproval) { approvalRequiredTextView?.visibility = View.VISIBLE diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/ChecklistedViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/ChecklistedViewHolder.kt index b31afd28d..36b582773 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/ChecklistedViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/ChecklistedViewHolder.kt @@ -42,7 +42,7 @@ abstract class ChecklistedViewHolder(itemView: View, scoreTaskFunc: ((Task, Task expandCheckboxTouchArea(checkboxHolder, checkbox) } - override fun bind(newTask: Task, position: Int) { + override fun bind(newTask: Task, position: Int, displayMode: String) { var completed = newTask.completed if (newTask.isPendingApproval) { completed = false @@ -66,7 +66,7 @@ abstract class ChecklistedViewHolder(itemView: View, scoreTaskFunc: ((Task, Task } else { this.rightBorderView?.setBackgroundColor(this.taskGray) } - super.bind(newTask, position) + super.bind(newTask, position, displayMode) } abstract fun shouldDisplayAsActive(newTask: Task): Boolean diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/DailyViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/DailyViewHolder.kt index 7ed396bc8..366ec5d80 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/DailyViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/DailyViewHolder.kt @@ -25,7 +25,7 @@ class DailyViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> U return isVisible } - override fun bind(newTask: Task, position: Int) { + override fun bind(newTask: Task, position: Int, displayMode: String) { this.task = newTask if (newTask.isChecklistDisplayActive) { this.checklistIndicatorWrapper.setBackgroundResource(newTask.lightTaskColor) @@ -55,7 +55,7 @@ class DailyViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> U reminderTextView.text = reminderString } - super.bind(newTask, position) + super.bind(newTask, position, displayMode) } override fun shouldDisplayAsActive(newTask: Task): Boolean { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.kt index 0b18e4923..3346c61fb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.kt @@ -34,7 +34,7 @@ class HabitViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> U btnMinus.setOnClickListener { onMinusButtonClicked() } } - override fun bind(data: Task, position: Int) { + override fun bind(data: Task, position: Int, displayMode: String) { this.task = data if (data.up == true) { this.btnPlusWrapper.setBackgroundResource(data.lightTaskColor) @@ -82,7 +82,7 @@ class HabitViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> U } else { streakTextView.visibility = View.GONE } - super.bind(data, position) + super.bind(data, position, displayMode) } private fun onPlusButtonClicked() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/RewardViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/RewardViewHolder.kt index 22a2216e1..9bc563cda 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/RewardViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/RewardViewHolder.kt @@ -63,9 +63,9 @@ class RewardViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> this.buyButton.isEnabled = !taskActionsDisabled } - fun bind(reward: Task, position: Int, canBuy: Boolean) { + fun bind(reward: Task, position: Int, canBuy: Boolean, displayMode: String) { this.task = reward - super.bind(reward, position) + super.bind(reward, position, displayMode) this.priceLabel.text = NumberAbbreviator.abbreviate(itemView.context, this.task?.value ?: 0.0) if (canBuy) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/TodoViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/TodoViewHolder.kt index fdd116f56..d7a2fe5f6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/TodoViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/TodoViewHolder.kt @@ -12,14 +12,14 @@ class TodoViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> Un private val dateFormatter: DateFormat = android.text.format.DateFormat.getDateFormat(context) - override fun bind(newTask: Task, position: Int) { + override fun bind(newTask: Task, position: Int, displayMode: String) { this.task = newTask if (newTask.completed) { checklistIndicatorWrapper.setBackgroundColor(taskGray) } else { checklistIndicatorWrapper.setBackgroundColor(newTask.lightTaskColor) } - super.bind(newTask, position) + super.bind(newTask, position, displayMode) } override fun configureSpecialTaskTextView(task: Task) { diff --git a/fastlane/README.md b/fastlane/README.md index 1a4e9073b..33ba19649 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -21,6 +21,11 @@ or alternatively using `brew cask install fastlane` fastlane android test ``` Runs all the tests +### android staff +``` +fastlane android staff +``` +Submit a new Staff Build to Google Play ### android alpha ``` fastlane android alpha