From f1ad246df573ee53de7d06811c45ccd11f43c14a Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Thu, 9 Jan 2020 12:57:07 +0100 Subject: [PATCH 1/5] rich workspaces - show button to create folder info - bug fixes Signed-off-by: tobiasKaminsky --- drawable_resources/post_add.svg | 18 ++++++++ .../android/ui/activity/EditorWebView.java | 2 +- .../activity/RichDocumentsEditorWebView.java | 2 +- .../android/ui/activity/TextEditorWebView.kt | 2 - .../ui/fragment/OCFileListFragment.java | 38 +++++++++++++--- src/main/res/drawable/ic_post_add.xml | 44 +++++++++++++++++++ src/main/res/layout/text_file_preview.xml | 13 +++--- src/main/res/menu/activity_file_display.xml | 9 ++++ src/main/res/values/strings.xml | 3 ++ 9 files changed, 114 insertions(+), 17 deletions(-) create mode 100644 drawable_resources/post_add.svg create mode 100644 src/main/res/drawable/ic_post_add.xml diff --git a/drawable_resources/post_add.svg b/drawable_resources/post_add.svg new file mode 100644 index 000000000000..95439563aadf --- /dev/null +++ b/drawable_resources/post_add.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/owncloud/android/ui/activity/EditorWebView.java b/src/main/java/com/owncloud/android/ui/activity/EditorWebView.java index c7861249ac37..13803ee7a3ef 100644 --- a/src/main/java/com/owncloud/android/ui/activity/EditorWebView.java +++ b/src/main/java/com/owncloud/android/ui/activity/EditorWebView.java @@ -68,7 +68,7 @@ public abstract class EditorWebView extends ExternalSiteWebView { private static final String TAG = EditorWebView.class.getSimpleName(); protected void loadUrl(String url) { - webview.loadUrl(url); + onUrlLoaded(url); } protected void hideLoading() { diff --git a/src/main/java/com/owncloud/android/ui/activity/RichDocumentsEditorWebView.java b/src/main/java/com/owncloud/android/ui/activity/RichDocumentsEditorWebView.java index 8b05a3acb0ab..06a5568ee8b4 100644 --- a/src/main/java/com/owncloud/android/ui/activity/RichDocumentsEditorWebView.java +++ b/src/main/java/com/owncloud/android/ui/activity/RichDocumentsEditorWebView.java @@ -251,7 +251,7 @@ private void downloadFile(Uri url) { } @Override - protected void loadUrl(String url) { + public void loadUrl(String url) { if (TextUtils.isEmpty(url)) { new RichDocumentsLoadUrlTask(this, getUser().get(), getFile()).execute(); } else { diff --git a/src/main/java/com/owncloud/android/ui/activity/TextEditorWebView.kt b/src/main/java/com/owncloud/android/ui/activity/TextEditorWebView.kt index 0b10e7c64860..674a474565cb 100644 --- a/src/main/java/com/owncloud/android/ui/activity/TextEditorWebView.kt +++ b/src/main/java/com/owncloud/android/ui/activity/TextEditorWebView.kt @@ -63,8 +63,6 @@ class TextEditorWebView : EditorWebView() { override fun loadUrl(url: String?) { if (url.isNullOrEmpty()) { TextEditorLoadUrlTask(this, user.get(), file).execute() - } else { - super.loadUrl(url) } } diff --git a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index 65874cafab23..7e66a9956d93 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -45,6 +45,7 @@ import android.widget.PopupMenu; import com.google.android.material.snackbar.Snackbar; +import com.nextcloud.android.lib.richWorkspace.RichWorkspaceDirectEditingRemoteOperation; import com.nextcloud.client.account.User; import com.nextcloud.client.account.UserAccountManager; import com.nextcloud.client.device.DeviceInfo; @@ -746,20 +747,20 @@ public void onPrepareOptionsMenu(@NonNull Menu menu) { if (menu.findItem(R.id.action_sort) == null) { menuItemOrig = mOriginalMenuItems.get(1); menu.add(menuItemOrig.getGroupId(), menuItemOrig.getItemId(), menuItemOrig.getOrder(), - menuItemOrig.getTitle()); + menuItemOrig.getTitle()); } } else if (menuItemAddRemoveValue == MenuItemAddRemove.ADD_GRID_AND_SORT) { if (menu.findItem(R.id.action_switch_view) == null) { menuItemOrig = mOriginalMenuItems.get(0); menu.add(menuItemOrig.getGroupId(), menuItemOrig.getItemId(), menuItemOrig.getOrder(), - menuItemOrig.getTitle()); + menuItemOrig.getTitle()); } if (menu.findItem(R.id.action_sort) == null) { menuItemOrig = mOriginalMenuItems.get(1); menu.add(menuItemOrig.getGroupId(), menuItemOrig.getItemId(), menuItemOrig.getOrder(), - menuItemOrig.getTitle()); + menuItemOrig.getTitle()); } } else if (menuItemAddRemoveValue == MenuItemAddRemove.REMOVE_SEARCH) { menu.removeItem(R.id.action_search); @@ -767,19 +768,19 @@ public void onPrepareOptionsMenu(@NonNull Menu menu) { if (menu.findItem(R.id.action_switch_view) == null) { menuItemOrig = mOriginalMenuItems.get(0); menu.add(menuItemOrig.getGroupId(), menuItemOrig.getItemId(), menuItemOrig.getOrder(), - menuItemOrig.getTitle()); + menuItemOrig.getTitle()); } if (menu.findItem(R.id.action_sort) == null) { menuItemOrig = mOriginalMenuItems.get(1); menu.add(menuItemOrig.getGroupId(), menuItemOrig.getItemId(), menuItemOrig.getOrder(), - menuItemOrig.getTitle()); + menuItemOrig.getTitle()); } if (menu.findItem(R.id.action_search) == null) { menuItemOrig = mOriginalMenuItems.get(2); menu.add(menuItemOrig.getGroupId(), menuItemOrig.getItemId(), menuItemOrig.getOrder(), - menuItemOrig.getTitle()); + menuItemOrig.getTitle()); } } else if (menuItemAddRemoveValue == MenuItemAddRemove.REMOVE_SORT) { menu.removeItem(R.id.action_sort); @@ -789,6 +790,31 @@ public void onPrepareOptionsMenu(@NonNull Menu menu) { menu.removeItem(R.id.action_switch_view); menu.removeItem(R.id.action_search); } + + // create rich workspace + menu.findItem(R.id.action_create_rich_workspace).setVisible(TextUtils.isEmpty(mFile.getRichWorkspace())); + } + + @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + if (R.id.action_create_rich_workspace == item.getItemId()) { + new Thread(() -> { + RemoteOperationResult result = new RichWorkspaceDirectEditingRemoteOperation(mFile.getRemotePath()) + .execute(accountManager.getUser().toPlatformAccount(), requireContext()); + + if (result.isSuccess()) { + String url = (String) result.getSingleData(); + mContainerActivity.getFileOperationsHelper().openRichWorkspaceWithTextEditor(mFile, + url, + requireContext()); + } else { + DisplayUtils.showSnackMessage(getView(), "Error"); + } + }).start(); + return true; + } + + return super.onOptionsItemSelected(item); } /** diff --git a/src/main/res/drawable/ic_post_add.xml b/src/main/res/drawable/ic_post_add.xml new file mode 100644 index 000000000000..5a44d5835c84 --- /dev/null +++ b/src/main/res/drawable/ic_post_add.xml @@ -0,0 +1,44 @@ + + + + + + + + + diff --git a/src/main/res/layout/text_file_preview.xml b/src/main/res/layout/text_file_preview.xml index bad110386047..00a80ef7f35e 100644 --- a/src/main/res/layout/text_file_preview.xml +++ b/src/main/res/layout/text_file_preview.xml @@ -16,19 +16,18 @@ along with this program. If not, see . --> - + android:layout_height="match_parent"> + android:layout_height="match_parent"> @@ -57,7 +56,7 @@ android:layout_marginBottom="@dimen/standard_margin" android:layout_marginEnd="@dimen/standard_margin" android:layout_marginRight="@dimen/standard_margin" - android:contentDescription="@string/fab_label" + android:contentDescription="@string/edit_rich_workspace" android:visibility="gone" /> - + diff --git a/src/main/res/menu/activity_file_display.xml b/src/main/res/menu/activity_file_display.xml index 9b2e63b2c7d0..df78d920ccdc 100644 --- a/src/main/res/menu/activity_file_display.xml +++ b/src/main/res/menu/activity_file_display.xml @@ -62,6 +62,15 @@ android:title="@string/select_all" android:contentDescription="@string/select_all"/> + + diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index a4fd20c6cac3..d95d86704bc5 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -908,4 +908,7 @@ Share internal link Edit Failed to start editor + Add folder info + creates folder info + edit folder info From c4e2bcc6832447b4ebac3681ec895f78dca9b681 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Thu, 9 Jan 2020 16:09:46 +0100 Subject: [PATCH 2/5] fix FAB position Signed-off-by: tobiasKaminsky --- src/main/res/layout/text_file_preview.xml | 73 +++++++++++++---------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/src/main/res/layout/text_file_preview.xml b/src/main/res/layout/text_file_preview.xml index 00a80ef7f35e..f2def74f9722 100644 --- a/src/main/res/layout/text_file_preview.xml +++ b/src/main/res/layout/text_file_preview.xml @@ -16,47 +16,54 @@ along with this program. If not, see . --> - - - + android:layout_height="wrap_content"> - + - - - - - - - - - + + + + + + + + + + + + + From 7e1a991f8541c4277f9d5cfd353d8602ec0e7c0b Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Thu, 9 Jan 2020 16:10:58 +0100 Subject: [PATCH 3/5] better error description Signed-off-by: tobiasKaminsky --- .../com/owncloud/android/ui/fragment/OCFileListFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index 7e66a9956d93..d3b61f873b80 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -808,7 +808,7 @@ public boolean onOptionsItemSelected(@NonNull MenuItem item) { url, requireContext()); } else { - DisplayUtils.showSnackMessage(getView(), "Error"); + DisplayUtils.showSnackMessage(getView(), R.string.failed_to_start_editor); } }).start(); return true; From 5b3ab774d4cd41478cac0c3e690cdc172c28f310 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Fri, 10 Jan 2020 09:32:43 +0100 Subject: [PATCH 4/5] manually increasing lint due to "autoMirrored" warning Signed-off-by: tobiasKaminsky --- scripts/analysis/lint-results.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/analysis/lint-results.txt b/scripts/analysis/lint-results.txt index 17a46e780670..385dc9a0803c 100644 --- a/scripts/analysis/lint-results.txt +++ b/scripts/analysis/lint-results.txt @@ -1,2 +1,2 @@ DO NOT TOUCH; GENERATED BY DRONE - Lint Report: 74 warnings + Lint Report: 76 warnings From 1df7af184393b780053e029952c0b4e731aa3ed3 Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Fri, 10 Jan 2020 09:59:15 +0100 Subject: [PATCH 5/5] only allow rich workspace creation on >= Lollipop Signed-off-by: tobiasKaminsky --- .../com/owncloud/android/ui/fragment/OCFileListFragment.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index d3b61f873b80..f67048c34565 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -792,7 +792,9 @@ public void onPrepareOptionsMenu(@NonNull Menu menu) { } // create rich workspace - menu.findItem(R.id.action_create_rich_workspace).setVisible(TextUtils.isEmpty(mFile.getRichWorkspace())); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + menu.findItem(R.id.action_create_rich_workspace).setVisible(TextUtils.isEmpty(mFile.getRichWorkspace())); + } } @Override