Эх сурвалжийг харах

Migrate SyncedFolder dialog to MaterialAlertDialog

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
Andy Scherzinger 2 жил өмнө
parent
commit
a92bc8529a

+ 83 - 78
app/src/main/java/com/owncloud/android/ui/dialog/SyncedFolderPreferencesDialogFragment.java

@@ -35,8 +35,11 @@ import android.view.ViewGroup;
 import android.widget.TextView;
 
 import com.google.android.material.button.MaterialButton;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
 import com.nextcloud.client.di.Injectable;
 import com.owncloud.android.R;
+import com.owncloud.android.databinding.SortingOrderFragmentBinding;
+import com.owncloud.android.databinding.SyncedFoldersSettingsLayoutBinding;
 import com.owncloud.android.datamodel.MediaFolderType;
 import com.owncloud.android.datamodel.SyncedFolderDisplayItem;
 import com.owncloud.android.files.services.NameCollisionPolicy;
@@ -80,7 +83,6 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
 
     @Inject ViewThemeUtils viewThemeUtils;
 
-    protected View mView;
     private CharSequence[] mUploadBehaviorItemStrings;
     private CharSequence[] mNameCollisionPolicyItemStrings;
     private SwitchCompat mEnabledSwitch;
@@ -100,6 +102,7 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
     private boolean behaviourDialogShown;
     private boolean nameCollisionPolicyDialogShown;
     private AlertDialog behaviourDialog;
+    private SyncedFoldersSettingsLayoutBinding binding;
 
     public static SyncedFolderPreferencesDialogFragment newInstance(SyncedFolderDisplayItem syncedFolder, int section) {
         if (syncedFolder == null) {
@@ -131,82 +134,68 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
         // keep the state of the fragment on configuration changes
         setRetainInstance(true);
 
-        mView = null;
+        binding = null;
 
         mSyncedFolder = getArguments().getParcelable(SYNCED_FOLDER_PARCELABLE);
         mUploadBehaviorItemStrings = getResources().getTextArray(R.array.pref_behaviour_entries);
         mNameCollisionPolicyItemStrings = getResources().getTextArray(R.array.pref_name_collision_policy_entries);
     }
 
-    @Override
-    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-        Log_OC.d(TAG, "onCreateView, savedInstanceState is " + savedInstanceState);
-
-        mView = inflater.inflate(R.layout.synced_folders_settings_layout, container, false);
-
-        setupDialogElements(mView);
-        setupListeners(mView);
-
-        return mView;
-    }
-
     /**
      * find all relevant UI elements and set their values.
      *
-     * @param view the parent view
+     * @param binding the parent binding
      */
