c53wawS}G1^1(Ur)YTS>=L?
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
literal 0
HcmV?d00001
diff --git a/app/src/androidTest/java/com/nextcloud/client/SyncedFoldersActivityIT.java b/app/src/androidTest/java/com/nextcloud/client/SyncedFoldersActivityIT.java
index e1770a1d38..4bc1377a7f 100644
--- a/app/src/androidTest/java/com/nextcloud/client/SyncedFoldersActivityIT.java
+++ b/app/src/androidTest/java/com/nextcloud/client/SyncedFoldersActivityIT.java
@@ -7,8 +7,8 @@
*/
package com.nextcloud.client;
-import android.app.Activity;
import android.content.Intent;
+import android.os.Looper;
import com.nextcloud.client.preferences.SubFolderRule;
import com.owncloud.android.AbstractIT;
@@ -25,6 +25,7 @@ import org.junit.Test;
import java.util.Objects;
+import androidx.appcompat.app.AlertDialog;
import androidx.test.espresso.intent.rule.IntentsTestRule;
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
@@ -78,4 +79,24 @@ public class SyncedFoldersActivityIT extends AbstractIT {
screenshot(Objects.requireNonNull(sut.requireDialog().getWindow()).getDecorView());
}
+
+ @Test
+ @ScreenshotTest
+ public void showPowerCheckDialog() {
+ if (Looper.myLooper() == null) {
+ Looper.prepare();
+ }
+
+ Intent intent = new Intent(targetContext, SyncedFoldersActivity.class);
+ SyncedFoldersActivity activity = activityRule.launchActivity(intent);
+
+ AlertDialog sut = activity.buildPowerCheckDialog();
+
+ activity.runOnUiThread(sut::show);
+
+ getInstrumentation().waitForIdleSync();
+ shortSleep();
+
+ screenshot(Objects.requireNonNull(sut.getWindow()).getDecorView());
+ }
}
diff --git a/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt
index 23486394a2..9ce6684472 100644
--- a/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt
+++ b/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt
@@ -20,6 +20,7 @@ import android.text.TextUtils
import android.view.Menu
import android.view.MenuItem
import android.view.View
+import androidx.annotation.VisibleForTesting
import androidx.appcompat.app.AlertDialog
import androidx.drawerlayout.widget.DrawerLayout
import androidx.lifecycle.Lifecycle
@@ -31,7 +32,6 @@ import com.nextcloud.client.di.Injectable
import com.nextcloud.client.jobs.MediaFoldersDetectionWork
import com.nextcloud.client.jobs.NotificationWork
import com.nextcloud.client.jobs.upload.FileUploadWorker
-import com.nextcloud.client.preferences.AppPreferences
import com.nextcloud.client.preferences.SubFolderRule
import com.nextcloud.utils.extensions.getParcelableArgument
import com.nextcloud.utils.extensions.isDialogFragmentReady
@@ -56,7 +56,6 @@ import com.owncloud.android.ui.dialog.SyncedFolderPreferencesDialogFragment.OnSy
import com.owncloud.android.ui.dialog.parcel.SyncedFolderParcelable
import com.owncloud.android.utils.PermissionUtil
import com.owncloud.android.utils.SyncedFolderUtils
-import com.owncloud.android.utils.theme.ViewThemeUtils
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
@@ -135,18 +134,12 @@ class SyncedFoldersActivity :
}
}
- @Inject
- lateinit var preferences: AppPreferences
-
@Inject
lateinit var powerManagementService: PowerManagementService
@Inject
lateinit var clock: Clock
- @Inject
- lateinit var viewThemeUtils: ViewThemeUtils
-
@Inject
lateinit var syncedFolderProvider: SyncedFolderProvider
@@ -220,17 +213,23 @@ class SyncedFoldersActivity :
powerCheck.isChecked = !powerCheck.isChecked
return true
}
-
- private fun showPowerCheckDialog() {
+
+ fun buildPowerCheckDialog(): AlertDialog {
val builder = MaterialAlertDialogBuilder(this)
- .setView(R.id.root_layout)
.setPositiveButton(R.string.common_ok) { dialog, _ -> dialog.dismiss() }
.setTitle(R.string.autoupload_disable_power_save_check)
.setMessage(getString(R.string.power_save_check_dialog_message))
viewThemeUtils.dialog.colorMaterialAlertDialogBackground(this, builder)
- builder.create().show()
+ return builder.create()
+ }
+
+ @VisibleForTesting
+ fun showPowerCheckDialog() {
+ buildPowerCheckDialog().show()
+
+
}
/**
@@ -636,6 +635,7 @@ class SyncedFoldersActivity :
binding.emptyList.emptyListIcon.visibility = View.VISIBLE
}
+ @Deprecated("Deprecated in Java")
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == SyncedFolderPreferencesDialogFragment.REQUEST_CODE__SELECT_REMOTE_FOLDER &&
resultCode == RESULT_OK && dialogFragment != null
From 03b83c4a0ae95e932200e2e003482042322641a4 Mon Sep 17 00:00:00 2001
From: tobiasKaminsky
Date: Tue, 12 Nov 2024 10:34:14 +0100
Subject: [PATCH 03/27] Fix power check dialog added test
Signed-off-by: tobiasKaminsky
---
.../com/owncloud/android/ui/activity/SyncedFoldersActivity.kt | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt
index 9ce6684472..98e11ff314 100644
--- a/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt
+++ b/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt
@@ -213,7 +213,7 @@ class SyncedFoldersActivity :
powerCheck.isChecked = !powerCheck.isChecked
return true
}
-
+
fun buildPowerCheckDialog(): AlertDialog {
val builder = MaterialAlertDialogBuilder(this)
.setPositiveButton(R.string.common_ok) { dialog, _ -> dialog.dismiss() }
@@ -228,8 +228,6 @@ class SyncedFoldersActivity :
@VisibleForTesting
fun showPowerCheckDialog() {
buildPowerCheckDialog().show()
-
-
}
/**
From 851221245c8605061ed78d2df71428ee9053e7ed Mon Sep 17 00:00:00 2001
From: tobiasKaminsky
Date: Wed, 20 Nov 2024 14:38:17 +0100
Subject: [PATCH 04/27] update screenshots
Signed-off-by: tobiasKaminsky
---
...FoldersActivityIT_showPowerCheckDialog.png | Bin 32413 -> 9383 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/app/screenshots/gplay/debug/com.nextcloud.client.SyncedFoldersActivityIT_showPowerCheckDialog.png b/app/screenshots/gplay/debug/com.nextcloud.client.SyncedFoldersActivityIT_showPowerCheckDialog.png
index f7a9b2a92df60850c8f6f099a4f82a7211dda54d..c99e6641857dfb2a86a8123d68fb61960a6faea9 100644
GIT binary patch
literal 9383
zcmeHtcTiJXyS{*cqJRxON>fphuF?rb6e&XJ5UEiVB7^_}0VyF!4j@WVq(eZZw?qiN
z1;m0>CG-FRl|U$o5+ITgxWRMh-t(L9{Jy#O|C^b-vu5wLX4Zb*XYKb{&)RX8=0<`7
zrv&!w*&}FTY+$`-4_5={58lVexuX4aJZ{gPb3P^p`nC@zR?s0o?1t}rB)BudfR(@r
z&umJ8>4Zn}gi4%R!h>WJFEqpA$w?Z{y<3;QxMq
zL%D=aoZ@9H>8rrUszv)Mq=x-4<0;L%?KxjIWO^d!=jG~q`P@#%JdTAw75
z)-__6@_)Y
z?w3s&qHj4#-b2%FwC=Jm^_mmri`2&(=8&CfsSShzsMgvxlnoH30=(vp=0WMVb@58Qxxir<&qPqIAT;~SmY2As-j>66+C76eth|_MHht2rMzl)`bcR{iB`QJZ!RkbU#V3LM0=8ahpU0L707y@
zV{d(27HKv6lXl
zIW0jF@ci?cnf|Frf>j~3$Qd6L;C0)3s)Z2Y3V4R^T(~%C_f>du$L|ModWt^^?cTeP
zjuLP(s+?-pfq{444{R%8&j#zCg{$BxzCH#B_iRE?wLu+BPg<+2ri4YW>v>(}Oelj3_@1jN^-?N}|;G@J3uzHm`?2@ST
zmG{o2^a*RYoC^G85#a$IJ*oZZdOMoHB|XL0dhd>%*KM;*?Wwkrf}bwWflk!>U+iuQ
zoLjl-r6z!M70C>0@@r^1Z8cY1H28yYj4u@22c~wZV_LkZ1gIX1qU4Qpd+3O_l0(xZUvpm1SF!xrQ@=FLPnR7P6li4=8^uhXov6
zAkB|=c{aYW)w5|tfdhlc-7j&+TSsb58SezHr?y5p=4G-s!a9~rPhj@-A46SeN+2#n
z7u6AO?n<-jkp|Os@Gw>uv%NcWrvfGHjF4ba;tU{@$s
z#)X0*pBKZ19vN2k42pN%N2l44{dZ(Sb^?Pe|Hf#Y
z`qdv@bw4&8gKHg%ga$%iw9M>gK^ABuVsM_@oDF8i%La+Q!~d#fBZrgisz_h
zhjc;6gt{Q$%pLK1_1Yfi+2X@-0(ziNjUCcS@NQpf&y}6IgOXS(tW(d)<_4|qPIU7%
zJAE*9>m#MV=EaEnd2U71%pMu1TlKAHxPtrnbD*@*E>*jnLT6A>w?Svz@W~Y>Z-G`V
z+bN>-t2OBj4PsVF0?!gSz9hOjebwN`V`T;hd>b#@%a$i!i
zAVb-UNRQou>~E0YO?6YwRaDVhE-~@g!^umJA_2ub{i^E=@~6Z1ik|pm;s-L~ladrG
zC2)wE1(=%QAH^3uwaDk5O@4}$5cOMx&zMNgpyoh=NPEcw+}}3Z@6Sso(^1U7c`6WS{|Mhux2OpCa%zz(^
z=%k4;u|6suQXr;|?Ur@L?C_?&^>qTAvwTTi>b
zVaCh8Ge@5xf~Q{hXLU;5ccItlol-Mxcb5q`-&5psKs??UxmS);_^-?a29|%ZQg;r1
z(Hhg;is?42N6XGlCr&(f4#W4`s@OV+G$~fYAC*d3GB#ZRx`IL42v?ExEPa)W?K+iL
zX{|peYPys)5QgFlrz~G`9rJOVxWm4AxzxmteFtM=({mN2RUoQaM3Nyl24kG5)I-2i
zsyG5=x)O9L)S74S+fl_*{JW{>8z*F!06NW#{ZSSu-q)DmWG#&c^f@J|;*q>ClIm!T
z0{lOp@4<;yX_r4;OV??R!jqXLLW+EA;`dlLrlvq|(?##?Z>Vs`+#3(PRKy50#Gurp
zVk67f2T+6$SPx0NUahadMPqY;gS<~MG=Gs+$%5H@qtS!&L1x8?t8iGN=;|^pT+#U0
zeXXn^Au1A7?vXzfPas)$nJ|a&go=SL|bs{Ero}mLjUWG05k3ka%p|
ze%S9ZC!RU`yT`wYv5$Wb{^xj>Gw^@i!5O`;fwMhnTlUP++Kvth={-mPgyE^m3xT~o
zhJ(}lpRh03PZOkfo;68834x~LX=S*B!>{o8p?A8@Q||J^NxGAFrXRwX4tYl0nB)AD
z2u6^~I@aelrkU&!;M55K)+@I5#=xCcbpuRMA3UZfZ@9Dje|F|&_8{R24)x5=v4Kg;
zowS)?*`L|BLM$X$+HjqbB1&4df{0CwMX;m_XAcCD8;Qo_3sRT7S1ck<%B?Ir(9QCl
zve4@x=VrVfwAbDb!k%QmeTb8;52yg+#^c2oHas
zeHih)3A~=(dZ9zh%Wktj)W>^sbU%ve1j^EyB`a?Ex+3NTmDktnm#y42X6!+g$^oPh
zQp=SMRaWq1|4f8UpCQhp1uDeZHGs1(QB`qnl&q-DTW$AJ5i~XK;Udxz
z()~uansS|fiIOVg(L+w6lVK}m2^~9d%Qp+`xe$5@MG~;Jer0^)iz1-%6SnQ7{B@8J
z0{LMmxVLN$dZ7CmToZeX`N(0Xqo`#-F$XX2tNXh9SYc52ZFf6@w^r0WolLUTTQ|B;E@nh~
z2JuSCxK5e3)sm`D$h%4i(21}*f0qyg^Ps#==E$Oj%@HxM)F#N0$}o`cxYg1N)>xg2ueDPEstR)+BB3U5)r
zM6u6TIu}wc`fIKn!|84I=z5ZF5;28QO1FX=*D>p4erNd5$-U0voNeSKucD#n3HVtt
zJ^u+G4XV7MNXTfvj`w>EzV`B_k^98q4+*&$^~z@1SL7aoQ-7`q(hhQ;k(t@*|K7n9
zOKiIadIS!$;|Wut(f%~ynwPX%#9
ztO^Pi_$q0cg^!kDseR9Zh}ku}%jfo9cYNTtKDL
zY?}t%Uei5=l(Nk8KEUd8Hov!46@h6eVhov9jx9ISanYxouya!RHknHzHi&c_Af
z=P{R^A>*4HZX0=#HuMRvraFVZ?UQsNl8Yz5{902dsbSl;nmpkQghv-{;NwO|sir=5
zWwR_mn*#|AD7Mq2fPxPGT5%sGtM-(5a}cpGeKptp^1^xa^F}m5m2jWQ6la5tK0WnM
zP0h*)98zCT$PD@z$P+|H4EMe&x&{m$S!>+rvRgE^?kUJ<%dO~f(B1F@HOH?pUZBG!
zo}A`jQBy01Y0^e&-XHf2yfeWxW+u25l?%8U5hZXd@D16
zKfxAptHv!Od3`@uahn*3
zk2kcFFX2F2@LjeOs@qy5uK$usl2lBBT3A5OO`{?&8fdOEWN=zn6NKkdNKcPL#=V>c(koMmIx8#w%~9R8AA;?LvL(NY*fw4T^q
z6b{^qu*{E@^I1X~NQs{P8c5_SQXRHS_WTi-Qm*vE-S^G+(=R~F-9bhgKAm4aH2aT_
ziqEqc5}#nVfh!L20DmIm)9eg8cZzv|FGp6Um7M5|+dD~4Ag-`vP17Qsa9(#U`QR^?
zeEW*SkTlR8T9)}xc)N#j4W5OoP
z?wSvO>$j0+Z~9YNS(u8}O_1`Rh5*k!kF-+Q=vPbMbe2h{6h=0`6fZxAUPhUHRkIi0
zELCpgt_TtUPY!9`=I
z-9&Z=evA))Z}0j5Wmdh{d7{qRY!1tHNbA|p?1^M*lItco?9xjQCb{z1!Nzg6*5_78I)%K@`NK;vmCRe&`
zjN67ZKHhV;s#fCe@M0q7$&*cCMLPkR97&^viUbJLZj=hl6LezF#!5lIJvqfb-sWnY
z_frnz?@Rw)REmTLE(^~mdA&B1LnRgwvR0qi8Pz!y*-`y52AOLtN1xQ~1pgwZqr{sN
zzym|`j-_+YYjQ<`tRC5Y@)rrn#+F=3sn!!|_AP{sZZ`plL@ut6eQ8hwRd}K#y=?P7
zK`87?h0nOM`)a&du#JA5NX6t-+?dcl4Q`BCJ#5@v>7X4wnhB_RWhg#dItA{#yZFYV
zv8wVMOzxIJJGzr)1+Ohh!se<2s4
zIAeQUhxeB7igQ&Ua8`W(+3tKY5NO1hGi73I^1cL{vRxmJFBra+?I{2ieb>osNZCvj
zXc)FzTK=ZJ_Dhs4UhBNx9E!<6O6v8Ys8kF<^*+;UH9oX5!@cy%Kn61r;Ww8YEf)ph
z)mmRjE{RR~06SqachNm!u+CIR#fI?engKUe`#^*G1t2czWka(kH0)l*ycFfk{ZgF=IFSV8S@RTjRh#n*5$|HC)7TXzg?kU_&ov-u^h#DxN*#_Sj^%uszu#)4*%1YL63EE9=`%+%Tgqrow@<4J!D{tGm7eTHzKEZ=&`XRuS2>Rg6
zqt4xJO;ooYM%$AFJkVf`FIEQY3_C&opz5ISEL;{7sIn#lWM{Sn93dA&z2llio1(__
zoQCqvIFjm?^-=fBJ^m9z*gU!7AD^L3d3oDd9ImTay}vVoHay)YV6vVBR-+yojv##;?t(ZbWJIbA1WwNKC07tD>bV;
zp4{i~2a&%RqQ&8Cuyx2_TlR6k!U&7LAT25SK>JX55hS1yvLpf^c_RG0A_&m!fSNV=
zOF9NN!p_56EDMI>g_)Z!X_($qv!!@qE#(j5Kx&Q4yY=GKD|+v})2Upqf6wZqAD!gl
zEooT72zQyw@4kf)54~NMwWxARd2!Re?B%XPvv=hb|GK2g(eWf^>oSiPL(<})2IKSF
zg4GnJ<;MzP)LJ@lS1?SEqU5JCZ&cCI$NiW&t~SU#W_?Z0dWts?1d$E3yjRKvTC7ev
zm03cDtv{FPTGz%kJi5Y3ZiAQuSsK>7Jhpw9SaI{ez{jPUJ%z^;+yw=03
zoP)}Smq$SKY(s46TPxCJb`50_oYZBUbLkR+$(#LO|N?7F2Y5O;q+op
zMR4_mGZ_2IC3f5Ww16dkQ)SDsv}dridO;^4G5$b$!OB_ZM0xrP+n^JX?{yE0K92-g
z@bs_mXb;U^CXxz9;fE_lD~mi%tA6rS$vS#kW-i%bPUThHkNyEnasF&~x~YnrO_I^&IyX?TLx
zw{j$$M^pv#Iw`a=#hsGmmH>4XRFpIxQ+(b1+&v<>&b0EVxUnV26ZzPB@u{^GPkz>)
zfom0Q86|D?IICRTt8OcC_b-`Gn9Viu`B{hAOYdJtStAgh*wiL@)h3(#vjpAr8W)39
zsh+KOspw+3)ULO3yfW)1{8fFHs0&@{cNNK{FTM?4PoTVort$y3-pc>lDB*ZE|82Yc
z53H7dDq?>xYkw8Ae~ug@=*VwJ=r3RBU*rFvgIhn!2pH_
zOJl>R2dT{i7{z@JCqHLs+a5F
zzFjtdg@t}kG{4mK=k5g1{l8>qmFc)_ya-r7o@V1dFt!y*7$cGI+eAv3K*wr>(FN@WK^%v!<
zwNo>j6#SpX>9Sh&%lq=+E^cN1XH0&3dA0qAdp5=|u_%vgJpzX#l>KI1!{Q<_VXXT!
z%2?0dG;h5-+bWC+UKA*gfC6%)&pWNVcVyZ{n|fa0)pPFJ^0Ne
zx5~x~KCHHZzUk}W91tD&Z_UELG4=1P{d@bLRn}hw<$QAScc%Vp`=43+cbfjQmC66N
iuRH#)$w2^~y2Bq8HW9O}>?XPkh{+9e1I)GCQU3utb+8`*
literal 32413
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 |