Skip to content

Commit ac939b4

Browse files
committed
use empty state
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent 49fd2da commit ac939b4

5 files changed

Lines changed: 53 additions & 61 deletions

File tree

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/*
2+
* Nextcloud - Android Client
3+
*
4+
* SPDX-FileCopyrightText: 2026 Alper Ozturk <alper.ozturk@nextcloud.com>
5+
* SPDX-License-Identifier: AGPL-3.0-or-later
6+
*/
7+
8+
package com.owncloud.android.ui.fragment.albums
9+
10+
import androidx.annotation.DrawableRes
11+
import androidx.annotation.StringRes
12+
import com.owncloud.android.R
13+
14+
enum class AlbumsEmptyState(@StringRes val headline: Int, @StringRes val message: Int, @DrawableRes val icon: Int) {
15+
NO_ALBUMS(R.string.empty_albums_title, R.string.empty_albums_message, R.drawable.ic_album),
16+
LOAD_FAILED(R.string.file_list_error_headline, R.string.file_list_error_description, R.drawable.ic_no_internet)
17+
}

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

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@ import androidx.lifecycle.lifecycleScope
2626
import androidx.recyclerview.widget.GridLayoutManager
2727
import androidx.recyclerview.widget.LinearLayoutManager
2828
import com.google.android.material.appbar.AppBarLayout
29+
import com.nextcloud.android.common.ui.theme.utils.ColorRole
2930
import com.nextcloud.client.account.UserAccountManager
3031
import com.nextcloud.client.di.Injectable
3132
import com.nextcloud.client.preferences.AppPreferences
3233
import com.nextcloud.client.utils.Throttler
3334
import com.nextcloud.utils.extensions.getTypedActivity
35+
import com.nextcloud.utils.extensions.setVisibleIf
3436
import com.nextcloud.utils.thumbnail.ThumbnailGenerator
3537
import com.owncloud.android.R
3638
import com.owncloud.android.databinding.AlbumsFragmentBinding
@@ -181,7 +183,7 @@ class AlbumsFragment :
181183
private fun fetchAndSetData() {
182184
binding.swipeContainingList.isRefreshing = true
183185
initializeAdapter()
184-
updateEmptyView(false)
186+
setEmptyListMessage(null)
185187
readAlbums()
186188
}
187189

@@ -197,12 +199,12 @@ class AlbumsFragment :
197199
withContext(Dispatchers.Main) {
198200
if (result?.isSuccess == true && result.resultData != null) {
199201
if (result.resultData.isEmpty()) {
200-
updateEmptyView(true)
202+
setEmptyListMessage(AlbumsEmptyState.NO_ALBUMS)
201203
}
202204
populateList(result.resultData)
203205
} else {
204206
Log_OC.d(TAG, "read album operation failed")
205-
updateEmptyView(true)
207+
setEmptyListMessage(AlbumsEmptyState.LOAD_FAILED)
206208
}
207209

208210
hideRefreshLayoutLoader()
@@ -249,9 +251,23 @@ class AlbumsFragment :
249251
}
250252
}
251253

