Skip to content

Commit 9d489d3

Browse files
committed
feat(auto-upload): fix upload list layout and fix texts
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent a11b364 commit 9d489d3

9 files changed

Lines changed: 80 additions & 43 deletions

File tree

app/src/main/java/com/nextcloud/ui/component/AutoUploadWarningCardManager.kt

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,33 @@
77

88
package com.nextcloud.ui.component
99

10-
import android.content.Context
10+
import android.view.View
1111
import com.nextcloud.client.device.PowerManagementService
1212
import com.nextcloud.utils.extensions.setVisibleIf
13-
import com.owncloud.android.R
1413
import com.owncloud.android.databinding.AutoUploadBatterySaverWarningBannerBinding
1514
import com.owncloud.android.utils.theme.ViewThemeUtils
1615

1716
class AutoUploadWarningCardManager(
1817
private val powerManagementService: PowerManagementService,
19-
private val viewThemeUtils: ViewThemeUtils,
20-
private val context: Context
18+
private val viewThemeUtils: ViewThemeUtils
2119
) {
22-
2320
fun bind(binding: AutoUploadBatterySaverWarningBannerBinding) {
2421
val isBatterySaver = powerManagementService.isPowerSavingEnabled
2522
val isIgnoringOptimization = powerManagementService.isIgnoringOptimization
2623

2724
binding.root.setVisibleIf(isBatterySaver || isIgnoringOptimization)
2825

29-
val messages = listOfNotNull(
30-
if (isBatterySaver) context
31-
.getString(R.string.auto_upload_battery_saver_mode_warning) else null,
32-
if (isIgnoringOptimization) context
33-
.getString(R.string.auto_upload_battery_ignore_optimization_mode_warning) else null
34-
)
35-
36-
binding.message.text = messages.joinToString("\n")
26+
if (isBatterySaver && isIgnoringOptimization) {
27+
binding.title.visibility = View.VISIBLE
28+
binding.batterySaverReason.visibility = View.VISIBLE
29+
binding.batteryOptimizationReason.visibility = View.VISIBLE
30+
} else if (isBatterySaver) {
31+
binding.title.visibility = View.VISIBLE
32+
binding.batterySaverReason.visibility = View.VISIBLE
33+
} else if (isIgnoringOptimization) {
34+
binding.title.visibility = View.VISIBLE
35+
binding.batteryOptimizationReason.visibility = View.VISIBLE
36+
}
3737

3838
viewThemeUtils.material.themeCardView(binding.root)
3939
}

app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ class SyncedFoldersActivity :
166166
super.onCreate(savedInstanceState)
167167
binding = SyncedFoldersLayoutBinding.inflate(layoutInflater)
168168
setContentView(binding.root)
169-
autoUploadWarningCardManager = AutoUploadWarningCardManager(powerManagementService, viewThemeUtils, this)
169+
autoUploadWarningCardManager = AutoUploadWarningCardManager(powerManagementService, viewThemeUtils)
170170
if (intent != null && intent.extras != null) {
171171
val accountName = intent.extras!!.getString(NotificationWork.KEY_NOTIFICATION_ACCOUNT)
172172
val optionalUser = user

app/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ class UploadListActivity :
109109
adapterHelper = UploadListAdapterHelper(this)
110110
uploadListAdapter = UploadListAdapter(
111111
this,
112-
AutoUploadWarningCardManager(powerManagementService, viewThemeUtils, this),
113112
uploadsStorageManager,
114113
userAccountManager,
115114
connectivityService,
@@ -119,6 +118,9 @@ class UploadListActivity :
119118
adapterHelper
120119
)
121120

121+
val autoUploadWarningCardManager = AutoUploadWarningCardManager(powerManagementService, viewThemeUtils)
122+
binding?.autoUploadBatterySaverWarningCard?.let { autoUploadWarningCardManager.bind(it) }
123+
122124
val lm = GridLayoutManager(this, 1)
123125
uploadListAdapter.setLayoutManager(lm)
124126

app/src/main/java/com/owncloud/android/ui/adapter/uploadList/UploadListAdapter.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import com.nextcloud.client.device.PowerManagementService
2525
import com.nextcloud.client.jobs.upload.FileUploadHelper
2626
import com.nextcloud.client.jobs.upload.FileUploadWorker
2727
import com.nextcloud.client.network.ConnectivityService
28-
import com.nextcloud.ui.component.AutoUploadWarningCardManager
2928
import com.nextcloud.utils.extensions.getStatusText
3029
import com.nextcloud.utils.extensions.isLastResultConflictError
3130
import com.nextcloud.utils.extensions.setVisibleIf
@@ -68,7 +67,6 @@ import java.util.function.Consumer
6867
)
6968
class UploadListAdapter(
7069
private val activity: FileActivity,
71-
private val autoUploadWarningCardManager: AutoUploadWarningCardManager,
7270
private val uploadsStorageManager: UploadsStorageManager,
7371
private val accountManager: UserAccountManager,
7472
private val connectivityService: ConnectivityService,
@@ -104,7 +102,6 @@ class UploadListAdapter(
104102

105103
bindHeaderTitle(headerViewHolder, group, section)
106104
bindHeaderActionButton(headerViewHolder, group)
107-
autoUploadWarningCardManager.bind(holder.binding.autoUploadBatterySaverWarningCard)
108105
bindHeaderActionClickListener(headerViewHolder, group)
109106
}
110107

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

Lines changed: 46 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
~ SPDX-FileCopyrightText: 2025 Alper Ozturk <alper.ozturk@nextcloud.com>
66
~ SPDX-License-Identifier: AGPL-3.0-or-later
77
-->
8-
<com.google.android.material.card.MaterialCardView
9-
android:id="@+id/root"
8+
<com.google.android.material.card.MaterialCardView android:id="@+id/root"
109
android:layout_width="match_parent"
1110
android:layout_height="wrap_content"
1211
android:background="@drawable/rounded_rect_8dp"
@@ -16,7 +15,8 @@
1615
android:elevation="4dp"
1716
android:padding="@dimen/standard_double_margin"
1817
xmlns:android="http://schemas.android.com/apk/res/android"
19-
xmlns:app="http://schemas.android.com/apk/res-auto">
18+
xmlns:app="http://schemas.android.com/apk/res-auto"
19+
xmlns:tools="http://schemas.android.com/tools">
2020

2121
<LinearLayout
2222
android:layout_width="match_parent"
@@ -28,18 +28,52 @@
2828
<ImageView
2929
android:layout_width="@dimen/standard_icon_size"
3030
android:layout_height="@dimen/standard_icon_size"
31-
android:contentDescription="@string/auto_upload_battery_saver_mode_warning"
31+
android:contentDescription="@null"
3232
android:src="@drawable/ic_warning"
3333
app:tint="@color/log_level_warning" />
3434

35-
<com.google.android.material.textview.MaterialTextView
36-
android:id="@+id/message"
37-
android:layout_width="0dp"
35+
<LinearLayout
36+
android:layout_width="match_parent"
3837
android:layout_height="wrap_content"
39-
android:layout_marginStart="8dp"
40-
android:layout_weight="1"
41-
android:text="@string/auto_upload_battery_saver_mode_warning"
42-
android:textAppearance="@style/TextAppearance.MaterialComponents.Body2"
43-
android:textColor="@color/text_color" />
38+
android:orientation="vertical">
39+
40+
<com.google.android.material.textview.MaterialTextView
41+
android:id="@+id/title"
42+
android:layout_width="wrap_content"
43+
android:layout_height="wrap_content"
44+
android:layout_marginStart="8dp"
45+
android:layout_weight="1"
46+
android:text="@string/auto_upload_battery_combined_warning"
47+
android:textAppearance="@style/TextAppearance.MaterialComponents.Body2"
48+
android:textColor="@color/text_color"
49+
tools:visibility="visible"
50+
android:visibility="gone"/>
51+
52+
<com.google.android.material.textview.MaterialTextView
53+
android:id="@+id/battery_saver_reason"
54+
android:layout_width="wrap_content"
55+
android:layout_height="wrap_content"
56+
android:layout_marginStart="8dp"
57+
android:layout_weight="1"
58+
android:text="@string/auto_upload_battery_saver_reason"
59+
android:textAppearance="@style/TextAppearance.MaterialComponents.Body2"
60+
android:textColor="@color/text_color"
61+
tools:visibility="visible"
62+
android:visibility="gone"/>
63+
64+
<com.google.android.material.textview.MaterialTextView
65+
android:id="@+id/battery_optimization_reason"
66+
android:layout_width="wrap_content"
67+
android:layout_height="wrap_content"
68+
android:layout_marginStart="8dp"
69+
android:layout_weight="1"
70+
android:text="@string/auto_upload_battery_optimization_reason"
71+
android:textAppearance="@style/TextAppearance.MaterialComponents.Body2"
72+
android:textColor="@color/text_color"
73+
tools:visibility="visible"
74+
android:visibility="gone"/>
75+
76+
</LinearLayout>
77+
4478
</LinearLayout>
4579
</com.google.android.material.card.MaterialCardView>

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
<ImageView
3333
android:layout_width="@dimen/standard_icon_size"
3434
android:layout_height="@dimen/standard_icon_size"
35-
android:contentDescription="@string/auto_upload_battery_saver_mode_warning"
35+
android:contentDescription="@null"
3636
android:src="@drawable/ic_warning"
3737
app:tint="@color/log_level_warning" />
3838

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

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,4 @@
6262
android:paddingBottom="@dimen/standard_half_padding"
6363
android:src="@drawable/ic_delete"
6464
app:tint="#757575" />
65-
66-
<include
67-
android:id="@+id/auto_upload_battery_saver_warning_card"
68-
android:layout_width="match_parent"
69-
android:layout_height="wrap_content"
70-
android:layout_below="@+id/upload_list_title"
71-
layout="@layout/auto_upload_battery_saver_warning_banner" />
7265
</RelativeLayout>

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

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,20 @@
2222

2323
<include layout="@layout/toolbar_standard" />
2424

25+
<include
26+
android:id="@+id/auto_upload_battery_saver_warning_card"
27+
layout="@layout/auto_upload_battery_saver_warning_banner"
28+
android:layout_marginHorizontal="@dimen/standard_margin"
29+
android:layout_width="match_parent"
30+
android:layout_height="wrap_content"
31+
android:layout_below="@id/appbar" />
32+
2533
<FrameLayout
34+
android:id="@+id/frameLayout"
2635
android:layout_width="match_parent"
2736
android:layout_height="match_parent"
28-
android:layout_below="@id/appbar">
37+
android:layout_below="@id/auto_upload_battery_saver_warning_card">
38+
2939

3040
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
3141
android:id="@+id/swipe_containing_list"
@@ -36,9 +46,9 @@
3646

3747
<com.owncloud.android.ui.EmptyRecyclerView
3848
android:id="@android:id/list"
39-
android:padding="@dimen/standard_half_padding"
4049
android:layout_width="match_parent"
41-
android:layout_height="match_parent" />
50+
android:layout_height="match_parent"
51+
android:padding="@dimen/standard_half_padding" />
4252

4353
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
4454

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1483,8 +1483,9 @@
14831483
<string name="open_in_app">Open in %1$s</string>
14841484
<string name="auto_upload_delete_dialog_title">Delete auto-upload folder?</string>
14851485
<string name="auto_upload_delete_dialog_description">This will remove the folder and auto-upload configuration. Any unfinished uploads will be canceled.</string>
1486-
<string name="auto_upload_battery_saver_mode_warning">Auto-upload is paused because Battery Saver is on.</string>
1487-
<string name="auto_upload_battery_ignore_optimization_mode_warning">Auto-upload might not work reliably because battery optimization is enabled for the Nextcloud app.</string>
1486+
<string name="auto_upload_battery_combined_warning">Auto-upload may be limited:</string>
1487+
<string name="auto_upload_battery_saver_reason">\t \u2022 Battery Saver is active and may pause uploads</string>
1488+
<string name="auto_upload_battery_optimization_reason">\t \u2022 Nextcloud\'s background activity is limited by battery optimization</string>
14881489
<string name="auto_upload_sub_folder_warning">This folder is already included in the parent folder’s sync, which may cause duplicate uploads</string>
14891490
<string name="sync_anyway">Sync anyway</string>
14901491
<string name="sync_duplication">Sync duplication</string>

0 commit comments

Comments
 (0)