|
@@ -22,20 +22,24 @@
|
|
package com.owncloud.android.files;
|
|
package com.owncloud.android.files;
|
|
|
|
|
|
import android.accounts.AccountManager;
|
|
import android.accounts.AccountManager;
|
|
|
|
+import android.content.ContentResolver;
|
|
import android.content.Context;
|
|
import android.content.Context;
|
|
import android.view.Menu;
|
|
import android.view.Menu;
|
|
import android.view.MenuItem;
|
|
import android.view.MenuItem;
|
|
|
|
|
|
|
|
+import com.google.gson.Gson;
|
|
import com.nextcloud.android.files.FileLockingHelper;
|
|
import com.nextcloud.android.files.FileLockingHelper;
|
|
import com.nextcloud.client.account.User;
|
|
import com.nextcloud.client.account.User;
|
|
import com.owncloud.android.R;
|
|
import com.owncloud.android.R;
|
|
|
|
+import com.owncloud.android.datamodel.ArbitraryDataProvider;
|
|
import com.owncloud.android.datamodel.OCFile;
|
|
import com.owncloud.android.datamodel.OCFile;
|
|
import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
|
|
import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
|
|
import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
|
|
import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
|
|
|
|
+import com.owncloud.android.lib.common.DirectEditing;
|
|
|
|
+import com.owncloud.android.lib.common.Editor;
|
|
import com.owncloud.android.lib.resources.status.OCCapability;
|
|
import com.owncloud.android.lib.resources.status.OCCapability;
|
|
import com.owncloud.android.services.OperationsService.OperationsServiceBinder;
|
|
import com.owncloud.android.services.OperationsService.OperationsServiceBinder;
|
|
import com.owncloud.android.ui.activity.ComponentsGetter;
|
|
import com.owncloud.android.ui.activity.ComponentsGetter;
|
|
-import com.owncloud.android.utils.EditorUtils;
|
|
|
|
import com.owncloud.android.utils.MimeTypeUtil;
|
|
import com.owncloud.android.utils.MimeTypeUtil;
|
|
import com.owncloud.android.utils.NextcloudServer;
|
|
import com.owncloud.android.utils.NextcloudServer;
|
|
|
|
|
|
@@ -45,6 +49,8 @@ import java.util.Collections;
|
|
import java.util.Iterator;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
|
|
+import androidx.annotation.Nullable;
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* Filters out the file actions available in a given {@link Menu} for a given {@link OCFile}
|
|
* Filters out the file actions available in a given {@link Menu} for a given {@link OCFile}
|
|
* according to the current state of the latest.
|
|
* according to the current state of the latest.
|
|
@@ -348,16 +354,44 @@ public class FileMenuFilter {
|
|
|
|
|
|
String mimeType = files.iterator().next().getMimeType();
|
|
String mimeType = files.iterator().next().getMimeType();
|
|
|
|
|
|
- if (isRichDocumentEditingSupported(capability, mimeType) ||
|
|
|
|
- EditorUtils.isEditorAvailable(context.getContentResolver(),
|
|
|
|
- user,
|
|
|
|
- mimeType)) {
|
|
|
|
|
|
+ if (isRichDocumentEditingSupported(capability, mimeType) || isEditorAvailable(context.getContentResolver(),
|
|
|
|
+ user,
|
|
|
|
+ mimeType)) {
|
|
toShow.add(R.id.action_edit);
|
|
toShow.add(R.id.action_edit);
|
|
} else {
|
|
} else {
|
|
toHide.add(R.id.action_edit);
|
|
toHide.add(R.id.action_edit);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public static boolean isEditorAvailable(ContentResolver contentResolver, User user, String mimeType) {
|
|
|
|
+ return getEditor(contentResolver, user, mimeType) != null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Nullable
|
|
|
|
+ public static Editor getEditor(ContentResolver contentResolver, User user, String mimeType) {
|
|
|
|
+ String json = new ArbitraryDataProvider(contentResolver).getValue(user, ArbitraryDataProvider.DIRECT_EDITING);
|
|
|
|
+
|
|
|
|
+ if (json.isEmpty()) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ DirectEditing directEditing = new Gson().fromJson(json, DirectEditing.class);
|
|
|
|
+
|
|
|
|
+ for (Editor editor : directEditing.getEditors().values()) {
|
|
|
|
+ if (editor.getMimetypes().contains(mimeType)) {
|
|
|
|
+ return editor;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (Editor editor : directEditing.getEditors().values()) {
|
|
|
|
+ if (editor.getOptionalMimetypes().contains(mimeType)) {
|
|
|
|
+ return editor;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* This will be replaced by unified editor and can be removed once EOL of corresponding server version.
|
|
* This will be replaced by unified editor and can be removed once EOL of corresponding server version.
|
|
*/
|
|
*/
|