diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 41cd1894..c47bdfa8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -125,6 +125,14 @@ + + + startActivityForResult(FolderPickerActivity.createIntent(this, mFolder.path, null), FolderPickerActivity.DIRECTORY_REQUEST_CODE)); + findViewById(R.id.pullOrderContainer).setOnClickListener(v -> showPullOrderDialog()); findViewById(R.id.versioningContainer).setOnClickListener(v -> showVersioningDialog()); mEditIgnores.setOnClickListener(v -> editIgnores()); @@ -213,6 +219,12 @@ public class FolderActivity extends SyncthingActivity } } + private void showPullOrderDialog() { + Intent intent = new Intent(this, PullOrderDialogActivity.class); + intent.putExtra(PullOrderDialogActivity.EXTRA_PULL_ORDER, mFolder.order); + startActivityForResult(intent, PULL_ORDER_DIALOG_REQUEST); + } + private void showVersioningDialog() { Intent intent = new Intent(this, VersioningDialogActivity.class); intent.putExtras(getVersioningBundle()); @@ -336,6 +348,7 @@ public class FolderActivity extends SyncthingActivity mLabelView.setText(mFolder.label); mIdView.setText(mFolder.id); mPathView.setText(mFolder.path); + updatePullOrderDescription(); updateVersioningDescription(); mFolderMasterView.setChecked(Objects.equal(mFolder.type, "readonly")); mFolderFileWatcher.setChecked(mFolder.fsWatcherEnabled); @@ -430,6 +443,10 @@ public class FolderActivity extends SyncthingActivity mEditIgnores.setEnabled(true); } else if (resultCode == Activity.RESULT_OK && requestCode == FILE_VERSIONING_DIALOG_REQUEST) { updateVersioning(data.getExtras()); + } else if (resultCode == Activity.RESULT_OK && requestCode == PULL_ORDER_DIALOG_REQUEST) { + mFolder.order = data.getStringExtra(PullOrderDialogActivity.EXTRA_RESULT_PULL_ORDER); + updatePullOrderDescription(); + mFolderNeedsToUpdate = true; } } @@ -546,6 +563,50 @@ public class FolderActivity extends SyncthingActivity mFolderNeedsToUpdate = true; } + private void updatePullOrderDescription() { + if (mFolder == null) { + return; + } + + if (TextUtils.isEmpty(mFolder.order)) { + setPullOrderDescription(getString(R.string.pull_order_type_random), + getString(R.string.pull_order_type_random_description)); + return; + } + + switch (mFolder.order) { + case "random": + setPullOrderDescription(getString(R.string.pull_order_type_random), + getString(R.string.pull_order_type_random_description)); + break; + case "alphabetic": + setPullOrderDescription(getString(R.string.pull_order_type_alphabetic), + getString(R.string.pull_order_type_alphabetic_description)); + break; + case "smallestFirst": + setPullOrderDescription(getString(R.string.pull_order_type_smallestFirst), + getString(R.string.pull_order_type_smallestFirst_description)); + break; + case "largestFirst": + setPullOrderDescription(getString(R.string.pull_order_type_largestFirst), + getString(R.string.pull_order_type_largestFirst_description)); + break; + case "oldestFirst": + setPullOrderDescription(getString(R.string.pull_order_type_oldestFirst), + getString(R.string.pull_order_type_oldestFirst_description)); + break; + case "newestFirst": + setPullOrderDescription(getString(R.string.pull_order_type_newestFirst), + getString(R.string.pull_order_type_newestFirst_description)); + break; + } + } + + private void setPullOrderDescription(String type, String description) { + mPullOrderTypeView.setText(type); + mPullOrderDescriptionView.setText(description); + } + private void updateVersioningDescription() { if (mFolder == null){ return; diff --git a/app/src/main/java/com/nutomic/syncthingandroid/activities/PullOrderDialogActivity.java b/app/src/main/java/com/nutomic/syncthingandroid/activities/PullOrderDialogActivity.java new file mode 100644 index 00000000..880991c5 --- /dev/null +++ b/app/src/main/java/com/nutomic/syncthingandroid/activities/PullOrderDialogActivity.java @@ -0,0 +1,80 @@ +package com.nutomic.syncthingandroid.activities; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.AdapterView; +import android.widget.Button; +import android.widget.Spinner; +import com.nutomic.syncthingandroid.R; + +import java.util.Arrays; +import java.util.List; + +public class PullOrderDialogActivity extends AppCompatActivity { + + public static final String EXTRA_PULL_ORDER = "com.nutomic.syncthinandroid.activities.PullOrderDialogActivity.PULL_ORDER"; + public static final String EXTRA_RESULT_PULL_ORDER = "com.nutomic.syncthinandroid.activities.PullOrderDialogActivity.EXTRA_RESULT_PULL_ORDER"; + + private String selectedType; + + private static final List mTypes = Arrays.asList( + "random", + "alphabetic", + "smallestFirst", + "largestFirst", + "oldestFirst", + "newestFirst" + ); + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.fragment_pullorder_dialog); + if (savedInstanceState == null) { + selectedType = getIntent().getStringExtra(EXTRA_PULL_ORDER); + } + initiateFinishBtn(); + initiateSpinner(); + } + + private void initiateFinishBtn() { + Button finishBtn = findViewById(R.id.finish_btn); + finishBtn.setOnClickListener(v -> { + saveConfiguration(); + finish(); + }); + } + + private void saveConfiguration() { + Intent intent = new Intent(); + intent.putExtra(EXTRA_RESULT_PULL_ORDER, selectedType); + setResult(Activity.RESULT_OK, intent); + } + + private void initiateSpinner() { + Spinner pullOrderTypeSpinner = findViewById(R.id.pullOrderTypeSpinner); + pullOrderTypeSpinner.setSelection(mTypes.indexOf(selectedType)); + pullOrderTypeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + if (position != mTypes.indexOf(selectedType)) { + selectedType = mTypes.get(position); + } + } + + @Override + public void onNothingSelected(AdapterView parent) { + // This is not allowed. + } + }); + } + + @Override + public void onBackPressed() { + saveConfiguration(); + super.onBackPressed(); + } +} diff --git a/app/src/main/res/layout/fragment_folder.xml b/app/src/main/res/layout/fragment_folder.xml index 5a2b906d..03c24ce3 100644 --- a/app/src/main/res/layout/fragment_folder.xml +++ b/app/src/main/res/layout/fragment_folder.xml @@ -110,6 +110,44 @@ android:drawableStart="@drawable/ic_folder_black_24dp" android:text="@string/folder_pause" /> + + + + + + + + + + + + + + + + + + + +