-    private void setupDialogElements(View view) {
+    private void setupDialogElements(SyncedFoldersSettingsLayoutBinding binding) {
         if (mSyncedFolder.getType().getId() > MediaFolderType.CUSTOM.getId()) {
             // hide local folder chooser and delete for non-custom folders
-            view.findViewById(R.id.local_folder_container).setVisibility(View.GONE);
-            view.findViewById(R.id.delete).setVisibility(View.GONE);
+            binding.localFolderContainer.setVisibility(View.GONE);
+            binding.delete.setVisibility(View.GONE);
         } else if (mSyncedFolder.getId() <= UNPERSISTED_ID) {
             // Hide delete/enabled for unpersisted custom folders
-            view.findViewById(R.id.delete).setVisibility(View.GONE);
-            view.findViewById(R.id.sync_enabled).setVisibility(View.GONE);
+            binding.delete.setVisibility(View.GONE);
+            binding.syncEnabled.setVisibility(View.GONE);
 
             // auto set custom folder to enabled
             mSyncedFolder.setEnabled(true);
 
             // switch text to create headline
-            ((TextView) view.findViewById(R.id.synced_folders_settings_title))
-                .setText(R.string.autoupload_create_new_custom_folder);
+            binding.syncedFoldersSettingsTitle.setText(R.string.autoupload_create_new_custom_folder);
 
             // disable save button
-            view.findViewById(R.id.save).setEnabled(false);
+            binding.save.setEnabled(false);
         } else {
-            view.findViewById(R.id.local_folder_container).setVisibility(View.GONE);
+            binding.localFolderContainer.setVisibility(View.GONE);
         }
 
         // find/saves UI elements
-        mEnabledSwitch = view.findViewById(R.id.sync_enabled);
+        mEnabledSwitch = binding.syncEnabled;
         viewThemeUtils.androidx.colorSwitchCompat(mEnabledSwitch);
 
-        mLocalFolderPath = view.findViewById(R.id.synced_folders_settings_local_folder_path);
+        mLocalFolderPath = binding.syncedFoldersSettingsLocalFolderPath;
 
-        mLocalFolderSummary = view.findViewById(R.id.local_folder_summary);
-        mRemoteFolderSummary = view.findViewById(R.id.remote_folder_summary);
+        mLocalFolderSummary = binding.localFolderSummary;
+        mRemoteFolderSummary = binding.remoteFolderSummary;
 
-        mUploadOnWifiCheckbox = view.findViewById(R.id.setting_instant_upload_on_wifi_checkbox);
+        mUploadOnWifiCheckbox = binding.settingInstantUploadOnWifiCheckbox;
 
-        mUploadOnChargingCheckbox = view.findViewById(R.id.setting_instant_upload_on_charging_checkbox);
+        mUploadOnChargingCheckbox = binding.settingInstantUploadOnChargingCheckbox;
 
-        mUploadExistingCheckbox = view.findViewById(R.id.setting_instant_upload_existing_checkbox);
+        mUploadExistingCheckbox = binding.settingInstantUploadExistingCheckbox;
 
-        mUploadUseSubfoldersCheckbox = view.findViewById(
-            R.id.setting_instant_upload_path_use_subfolders_checkbox);
+        mUploadUseSubfoldersCheckbox = binding.settingInstantUploadPathUseSubfoldersCheckbox;
 
         viewThemeUtils.platform.themeCheckbox(mUploadOnWifiCheckbox,
                                               mUploadOnChargingCheckbox,
                                               mUploadExistingCheckbox,
                                               mUploadUseSubfoldersCheckbox);
 
-        mUploadBehaviorSummary = view.findViewById(R.id.setting_instant_behaviour_summary);
+        mUploadBehaviorSummary = binding.settingInstantBehaviourSummary;
 
-        mNameCollisionPolicySummary = view.findViewById(R.id.setting_instant_name_collision_policy_summary);
+        mNameCollisionPolicySummary = binding.settingInstantNameCollisionPolicySummary;
 
-        mCancel = view.findViewById(R.id.cancel);
-        mSave = view.findViewById(R.id.save);
+        mCancel = binding.cancel;
+        mSave = binding.save;
 
         viewThemeUtils.platform.colorTextButtons(mCancel, mSave);
 
@@ -257,7 +246,7 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
         mSyncedFolder.setEnabled(enabled);
         mEnabledSwitch.setChecked(enabled);
 
-        setupViews(mView, enabled);
+        setupViews(binding, enabled);
     }
 
     /**
@@ -295,9 +284,9 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
 
     private void checkAndUpdateSaveButtonState() {
         if (mSyncedFolder.getLocalPath() != null && mSyncedFolder.getRemotePath() != null) {
-            mView.findViewById(R.id.save).setEnabled(true);
+            binding.save.setEnabled(true);
         } else {
-            mView.findViewById(R.id.save).setEnabled(false);
+            binding.save.setEnabled(false);
         }
 
         checkWritableFolder();
@@ -305,18 +294,18 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
 
     private void checkWritableFolder() {
         if (!mSyncedFolder.isEnabled()) {
-            mView.findViewById(R.id.setting_instant_behaviour_container).setEnabled(false);
-            mView.findViewById(R.id.setting_instant_behaviour_container).setAlpha(alphaDisabled);
+            binding.settingInstantBehaviourContainer.setEnabled(false);
+            binding.settingInstantBehaviourContainer.setAlpha(alphaDisabled);
             return;
         }
 
         if (mSyncedFolder.getLocalPath() != null && new File(mSyncedFolder.getLocalPath()).canWrite()) {
-            mView.findViewById(R.id.setting_instant_behaviour_container).setEnabled(true);
-            mView.findViewById(R.id.setting_instant_behaviour_container).setAlpha(alphaEnabled);
+            binding.settingInstantBehaviourContainer.setEnabled(true);
+            binding.settingInstantBehaviourContainer.setAlpha(alphaEnabled);
             mUploadBehaviorSummary.setText(mUploadBehaviorItemStrings[mSyncedFolder.getUploadActionInteger()]);
         } else {
-            mView.findViewById(R.id.setting_instant_behaviour_container).setEnabled(false);
-            mView.findViewById(R.id.setting_instant_behaviour_container).setAlpha(alphaDisabled);
+            binding.settingInstantBehaviourContainer.setEnabled(false);
+            binding.settingInstantBehaviourContainer.setAlpha(alphaDisabled);
 
             mSyncedFolder.setUploadAction(
                 getResources().getTextArray(R.array.pref_behaviour_entryValues)[0].toString());
@@ -325,33 +314,33 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
         }
     }
 
-    private void setupViews(View view, boolean enable) {
+    private void setupViews(SyncedFoldersSettingsLayoutBinding binding, boolean enable) {
         float alpha;
         if (enable) {
             alpha = alphaEnabled;
         } else {
             alpha = alphaDisabled;
         }
-        view.findViewById(R.id.setting_instant_upload_on_wifi_container).setEnabled(enable);
-        view.findViewById(R.id.setting_instant_upload_on_wifi_container).setAlpha(alpha);
+        binding.settingInstantUploadOnWifiContainer.setEnabled(enable);
+        binding.settingInstantUploadOnWifiContainer.setAlpha(alpha);
 
-        view.findViewById(R.id.setting_instant_upload_on_charging_container).setEnabled(enable);
-        view.findViewById(R.id.setting_instant_upload_on_charging_container).setAlpha(alpha);
+        binding.settingInstantUploadOnChargingContainer.setEnabled(enable);
+        binding.settingInstantUploadOnChargingContainer.setAlpha(alpha);
 
-        view.findViewById(R.id.setting_instant_upload_existing_container).setEnabled(enable);
-        view.findViewById(R.id.setting_instant_upload_existing_container).setAlpha(alpha);
+        binding.settingInstantUploadExistingContainer.setEnabled(enable);
+        binding.settingInstantUploadExistingContainer.setAlpha(alpha);
 
-        view.findViewById(R.id.setting_instant_upload_path_use_subfolders_container).setEnabled(enable);
-        view.findViewById(R.id.setting_instant_upload_path_use_subfolders_container).setAlpha(alpha);
+        binding.settingInstantUploadPathUseSubfoldersContainer.setEnabled(enable);
+        binding.settingInstantUploadPathUseSubfoldersContainer.setAlpha(alpha);
 
-        view.findViewById(R.id.remote_folder_container).setEnabled(enable);
-        view.findViewById(R.id.remote_folder_container).setAlpha(alpha);
+        binding.remoteFolderContainer.setEnabled(enable);
+        binding.remoteFolderContainer.setAlpha(alpha);
 
-        view.findViewById(R.id.local_folder_container).setEnabled(enable);
-        view.findViewById(R.id.local_folder_container).setAlpha(alpha);
+        binding.localFolderContainer.setEnabled(enable);
+        binding.localFolderContainer.setAlpha(alpha);
 
-        view.findViewById(R.id.setting_instant_name_collision_policy_container).setEnabled(enable);
-        view.findViewById(R.id.setting_instant_name_collision_policy_container).setAlpha(alpha);
+        binding.settingInstantNameCollisionPolicyContainer.setEnabled(enable);
+        binding.settingInstantNameCollisionPolicyContainer.setAlpha(alpha);
 
         mUploadOnWifiCheckbox.setEnabled(enable);
         mUploadOnChargingCheckbox.setEnabled(enable);
@@ -364,14 +353,14 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
     /**
      * setup all listeners.
      *
-     * @param view the parent view
+     * @param binding the parent binding
      */
-    private void setupListeners(View view) {
+    private void setupListeners(SyncedFoldersSettingsLayoutBinding binding) {
         mSave.setOnClickListener(new OnSyncedFolderSaveClickListener());
         mCancel.setOnClickListener(new OnSyncedFolderCancelClickListener());
-        view.findViewById(R.id.delete).setOnClickListener(new OnSyncedFolderDeleteClickListener());
+        binding.delete.setOnClickListener(new OnSyncedFolderDeleteClickListener());
 
-        view.findViewById(R.id.setting_instant_upload_on_wifi_container).setOnClickListener(
+        binding.settingInstantUploadOnWifiContainer.setOnClickListener(
             new OnClickListener() {
                 @Override
                 public void onClick(View v) {
@@ -380,7 +369,7 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
                 }
             });
 
-        view.findViewById(R.id.setting_instant_upload_on_charging_container).setOnClickListener(
+        binding.settingInstantUploadOnChargingContainer.setOnClickListener(
             new OnClickListener() {
                 @Override
                 public void onClick(View v) {
@@ -389,7 +378,7 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
                 }
             });
 
-        view.findViewById(R.id.setting_instant_upload_existing_container).setOnClickListener(
+        binding.settingInstantUploadExistingContainer.setOnClickListener(
             new OnClickListener() {
                 @Override
                 public void onClick(View v) {
@@ -398,7 +387,7 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
                 }
             });
 
-        view.findViewById(R.id.setting_instant_upload_path_use_subfolders_container).setOnClickListener(
+        binding.settingInstantUploadPathUseSubfoldersContainer.setOnClickListener(
             new OnClickListener() {
                 @Override
                 public void onClick(View v) {
@@ -407,26 +396,26 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
                 }
             });
 
-        view.findViewById(R.id.remote_folder_container).setOnClickListener(v -> {
+        binding.remoteFolderContainer.setOnClickListener(v -> {
             Intent action = new Intent(getActivity(), FolderPickerActivity.class);
             getActivity().startActivityForResult(action, REQUEST_CODE__SELECT_REMOTE_FOLDER);
         });
 
-        view.findViewById(R.id.local_folder_container).setOnClickListener(v -> {
+        binding.localFolderContainer.setOnClickListener(v -> {
             Intent action = new Intent(getActivity(), UploadFilesActivity.class);
             action.putExtra(UploadFilesActivity.KEY_LOCAL_FOLDER_PICKER_MODE, true);
             action.putExtra(REQUEST_CODE_KEY, REQUEST_CODE__SELECT_LOCAL_FOLDER);
             getActivity().startActivityForResult(action, REQUEST_CODE__SELECT_LOCAL_FOLDER);
         });
 
-        view.findViewById(R.id.sync_enabled).setOnClickListener(new OnClickListener() {
+        binding.syncEnabled.setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View v) {
                 setEnabled(!mSyncedFolder.isEnabled());
             }
         });
 
-        view.findViewById(R.id.setting_instant_behaviour_container).setOnClickListener(
+        binding.settingInstantBehaviourContainer.setOnClickListener(
             new OnClickListener() {
                 @Override
                 public void onClick(View v) {
@@ -434,7 +423,7 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
                 }
             });
 
-        view.findViewById(R.id.setting_instant_name_collision_policy_container).setOnClickListener(
+        binding.settingInstantNameCollisionPolicyContainer.setOnClickListener(
             new OnClickListener() {
                 @Override
                 public void onClick(View v) {
@@ -444,7 +433,7 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
     }
 
     private void showBehaviourDialog() {
-        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity());
         builder.setTitle(R.string.prefs_instant_behaviour_dialogTitle)
             .setSingleChoiceItems(getResources().getTextArray(R.array.pref_behaviour_entries),
                                   mSyncedFolder.getUploadActionInteger(),
@@ -467,12 +456,15 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
                 }
             });
         behaviourDialogShown = true;
+
+        viewThemeUtils.dialog.colorMaterialAlertDialogBackground(getActivity(), builder);
+
         behaviourDialog = builder.create();
         behaviourDialog.show();
     }
 
     private void showNameCollisionPolicyDialog() {
-        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+        MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity());
 
         builder.setTitle(R.string.pref_instant_name_collision_policy_dialogTitle)
             .setSingleChoiceItems(getResources().getTextArray(R.array.pref_name_collision_policy_entries),
@@ -481,6 +473,9 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
             .setOnCancelListener(dialog -> nameCollisionPolicyDialogShown = false);
 
         nameCollisionPolicyDialogShown = true;
+
+        viewThemeUtils.dialog.colorMaterialAlertDialogBackground(getActivity(), builder);
+
         behaviourDialog = builder.create();
         behaviourDialog.show();
     }
@@ -488,9 +483,19 @@ public class SyncedFolderPreferencesDialogFragment extends DialogFragment implem
     @Override
     @NonNull
     public Dialog onCreateDialog(Bundle savedInstanceState) {
-        final Dialog dialog = super.onCreateDialog(savedInstanceState);
-        dialog.setTitle(null);
-        return dialog;
+        Log_OC.d(TAG, "onCreateView, savedInstanceState is " + savedInstanceState);
+
+        binding = SyncedFoldersSettingsLayoutBinding.inflate(requireActivity().getLayoutInflater(), null, false);
+
+        setupDialogElements(binding);
+        setupListeners(binding);
+
+        MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(binding.getRoot().getContext());
+        builder.setView(binding.getRoot());
+
+        viewThemeUtils.dialog.colorMaterialAlertDialogBackground(binding.getRoot().getContext(), builder);
+
+        return builder.create();
     }
 
     @Override