252-
private fun updateEmptyView(isEmpty: Boolean) {
253-
binding.emptyViewLayout.visibility = if (isEmpty) View.VISIBLE else View.GONE
254-
binding.listRoot.visibility = if (isEmpty) View.GONE else View.VISIBLE
254+
private fun setEmptyListMessage(state: AlbumsEmptyState?) {
255+
binding.emptyList.emptyListView.setVisibleIf(state != null)
256+
binding.listRoot.setVisibleIf(state == null)
257+
258+
if (state == null) {
259+
return
260+
}
261+
262+
with(binding.emptyList) {
263+
emptyListViewHeadline.setText(state.headline)
264+
emptyListViewText.setText(state.message)
265+
emptyListIcon.setImageDrawable(
266+
viewThemeUtils.platform.tintDrawable(requireContext(), state.icon, ColorRole.PRIMARY)
267+
)
268+
emptyListViewText.visibility = View.VISIBLE
269+
emptyListIcon.visibility = View.VISIBLE
270+
}
255271
}
256272

257273
override fun onResume() {
-905 KB
Binary file not shown.

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

Lines changed: 14 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -19,63 +19,23 @@
1919
android:visibility="visible"
2020
app:layout_behavior="@string/appbar_scrolling_view_behavior">
2121

22-
<androidx.recyclerview.widget.RecyclerView
23-
android:id="@+id/list_root"
22+
<FrameLayout
2423
android:layout_width="match_parent"
25-
android:layout_height="match_parent" />
24+
android:layout_height="match_parent">
25+
26+
<androidx.recyclerview.widget.RecyclerView
27+
android:id="@+id/list_root"
28+
android:layout_width="match_parent"
29+
android:layout_height="match_parent" />
30+
31+
<include
32+
android:id="@+id/empty_list"
33+
layout="@layout/empty_list"
34+
android:visibility="gone"
35+
tools:visibility="visible" />
36+
</FrameLayout>
2637
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
2738

28-
<androidx.constraintlayout.widget.ConstraintLayout
29-
android:id="@+id/empty_view_layout"
30-
android:layout_width="match_parent"
31-
android:layout_height="match_parent"
32-
android:background="@color/bg_default"
33-
android:visibility="gone"
34-
tools:visibility="visible">
35-
36-
<ImageView
37-
android:id="@+id/albums_bg_image"
38-
android:layout_width="match_parent"
39-
android:layout_height="0dp"
40-
android:contentDescription="@string/create_album"
41-
android:scaleType="centerCrop"
42-
android:src="@drawable/bg_image_albums"
43-
app:layout_constraintEnd_toEndOf="parent"
44-
app:layout_constraintHeight_percent="0.5"
45-
app:layout_constraintStart_toStartOf="parent"
46-
app:layout_constraintTop_toTopOf="parent" />
47-
48-
49-
<TextView
50-
android:id="@+id/empty_album_label"
51-
android:layout_width="0dp"
52-
android:layout_height="wrap_content"
53-
android:paddingStart="@dimen/standard_double_padding"
54-
android:paddingEnd="@dimen/standard_double_padding"
55-
android:text="@string/empty_albums_title"
56-
android:textColor="@color/text_color"
57-
android:textSize="48sp"
58-
android:textStyle="bold"
59-
app:layout_constraintEnd_toEndOf="parent"
60-
app:layout_constraintStart_toStartOf="parent"
61-
app:layout_constraintTop_toBottomOf="@id/albums_bg_image" />
62-
63-
<TextView
64-
android:id="@+id/empty_album_message_label"
65-
android:layout_width="0dp"
66-
android:layout_height="wrap_content"
67-
android:paddingStart="@dimen/standard_double_padding"
68-
android:paddingTop="@dimen/standard_padding"
69-
android:paddingEnd="@dimen/standard_double_padding"
70-
android:text="@string/empty_albums_message"
71-
android:textColor="@color/secondary_text_color"
72-
android:textSize="@dimen/two_line_primary_text_size"
73-
app:layout_constraintEnd_toEndOf="parent"
74-
app:layout_constraintStart_toStartOf="parent"
75-
app:layout_constraintTop_toBottomOf="@+id/empty_album_label" />
76-
77-
</androidx.constraintlayout.widget.ConstraintLayout>
78-
7939
<com.google.android.material.floatingactionbutton.FloatingActionButton
8040
android:id="@+id/add_media_fab"
8141
android:layout_width="wrap_content"

app/src/main/res/values/strings.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
<string name="actionbar_sort">Sort</string>
2828
<string name="sort_by">Sort by</string>
2929
<string name="drawer_item_album">Albums</string>
30-
<string name="create_album">Create album</string>
3130
<string name="add_media">Add media</string>
3231
<string name="create_album_dialog_title">New album</string>
3332
<string name="rename_album_dialog_title">Rename album</string>

0 commit comments

Comments
 (0)