Skip to content

Commit 780102b

Browse files
committed
add button to hide comment suggestions to comment dialog
1 parent ceb4105 commit 780102b

12 files changed

Lines changed: 80 additions & 36 deletions

File tree

core/src/main/java/com/example/util/simpletimetracker/core/interactor/RecordCommentSearchViewDataInteractor.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,7 @@ class RecordCommentSearchViewDataInteractor @Inject constructor(
4141
}
4242
}
4343

44-
suspend fun getFavouriteData(
45-
46-
): List<ViewHolderType> {
44+
suspend fun getFavouriteData(): List<ViewHolderType> {
4745
return favouriteCommentInteractor.getAll()
4846
.map { RecordCommentViewData.Favourite(it.comment) }
4947
.takeUnless { it.isEmpty() }

data_local/src/main/java/com/example/util/simpletimetracker/data_local/backup/BackupPrefsRepo.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import com.example.util.simpletimetracker.data_local.prefs.PrefsRepoImpl.Compani
3737
import com.example.util.simpletimetracker.data_local.prefs.PrefsRepoImpl.Companion.KEY_IS_ACTIVITY_FILTERS_COLLAPSED
3838
import com.example.util.simpletimetracker.data_local.prefs.PrefsRepoImpl.Companion.KEY_IS_ARCHIVE_SEARCH_ENABLED
3939
import com.example.util.simpletimetracker.data_local.prefs.PrefsRepoImpl.Companion.KEY_IS_CATEGORIES_SEARCH_ENABLED
40+
import com.example.util.simpletimetracker.data_local.prefs.PrefsRepoImpl.Companion.KEY_IS_COMMENT_SELECTION_SUGGESTIONS_ENABLED
4041
import com.example.util.simpletimetracker.data_local.prefs.PrefsRepoImpl.Companion.KEY_IS_NAV_BAR_AT_THE_BOTTOM
4142
import com.example.util.simpletimetracker.data_local.prefs.PrefsRepoImpl.Companion.KEY_KEEP_SCREEN_ON
4243
import com.example.util.simpletimetracker.data_local.prefs.PrefsRepoImpl.Companion.KEY_KEEP_STATISTICS_RANGE
@@ -222,6 +223,7 @@ class BackupPrefsRepo @Inject constructor(
222223
PrefsProcessor(KEY_IS_NAV_BAR_AT_THE_BOTTOM, ::isNavBarAtTheBottom),
223224
PrefsProcessor(KEY_IS_CATEGORIES_SEARCH_ENABLED, ::isCategoriesSearchEnabled),
224225
PrefsProcessor(KEY_IS_ARCHIVE_SEARCH_ENABLED, ::isArchiveSearchEnabled),
226+
PrefsProcessor(KEY_IS_COMMENT_SELECTION_SUGGESTIONS_ENABLED, ::isCommentSelectionSuggestionsEnabled),
225227
)
226228
}
227229

data_local/src/main/java/com/example/util/simpletimetracker/data_local/prefs/PrefsRepoImpl.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,10 @@ class PrefsRepoImpl @Inject constructor(
396396
KEY_IS_ARCHIVE_SEARCH_ENABLED, false,
397397
)
398398

399+
override var isCommentSelectionSuggestionsEnabled: Boolean by prefs.delegate(
400+
KEY_IS_COMMENT_SELECTION_SUGGESTIONS_ENABLED, false,
401+
)
402+
399403
override fun setWidget(widgetId: Int, recordType: Long) {
400404
val key = KEY_WIDGET + widgetId
401405
logPrefsDataAccess("set $key")
@@ -659,6 +663,7 @@ class PrefsRepoImpl @Inject constructor(
659663
const val KEY_IS_NAV_BAR_AT_THE_BOTTOM = "isNavBarAtTheBottom"
660664
const val KEY_IS_CATEGORIES_SEARCH_ENABLED = "isCategoriesSearchEnabled"
661665
const val KEY_IS_ARCHIVE_SEARCH_ENABLED = "isArchiveSearchEnabled"
666+
const val KEY_IS_COMMENT_SELECTION_SUGGESTIONS_ENABLED = "isCommentSelectionSuggestionsEnabled"
662667
const val KEY_CARD_ORDER_MANUAL = "cardOrderManual"
663668
const val KEY_CATEGORY_ORDER_MANUAL = "categoryOrderManual"
664669
const val KEY_TAG_ORDER_MANUAL = "tagOrderManual"

domain/src/main/java/com/example/util/simpletimetracker/domain/prefs/interactor/PrefsInteractor.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -883,6 +883,14 @@ class PrefsInteractor @Inject constructor(
883883
prefsRepo.isArchiveSearchEnabled = value
884884
}
885885

886+
suspend fun getIsCommentSelectionSuggestionsEnabled(): Boolean = withContext(Dispatchers.IO) {
887+
prefsRepo.isCommentSelectionSuggestionsEnabled
888+
}
889+
890+
suspend fun setIsCommentSelectionSuggestionsEnabled(value: Boolean) = withContext(Dispatchers.IO) {
891+
prefsRepo.isCommentSelectionSuggestionsEnabled = value
892+
}
893+
886894
suspend fun clear() = withContext(Dispatchers.IO) {
887895
prefsRepo.clear()
888896
}

domain/src/main/java/com/example/util/simpletimetracker/domain/prefs/repo/PrefsRepo.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,8 @@ interface PrefsRepo {
172172

173173
var isArchiveSearchEnabled: Boolean
174174

175+
var isCommentSelectionSuggestionsEnabled: Boolean
176+
175177
fun setWidget(widgetId: Int, recordType: Long)
176178

177179
fun getWidget(widgetId: Int): Long
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.example.util.simpletimetracker.feature_base_adapter.category
2+
3+
import androidx.annotation.ColorInt
4+
import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType
5+
import com.example.util.simpletimetracker.feature_base_adapter.createRecyclerBindingAdapterDelegate
6+
import com.example.util.simpletimetracker.feature_views.extension.setOnClickWith
7+
import com.example.util.simpletimetracker.feature_base_adapter.category.CategoryShowSuggestionsViewData as ViewData
8+
import com.example.util.simpletimetracker.feature_base_adapter.databinding.ItemCategoryLayoutBinding as Binding
9+
10+
fun createCategoryShowSuggestionsAdapterDelegate(
11+
onItemClick: ((ViewData) -> Unit),
12+
) = createRecyclerBindingAdapterDelegate<ViewData, Binding>(
13+
Binding::inflate,
14+
) { binding, item, _ ->
15+
16+
with(binding.viewCategoryItem) {
17+
item as ViewData
18+
19+
itemColor = item.color
20+
itemName = item.name
21+
itemIconVisible = false
22+
setOnClickWith(item, onItemClick)
23+
}
24+
}
25+
26+
class CategoryShowSuggestionsViewData(
27+
val name: String,
28+
@ColorInt val color: Int,
29+
) : ViewHolderType {
30+
31+
// Only one item on screen
32+
override fun getUniqueId(): Long = 1L
33+
34+
override fun isValidType(other: ViewHolderType): Boolean = other is ViewData
35+
}

features/feature_base_adapter/src/main/java/com/example/util/simpletimetracker/feature_base_adapter/commentField/CommentFieldAdapterDelegate.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ fun createCommentFieldAdapterDelegate(
2121
item.text != etCommentItemField.text.toString()
2222
) {
2323
etCommentItemField.setText(item.text)
24+
etCommentItemField.setSelection(item.text.length)
2425
}
2526
inputCommentField.setMargins(
2627
top = item.marginTopDp,

features/feature_dialogs/src/main/java/com/example/util/simpletimetracker/feature_dialogs/recordTagSelection/RecordTagSelectionDialogFragment.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import android.view.ViewGroup
77
import androidx.fragment.app.commit
88
import com.example.util.simpletimetracker.core.base.BaseBottomSheetFragment
99
import com.example.util.simpletimetracker.core.dialog.OnTagSelectedListener
10-
import com.example.util.simpletimetracker.core.extension.blockContentScroll
1110
import com.example.util.simpletimetracker.core.extension.setSkipCollapsed
1211
import com.example.util.simpletimetracker.core.utils.fragmentArgumentDelegate
1312
import com.example.util.simpletimetracker.feature_dialogs.R

features/feature_tag_selection/src/main/java/com/example/util/simpletimetracker/feature_tag_selection/interactor/RecordTagSelectionViewDataInteractor.kt

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.example.util.simpletimetracker.core.interactor.RecordTagViewDataInter
55
import com.example.util.simpletimetracker.core.repo.ResourceRepo
66
import com.example.util.simpletimetracker.domain.prefs.interactor.PrefsInteractor
77
import com.example.util.simpletimetracker.feature_base_adapter.ViewHolderType
8+
import com.example.util.simpletimetracker.feature_base_adapter.category.CategoryShowSuggestionsViewData
89
import com.example.util.simpletimetracker.feature_base_adapter.commentField.CommentFieldViewData
910
import com.example.util.simpletimetracker.feature_base_adapter.emptySpace.EmptySpaceViewData
1011
import com.example.util.simpletimetracker.feature_tag_selection.R
@@ -27,7 +28,9 @@ class RecordTagSelectionViewDataInteractor @Inject constructor(
2728
fromCommentChange: Boolean,
2829
): List<ViewHolderType> {
2930
val typeId = extra.typeId
30-
val closeAfterOneTagSelected: Boolean = prefsInteractor.getRecordTagSelectionCloseAfterOne()
31+
val closeAfterOneTagSelected = prefsInteractor.getRecordTagSelectionCloseAfterOne()
32+
val showSuggestions = prefsInteractor.getIsCommentSelectionSuggestionsEnabled()
33+
val isDarkTheme = prefsInteractor.getDarkMode()
3134
val shouldShowCommentSelection = RecordTagSelectionParams.Field.Comment in extra.fields
3235
val shouldShowTagSelection = RecordTagSelectionParams.Field.Tags in extra.fields
3336

@@ -45,9 +48,20 @@ class RecordTagSelectionViewDataInteractor @Inject constructor(
4548
marginHorizontal = resourceRepo.getDimenInDp(R.dimen.edit_screen_margin_horizontal),
4649
)
4750

48-
result += recordCommentSearchViewDataInteractor.getSearchData(comment)
49-
result += recordCommentSearchViewDataInteractor.getFavouriteData()
50-
result += recordCommentSearchViewDataInteractor.getLastCommentsData(typeId)
51+
result += CategoryShowSuggestionsViewData(
52+
name = resourceRepo.getString(R.string.change_record_last_comments_hint),
53+
color = if (showSuggestions) {
54+
resourceRepo.getThemedAttr(R.attr.appActiveColor, isDarkTheme)
55+
} else {
56+
resourceRepo.getThemedAttr(R.attr.appInactiveColor, isDarkTheme)
57+
},
58+
)
59+
60+
if (showSuggestions) {
61+
result += recordCommentSearchViewDataInteractor.getSearchData(comment)
62+
result += recordCommentSearchViewDataInteractor.getFavouriteData()
63+
result += recordCommentSearchViewDataInteractor.getLastCommentsData(typeId)
64+
}
5165
}
5266

5367
if (shouldShowTagSelection) {

features/feature_tag_selection/src/main/java/com/example/util/simpletimetracker/feature_tag_selection/view/RecordTagSelectionFragment.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import android.content.Context
44
import android.os.Bundle
55
import android.view.LayoutInflater
66
import android.view.ViewGroup
7-
import androidx.core.view.isVisible
8-
import androidx.core.widget.doAfterTextChanged
97
import androidx.fragment.app.viewModels
108
import com.example.util.simpletimetracker.core.base.BaseFragment
119
import com.example.util.simpletimetracker.core.dialog.OnTagSelectedListener
@@ -15,6 +13,7 @@ import com.example.util.simpletimetracker.core.utils.fragmentArgumentDelegate
1513
import com.example.util.simpletimetracker.feature_base_adapter.BaseRecyclerAdapter
1614
import com.example.util.simpletimetracker.feature_base_adapter.category.createCategoryAdapterDelegate
1715
import com.example.util.simpletimetracker.feature_base_adapter.category.createCategoryShowAllAdapterDelegate
16+
import com.example.util.simpletimetracker.feature_base_adapter.category.createCategoryShowSuggestionsAdapterDelegate
1817
import com.example.util.simpletimetracker.feature_base_adapter.commentField.createCommentFieldAdapterDelegate
1918
import com.example.util.simpletimetracker.feature_base_adapter.divider.createDividerAdapterDelegate
2019
import com.example.util.simpletimetracker.feature_base_adapter.empty.createEmptyAdapterDelegate
@@ -24,7 +23,6 @@ import com.example.util.simpletimetracker.feature_base_adapter.info.createInfoAd
2423
import com.example.util.simpletimetracker.feature_base_adapter.loader.createLoaderAdapterDelegate
2524
import com.example.util.simpletimetracker.feature_base_adapter.recordComment.createRecordCommentAdapterDelegate
2625
import com.example.util.simpletimetracker.feature_tag_selection.adapter.createRecordTagSelectionTextAdapterDelegate
27-
import com.example.util.simpletimetracker.feature_tag_selection.viewData.RecordTagSelectionViewState
2826
import com.example.util.simpletimetracker.feature_tag_selection.viewModel.RecordTagSelectionViewModel
2927
import com.example.util.simpletimetracker.feature_views.extension.setOnClick
3028
import com.example.util.simpletimetracker.feature_views.extension.visible
@@ -52,6 +50,7 @@ class RecordTagSelectionFragment : BaseFragment<Binding>() {
5250
createLoaderAdapterDelegate(),
5351
createCategoryAdapterDelegate(viewModel::onCategoryClick),
5452
createCategoryShowAllAdapterDelegate { viewModel.onShowAllTagsClick() },
53+
createCategoryShowSuggestionsAdapterDelegate { viewModel.onShowSuggestionsClick() },
5554
createDividerAdapterDelegate(),
5655
createInfoAdapterDelegate(),
5756
createHintAdapterDelegate(),

0 commit comments

Comments
 (0)