diff --git a/app/src/main/java/com/infomaniak/drive/ui/menu/settings/SyncSettingsActivity.kt b/app/src/main/java/com/infomaniak/drive/ui/menu/settings/SyncSettingsActivity.kt index b0555ae869..580ea35960 100644 --- a/app/src/main/java/com/infomaniak/drive/ui/menu/settings/SyncSettingsActivity.kt +++ b/app/src/main/java/com/infomaniak/drive/ui/menu/settings/SyncSettingsActivity.kt @@ -108,6 +108,77 @@ class SyncSettingsActivity : BaseActivity() { saveOldPictures.value = SavePicturesDate.SINCE_NOW } + observeAllUsers() + observeCustomDate() + observeSelectedDrive() + + selectPath.setOnClickListener { + Intent(this@SyncSettingsActivity, SelectFolderActivity::class.java).apply { + putExtras( + SelectFolderActivityArgs( + userId = selectDriveViewModel.selectedUserId.value!!, + driveId = selectDriveViewModel.selectedDrive.value?.id!!, + folderId = syncSettingsViewModel.syncFolder.value ?: -1, + disabledFolderId = Utils.ROOT_ID, + ).toBundle() + ) + selectFolderResultLauncher.launch(this) + } + } + + observeSyncFolder() + observeSaveOldPictures(oldSaveOldPicturesValue) + + syncDatePicker.setOnClickListener { showSyncDatePicker() } + + observeSyncIntervalType(oldIntervalTypeValue) + + syncVideoSwitch.isChecked = oldSyncVideoValue + createDatedSubFoldersSwitch.isChecked = oldCreateDatedSubFoldersValue + deletePicturesAfterSyncSwitch.isChecked = oldDeleteAfterSyncValue + + activateSync.setOnClickListener { activateSyncSwitch.isChecked = !activateSyncSwitch.isChecked } + activateSyncSwitch.setOnCheckedChangeListener { _, isChecked -> + saveSettingVisibility(isChecked) + if (AccountUtils.isEnableAppSync() == isChecked) editNumber-- else editNumber++ + if (isChecked) permission.checkSyncPermissions() + changeSaveButtonStatus() + } + + mediaFolders.setOnClickListener { + SelectMediaFoldersDialog().show(supportFragmentManager, "SyncSettingsSelectMediaFoldersDialog") + } + + syncVideoSwitch.setOnCheckedChangeListener { _, isChecked -> + if (oldSyncVideoValue == isChecked) editNumber-- else editNumber++ + changeSaveButtonStatus() + } + + createDatedSubFoldersSwitch.setOnCheckedChangeListener { _, isChecked -> + if (oldCreateDatedSubFoldersValue == isChecked) editNumber-- else editNumber++ + changeSaveButtonStatus() + } + + deletePicturesAfterSyncSwitch.setOnCheckedChangeListener { _, isChecked -> + if (oldDeleteAfterSyncValue == isChecked) editNumber-- else editNumber++ + changeSaveButtonStatus() + } + + syncDate.setOnClickListener { + SelectSaveDateBottomSheetDialog().show(supportFragmentManager, "SyncSettingsSelectSaveDateBottomSheetDialog") + } + + syncPeriodicity.setOnClickListener { + SelectIntervalTypeBottomSheetDialog().show(supportFragmentManager, "SyncSettingsSelectIntervalTypeBottomSheetDialog") + } + + saveButton.initProgress(this@SyncSettingsActivity) + saveButton.setOnClickListener { + if (permission.checkSyncPermissions()) saveSettings() + } + } + + private fun observeAllUsers() { AccountUtils.getAllUsers().observe(this@SyncSettingsActivity) { users -> if (users.size > 1) { activeSelectDrive() @@ -121,14 +192,18 @@ class SyncSettingsActivity : BaseActivity() { } } } + } + private fun observeCustomDate() = with(binding) { syncSettingsViewModel.customDate.observe(this@SyncSettingsActivity) { date -> syncDatePicker.apply { isGone = date == null text = date?.format(FORMAT_DATE_CLEAR_MONTH) ?: "" } } + } + private fun observeSelectedDrive() = with(binding) { selectDriveViewModel.selectedDrive.observe(this@SyncSettingsActivity) { it?.let { driveIcon.imageTintList = ColorStateList.valueOf(Color.parseColor(it.preferences.color)) @@ -136,7 +211,8 @@ class SyncSettingsActivity : BaseActivity() { selectDivider.isVisible = true selectPath.isVisible = true } ?: run { - driveIcon.imageTintList = ColorStateList.valueOf(ContextCompat.getColor(this@SyncSettingsActivity, R.color.iconColor)) + driveIcon.imageTintList = + ColorStateList.valueOf(ContextCompat.getColor(this@SyncSettingsActivity, R.color.iconColor)) driveName.setText(R.string.selectDriveTitle) selectDivider.isGone = true selectPath.isGone = true @@ -149,21 +225,9 @@ class SyncSettingsActivity : BaseActivity() { } changeSaveButtonStatus() } + } - selectPath.setOnClickListener { - Intent(this@SyncSettingsActivity, SelectFolderActivity::class.java).apply { - putExtras( - SelectFolderActivityArgs( - userId = selectDriveViewModel.selectedUserId.value!!, - driveId = selectDriveViewModel.selectedDrive.value?.id!!, - folderId = syncSettingsViewModel.syncFolder.value ?: -1, - disabledFolderId = Utils.ROOT_ID, - ).toBundle() - ) - selectFolderResultLauncher.launch(this) - } - } - + private fun observeSyncFolder() = with(binding) { syncSettingsViewModel.syncFolder.observe(this@SyncSettingsActivity) { syncFolderId -> val selectedUserId = selectDriveViewModel.selectedUserId.value @@ -178,7 +242,9 @@ class SyncSettingsActivity : BaseActivity() { } mediaFoldersSettingsVisibility(syncFolderId != null) } + } + private fun observeSaveOldPictures(oldSaveOldPicturesValue: SavePicturesDate) = with(binding) { syncSettingsViewModel.saveOldPictures.observe(this@SyncSettingsActivity) { if (it != oldSaveOldPicturesValue) editNumber++ changeSaveButtonStatus() @@ -190,58 +256,14 @@ class SyncSettingsActivity : BaseActivity() { syncSettingsViewModel.customDate.value = null } } + } - syncDatePicker.setOnClickListener { showSyncDatePicker() } - + private fun observeSyncIntervalType(oldIntervalTypeValue: IntervalType) = with(binding) { syncSettingsViewModel.syncIntervalType.observe(this@SyncSettingsActivity) { if (syncSettingsViewModel.syncIntervalType.value != oldIntervalTypeValue) editNumber++ changeSaveButtonStatus() syncPeriodicityValue.text = getString(it.title).lowercase() } - - syncVideoSwitch.isChecked = oldSyncVideoValue - createDatedSubFoldersSwitch.isChecked = oldCreateDatedSubFoldersValue - deletePicturesAfterSyncSwitch.isChecked = oldDeleteAfterSyncValue - - activateSync.setOnClickListener { activateSyncSwitch.isChecked = !activateSyncSwitch.isChecked } - activateSyncSwitch.setOnCheckedChangeListener { _, isChecked -> - saveSettingVisibility(isChecked) - if (AccountUtils.isEnableAppSync() == isChecked) editNumber-- else editNumber++ - if (isChecked) permission.checkSyncPermissions() - changeSaveButtonStatus() - } - - mediaFolders.setOnClickListener { - SelectMediaFoldersDialog().show(supportFragmentManager, "SyncSettingsSelectMediaFoldersDialog") - } - - syncVideoSwitch.setOnCheckedChangeListener { _, isChecked -> - if (oldSyncVideoValue == isChecked) editNumber-- else editNumber++ - changeSaveButtonStatus() - } - - createDatedSubFoldersSwitch.setOnCheckedChangeListener { _, isChecked -> - if (oldCreateDatedSubFoldersValue == isChecked) editNumber-- else editNumber++ - changeSaveButtonStatus() - } - - deletePicturesAfterSyncSwitch.setOnCheckedChangeListener { _, isChecked -> - if (oldDeleteAfterSyncValue == isChecked) editNumber-- else editNumber++ - changeSaveButtonStatus() - } - - syncDate.setOnClickListener { - SelectSaveDateBottomSheetDialog().show(supportFragmentManager, "SyncSettingsSelectSaveDateBottomSheetDialog") - } - - syncPeriodicity.setOnClickListener { - SelectIntervalTypeBottomSheetDialog().show(supportFragmentManager, "SyncSettingsSelectIntervalTypeBottomSheetDialog") - } - - saveButton.initProgress(this@SyncSettingsActivity) - saveButton.setOnClickListener { - if (permission.checkSyncPermissions()) saveSettings() - } } private fun setOnBackPressed() {