Skip to content

Commit 5da26e4

Browse files
committed
fix logic and add TODOs
Signed-off-by: alperozturk <alper_ozturk@proton.me>
1 parent b147c0f commit 5da26e4

4 files changed

Lines changed: 64 additions & 31 deletions

File tree

app/src/main/java/com/nextcloud/utils/extensions/ViewExtensions.kt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
*/
88
package com.nextcloud.utils.extensions
99

10+
import android.animation.Animator
11+
import android.animation.AnimatorListenerAdapter
1012
import android.content.Context
1113
import android.graphics.Outline
1214
import android.util.TypedValue
@@ -19,6 +21,30 @@ fun View?.setVisibleIf(condition: Boolean) {
1921
visibility = if (condition) View.VISIBLE else View.GONE
2022
}
2123

24+
fun View?.setVisibilityWithAnimation(condition: Boolean, duration: Long = 200L) {
25+
this ?: return
26+
27+
if (condition) {
28+
this.apply {
29+
alpha = 0f
30+
visibility = View.VISIBLE
31+
animate()
32+
.alpha(1f)
33+
.setDuration(duration)
34+
.setListener(null)
35+
}
36+
} else {
37+
animate()
38+
.alpha(0f)
39+
.setDuration(duration)
40+
.setListener(object : AnimatorListenerAdapter() {
41+
override fun onAnimationEnd(animation: Animator) {
42+
visibility = View.GONE
43+
}
44+
})
45+
}
46+
}
47+
2248
fun View?.makeRounded(context: Context, cornerRadius: Float) {
2349
this?.let {
2450
it.apply {

app/src/main/java/com/owncloud/android/ui/fragment/FileDetailsSharingProcessFragment.kt

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import androidx.fragment.app.Fragment
2121
import com.nextcloud.client.di.Injectable
2222
import com.nextcloud.utils.extensions.getParcelableArgument
2323
import com.nextcloud.utils.extensions.getSerializableArgument
24+
import com.nextcloud.utils.extensions.setVisibilityWithAnimation
2425
import com.nextcloud.utils.extensions.setVisibleIf
2526
import com.owncloud.android.R
2627
import com.owncloud.android.databinding.FileDetailsSharingProcessFragmentBinding
@@ -135,6 +136,7 @@ class FileDetailsSharingProcessFragment :
135136
private var isReShareShown: Boolean = true // show or hide reShare option
136137
private var isExpDateShown: Boolean = true // show or hide expiry date option
137138
private var isSecureShare: Boolean = false
139+
private var showCustomPermissions = true
138140

139141
private lateinit var capabilities: OCCapability
140142

@@ -190,20 +192,20 @@ class FileDetailsSharingProcessFragment :
190192
}
191193
implementClickEvents()
192194
setCheckboxStates()
195+
setCustomPermissionCheckboxesVisibilities()
193196
themeView()
194197
}
195198

196199
private fun themeView() {
197200
viewThemeUtils.platform.run {
198201
binding.run {
199202
colorTextView(shareProcessEditShareLink)
200-
colorTextView(shareProcessAdvancePermissionTitle)
203+
colorTextView(shareCustomPermissionsText)
201204

202205
themeRadioButton(shareProcessPermissionReadOnly)
203206
themeRadioButton(shareProcessPermissionUploadEditing)
204207
themeRadioButton(shareProcessPermissionFileDrop)
205208

206-
themeCheckbox(shareCustomCheckbox)
207209
themeCheckbox(shareReadCheckbox)
208210
themeCheckbox(shareCreateCheckbox)
209211
themeCheckbox(shareEditCheckbox)
@@ -259,7 +261,7 @@ class FileDetailsSharingProcessFragment :
259261
}
260262

261263
if (isSecureShare) {
262-
binding.shareProcessAdvancePermissionTitle.visibility = View.GONE
264+
binding.shareCustomPermissionsText.visibility = View.GONE
263265
}
264266

265267
// show or hide expiry date
@@ -472,12 +474,12 @@ class FileDetailsSharingProcessFragment :
472474
shareProcessSelectExpDate.setOnClickListener {
473475
showExpirationDateDialog()
474476
}
475-
shareCustomCheckbox.setOnCheckedChangeListener { _, isChecked ->
476-
shareReadCheckbox.isChecked = isChecked
477-
shareCreateCheckbox.isChecked = isChecked
478-
shareEditCheckbox.isChecked = isChecked
479-
shareProcessAllowResharingCheckbox.isChecked = isChecked
480-
shareDeleteCheckbox.isChecked = isChecked
477+
478+
shareCustomPermissionsText.setOnClickListener {
479+
showCustomPermissions = !showCustomPermissions
480+
val newIcon = if (showCustomPermissions) R.drawable.ic_arrow_up else R.drawable.ic_arrow_down
481+
shareCustomPermissionsText.setCompoundDrawablesWithIntrinsicBounds(0, 0, newIcon, 0)
482+
setCustomPermissionCheckboxesVisibilities()
481483
}
482484

483485
shareReadCheckbox.setOnCheckedChangeListener { _, isChecked ->
@@ -502,13 +504,12 @@ class FileDetailsSharingProcessFragment :
502504
}
503505
}
504506

507+
// TODO: check share.permission
505508
private fun setUserPermission(isChecked: Boolean, permissionFlag: Int) {
506-
share?.let {
507-
it.permissions = if (isChecked) {
508-
it.permissions or permissionFlag
509-
} else {
510-
it.permissions and permissionFlag.inv()
511-
}
509+
permission = if (isChecked) {
510+
permission or permissionFlag
511+
} else {
512+
permission and permissionFlag.inv()
512513
}
513514
}
514515

@@ -519,6 +520,18 @@ class FileDetailsSharingProcessFragment :
519520
shareEditCheckbox.isChecked = (permission and OCShare.UPDATE_PERMISSION_FLAG) != 0
520521
shareProcessAllowResharingCheckbox.isChecked = (permission and OCShare.SHARE_PERMISSION_FLAG) != 0
521522
shareDeleteCheckbox.isChecked = (permission and OCShare.DELETE_PERMISSION_FLAG) != 0
523+
524+
setCustomPermissionCheckboxesVisibilities()
525+
}
526+
}
527+
528+
private fun setCustomPermissionCheckboxesVisibilities() {
529+
binding.run {
530+
shareReadCheckbox.setVisibilityWithAnimation(showCustomPermissions)
531+
shareCreateCheckbox.setVisibilityWithAnimation(showCustomPermissions)
532+
shareEditCheckbox.setVisibilityWithAnimation(showCustomPermissions)
533+
shareProcessAllowResharingCheckbox.setVisibilityWithAnimation(showCustomPermissions)
534+
shareDeleteCheckbox.setVisibilityWithAnimation(showCustomPermissions)
522535
}
523536
}
524537

@@ -642,6 +655,7 @@ class FileDetailsSharingProcessFragment :
642655
/**
643656
* get the permissions on the basis of selection
644657
*/
658+
// TODO: Check logic it should match with new checkboxes action
645659
private fun getSelectedPermission() = when {
646660
binding.shareProcessAllowResharingCheckbox.isChecked -> getReSharePermission()
647661
binding.shareProcessPermissionReadOnly.isChecked -> OCShare.READ_PERMISSION_FLAG
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp">
2+
3+
<path android:fillColor="@android:color/white" android:pathData="M20,12l-1.41,-1.41L13,16.17V4h-2v12.17l-5.58,-5.59L4,12l8,8 8,-8z"/>
4+
5+
</vector>

app/src/main/res/layout/file_details_sharing_process_fragment.xml

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -68,28 +68,20 @@
6868
</RadioGroup>
6969

7070
<androidx.appcompat.widget.AppCompatTextView
71-
android:id="@+id/share_process_advance_permission_title"
71+
android:id="@+id/share_custom_permissions_text"
7272
android:layout_width="match_parent"
7373
android:layout_height="wrap_content"
7474
android:layout_marginTop="@dimen/standard_margin"
75-
android:text="@string/advanced_settings"
75+
android:text="@string/share_custom_permission"
76+
android:drawableEnd="@drawable/ic_arrow_up"
7677
android:textColor="@color/primary"
78+
android:drawableTint="@color/primary"
7779
android:textStyle="bold"/>
7880

79-
<com.google.android.material.checkbox.MaterialCheckBox
80-
android:id="@+id/share_custom_checkbox"
81-
android:layout_width="match_parent"
82-
android:layout_height="wrap_content"
83-
android:minHeight="@dimen/minimum_size_for_touchable_area"
84-
android:text="@string/share_custom_permission"
85-
android:visibility="visible"
86-
tools:visibility="visible" />
87-
8881
<com.google.android.material.checkbox.MaterialCheckBox
8982
android:id="@+id/share_read_checkbox"
9083
android:layout_width="match_parent"
9184
android:layout_height="wrap_content"
92-
android:layout_marginStart="@dimen/standard_margin"
9385
android:minHeight="@dimen/minimum_size_for_touchable_area"
9486
android:text="@string/share_read_permission"
9587
android:visibility="gone"
@@ -99,7 +91,6 @@
9991
android:id="@+id/share_create_checkbox"
10092
android:layout_width="match_parent"
10193
android:layout_height="wrap_content"
102-
android:layout_marginStart="@dimen/standard_margin"
10394
android:minHeight="@dimen/minimum_size_for_touchable_area"
10495
android:text="@string/share_create_permission"
10596
android:visibility="gone"
@@ -109,7 +100,6 @@
109100
android:id="@+id/share_edit_checkbox"
110101
android:layout_width="match_parent"
111102
android:layout_height="wrap_content"
112-
android:layout_marginStart="@dimen/standard_margin"
113103
android:minHeight="@dimen/minimum_size_for_touchable_area"
114104
android:text="@string/share_edit_permission"
115105
android:visibility="gone"
@@ -119,7 +109,6 @@
119109
android:id="@+id/share_process_allow_resharing_checkbox"
120110
android:layout_width="match_parent"
121111
android:layout_height="wrap_content"
122-
android:layout_marginStart="@dimen/standard_margin"
123112
android:minHeight="@dimen/minimum_size_for_touchable_area"
124113
android:text="@string/share_re_share_permission"
125114
android:visibility="gone"
@@ -129,7 +118,6 @@
129118
android:id="@+id/share_delete_checkbox"
130119
android:layout_width="match_parent"
131120
android:layout_height="wrap_content"
132-
android:layout_marginStart="@dimen/standard_margin"
133121
android:minHeight="@dimen/minimum_size_for_touchable_area"
134122
android:text="@string/share_delete_permission"
135123
android:visibility="gone"

0 commit comments

Comments
 (0)