[Libreoffice-commits] online.git: android/app
mert (via logerrit)
logerrit at kemper.freedesktop.org
Fri Mar 27 14:33:32 UTC 2020
android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java | 93 +++++-----
android/app/src/main/java/org/libreoffice/androidapp/ui/RecentFilesAdapter.java | 12 +
android/app/src/main/res/drawable/ic_more_vert_black_24dp.xml | 9
android/app/src/main/res/layout/file_explorer_grid_item.xml | 49 +++--
android/app/src/main/res/layout/file_list_item.xml | 9
android/app/src/main/res/menu/context_menu.xml | 2
android/app/src/main/res/values/strings.xml | 2
7 files changed, 119 insertions(+), 57 deletions(-)
New commits:
commit c07f4fb97492a5b833d44e2750c4fc5ca6879c7a
Author: mert <mert.tumer at collabora.com>
AuthorDate: Tue Mar 24 01:31:32 2020 +0300
Commit: Andras Timar <andras.timar at collabora.com>
CommitDate: Fri Mar 27 15:32:59 2020 +0100
android: added context menu for the files
Change-Id: Iab18379797917ce2e8ab25ed428f6a806f5f4e7e
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/90944
Reviewed-by: Jan Holesovsky <kendy at collabora.com>
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
diff --git a/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java b/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java
index bd9116c94..c1d9df818 100644
--- a/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java
+++ b/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java
@@ -10,7 +10,6 @@
package org.libreoffice.androidapp.ui;
import android.Manifest;
-import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
@@ -22,6 +21,7 @@ import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
+import android.database.Cursor;
import android.graphics.drawable.Icon;
import android.hardware.usb.UsbManager;
import android.net.Uri;
@@ -29,6 +29,8 @@ import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.provider.DocumentsContract;
+import android.provider.MediaStore;
+import android.provider.OpenableColumns;
import android.provider.Settings;
import android.text.Editable;
import android.text.TextUtils;
@@ -77,6 +79,7 @@ import java.util.List;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.ActionBarDrawerToggle;
+import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.app.ActivityCompat;
@@ -102,7 +105,7 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
FileFilter fileFilter;
FilenameFilter filenameFilter;
- private int currentlySelectedFile;
+ private Uri currentlySelectedFile;
/** The document that is being edited - to know what to save back to cloud. */
//private IFile mCurrentDocument;
@@ -386,8 +389,8 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
updateRecentFiles();
- // TODO allow context menu for the various files - for Open and Share
- //registerForContextMenu(fileRecyclerView);
+ // allow context menu for the various files - for Open and Share
+ registerForContextMenu(recentRecyclerView);
setupNavigationDrawer();
}
@@ -510,11 +513,25 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
case R.id.context_menu_share:
share(currentlySelectedFile);
return true;
+ case R.id.context_menu_remove_from_list:
+ removeFromList(currentlySelectedFile);
+ return true;
default:
return super.onContextItemSelected(item);
}
}
+ public void openContextMenu(View view, Uri uri) {
+
+ this.currentlySelectedFile = uri;
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ view.showContextMenu(view.getPivotX(), view.getPivotY());
+ }
+ else
+ view.showContextMenu();
+ }
+
public boolean isViewModeList() {
return prefs.getString(EXPLORER_VIEW_TYPE_KEY, GRID_VIEW).equals(LIST_VIEW);
}
@@ -614,44 +631,42 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
}
/** Context menu item handling. */
- private void share(int position) {
- /*
- new AsyncTask<IFile, Void, File>() {
- @Override
- protected File doInBackground(IFile... document) {
- // this operation may imply network access and must be run in
- // a different thread
- try {
- return document[0].getDocument();
- } catch (final RuntimeException e) {
- final Activity activity = LibreOfficeUIActivity.this;
- activity.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- Toast.makeText(activity, e.getMessage(),
- Toast.LENGTH_SHORT).show();
- }
- });
- Log.e(LOGTAG, e.getMessage(), e.getCause());
- return null;
- }
- }
+ private void share(Uri uri) {
+ if (uri == null)
+ return;
- @Override
- protected void onPostExecute(File file) {
- if (file != null) {
- Intent intentShareFile = new Intent(Intent.ACTION_SEND);
- Uri finalDocUri = FileProvider.getUriForFile(LibreOfficeUIActivity.this,
- LibreOfficeUIActivity.this.getApplicationContext().getPackageName() + ".fileprovider",
- file);
- intentShareFile.putExtra(Intent.EXTRA_STREAM, finalDocUri);
- intentShareFile.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
- intentShareFile.setDataAndType(finalDocUri, LibreOfficeUIActivity.this.getContentResolver().getType(finalDocUri));
- LibreOfficeUIActivity.this.startActivity(Intent.createChooser(intentShareFile, LibreOfficeUIActivity.this.getString(R.string.share_document)));
+ Intent intentShareFile = new Intent(Intent.ACTION_SEND);
+ intentShareFile.putExtra(Intent.EXTRA_STREAM, uri);
+ intentShareFile.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ intentShareFile.setDataAndType(uri, LibreOfficeUIActivity.this.getContentResolver().getType(uri));
+ LibreOfficeUIActivity.this.startActivity(Intent.createChooser(intentShareFile, LibreOfficeUIActivity.this.getString(R.string.share_document)));
+ }
+
+ /** Context menu item handling. */
+ private void removeFromList(Uri uri) {
+ if (uri == null)
+ return;
+
+ String[] recentFileStrings = getRecentDocuments();
+ String joined = "";
+ final ArrayList<Uri> recentUris = new ArrayList<Uri>();
+
+ for (String recentFileString : recentFileStrings) {
+ try {
+ if (!uri.toString().equals(recentFileString)) {
+ recentUris.add(Uri.parse(recentFileString));
+ joined = joined.concat(recentFileString+"\n");
}
+ } catch (RuntimeException e) {
+ e.printStackTrace();
}
- }.execute(filePaths.get(position));
- */
+ }
+
+ if (!joined.isEmpty()) {
+ prefs.edit().putString(RECENT_DOCUMENTS_KEY, joined).apply();
+ }
+
+ recentRecyclerView.setAdapter(new RecentFilesAdapter(this, recentUris));
}
/** Setup the toolbar's menu. */
diff --git a/android/app/src/main/java/org/libreoffice/androidapp/ui/RecentFilesAdapter.java b/android/app/src/main/java/org/libreoffice/androidapp/ui/RecentFilesAdapter.java
index 371b7ab03..380b4a64f 100644
--- a/android/app/src/main/java/org/libreoffice/androidapp/ui/RecentFilesAdapter.java
+++ b/android/app/src/main/java/org/libreoffice/androidapp/ui/RecentFilesAdapter.java
@@ -111,13 +111,20 @@ class RecentFilesAdapter extends RecyclerView.Adapter<RecentFilesAdapter.ViewHol
public void onBindViewHolder(ViewHolder holder, int position) {
final RecentFile file = recentFiles.get(position);
- holder.itemView.setOnClickListener(new View.OnClickListener() {
+ holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mActivity.open(file.uri);
}
});
+ holder.fileActionsImageView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ mActivity.openContextMenu(view, file.uri);
+ }
+ });
+
String filename = file.filename;
long length = file.fileLength;
@@ -185,12 +192,13 @@ class RecentFilesAdapter extends RecyclerView.Adapter<RecentFilesAdapter.ViewHol
class ViewHolder extends RecyclerView.ViewHolder {
TextView filenameView, fileSizeView, fileSizeUnitView/*, fileDateView*/;
- ImageView imageView;
+ ImageView imageView, fileActionsImageView;
ViewHolder(View itemView) {
super(itemView);
this.filenameView = itemView.findViewById(R.id.file_item_name);
this.imageView = itemView.findViewById(R.id.file_item_icon);
+ this.fileActionsImageView = itemView.findViewById(R.id.file_actions_button);
// Check if view mode is List, only then initialise Size and Date field
if (mActivity.isViewModeList()) {
fileSizeView = itemView.findViewById(R.id.file_item_size);
diff --git a/android/app/src/main/res/drawable/ic_more_vert_black_24dp.xml b/android/app/src/main/res/drawable/ic_more_vert_black_24dp.xml
new file mode 100644
index 000000000..5176d8a4b
--- /dev/null
+++ b/android/app/src/main/res/drawable/ic_more_vert_black_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,16c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z"/>
+</vector>
diff --git a/android/app/src/main/res/layout/file_explorer_grid_item.xml b/android/app/src/main/res/layout/file_explorer_grid_item.xml
index d36de5d8a..631168050 100644
--- a/android/app/src/main/res/layout/file_explorer_grid_item.xml
+++ b/android/app/src/main/res/layout/file_explorer_grid_item.xml
@@ -6,12 +6,12 @@
file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:paddingTop="4dp"
- android:paddingBottom="4dp"
- android:orientation="vertical" >
+ android:orientation="vertical"
+ android:padding="4dp">
<ImageView
android:id="@+id/file_item_icon"
@@ -21,22 +21,39 @@
android:contentDescription="@string/file_icon_desc"
android:scaleType="fitCenter"
tools:src="@drawable/ic_folder_black_24dp"
- tools:tint="@color/text_color_secondary"/>
+ tools:tint="@color/text_color_secondary" />
- <TextView
- android:id="@+id/file_item_name"
+ <LinearLayout
android:layout_width="match_parent"
- android:layout_height="40dp"
+ android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_marginTop="4dp"
- android:gravity="center_vertical"
- android:maxLines="2"
- android:paddingLeft="10dp"
- android:paddingRight="10dp"
- android:textAlignment="center"
- android:textColor="@android:color/secondary_text_light"
- android:textSize="15sp"
- android:textStyle="bold"
- tools:text="file or dirname"/>
+ android:orientation="horizontal"
+ android:paddingLeft="24dp">
+
+ <TextView
+ android:id="@+id/file_item_name"
+ android:layout_width="0dp"
+ android:layout_height="40dp"
+ android:layout_gravity="center"
+ android:layout_weight="1"
+ android:ellipsize="end"
+ android:gravity="center_vertical"
+ android:maxLines="2"
+ android:textAlignment="center"
+ android:textColor="@android:color/secondary_text_light"
+ android:textSize="15sp"
+ android:textStyle="bold"
+ tools:text="file or dirname" />
+
+ <ImageView
+ android:id="@+id/file_actions_button"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:layout_gravity="center"
+ android:contentDescription="@string/file_actions_icon_desc"
+ android:scaleType="fitStart"
+ app:srcCompat="@drawable/ic_more_vert_black_24dp" />
+ </LinearLayout>
</LinearLayout>
diff --git a/android/app/src/main/res/layout/file_list_item.xml b/android/app/src/main/res/layout/file_list_item.xml
index 6164a6189..d128d913c 100644
--- a/android/app/src/main/res/layout/file_list_item.xml
+++ b/android/app/src/main/res/layout/file_list_item.xml
@@ -6,6 +6,7 @@
file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="48dp"
@@ -53,6 +54,14 @@
android:layout_width="30dp"
android:layout_height="match_parent"
tools:text="B" />
+
+ <ImageView
+ android:id="@+id/file_actions_button"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ android:contentDescription="@string/file_actions_icon_desc"
+ app:srcCompat="@drawable/ic_more_vert_black_24dp" />
<!--TextView
android:id="@+id/file_item_date"
tools:text="date/time"
diff --git a/android/app/src/main/res/menu/context_menu.xml b/android/app/src/main/res/menu/context_menu.xml
index 43824875d..3fb2a5c03 100644
--- a/android/app/src/main/res/menu/context_menu.xml
+++ b/android/app/src/main/res/menu/context_menu.xml
@@ -4,4 +4,6 @@
android:title="@string/open"/>
<item android:id="@+id/context_menu_share"
android:title="@string/share"/>
+ <item android:id="@+id/context_menu_remove_from_list"
+ android:title="@string/remove_from_list"/>
</menu>
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
index 29213c2df..8368c33fc 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -49,6 +49,7 @@
<string name="sort_oldest">Oldest first</string>
<string name="sort_newest">Newest first</string>
<string name="file_icon_desc">File icon</string>
+ <string name="file_actions_icon_desc">File actions</string>
<string name="title_recents">Recent files</string>
<string name="title_browser">All files</string>
<!-- Pref keys as resources ; Not currently used -->
@@ -57,6 +58,7 @@
<string name="action_settings">Settings</string>
<string name="open">Open</string>
<string name="share">Share</string>
+ <string name="remove_from_list">Remove from the list</string>
<string name="share_via">Share via</string>
<!-- Document browser filters -->
More information about the Libreoffice-commits
mailing list