mirror of
https://github.com/vector-im/riotX-android
synced 2025-10-05 15:52:47 +02:00
Merge remote-tracking branch 'origin/feature/nfe/edit_layout_config' into community-testing-space-switching-16_08
This commit is contained in:
@@ -25,29 +25,17 @@ class HomeLayoutPreferences @Inject constructor(
|
||||
@DefaultPreferences private val preferences: SharedPreferences
|
||||
) {
|
||||
|
||||
companion object {
|
||||
const val SETTINGS_PREFERENCES_HOME_RECENTS = "SETTINGS_PREFERENCES_HOME_RECENTS"
|
||||
const val SETTINGS_PREFERENCES_HOME_FILTERS = "SETTINGS_PREFERENCES_HOME_FILTERS"
|
||||
const val SETTINGS_PREFERENCES_USE_AZ_ORDER = "SETTINGS_PREFERENCES_USE_AZ_ORDER"
|
||||
}
|
||||
|
||||
// We need to keep references, because it's kept as a Weak reference and so will be gathered by GC
|
||||
private var filtersListener: SharedPreferences.OnSharedPreferenceChangeListener? = null
|
||||
private var recentsListener: SharedPreferences.OnSharedPreferenceChangeListener? = null
|
||||
private var orderListener: SharedPreferences.OnSharedPreferenceChangeListener? = null
|
||||
|
||||
fun areRecentsEnabled(): Boolean {
|
||||
return preferences.getBoolean(SETTINGS_PREFERENCES_HOME_RECENTS, false)
|
||||
}
|
||||
fun areRecentsEnabled() = preferences.getBoolean(SETTINGS_PREFERENCES_HOME_RECENTS, false)
|
||||
fun areFiltersEnabled() = preferences.getBoolean(SETTINGS_PREFERENCES_HOME_FILTERS, false)
|
||||
fun isAZOrderingEnabled() = preferences.getBoolean(SETTINGS_PREFERENCES_USE_AZ_ORDER, false)
|
||||
|
||||
fun setRecentsEnabled(isEnabled: Boolean) {
|
||||
preferences.edit {
|
||||
putBoolean(SETTINGS_PREFERENCES_HOME_RECENTS, isEnabled)
|
||||
}
|
||||
}
|
||||
|
||||
fun areFiltersEnabled(): Boolean {
|
||||
return preferences.getBoolean(SETTINGS_PREFERENCES_HOME_FILTERS, false)
|
||||
preferences.edit { putBoolean(SETTINGS_PREFERENCES_HOME_RECENTS, isEnabled) }
|
||||
}
|
||||
|
||||
fun setFiltersEnabled(isEnabled: Boolean) {
|
||||
@@ -56,10 +44,6 @@ class HomeLayoutPreferences @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
fun isAZOrderingEnabled(): Boolean {
|
||||
return preferences.getBoolean(SETTINGS_PREFERENCES_USE_AZ_ORDER, false)
|
||||
}
|
||||
|
||||
fun setAZOrderingEnabled(isEnabled: Boolean) {
|
||||
preferences.edit {
|
||||
putBoolean(SETTINGS_PREFERENCES_USE_AZ_ORDER, isEnabled)
|
||||
@@ -104,4 +88,10 @@ class HomeLayoutPreferences @Inject constructor(
|
||||
preferences.unregisterOnSharedPreferenceChangeListener(recentsListener)
|
||||
preferences.unregisterOnSharedPreferenceChangeListener(orderListener)
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val SETTINGS_PREFERENCES_HOME_RECENTS = "SETTINGS_PREFERENCES_HOME_RECENTS"
|
||||
const val SETTINGS_PREFERENCES_HOME_FILTERS = "SETTINGS_PREFERENCES_HOME_FILTERS"
|
||||
const val SETTINGS_PREFERENCES_USE_AZ_ORDER = "SETTINGS_PREFERENCES_USE_AZ_ORDER"
|
||||
}
|
||||
}
|
||||
|
@@ -170,7 +170,7 @@ class HomeRoomListViewModel @AssistedInject constructor(
|
||||
.onEach { selectedSpaceOption ->
|
||||
val selectedSpace = selectedSpaceOption.orNull()
|
||||
liveResults.queryParams = liveResults.queryParams.copy(
|
||||
spaceFilter = selectedSpace?.roomId.toActiveSpaceOrNoFilter()
|
||||
spaceFilter = selectedSpace?.roomId.toActiveSpaceOrNoFilter()
|
||||
)
|
||||
}.launchIn(viewModelScope)
|
||||
|
||||
@@ -202,32 +202,29 @@ class HomeRoomListViewModel @AssistedInject constructor(
|
||||
.map { it.isNotEmpty() }
|
||||
.distinctUntilChanged()
|
||||
|
||||
favouritesFlow
|
||||
.combine(dmsFLow) { hasFavourite, hasDm ->
|
||||
hasFavourite to hasDm
|
||||
}.combine(filtersPreferencesFlow) { (hasFavourite, hasDm), areFiltersEnabled ->
|
||||
Triple(hasFavourite, hasDm, areFiltersEnabled)
|
||||
}.onEach { (hasFavourite, hasDm, areFiltersEnabled) ->
|
||||
if (areFiltersEnabled) {
|
||||
val filtersData = mutableListOf(
|
||||
HomeRoomFilter.ALL,
|
||||
HomeRoomFilter.UNREADS
|
||||
)
|
||||
if (hasFavourite) {
|
||||
filtersData.add(
|
||||
HomeRoomFilter.FAVOURITES
|
||||
)
|
||||
}
|
||||
if (hasDm) {
|
||||
filtersData.add(
|
||||
HomeRoomFilter.PEOPlE
|
||||
)
|
||||
}
|
||||
flow.emit(Optional.from(filtersData))
|
||||
} else {
|
||||
flow.emit(Optional.empty())
|
||||
}
|
||||
}.launchIn(viewModelScope)
|
||||
combine(favouritesFlow, dmsFLow, filtersPreferencesFlow) { hasFavourite, hasDm, areFiltersEnabled ->
|
||||
Triple(hasFavourite, hasDm, areFiltersEnabled)
|
||||
}.onEach { (hasFavourite, hasDm, areFiltersEnabled) ->
|
||||
if (areFiltersEnabled) {
|
||||
val filtersData = mutableListOf(
|
||||
HomeRoomFilter.ALL,
|
||||
HomeRoomFilter.UNREADS
|
||||
)
|
||||
if (hasFavourite) {
|
||||
filtersData.add(
|
||||
HomeRoomFilter.FAVOURITES
|
||||
)
|
||||
}
|
||||
if (hasDm) {
|
||||
filtersData.add(
|
||||
HomeRoomFilter.PEOPlE
|
||||
)
|
||||
}
|
||||
flow.emit(Optional.from(filtersData))
|
||||
} else {
|
||||
flow.emit(Optional.empty())
|
||||
}
|
||||
}.launchIn(viewModelScope)
|
||||
|
||||
return flow
|
||||
}
|
||||
|
@@ -26,7 +26,7 @@ import org.matrix.android.sdk.api.util.Optional
|
||||
sealed class HomeRoomSection {
|
||||
data class RoomSummaryData(
|
||||
val list: LiveData<PagedList<RoomSummary>>,
|
||||
val filtersData: SharedFlow<Optional<List<HomeRoomFilter>>>
|
||||
val filtersData: SharedFlow<Optional<List<HomeRoomFilter>>>,
|
||||
) : HomeRoomSection()
|
||||
|
||||
data class RecentRoomsData(
|
||||
|
@@ -27,7 +27,7 @@ import org.matrix.android.sdk.api.session.room.members.ChangeMembershipState
|
||||
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
||||
|
||||
class HomeFilteredRoomsController(
|
||||
private val roomSummaryItemFactory: RoomSummaryItemFactory
|
||||
private val roomSummaryItemFactory: RoomSummaryItemFactory,
|
||||
) : PagedListEpoxyController<RoomSummary>(
|
||||
// Important it must match the PageList builder notify Looper
|
||||
modelBuildingHandler = createUIHandler()
|
||||
|
@@ -48,19 +48,10 @@ class HomeLayoutSettingBottomDialogFragment : VectorBaseBottomSheetDialogFragmen
|
||||
views.homeLayoutSettingsSortActivity.isChecked = true
|
||||
}
|
||||
|
||||
views.homeLayoutSettingsRecents.setOnCheckedChangeListener { _, isChecked ->
|
||||
preferences.setRecentsEnabled(isChecked)
|
||||
}
|
||||
|
||||
views.homeLayoutSettingsFilters.setOnCheckedChangeListener { _, isChecked ->
|
||||
preferences.setFiltersEnabled(isChecked)
|
||||
}
|
||||
|
||||
views.homeLayoutSettingsSortGroup.setOnCheckedChangeListener { _, checkedId ->
|
||||
preferences.setAZOrderingEnabled(checkedId == R.id.home_layout_settings_sort_name)
|
||||
}
|
||||
|
||||
views.homeLayoutSettingsDone.setOnClickListener {
|
||||
preferences.setRecentsEnabled(views.homeLayoutSettingsRecents.isChecked)
|
||||
preferences.setFiltersEnabled(views.homeLayoutSettingsFilters.isChecked)
|
||||
preferences.setAZOrderingEnabled(views.homeLayoutSettingsSortGroup.checkedRadioButtonId == R.id.home_layout_settings_sort_name)
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
@@ -41,6 +41,6 @@
|
||||
android:icon="@drawable/ic_home_search"
|
||||
android:title="@string/home_filter_placeholder_home"
|
||||
app:iconTint="?vctr_content_secondary"
|
||||
app:showAsAction="always" />
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
</menu>
|
||||
|
Reference in New Issue
Block a user