From 388d68fac75c04cd0a1ebf9f9ef182ad6b6c97e8 Mon Sep 17 00:00:00 2001 From: Catfriend1 Date: Thu, 11 Jul 2019 15:03:48 +0200 Subject: [PATCH] Add "Revert local changes" button to UI (fixes #437) (#439) * Add icon: ic_cloud_download_red_24 * Update strings.xml * Add "Revert local changes" button code (fixes #437) * Update model: FolderStatus - add "receiveOnly*" * item_folder_list: Add revert UI button * Update icon: ic_cloud_download_red_24 * Update item_folder_list.xml * Update icon for the override changes button * Imported de translation --- .../syncthingandroid/http/PostRequest.java | 1 + .../syncthingandroid/model/FolderStatus.java | 6 ++ .../syncthingandroid/service/RestApi.java | 10 ++++ .../service/SyncthingService.java | 9 +++ .../views/FoldersAdapter.java | 21 +++++++ .../ic_cloud_download_red_24.png | Bin 0 -> 1219 bytes .../drawable-hdpi/ic_cloud_upload_red_24.png | Bin 0 -> 1691 bytes .../ic_cloud_download_red_24.png | Bin 0 -> 600 bytes .../drawable-ldpi/ic_cloud_upload_red_24.png | Bin 0 -> 689 bytes .../ic_cloud_download_red_24.png | Bin 0 -> 673 bytes .../drawable-mdpi/ic_cloud_upload_red_24.png | Bin 0 -> 882 bytes .../ic_cloud_download_red_24.png | Bin 0 -> 1563 bytes .../drawable-xhdpi/ic_cloud_upload_red_24.png | Bin 0 -> 2503 bytes .../ic_cloud_download_red_24.png | Bin 0 -> 3087 bytes .../ic_cloud_upload_red_24.png | Bin 0 -> 4725 bytes .../ic_cloud_download_red_24.png | Bin 0 -> 4343 bytes .../ic_cloud_upload_red_24.png | Bin 0 -> 6267 bytes app/src/main/res/layout/item_folder_list.xml | 53 +++++++++++++----- app/src/main/res/values-de/strings.xml | 10 +++- app/src/main/res/values/strings.xml | 5 ++ 20 files changed, 99 insertions(+), 16 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_cloud_download_red_24.png create mode 100644 app/src/main/res/drawable-hdpi/ic_cloud_upload_red_24.png create mode 100644 app/src/main/res/drawable-ldpi/ic_cloud_download_red_24.png create mode 100644 app/src/main/res/drawable-ldpi/ic_cloud_upload_red_24.png create mode 100644 app/src/main/res/drawable-mdpi/ic_cloud_download_red_24.png create mode 100644 app/src/main/res/drawable-mdpi/ic_cloud_upload_red_24.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_cloud_download_red_24.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_cloud_upload_red_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_cloud_download_red_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_cloud_upload_red_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_cloud_download_red_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_cloud_upload_red_24.png diff --git a/app/src/main/java/com/nutomic/syncthingandroid/http/PostRequest.java b/app/src/main/java/com/nutomic/syncthingandroid/http/PostRequest.java index 576fe28e..d2c2cf68 100644 --- a/app/src/main/java/com/nutomic/syncthingandroid/http/PostRequest.java +++ b/app/src/main/java/com/nutomic/syncthingandroid/http/PostRequest.java @@ -15,6 +15,7 @@ public class PostRequest extends ApiRequest { public static final String URI_DB_IGNORES = "/rest/db/ignores"; public static final String URI_DB_OVERRIDE = "/rest/db/override"; + public static final String URI_DB_REVERT = "/rest/db/revert"; public static final String URI_SYSTEM_CONFIG = "/rest/system/config"; public static final String URI_SYSTEM_SHUTDOWN = "/rest/system/shutdown"; diff --git a/app/src/main/java/com/nutomic/syncthingandroid/model/FolderStatus.java b/app/src/main/java/com/nutomic/syncthingandroid/model/FolderStatus.java index 2f5f4d62..a3c04480 100644 --- a/app/src/main/java/com/nutomic/syncthingandroid/model/FolderStatus.java +++ b/app/src/main/java/com/nutomic/syncthingandroid/model/FolderStatus.java @@ -21,6 +21,12 @@ public class FolderStatus { public long needFiles; public long needSymlinks; public long pullErrors; + public long receiveOnlyChangedBytes; + public long receiveOnlyChangedDeletes; + public long receiveOnlyChangedDirectories; + public long receiveOnlyChangedFiles; + public long receiveOnlyChangedSymlinks; + public long receiveOnlyTotalItems; public long sequence; public String state; public String stateChanged; diff --git a/app/src/main/java/com/nutomic/syncthingandroid/service/RestApi.java b/app/src/main/java/com/nutomic/syncthingandroid/service/RestApi.java index 8ccec5bf..14c34f6d 100644 --- a/app/src/main/java/com/nutomic/syncthingandroid/service/RestApi.java +++ b/app/src/main/java/com/nutomic/syncthingandroid/service/RestApi.java @@ -382,6 +382,16 @@ public class RestApi { ImmutableMap.of("folder", folderId), null, null); } + /** + * Revert local folder changes. This is the same as hitting + * the "Revert local changes" button from the web UI. + */ + public void revertLocalChanges(String folderId) { + Log.d(TAG, "revertLocalChanges '" + folderId + "'"); + new PostRequest(mContext, mUrl, PostRequest.URI_DB_REVERT, mApiKey, + ImmutableMap.of("folder", folderId), null, null); + } + /** * Sends current config to Syncthing. * Will result in a "ConfigSaved" event. diff --git a/app/src/main/java/com/nutomic/syncthingandroid/service/SyncthingService.java b/app/src/main/java/com/nutomic/syncthingandroid/service/SyncthingService.java index 7ceea6db..f4ec625a 100644 --- a/app/src/main/java/com/nutomic/syncthingandroid/service/SyncthingService.java +++ b/app/src/main/java/com/nutomic/syncthingandroid/service/SyncthingService.java @@ -95,6 +95,13 @@ public class SyncthingService extends Service { public static final String ACTION_OVERRIDE_CHANGES = "com.github.catfriend1.syncthingandroid.SyncthingService.OVERRIDE_CHANGES"; + /** + * Intent action to revert local folder changes. + */ + public static final String ACTION_REVERT_LOCAL_CHANGES = + "com.github.catfriend1.syncthingandroid.SyncthingService.REVERT_LOCAL_CHANGES"; + + /** * Extra used together with ACTION_IGNORE_DEVICE, ACTION_IGNORE_FOLDER. */ @@ -349,6 +356,8 @@ public class SyncthingService extends Service { mNotificationHandler.cancelConsentNotification(intent.getIntExtra(EXTRA_NOTIFICATION_ID, 0)); } else if (ACTION_OVERRIDE_CHANGES.equals(intent.getAction()) && mCurrentState == State.ACTIVE) { mRestApi.overrideChanges(intent.getStringExtra(EXTRA_FOLDER_ID)); + } else if (ACTION_REVERT_LOCAL_CHANGES.equals(intent.getAction()) && mCurrentState == State.ACTIVE) { + mRestApi.revertLocalChanges(intent.getStringExtra(EXTRA_FOLDER_ID)); } return START_STICKY; } diff --git a/app/src/main/java/com/nutomic/syncthingandroid/views/FoldersAdapter.java b/app/src/main/java/com/nutomic/syncthingandroid/views/FoldersAdapter.java index 1ab46ab3..b04143b7 100644 --- a/app/src/main/java/com/nutomic/syncthingandroid/views/FoldersAdapter.java +++ b/app/src/main/java/com/nutomic/syncthingandroid/views/FoldersAdapter.java @@ -55,6 +55,7 @@ public class FoldersAdapter extends ArrayAdapter { binding.label.setText(TextUtils.isEmpty(folder.label) ? folder.id : folder.label); binding.directory.setText(folder.path); binding.override.setOnClickListener(view -> { onClickOverride(view, folder); } ); + binding.revert.setOnClickListener(view -> { onClickRevert(view, folder); } ); binding.openFolder.setOnClickListener(view -> { FileUtils.openFolder(mContext, folder.path); } ); // Update folder icon. @@ -79,6 +80,7 @@ public class FoldersAdapter extends ArrayAdapter { if (folderStatus == null) { binding.items.setVisibility(GONE); binding.override.setVisibility(GONE); + binding.revert.setVisibility(GONE); binding.size.setVisibility(GONE); binding.state.setVisibility(GONE); setTextOrHide(binding.invalid, folder.invalid); @@ -89,6 +91,10 @@ public class FoldersAdapter extends ArrayAdapter { boolean outOfSync = folderStatus.state.equals("idle") && neededItems > 0; boolean overrideButtonVisible = folder.type.equals(Constants.FOLDER_TYPE_SEND_ONLY) && outOfSync; binding.override.setVisibility(overrideButtonVisible ? VISIBLE : GONE); + + boolean revertButtonVisible = folder.type.equals(Constants.FOLDER_TYPE_RECEIVE_ONLY) && (folderStatus.receiveOnlyTotalItems > 0); + binding.revert.setVisibility(revertButtonVisible ? VISIBLE : GONE); + binding.state.setVisibility(VISIBLE); if (outOfSync) { binding.state.setText(mContext.getString(R.string.status_outofsync)); @@ -204,4 +210,19 @@ public class FoldersAdapter extends ArrayAdapter { confirmDialog.show(); } + private void onClickRevert(View view, Folder folder) { + AlertDialog.Builder confirmDialog = new AlertDialog.Builder(mContext) + .setTitle(R.string.revert_local_changes) + .setMessage(R.string.revert_local_changes_question) + .setPositiveButton(android.R.string.ok, (dialogInterface, i) -> { + // Send "Revert local changes" through our service to the REST API. + Intent intent = new Intent(mContext, SyncthingService.class) + .putExtra(SyncthingService.EXTRA_FOLDER_ID, folder.id); + intent.setAction(SyncthingService.ACTION_REVERT_LOCAL_CHANGES); + mContext.startService(intent); + }) + .setNegativeButton(android.R.string.no, (dialogInterface, i) -> {}); + confirmDialog.show(); + } + } diff --git a/app/src/main/res/drawable-hdpi/ic_cloud_download_red_24.png b/app/src/main/res/drawable-hdpi/ic_cloud_download_red_24.png new file mode 100644 index 0000000000000000000000000000000000000000..487a76cc1c04612238f241b16202f11d58a31901 GIT binary patch literal 1219 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-ldpi/ic_cloud_download_red_24.png b/app/src/main/res/drawable-ldpi/ic_cloud_download_red_24.png new file mode 100644 index 0000000000000000000000000000000000000000..58d815b3806c3d85053f44d95c595c3cd566fd09 GIT binary patch literal 600 zcmV-e0;m0nP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0qsddK~y+T-I2{p z8$lR{XWrS(B#J3$T9IBnv>vLMAe5S%no_}o1ur>B{R6ysEO=?Le?%|ssi#7rhn{V1 zlvI!wsR+R)APNd9noBghJMZpJXNDp8k(Qo)V3~J*y!*@-xw%j~UgBe^#762n&sikq zK*|v!rRt==gzLULPNzQKCf+jGwojVWqN2cODE!6!FrfBZK-0=f%S2=7Eh2YuW7GOb~o?qxim!3}M1O03@Vt z=WTRjM&R;~v9SRgk+t!0B@yMT5)GBImsUqdU#0xub*DQ*#(p2Cl26oYLa!3L@pXwt zBzc*tl~R44_ch`9`HnIGv*W)>BF6l)Tj|H<>1vacTpS)QBoJpHmP156uj%>+(s4ZL muyu5th2f2jbsOJ22>Anig4n?|ESF*c0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0!B$hK~y+T-BL|! z6G0e$XZ9nz38rb9LqXC88jF`wB#=NATIsbn8xKLO7r`omp*Meo7qy7D9?Zes3QDVo zQVK1h_QR{9f}|GHRP(*b?#{07Og6SWK&x z%A8M$mw!zY#=vDZFf`&XI4%&ILCCZ+mkNcap8OP|qJxEn0L$ke=*{L0 z%`lRD0SA+1r{ve~6H4hoz42VKZK1bi$@~$CT%O$A{3e75@*$B>6rk^e&HAJ`2JXyz zZt_#t=CAJUz2w6DmBhV)wy`K#XeJRT_l0tmQ0Upz+S)dsr$D4f!3LV}Dj3F!CN?Ed z#7ep*9I5@?7bRVvXP6V9tiM{z3>_V99ZXET!mWvvjb2=mjaJyx1CeE@27@_fS?_Me zVz6|0SmykCDixDWlR1Has$2G$YulKa4Vu{=`#d`8QmtXcg#+G-Xffn)t(F;V8taj2 z{f;0Je9XE2T0H|!CqogKdyX~~`J-UFe*zxO@xuNuunL#wi0HHcie(K_%cti+ zl051xFpc5u@$o7C;^#2ux{JFYgg`@8H^|oPtRDFC^-a)dUhmu(pYE0SKom~^e+#gD zs$J}hBn9<7o7InZb{=Z2)?Exf4wzF1+|WC+H|Ae1Rskw1ecDDl9DbZ!UELRw^9X=H XrGoo4=@03W00000NkvXXu0mjfra(QJ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_cloud_download_red_24.png b/app/src/main/res/drawable-mdpi/ic_cloud_download_red_24.png new file mode 100644 index 0000000000000000000000000000000000000000..5664b13405d5ae6f905a1a00bcc66193c43bfc4f GIT binary patch literal 673 zcmV;S0$%-zP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0yarRK~zXf?UcW7 z(?Ar*?TgPYa*`^zpjI%j@S_!j+e%F(A~_>eS(rNT4@6>UC4|JlP{aV0I>5jm!G=_% zATd-~>P9U}D}*qD5kb{fBFfoq{G&enoNFN1P9iaM>1Xl1?|Xjl?%lJwGfo|zJrmi{ zw95h^_fxK0O7Z*^(2gnnc8u{mlF7W9tyaH>feG|1@G+lX7_zMAg6#}3sS8iUEjOE8 zn$Y!SCPhdr@M&h|*|}ehNBxdSgMh=_`IVcsjfYI?BKH05LZOt|+gnAH34QQ`EKNnZ zJE`k$nAD+DU`^8m<;X6JPV1iFxN6YzuC{mxu~i$v_t~nAo0g4h_4+t7JA?&lnl_pv zq#_VgjXM$~zxu`Ka(%sigZ^CvTD3nmHkq$hx0w`zVCTclW(6lC9~3@lXYSzOy)iw# zTECSqGMPh)ZI>m}Qknf$-`;#1HNwygQk8-s`Vust3hJsW7DFNpaU zL@9@V{CxbOP`HgS$0hFmP?i^=_v6OrNEXn*2Qf5e7@>$v$b*>re@L6wi=C;d1!hJ7 zAH?un{5%WPpG8hE_RNj|yGSZ>k{n`^pg#4GD~hj~9ZOu1L6XB4;H6SqJdEijVs2tW zdQOrbT&kIt7h&B$c{`q5yl^MHg4*2N=$Ew(#$n5R1_ON7PeZF^itLJw@g0cRN=VaXL9A4k8YiC00000NkvXX Hu0mjfJ@`0M literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_cloud_upload_red_24.png b/app/src/main/res/drawable-mdpi/ic_cloud_upload_red_24.png new file mode 100644 index 0000000000000000000000000000000000000000..f46e57be96cd9effa87eb7147bf4ebfc21bd96e9 GIT binary patch literal 882 zcmV-&1C9KNP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0|!Y&K~zXf?NrN7 z6Hyrc=X7rLLMsL^L}j5%OzJ{NF-jLGlKqz12EgJ zS92oD=CLNPJ*`&FKy@Jg8Q|^XCri=#(Q?f7QoiS+vIIT}@a)S9bRx`bB$LlGJ3DLK zU;u^&*e?`br0OTj?5vA7?lu6K{JA^23g4r#Qf6;&V32_Ub`}=$lgGzp&GW$P+Q=b? z61YsLN3c%XtYG< zDa%?_u(JNT8u3^qeQ;m|*K_ay8@a{Q9rtHB)@-I(&jyBU-*M1^$lQ)Zpq?Bp<$^X; z=jMtx8qHPJrMcipkT|*yhch$xjrH{!>4e|`YO}NDQPa#z16mzs9y$*}L8uZLE8(ix zzD^?X`D|pQ)*TyL$!u=&c1gSQ^TnxVYnAa{hvO5JGC#u1jUfXRm9%&zST;zE0aH}y z_&(HA$x;rtOWL2$l&}9X^S(oq!=Z7Ch{fPbBF>fQItA|cI%?38Izdx9bBI9xCeRv zw2hp8v6zggssBvCJ8qh<>!zh?6)T=v$!@**>woD#t^xqR0TQxK(;__EWB>pF07*qo IM6N<$g3$z-=l}o! literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_cloud_download_red_24.png b/app/src/main/res/drawable-xhdpi/ic_cloud_download_red_24.png new file mode 100644 index 0000000000000000000000000000000000000000..15e00f2ae252cfc22d29a678728cf1520cd770e2 GIT binary patch literal 1563 zcmV+$2ITpPP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1+Ym(K~!i%?U?;e z+g237udib#SxN|9DJg3iAJPPq)K_x$ zL{;^lHZ4N!1S)7!OE*nx*oFihG#|u?9VhnAy>vQfs_uO-h z8Z>CopuztdMnBhuXC9B+`u43SCCe@giydZ!Tqv!e6pJ?`j3SIAKS^|S2fq&d7}TrO zOkE6E8~t{gi-y0qNm8dNorYE!q$(;rQQ#6Iaz$RnU^id7e zWWe&+nA;wS_?kd*MoQ^Y(x?i*qfKY8HB%@&hhiKTN}fMIGq|*LPnT9q)dsA&-LuW% z=$t7fYK^2bR8CaankB~(h4uUFKf|$9Dzhv)Xm4Nm^5Mf7DyR_p?n+r59`?2Tv*%^i zqY74s3ht)BIox{2Kd`d$ohCI7*3X7n8y%fJ6OY$Lc><#Nnh*RIX$V#8E4 z0;^Z9xSO`N9`hNPoVu(YkhaJu$Si{ny1FO(A3QKTCk&6koB4T%d2i2W&M99%6X=|P zGnY{jxBd70`s}Pjds3c~TKGmr9A9vpmq{c>ENR8{Q7qDlz<`rP>?G>u}_OikO_$l~1^?4|+lr}(us6r-YF-SY+j25kq14DR?n)%Sh7wcWR zs3Zk%S{omqusouhwk1jyJF|f zfuG05rkc067f&Tb2a~6~F$0e4`J)&q!@(+U`QvxDep`}UYbzro6RqL!qA95_OjRJ7 zOsH@3Rmtj`eV?lql5QLasjV_7W#%Fgj@#fYmW@nzcVOW5?V_VWU$zK7|Cu1XIVDLB zMU?1+YN(3=Sy&9Y6Xa2lJ7ple3OpA~d~)IDP#}qxfctn!ELAAJ)RlZbu!YWmsr>vWQ1o?$!?x$_E@ zf|MgGK?<9|=UM9axdXyzIY^nqI^>$A;a6+bh!zYT3ETcVAHDnKtN!(-nBYQXVsjSK zH)KYJsW=K ze*y|nK@}_y3{0I3NBpEMqtHpN+iAj#3m=%c4YGgL^1;gBp%=7~sN4urr%e?7e3{&; z5N!lh=yTp#qnlu1HO2RNK!mv~X=m&(V zO@NVr0MI6ghDIXm^W_q{bW7+P*gNO?eQo^OgnfH=v68f+6f(HwuFd8p*G?Ff+T11|vT}!ex-SpizaPxg zb@l4ispj2XKQE_{D#^N(K&L(Z8BaPOq0~1om4AXE^$zRk9uHS4Qmj@abX-`txU@t+ zgcWo)842sop3fSK(p{NGeuF0uyo(s0_ezFtHDhh9)BR7M-qMAI1`z0`9`*<}LGW^- zh%hWzbW;y;S2eO3sRg~S7)bW$2L$N&49BB5&xK^?xtad=zM~d3APX_1R}?3BmhqU< zYNtg}T#6v*Pfr%s(Tom6F^D*GNbTtg^xwHt^#|Yv4H`6P@LvU?e*ptIVJxUe5=8(2 N002ovPDHLkV1mHv-VFc% literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_cloud_upload_red_24.png b/app/src/main/res/drawable-xhdpi/ic_cloud_upload_red_24.png new file mode 100644 index 0000000000000000000000000000000000000000..c077a67f8949f11864a45b6e5ceee7843b56de3f GIT binary patch literal 2503 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_cloud_upload_red_24.png b/app/src/main/res/drawable-xxhdpi/ic_cloud_upload_red_24.png new file mode 100644 index 0000000000000000000000000000000000000000..0ea4678dc4f8e122f5907918af428c3597310a7b GIT binary patch literal 4725 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 DbI$z{ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_cloud_download_red_24.png b/app/src/main/res/drawable-xxxhdpi/ic_cloud_download_red_24.png new file mode 100644 index 0000000000000000000000000000000000000000..07f5e272fe4127672e69196ba23079e8f13c21f4 GIT binary patch literal 4343 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_cloud_upload_red_24.png b/app/src/main/res/drawable-xxxhdpi/ic_cloud_upload_red_24.png new file mode 100644 index 0000000000000000000000000000000000000000..4546eb437fde60ab3d8f792c1e1d821add26f5a4 GIT binary patch literal 6267 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

OnAGM*O?ZShJYx~V`(xz~+>>zN{M zamL~MXL)!R!kJ2?<=S7~>$TX9WwGecr$6I5M~=t{G=V!i{ND=Z*D#Pe+!L8b0!_Nj z_!p1SGWQcA{u9;;!%FLK?K+Zw@?HvLQqaY;T#tTqg?-E4uLVo|7RY-tT@Mp*$sS>3 zOY===&gGlo;Y~6NFF}y;6$UP_m^_kM{=o2q4?ZZ{e*Y1#<#u!|?1bZwKI)!7cu4w~ zxGXHlXf`Wz{8y7PLl^}?V!5Fo0kPpkO#c@IfAVjc;%A)tT;2p2VTacZEe5TP02Tqc zk^Zy^3g#euq#LpuRU9u5F-LitqEeN7g=5rC&SOCE% z!Ft?MqfpRry-`!@oD z7HH=t8&)&K -