Browse Source

add direct editing capability

Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
tobiasKaminsky 6 years ago
parent
commit
6b038492b1

+ 6 - 2
src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java

@@ -1891,7 +1891,7 @@ public class FileDataStorageManager {
         cv.put(ProviderTableMeta.CAPABILITIES_VERSION_MICRO, capability.getVersionMicro());
         cv.put(ProviderTableMeta.CAPABILITIES_VERSION_STRING, capability.getVersionString());
         cv.put(ProviderTableMeta.CAPABILITIES_VERSION_EDITION, capability.getVersionEdition());
-        cv.put(ProviderTableMeta.CAPABILITIES_CORE_POLLINTERVAL, capability.getCorePollinterval());
+        cv.put(ProviderTableMeta.CAPABILITIES_CORE_POLLINTERVAL, capability.getCorePollInterval());
         cv.put(ProviderTableMeta.CAPABILITIES_SHARING_API_ENABLED, capability.getFilesSharingApiEnabled().getValue());
         cv.put(ProviderTableMeta.CAPABILITIES_SHARING_PUBLIC_ENABLED,
                 capability.getFilesSharingPublicEnabled().getValue());
@@ -1934,6 +1934,8 @@ public class FileDataStorageManager {
         cv.put(ProviderTableMeta.CAPABILITIES_RICHDOCUMENT, capability.getRichDocuments().getValue());
         cv.put(ProviderTableMeta.CAPABILITIES_RICHDOCUMENT_MIMETYPE_LIST,
                 TextUtils.join(",", capability.getRichDocumentsMimeTypeList()));
+        cv.put(ProviderTableMeta.CAPABILITIES_RICHDOCUMENT_DIRECT_EDITING, capability.getRichDocumentsDirectEditing()
+            .getValue());
 
         if (capabilityExists(account.name)) {
             if (getContentResolver() != null) {
@@ -2036,7 +2038,7 @@ public class FileDataStorageManager {
                     .getColumnIndex(ProviderTableMeta.CAPABILITIES_VERSION_STRING)));
             capability.setVersionEdition(c.getString(c
                     .getColumnIndex(ProviderTableMeta.CAPABILITIES_VERSION_EDITION)));
-            capability.setCorePollinterval(c.getInt(c
+            capability.setCorePollInterval(c.getInt(c
                     .getColumnIndex(ProviderTableMeta.CAPABILITIES_CORE_POLLINTERVAL)));
             capability.setFilesSharingApiEnabled(CapabilityBooleanType.fromValue(c.getInt(c
                     .getColumnIndex(ProviderTableMeta.CAPABILITIES_SHARING_API_ENABLED))));
@@ -2092,6 +2094,8 @@ public class FileDataStorageManager {
             capability.setRichDocuments(CapabilityBooleanType.fromValue(c.getInt(
                     c.getColumnIndex(ProviderTableMeta.CAPABILITIES_RICHDOCUMENT))));
             String mimetypes = c.getString(c.getColumnIndex(ProviderTableMeta.CAPABILITIES_RICHDOCUMENT_MIMETYPE_LIST));
+            capability.setRichDocumentsDirectEditing(CapabilityBooleanType.fromValue(c.getInt(
+                c.getColumnIndex(ProviderTableMeta.CAPABILITIES_RICHDOCUMENT_DIRECT_EDITING))));
             if (mimetypes == null) {
                 mimetypes = "";
             }

+ 1 - 0
src/main/java/com/owncloud/android/db/ProviderMeta.java

@@ -177,6 +177,7 @@ public class ProviderMeta {
         public static final String CAPABILITIES_ACTIVITY = "activity";
         public static final String CAPABILITIES_RICHDOCUMENT = "richdocument";
         public static final String CAPABILITIES_RICHDOCUMENT_MIMETYPE_LIST = "richdocument_mimetype_list";
+        public static final String CAPABILITIES_RICHDOCUMENT_DIRECT_EDITING = "richdocument_direct_editing";
 
         public static final String CAPABILITIES_DEFAULT_SORT_ORDER = CAPABILITIES_ACCOUNT_NAME
                 + " collate nocase asc";

+ 2 - 1
src/main/java/com/owncloud/android/files/FileMenuFilter.java

@@ -267,7 +267,8 @@ public class FileMenuFilter {
 
     private void filterOpenAsRichDocument(List<Integer> toShow, List<Integer> toHide, OCCapability capability) {
         if (isSingleFile() && android.os.Build.VERSION.SDK_INT >= RichDocumentsWebView.MINIMUM_API &&
-                capability.getRichDocumentsMimeTypeList().contains(mFiles.iterator().next().getMimeType())) {
+            capability.getRichDocumentsMimeTypeList().contains(mFiles.iterator().next().getMimeType()) &&
+            capability.getRichDocumentsDirectEditing().isTrue()) {
             toShow.add(R.id.action_open_file_as_richdocument);
         } else {
             toHide.add(R.id.action_open_file_as_richdocument);

+ 2 - 1
src/main/java/com/owncloud/android/providers/FileContentProvider.java

@@ -815,7 +815,8 @@ public class FileContentProvider extends ContentProvider {
                 + ProviderTableMeta.CAPABILITIES_SERVER_BACKGROUND_DEFAULT + INTEGER
                 + ProviderTableMeta.CAPABILITIES_SERVER_BACKGROUND_PLAIN + INTEGER
                 + ProviderTableMeta.CAPABILITIES_RICHDOCUMENT + INTEGER
-                + ProviderTableMeta.CAPABILITIES_RICHDOCUMENT_MIMETYPE_LIST + " TEXT );");
+            + ProviderTableMeta.CAPABILITIES_RICHDOCUMENT_MIMETYPE_LIST + TEXT
+            + ProviderTableMeta.CAPABILITIES_RICHDOCUMENT_DIRECT_EDITING + " INTEGER );");
     }
 
     private void createUploadsTable(SQLiteDatabase db) {

+ 1 - 1
src/main/java/com/owncloud/android/ui/fragment/OCFileListBottomSheetDialog.java

@@ -89,7 +89,7 @@ public class OCFileListBottomSheetDialog extends BottomSheetDialog {
         headline.setText(getContext().getResources().getString(R.string.add_to_cloud,
                 ThemeUtils.getDefaultDisplayNameForRootFolder(getContext())));
 
-        if (capability.getRichDocuments().isTrue()) {
+        if (capability.getRichDocuments().isTrue() && capability.getRichDocumentsDirectEditing().isTrue()) {
             templates.setVisibility(View.VISIBLE);
         }
 

+ 2 - 1
src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -908,7 +908,8 @@ public class OCFileListFragment extends ExtendedListFragment implements
                         }
 
                         if (capability.getRichDocumentsMimeTypeList().contains(file.getMimeType()) &&
-                            android.os.Build.VERSION.SDK_INT >= RichDocumentsWebView.MINIMUM_API) {
+                            android.os.Build.VERSION.SDK_INT >= RichDocumentsWebView.MINIMUM_API &&
+                            capability.getRichDocumentsDirectEditing().isTrue()) {
                             mContainerActivity.getFileOperationsHelper().openFileAsRichDocument(file, getContext());
                         } else {
                             // automatic download, preview on finish

+ 4 - 2
src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java

@@ -254,7 +254,9 @@ public class FileOperationsHelper {
             if (launchables.isEmpty()) {
                 Account account = mFileActivity.getAccount();
                 OCCapability capability = mFileActivity.getStorageManager().getCapability(account.name);
-                if (capability.getRichDocumentsMimeTypeList().contains(file.getMimeType())) {
+                if (capability.getRichDocumentsMimeTypeList().contains(file.getMimeType()) &&
+                    android.os.Build.VERSION.SDK_INT >= RichDocumentsWebView.MINIMUM_API &&
+                    capability.getRichDocumentsDirectEditing().isTrue()) {
                     openFileAsRichDocument(file, mFileActivity);
                     return;
                 } else {
@@ -368,7 +370,7 @@ public class FileOperationsHelper {
     private Uri getFileUri(OCFile file, String... officeExtensions) {
         if (file.getFileName().contains(".") &&
                 Arrays.asList(officeExtensions).contains(file.getFileName().substring(file.getFileName().
-                        lastIndexOf(".") + 1, file.getFileName().length())) &&
+                        lastIndexOf(".") + 1)) &&
                 !file.getStoragePath().startsWith(MainApp.getAppContext().getFilesDir().getAbsolutePath())) {
             return file.getLegacyExposedFileUri(mFileActivity);
         } else {