Skip to content

Commit c1041e3

Browse files
committed
refactor: move item header from fragment to members activity
1 parent 27030d9 commit c1041e3

File tree

4 files changed

+104
-108
lines changed

4 files changed

+104
-108
lines changed

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

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*
44
* @author Jorge Aguado Recio
55
*
6-
* Copyright (C) 2025 ownCloud GmbH.
6+
* Copyright (C) 2026 ownCloud GmbH.
77
*
88
* This program is free software: you can redistribute it and/or modify
99
* it under the terms of the GNU General Public License version 2,
@@ -25,21 +25,42 @@ import android.view.Menu
2525
import android.view.MenuItem
2626
import androidx.fragment.app.transaction
2727
import com.owncloud.android.R
28+
import com.owncloud.android.databinding.MembersActivityBinding
2829
import com.owncloud.android.domain.spaces.model.OCSpace
2930
import com.owncloud.android.ui.activity.FileActivity
31+
import com.owncloud.android.utils.DisplayUtils
3032

3133
class SpaceMembersActivity: FileActivity() {
3234

35+
private lateinit var binding: MembersActivityBinding
36+
3337
override fun onCreate(savedInstanceState: Bundle?) {
3438
super.onCreate(savedInstanceState)
3539

36-
setContentView(R.layout.members_activity)
40+
binding = MembersActivityBinding.inflate(layoutInflater)
41+
setContentView(binding.root)
3742

3843
setupStandardToolbar(title = null, displayHomeAsUpEnabled = true, homeButtonEnabled = true, displayShowTitleEnabled = true)
3944

4045
supportActionBar?.setHomeActionContentDescription(R.string.common_back)
4146

42-
val currentSpace = intent.getParcelableExtra<OCSpace>(EXTRA_SPACE)
47+
val currentSpace = intent.getParcelableExtra<OCSpace>(EXTRA_SPACE) ?: return
48+
binding.apply {
49+
itemName.text = currentSpace.name
50+
currentSpace.quota?.let { quota ->
51+
val usedQuota = quota.used
52+
val totalQuota = quota.total
53+
itemSize.text = when {
54+
usedQuota == null -> getString(R.string.drawer_unavailable_used_storage)
55+
totalQuota == 0L -> DisplayUtils.bytesToHumanReadable(usedQuota, baseContext, true)
56+
else -> getString(
57+
R.string.drawer_quota,
58+
DisplayUtils.bytesToHumanReadable(usedQuota, baseContext, true),
59+
DisplayUtils.bytesToHumanReadable(totalQuota, baseContext, true),
60+
quota.getRelative().toString())
61+
}
62+
}
63+
}
4364

4465
supportFragmentManager.transaction {
4566
if (savedInstanceState == null && currentSpace != null) {

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

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -109,24 +109,6 @@ class SpaceMembersFragment : Fragment() {
109109
}
110110
}
111111
}
112-
113-
val currentSpace = requireArguments().getParcelable<OCSpace>(ARG_CURRENT_SPACE) ?: return
114-
binding.apply {
115-
itemName.text = currentSpace.name
116-
currentSpace.quota?.let { quota ->
117-
val usedQuota = quota.used
118-
val totalQuota = quota.total
119-
itemSize.text = when {
120-
usedQuota == null -> getString(R.string.drawer_unavailable_used_storage)
121-
totalQuota == 0L -> DisplayUtils.bytesToHumanReadable(usedQuota, requireContext(), true)
122-
else -> getString(
123-
R.string.drawer_quota,
124-
DisplayUtils.bytesToHumanReadable(usedQuota, requireContext(), true),
125-
DisplayUtils.bytesToHumanReadable(totalQuota, requireContext(), true),
126-
quota.getRelative().toString())
127-
}
128-
}
129-
}
130112
}
131113

132114
companion object {

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

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?><!--
22
ownCloud Android client application
33
4-
Copyright (C) 2025 ownCloud GmbH.
4+
Copyright (C) 2026 ownCloud GmbH.
55
66
This program is free software: you can redistribute it and/or modify
77
it under the terms of the GNU General Public License version 2,
@@ -16,8 +16,8 @@
1616
along with this program. If not, see <http://www.gnu.org/licenses/>.
1717
-->
1818

19-
<LinearLayout
20-
xmlns:android="http://schemas.android.com/apk/res/android"
19+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
20+
xmlns:app="http://schemas.android.com/apk/res-auto"
2121
android:id="@+id/members_activity_layout"
2222
android:layout_width="match_parent"
2323
android:layout_height="match_parent"
@@ -26,6 +26,49 @@
2626

2727
<include layout="@layout/owncloud_toolbar" />
2828

29+
<androidx.constraintlayout.widget.ConstraintLayout
30+
android:id="@+id/item_header_container"
31+
android:layout_width="match_parent"
32+
android:layout_height="wrap_content"
33+
android:padding="@dimen/standard_padding">
34+
35+
<ImageView
36+
android:id="@+id/item_icon"
37+
android:layout_width="50dp"
38+
android:layout_height="50dp"
39+
android:layout_gravity="center_vertical"
40+
android:src="@drawable/ic_menu_space"
41+
app:layout_constraintStart_toStartOf="parent"
42+
app:layout_constraintTop_toTopOf="parent"
43+
app:layout_constraintBottom_toBottomOf="parent"/>
44+
45+
<TextView
46+
android:id="@+id/item_name"
47+
android:layout_width="wrap_content"
48+
android:layout_height="wrap_content"
49+
android:layout_marginEnd="@dimen/standard_half_margin"
50+
android:layout_marginStart="@dimen/standard_half_margin"
51+
android:ellipsize="middle"
52+
android:singleLine="true"
53+
android:text="@string/placeholder_filename"
54+
android:textColor="@color/black"
55+
android:textSize="16sp"
56+
app:layout_constraintStart_toEndOf="@id/item_icon"
57+
app:layout_constraintTop_toTopOf="parent"/>
58+
59+
<TextView
60+
android:id="@+id/item_size"
61+
android:layout_width="wrap_content"
62+
android:layout_height="wrap_content"
63+
android:layout_marginStart="@dimen/standard_half_margin"
64+
android:text="@string/placeholder_filesize"
65+
android:textColor="@color/list_item_lastmod_and_filesize_text"
66+
android:textSize="14sp"
67+
app:layout_constraintStart_toEndOf="@id/item_icon"
68+
app:layout_constraintTop_toBottomOf="@+id/item_name"/>
69+
70+
</androidx.constraintlayout.widget.ConstraintLayout>
71+
2972
<FrameLayout
3073
android:layout_width="match_parent"
3174
android:layout_height="match_parent"

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

Lines changed: 34 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -25,106 +25,56 @@
2525
tools:context=".presentation.spaces.members.SpaceMembersActivity">
2626

2727
<LinearLayout
28+
android:id="@+id/members_section"
2829
android:layout_width="match_parent"
2930
android:layout_height="wrap_content"
3031
android:orientation="vertical">
3132

3233
<androidx.constraintlayout.widget.ConstraintLayout
33-
android:id="@+id/item_header_container"
3434
android:layout_width="match_parent"
35-
android:layout_height="wrap_content"
36-
android:padding="@dimen/standard_padding">
37-
38-
<ImageView
39-
android:id="@+id/item_icon"
40-
android:layout_width="50dp"
41-
android:layout_height="50dp"
42-
android:layout_gravity="center_vertical"
43-
android:src="@drawable/ic_menu_space"
44-
app:layout_constraintStart_toStartOf="parent"
45-
app:layout_constraintTop_toTopOf="parent"
46-
app:layout_constraintBottom_toBottomOf="parent"/>
35+
android:layout_height="match_parent"
36+
android:background="@color/actionbar_start_color">
4737

4838
<TextView
49-
android:id="@+id/item_name"
39+
android:id="@+id/members_title"
5040
android:layout_width="wrap_content"
51-
android:layout_height="wrap_content"
52-
android:layout_marginEnd="@dimen/standard_half_margin"
41+
android:layout_height="50dp"
42+
android:layout_centerVertical="true"
43+
android:gravity="center"
44+
android:text="@string/space_members"
5345
android:layout_marginStart="@dimen/standard_half_margin"
54-
android:ellipsize="middle"
55-
android:singleLine="true"
56-
android:text="@string/placeholder_filename"
57-
android:textColor="@color/black"
58-
android:textSize="16sp"
59-
app:layout_constraintStart_toEndOf="@id/item_icon"
46+
android:textAllCaps="true"
47+
android:textColor="@color/white"
48+
android:textStyle="bold"
49+
android:accessibilityHeading="true"
50+
app:layout_constraintStart_toStartOf="parent"
6051
app:layout_constraintTop_toTopOf="parent"/>
6152

62-
<TextView
63-
android:id="@+id/item_size"
64-
android:layout_width="wrap_content"
65-
android:layout_height="wrap_content"
66-
android:layout_marginStart="@dimen/standard_half_margin"
67-
android:text="@string/placeholder_filesize"
68-
android:textColor="@color/list_item_lastmod_and_filesize_text"
69-
android:textSize="14sp"
70-
app:layout_constraintStart_toEndOf="@id/item_icon"
71-
app:layout_constraintTop_toBottomOf="@+id/item_name"/>
53+
<ImageButton
54+
android:id="@+id/add_member_button"
55+
android:layout_width="48dp"
56+
android:layout_height="48dp"
57+
android:padding="@dimen/standard_padding"
58+
android:background="@color/transparent"
59+
android:src="@drawable/ic_add"
60+
android:contentDescription="@string/content_description_add_member"
61+
android:visibility="gone"
62+
android:focusable="true"
63+
android:clickable="true"
64+
app:layout_constraintEnd_toEndOf="parent"
65+
app:layout_constraintTop_toTopOf="parent"
66+
tools:visibility="visible"/>
7267

7368
</androidx.constraintlayout.widget.ConstraintLayout>
7469

75-
<LinearLayout
76-
android:id="@+id/members_section"
70+
<androidx.recyclerview.widget.RecyclerView
71+
android:id="@+id/members_recycler_view"
7772
android:layout_width="match_parent"
78-
android:layout_height="wrap_content"
79-
android:orientation="vertical">
80-
81-
<androidx.constraintlayout.widget.ConstraintLayout
82-
android:layout_width="match_parent"
83-
android:layout_height="match_parent"
84-
android:background="@color/actionbar_start_color">
85-
86-
<TextView
87-
android:id="@+id/members_title"
88-
android:layout_width="wrap_content"
89-
android:layout_height="50dp"
90-
android:layout_centerVertical="true"
91-
android:gravity="center"
92-
android:text="@string/space_members"
93-
android:layout_marginStart="@dimen/standard_half_margin"
94-
android:textAllCaps="true"
95-
android:textColor="@color/white"
96-
android:textStyle="bold"
97-
android:accessibilityHeading="true"
98-
app:layout_constraintStart_toStartOf="parent"
99-
app:layout_constraintTop_toTopOf="parent"/>
100-
101-
<ImageButton
102-
android:id="@+id/add_member_button"
103-
android:layout_width="48dp"
104-
android:layout_height="48dp"
105-
android:padding="@dimen/standard_padding"
106-
android:background="@color/transparent"
107-
android:src="@drawable/ic_add"
108-
android:contentDescription="@string/content_description_add_member"
109-
android:visibility="gone"
110-
android:focusable="true"
111-
android:clickable="true"
112-
app:layout_constraintEnd_toEndOf="parent"
113-
app:layout_constraintTop_toTopOf="parent"
114-
tools:visibility="visible"/>
115-
116-
</androidx.constraintlayout.widget.ConstraintLayout>
117-
118-
<androidx.recyclerview.widget.RecyclerView
119-
android:id="@+id/members_recycler_view"
120-
android:layout_width="match_parent"
121-
android:layout_height="0dp"
122-
android:layout_weight="1"
123-
android:scrollbars="vertical"
124-
android:visibility="visible"
125-
tools:visibility="visible"/>
126-
127-
</LinearLayout>
73+
android:layout_height="0dp"
74+
android:layout_weight="1"
75+
android:scrollbars="vertical"
76+
android:visibility="visible"
77+
tools:visibility="visible"/>
12878

12979
</LinearLayout>
13080

0 commit comments

Comments
 (0)