30
30
import com .nutomic .syncthingandroid .databinding .FragmentFolderBinding ;
31
31
import com .nutomic .syncthingandroid .model .Device ;
32
32
import com .nutomic .syncthingandroid .model .Folder ;
33
+ import com .nutomic .syncthingandroid .model .FolderStatus ;
33
34
import com .nutomic .syncthingandroid .service .Constants ;
34
35
import com .nutomic .syncthingandroid .service .RestApi ;
35
36
import com .nutomic .syncthingandroid .service .SyncthingService ;
@@ -65,13 +66,16 @@ public class FolderActivity extends SyncthingActivity
65
66
"com.nutomic.syncthingandroid.activities.FolderActivity.FOLDER_ID" ;
66
67
public static final String EXTRA_FOLDER_LABEL =
67
68
"com.nutomic.syncthingandroid.activities.FolderActivity.FOLDER_LABEL" ;
69
+ public static final String EXTRA_FOLDER_OVERRIDABLE_CHANGES =
70
+ "com.nutomic.syncthingandroid.activities.FolderActivity.FOLDER_OVERRIDABLE_CHANGES" ;
68
71
public static final String EXTRA_DEVICE_ID =
69
72
"com.nutomic.syncthingandroid.activities.FolderActivity.DEVICE_ID" ;
70
73
71
74
private static final String TAG = "FolderActivity" ;
72
75
73
- private static final String IS_SHOWING_DELETE_DIALOG = "DELETE_FOLDER_DIALOG_STATE" ;
76
+ private static final String IS_SHOW_DELETE_DIALOG = "DELETE_FOLDER_DIALOG_STATE" ;
74
77
private static final String IS_SHOW_DISCARD_DIALOG = "DISCARD_FOLDER_DIALOG_STATE" ;
78
+ private static final String IS_SHOW_OVERRIDE_CHANGES_DIALOG = "OVERRIDE_REMOTES_DIALOG_STATE" ;
75
79
76
80
private static final int FILE_VERSIONING_DIALOG_REQUEST = 3454 ;
77
81
private static final int PULL_ORDER_DIALOG_REQUEST = 3455 ;
@@ -93,6 +97,7 @@ public class FolderActivity extends SyncthingActivity
93
97
94
98
private Dialog mDeleteDialog ;
95
99
private Dialog mDiscardDialog ;
100
+ private Dialog mOverrideChangesDialog ;
96
101
97
102
private Folder .Versioning mVersioning ;
98
103
@@ -148,6 +153,7 @@ public void onCreate(Bundle savedInstanceState) {
148
153
findViewById (R .id .pullOrderContainer ).setOnClickListener (v -> showPullOrderDialog ());
149
154
findViewById (R .id .versioningContainer ).setOnClickListener (v -> showVersioningDialog ());
150
155
binding .editIgnores .setOnClickListener (v -> editIgnores ());
156
+ binding .overrideChangesContainer .setOnClickListener (v -> showOverrideChangesDialog ());
151
157
152
158
if (mIsCreateMode ) {
153
159
if (savedInstanceState != null ) {
@@ -162,26 +168,39 @@ public void onCreate(Bundle savedInstanceState) {
162
168
// Open keyboard on label view in edit mode.
163
169
binding .label .requestFocus ();
164
170
binding .editIgnores .setEnabled (false );
171
+ setOverrideChangesContainerEnabled (false );
165
172
}
166
173
else {
167
174
// Prepare edit mode.
168
175
binding .id .clearFocus ();
169
176
binding .id .setFocusable (false );
170
177
binding .id .setEnabled (false );
171
178
binding .directoryTextView .setEnabled (false );
179
+
180
+ // overridable remotes button
181
+ setOverrideChangesContainerEnabled (
182
+ getIntent ().getBooleanExtra (EXTRA_FOLDER_OVERRIDABLE_CHANGES , false )
183
+ );
172
184
}
173
185
174
186
if (savedInstanceState != null ){
175
- if (savedInstanceState .getBoolean (IS_SHOWING_DELETE_DIALOG )){
187
+ if (savedInstanceState .getBoolean (IS_SHOW_DELETE_DIALOG )){
176
188
showDeleteDialog ();
177
189
}
178
190
}
179
191
180
192
if (savedInstanceState != null ){
181
- if (savedInstanceState .getBoolean (IS_SHOWING_DELETE_DIALOG )){
193
+ if (savedInstanceState .getBoolean (IS_SHOW_DELETE_DIALOG )){
182
194
showDeleteDialog ();
183
195
}
184
196
}
197
+
198
+ if (savedInstanceState != null ) {
199
+ if (savedInstanceState .getBoolean (IS_SHOW_OVERRIDE_CHANGES_DIALOG )){
200
+ showOverrideChangesDialog ();
201
+ }
202
+ }
203
+
185
204
}
186
205
187
206
/**
@@ -304,12 +323,18 @@ public void onPause() {
304
323
@ Override
305
324
protected void onSaveInstanceState (Bundle outState ) {
306
325
super .onSaveInstanceState (outState );
307
- outState .putBoolean (IS_SHOWING_DELETE_DIALOG , mDeleteDialog != null && mDeleteDialog .isShowing ());
326
+ outState .putBoolean (IS_SHOW_DELETE_DIALOG , mDeleteDialog != null && mDeleteDialog .isShowing ());
308
327
Util .dismissDialogSafe (mDeleteDialog , this );
309
328
329
+ outState .putBoolean (IS_SHOW_OVERRIDE_CHANGES_DIALOG , mOverrideChangesDialog != null && mOverrideChangesDialog .isShowing ());
330
+ Util .dismissDialogSafe (mOverrideChangesDialog , this );
331
+
310
332
if (mIsCreateMode ){
311
333
outState .putBoolean (IS_SHOW_DISCARD_DIALOG , mDiscardDialog != null && mDiscardDialog .isShowing ());
312
334
Util .dismissDialogSafe (mDiscardDialog , this );
335
+
336
+ outState .putBoolean (IS_SHOW_OVERRIDE_CHANGES_DIALOG , mOverrideChangesDialog != null && mOverrideChangesDialog .isShowing ());
337
+ Util .dismissDialogSafe (mOverrideChangesDialog , this );
313
338
}
314
339
}
315
340
@@ -778,4 +803,33 @@ private void setVersioningDescription(String type, String description) {
778
803
binding .versioningType .setText (type );
779
804
binding .versioningDescription .setText (description );
780
805
}
806
+
807
+ private void setOverrideChangesContainerEnabled (boolean state ) {
808
+ binding .overrideChangesContainer .setEnabled (state );
809
+ for ( int i = 0 ; i < binding .overrideChangesContainer .getChildCount (); i ++ ) {
810
+ binding .overrideChangesContainer .getChildAt (i ).setEnabled (state );
811
+ }
812
+ }
813
+
814
+ private void showOverrideChangesDialog (){
815
+ mOverrideChangesDialog = createOverrideChangesDialog ();
816
+ mOverrideChangesDialog .show ();
817
+ }
818
+
819
+ private Dialog createOverrideChangesDialog (){
820
+ return Util .getAlertDialogBuilder (this )
821
+ .setIcon (R .drawable .outline_arrow_circle_up_24 )
822
+ .setTitle (R .string .override_changes )
823
+ .setMessage (R .string .override_changes_are_you_sure )
824
+ .setNegativeButton (android .R .string .cancel , null )
825
+ .setPositiveButton (android .R .string .yes , (dialogInterface , i ) -> {
826
+ RestApi restApi = getApi ();
827
+ if (restApi != null ) {
828
+ restApi .overrideChanges (mFolder .id );
829
+ mFolderNeedsToUpdate = true ;
830
+ }
831
+ finish ();
832
+ })
833
+ .create ();
834
+ }
781
835
}
0 commit comments