mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 11:46:32 +00:00
Add setting for task list display mode
This commit is contained in:
parent
dc803b52f8
commit
864101288b
23 changed files with 191 additions and 52 deletions
|
|
@ -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\""
|
||||
|
|
|
|||
|
|
@ -1014,5 +1014,5 @@
|
|||
<string name="read_more">Read More</string>
|
||||
<string name="purchase_amount_error">You are unable to buy that amount.</string>
|
||||
<string name="still_questions">Still have a question?</string>
|
||||
<string name="delete_checklist_entry">Delete Checklist entry</string>
|
||||
<string name="task_display">Task list display</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -33,6 +33,18 @@
|
|||
<item>@string/avatar_size_broad</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="TaskDisplayTypes">
|
||||
<item>Standard</item>
|
||||
<item>Compact</item>
|
||||
<item>Minimal</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="TaskDisplayValues">
|
||||
<item>standard</item>
|
||||
<item>compact</item>
|
||||
<item>minimal</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="Language">
|
||||
<item>English</item>
|
||||
<item>Български</item>
|
||||
|
|
|
|||
|
|
@ -112,6 +112,13 @@
|
|||
android:shouldDisableView="false"
|
||||
android:summary="@string/SP_APIToken_summary"
|
||||
android:layout="@layout/preference_child_summary"/>
|
||||
<ListPreference
|
||||
android:entries="@array/weekdays"
|
||||
android:entryValues="@array/weekdayValues"
|
||||
android:key="@string/pref_first_day_of_the_week_key"
|
||||
android:layout="@layout/preference_child_summary"
|
||||
android:summary="@string/pref_first_day_of_the_week_summary"
|
||||
android:title="@string/pref_first_day_of_the_week_title" />
|
||||
</PreferenceScreen>
|
||||
|
||||
<Preference
|
||||
|
|
@ -131,11 +138,12 @@
|
|||
<PreferenceCategory
|
||||
android:title="@string/app_settings"
|
||||
android:layout="@layout/preference_category">
|
||||
<ListPreference android:title="@string/pref_first_day_of_the_week_title"
|
||||
android:key="@string/pref_first_day_of_the_week_key"
|
||||
android:entries="@array/weekdays"
|
||||
android:entryValues="@array/weekdayValues"
|
||||
android:summary="@string/pref_first_day_of_the_week_summary"
|
||||
<ListPreference
|
||||
android:title="@string/task_display"
|
||||
android:key="task_display"
|
||||
android:entries="@array/TaskDisplayTypes"
|
||||
android:entryValues="@array/TaskDisplayValues"
|
||||
android:defaultValue="standard"
|
||||
android:layout="@layout/preference_child_summary"/>
|
||||
<ListPreference android:title="@string/Language_title"
|
||||
android:key="language"
|
||||
|
|
|
|||
|
|
@ -76,5 +76,9 @@
|
|||
<key>raiseShops</key>
|
||||
<value>false</value>
|
||||
</entry>
|
||||
<entry>
|
||||
<key>enableTaskDisplayMode</key>
|
||||
<value>true</value>
|
||||
</entry>
|
||||
</defaultsMap>
|
||||
<!-- END xml_defaults -->
|
||||
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<String, Any>()
|
||||
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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ abstract class BaseTasksRecyclerViewAdapter<VH : BindableViewHolder<Task>>(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;
|
||||
|
|
|
|||
|
|
@ -24,6 +24,14 @@ abstract class RealmBaseTasksRecyclerViewAdapter<VH : BaseTaskViewHolder>(
|
|||
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<RealmResults<Task>> by lazy {
|
||||
OrderedRealmCollectionChangeListener<RealmResults<Task>> { _, changeSet ->
|
||||
buildChangeSet(changeSet)
|
||||
|
|
@ -128,7 +136,7 @@ abstract class RealmBaseTasksRecyclerViewAdapter<VH : BaseTaskViewHolder>(
|
|||
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("")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,6 +33,15 @@ class RewardsRecyclerViewAdapter(private var customRewards: OrderedRealmCollecti
|
|||
private var purchaseCardSubject = PublishSubject.create<ShopItem>()
|
||||
val purchaseCardEvents: Flowable<ShopItem> = 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) {
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ interface TaskRecyclerViewAdapter {
|
|||
|
||||
val errorButtonEvents: Flowable<String>
|
||||
|
||||
var taskDisplayMode: String
|
||||
|
||||
fun updateData(tasks: OrderedRealmCollection<Task>?)
|
||||
|
||||
fun filter()
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -5,5 +5,5 @@ import androidx.recyclerview.widget.RecyclerView
|
|||
|
||||
abstract class BindableViewHolder<T>(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
||||
|
||||
abstract fun bind(data: T, position: Int)
|
||||
abstract fun bind(data: T, position: Int, displayMode: String)
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue