diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/ChooseRichDocumentsTemplateDialogFragment.java b/app/src/main/java/com/owncloud/android/ui/dialog/ChooseRichDocumentsTemplateDialogFragment.java deleted file mode 100644 index f87616c50c93..000000000000 --- a/app/src/main/java/com/owncloud/android/ui/dialog/ChooseRichDocumentsTemplateDialogFragment.java +++ /dev/null @@ -1,457 +0,0 @@ -/* - * - * Nextcloud Android client application - * - * @author Tobias Kaminsky - * @author TSI-mc - * Copyright (C) 2019 Tobias Kaminsky - * Copyright (C) 2019 Nextcloud GmbH - * Copyright (C) 2023 TSI-mc - * - * SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only - */ - -package com.owncloud.android.ui.dialog; - -import android.app.Activity; -import android.app.Dialog; -import android.content.Intent; -import android.os.AsyncTask; -import android.os.Bundle; -import android.text.Editable; -import android.text.TextWatcher; -import android.view.LayoutInflater; -import android.view.View; - -import com.google.android.material.button.MaterialButton; -import com.google.android.material.dialog.MaterialAlertDialogBuilder; -import com.google.common.collect.Sets; -import com.nextcloud.client.account.CurrentAccountProvider; -import com.nextcloud.client.account.User; -import com.nextcloud.client.di.Injectable; -import com.nextcloud.client.network.ClientFactory; -import com.nextcloud.utils.extensions.BundleExtensionsKt; -import com.owncloud.android.MainApp; -import com.owncloud.android.R; -import com.owncloud.android.databinding.ChooseTemplateBinding; -import com.owncloud.android.datamodel.FileDataStorageManager; -import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.datamodel.Template; -import com.owncloud.android.files.CreateFileFromTemplateOperation; -import com.owncloud.android.files.FetchTemplateOperation; -import com.owncloud.android.lib.common.OwnCloudClient; -import com.owncloud.android.lib.common.operations.RemoteOperationResult; -import com.owncloud.android.lib.common.utils.Log_OC; -import com.owncloud.android.lib.resources.files.ReadFileRemoteOperation; -import com.owncloud.android.lib.resources.files.model.RemoteFile; -import com.owncloud.android.ui.activity.ExternalSiteWebView; -import com.owncloud.android.ui.activity.RichDocumentsEditorWebView; -import com.owncloud.android.ui.adapter.RichDocumentsTemplateAdapter; -import com.owncloud.android.utils.DisplayUtils; -import com.owncloud.android.utils.FileStorageUtils; -import com.owncloud.android.utils.KeyboardUtils; -import com.owncloud.android.utils.NextcloudServer; -import com.owncloud.android.utils.theme.ViewThemeUtils; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import javax.inject.Inject; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.AlertDialog; -import androidx.fragment.app.DialogFragment; -import androidx.recyclerview.widget.GridLayoutManager; - -/** - * Dialog to show templates for new documents/spreadsheets/presentations. - */ -public class ChooseRichDocumentsTemplateDialogFragment extends DialogFragment implements View.OnClickListener, - RichDocumentsTemplateAdapter.ClickListener, Injectable { - - private static final String ARG_PARENT_FOLDER = "PARENT_FOLDER"; - private static final String ARG_TYPE = "TYPE"; - private static final String TAG = ChooseRichDocumentsTemplateDialogFragment.class.getSimpleName(); - private static final String DOT = "."; - public static final int SINGLE_TEMPLATE = 1; - private static final String WAIT_DIALOG_TAG = "WAIT"; - - private Set fileNames; - - @Inject CurrentAccountProvider currentAccount; - @Inject ClientFactory clientFactory; - @Inject ViewThemeUtils viewThemeUtils; - @Inject FileDataStorageManager fileDataStorageManager; - @Inject KeyboardUtils keyboardUtils; - private RichDocumentsTemplateAdapter adapter; - private OCFile parentFolder; - private OwnCloudClient client; - private MaterialButton positiveButton; - private DialogFragment waitDialog; - - public enum Type { - DOCUMENT, - SPREADSHEET, - PRESENTATION - } - - ChooseTemplateBinding binding; - - @NextcloudServer(max = 18) // will be removed in favor of generic direct editing - public static ChooseRichDocumentsTemplateDialogFragment newInstance(OCFile parentFolder, Type type) { - ChooseRichDocumentsTemplateDialogFragment frag = new ChooseRichDocumentsTemplateDialogFragment(); - Bundle args = new Bundle(); - args.putParcelable(ARG_PARENT_FOLDER, parentFolder); - args.putString(ARG_TYPE, type.name()); - frag.setArguments(args); - return frag; - } - - @Override - public void onStart() { - super.onStart(); - - AlertDialog alertDialog = (AlertDialog) getDialog(); - - if (alertDialog != null) { - positiveButton = (MaterialButton) alertDialog.getButton(AlertDialog.BUTTON_POSITIVE); - viewThemeUtils.material.colorMaterialButtonPrimaryTonal(positiveButton); - - MaterialButton negativeButton = (MaterialButton) alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE); - if (negativeButton != null) { - viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(negativeButton); - } - - positiveButton.setOnClickListener(this); - positiveButton.setEnabled(false); - } - - checkEnablingCreateButton(); - } - - @Override - public void onResume() { - super.onResume(); - keyboardUtils.showKeyboardForEditText(requireDialog().getWindow(), binding.filename); - } - - @NonNull - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - Bundle arguments = getArguments(); - if (arguments == null) { - throw new IllegalArgumentException("Arguments may not be null"); - } - - Activity activity = getActivity(); - if (activity == null) { - throw new IllegalArgumentException("Activity may not be null"); - } - - try { - client = clientFactory.create(currentAccount.getUser()); - } catch (ClientFactory.CreationException e) { - throw new RuntimeException(e); // we'll NPE without the client - } - - parentFolder = BundleExtensionsKt.getParcelableArgument(arguments, ARG_PARENT_FOLDER, OCFile.class); - List folderContent = fileDataStorageManager.getFolderContent(parentFolder, false); - fileNames = Sets.newHashSetWithExpectedSize(folderContent.size()); - - for (OCFile file : folderContent) { - fileNames.add(file.getFileName()); - } - - // Inflate the layout for the dialog - LayoutInflater inflater = requireActivity().getLayoutInflater(); - binding = ChooseTemplateBinding.inflate(inflater, null, false); - View view = binding.getRoot(); - - viewThemeUtils.material.colorTextInputLayout(binding.filenameContainer); - - Type type = Type.valueOf(arguments.getString(ARG_TYPE)); - new FetchTemplateTask(this, client).execute(type); - - binding.list.setHasFixedSize(true); - binding.list.setLayoutManager(new GridLayoutManager(activity, 2)); - adapter = new RichDocumentsTemplateAdapter(type, - this, - getContext(), - currentAccount, - clientFactory, - viewThemeUtils); - binding.list.setAdapter(adapter); - - binding.filename.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - // not needed - } - - @Override - public void afterTextChanged(Editable s) { - checkEnablingCreateButton(); - } - }); - - int titleTextId = getTitle(type); - - // Build the dialog - MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(activity); - builder.setView(view) - .setPositiveButton(R.string.create, null) - .setNegativeButton(R.string.common_cancel, null) - .setTitle(titleTextId); - - viewThemeUtils.dialog.colorMaterialAlertDialogBackground(activity, builder); - - return builder.create(); - } - - private int getTitle(Type type) { - if (type == Type.DOCUMENT) { - return R.string.create_new_document; - } else if (type == Type.SPREADSHEET) { - return R.string.create_new_spreadsheet; - } else if (type == Type.PRESENTATION) { - return R.string.create_new_presentation; - } - - return R.string.select_template; - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - binding = null; - } - - private void createFromTemplate(Template template, String path) { - waitDialog = IndeterminateProgressDialog.newInstance(R.string.wait_a_moment, false); - waitDialog.show(getParentFragmentManager(), WAIT_DIALOG_TAG); - new CreateFileFromTemplateTask(this, client, template, path, currentAccount.getUser()).execute(); - } - - public void setTemplateList(List