Skip to content

Commit 8b936a5

Browse files
committed
feat: show pencil button for editing space public links
1 parent 6ac162b commit 8b936a5

File tree

3 files changed

+36
-7
lines changed

3 files changed

+36
-7
lines changed

owncloudApp/src/main/java/com/owncloud/android/presentation/spaces/links/SpaceLinksAdapter.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class SpaceLinksAdapter(
3939

4040
private var spaceLinks: List<OCLink> = emptyList()
4141
private var canRemoveLinks = false
42+
private var canEditLinks = false
4243

4344
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SpaceLinksViewHolder {
4445
val inflater = LayoutInflater.from(parent.context)
@@ -78,13 +79,22 @@ class SpaceLinksAdapter(
7879
listener.onRemovePublicLink(spaceLink.id, spaceLink.displayName)
7980
}
8081
}
82+
83+
editPublicLinkButton.apply {
84+
contentDescription = holder.itemView.context.getString(R.string.content_description_edit_public_link, spaceLink.displayName)
85+
isVisible = canEditLinks
86+
setOnClickListener {
87+
listener.onEditPublicLink(spaceLink)
88+
}
89+
}
8190
}
8291
}
8392

8493
override fun getItemCount(): Int = spaceLinks.size
8594

86-
fun setSpaceLinks(spaceLinks: List<OCLink>, canRemoveLinks: Boolean) {
95+
fun setSpaceLinks(spaceLinks: List<OCLink>, canRemoveLinks: Boolean, canEditLinks: Boolean) {
8796
this.canRemoveLinks = canRemoveLinks
97+
this.canEditLinks = canEditLinks
8898
val diffCallback = SpaceLinksDiffUtil(this.spaceLinks, spaceLinks)
8999
val diffResult = DiffUtil.calculateDiff(diffCallback)
90100
this.spaceLinks = spaceLinks
@@ -98,5 +108,6 @@ class SpaceLinksAdapter(
98108
interface SpaceLinksAdapterListener {
99109
fun onCopyOrSendPublicLink(publicLinkUrl: String)
100110
fun onRemovePublicLink(publicLinkId: String, publicLinkDisplayName: String)
111+
fun onEditPublicLink(publicLink: OCLink)
101112
}
102113
}

owncloudApp/src/main/java/com/owncloud/android/presentation/spaces/members/SpaceMembersFragment.kt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
8080
private var spaceMembers: List<SpaceMember> = emptyList()
8181
private var listener: SpaceMemberFragmentListener? = null
8282
private var canRemoveMembersAndLinks = false
83-
private var canEditMembers = false
83+
private var canEditMembersAndLinks = false
8484
private var canReadMembers = false
8585
private var numberOfManagers = 1
8686

@@ -112,7 +112,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
112112
currentSpace = requireArguments().getParcelable<OCSpace>(ARG_CURRENT_SPACE) ?: return
113113
savedInstanceState?.let {
114114
canRemoveMembersAndLinks = it.getBoolean(CAN_REMOVE_MEMBERS, false)
115-
canEditMembers = it.getBoolean(CAN_EDIT_MEMBERS, false)
115+
canEditMembersAndLinks = it.getBoolean(CAN_EDIT_MEMBERS, false)
116116
canReadMembers = it.getBoolean(CAN_READ_MEMBERS, false)
117117
}
118118

@@ -158,7 +158,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
158158
override fun onSaveInstanceState(outState: Bundle) {
159159
super.onSaveInstanceState(outState)
160160
outState.putBoolean(CAN_REMOVE_MEMBERS, canRemoveMembersAndLinks)
161-
outState.putBoolean(CAN_EDIT_MEMBERS, canEditMembers)
161+
outState.putBoolean(CAN_EDIT_MEMBERS, canEditMembersAndLinks)
162162
outState.putBoolean(CAN_READ_MEMBERS, canReadMembers)
163163
}
164164

@@ -197,6 +197,10 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
197197
)
198198
}
199199

200+
override fun onEditPublicLink(publicLink: OCLink) {
201+
202+
}
203+
200204
private fun subscribeToViewModels() {
201205
observeRoles()
202206
observeSpaceMembers()
@@ -359,7 +363,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
359363
private fun checkPermissions(spacePermissions: List<String>) {
360364
val hasCreatePermission = DRIVES_CREATE_PERMISSION in spacePermissions
361365
canRemoveMembersAndLinks = DRIVES_DELETE_PERMISSION in spacePermissions
362-
canEditMembers = DRIVES_UPDATE_PERMISSION in spacePermissions
366+
canEditMembersAndLinks = DRIVES_UPDATE_PERMISSION in spacePermissions
363367
canReadMembers = DRIVES_READ_PERMISSION in spacePermissions
364368
binding.apply {
365369
addMemberButton.isVisible = hasCreatePermission
@@ -381,7 +385,7 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
381385
spaceMembers = spaceMembers,
382386
roles = roles,
383387
canRemoveMembers = canRemoveMembersAndLinks,
384-
canEditMembers = canEditMembers,
388+
canEditMembers = canEditMembersAndLinks,
385389
numberOfManagers = numberOfManagers
386390
)
387391
}
@@ -398,7 +402,8 @@ class SpaceMembersFragment : Fragment(), SpaceMembersAdapter.SpaceMembersAdapter
398402
Date(0)
399403
}
400404
},
401-
canRemoveLinks = canRemoveMembersAndLinks
405+
canRemoveLinks = canRemoveMembersAndLinks,
406+
canEditLinks = canEditMembersAndLinks
402407
)
403408
}
404409

owncloudApp/src/main/res/layout/public_link_item.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,19 @@
122122
android:visibility="gone"
123123
tools:visibility="visible" />
124124

125+
<ImageButton
126+
android:id="@+id/edit_public_link_button"
127+
android:layout_width="40dp"
128+
android:layout_height="40dp"
129+
android:layout_gravity="center_vertical"
130+
android:layout_marginEnd="@dimen/standard_half_margin"
131+
android:padding="@dimen/standard_half_padding"
132+
android:background="?android:attr/selectableItemBackground"
133+
android:focusable="true"
134+
android:src="@drawable/ic_lead_pencil_grey"
135+
android:visibility="gone"
136+
tools:visibility="visible" />
137+
125138
</LinearLayout>
126139

127140
<View

0 commit comments

Comments
 (0)