[Libreoffice-commits] online.git: android/app
mert (via logerrit)
logerrit at kemper.freedesktop.org
Mon Mar 16 14:50:25 UTC 2020
android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java | 11 +
android/app/src/main/java/org/libreoffice/androidapp/ui/RecentFilesAdapter.java | 57 +++++++---
2 files changed, 54 insertions(+), 14 deletions(-)
New commits:
commit 10c695cfbbb8a9072388f5f0a03f557aa51955cf
Author: mert <mert.tumer at collabora.com>
AuthorDate: Tue Mar 10 19:08:11 2020 +0300
Commit: Andras Timar <andras.timar at collabora.com>
CommitDate: Mon Mar 16 15:50:05 2020 +0100
android: fix crash on removed/renamed file on recent files
Change-Id: Iedeaba896ecca17c0c7e5c038b1c370b72484c68
Reviewed-on: https://gerrit.libreoffice.org/c/online/+/90290
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice at gmail.com>
Reviewed-by: Mert Tümer <mert.tumer at collabora.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 1ef2acc45..bd9116c94 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
@@ -113,7 +113,7 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
public static final String EXPLORER_VIEW_TYPE_KEY = "EXPLORER_VIEW_TYPE";
public static final String EXPLORER_PREFS_KEY = "EXPLORER_PREFS";
public static final String SORT_MODE_KEY = "SORT_MODE";
- private static final String RECENT_DOCUMENTS_KEY = "RECENT_DOCUMENTS_LIST";
+ public static final String RECENT_DOCUMENTS_KEY = "RECENT_DOCUMENTS_LIST";
private static final String ENABLE_SHOW_HIDDEN_FILES_KEY = "ENABLE_SHOW_HIDDEN_FILES";
public static final String NEW_FILE_PATH_KEY = "NEW_FILE_PATH_KEY";
@@ -208,6 +208,12 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
recentRecyclerView.setAdapter(new RecentFilesAdapter(this, recentUris));
}
+ /** access shared preferences from the activity instance */
+ public SharedPreferences getPrefs()
+ {
+ return prefs;
+ }
+
/** Create the Navigation menu and set up the actions and everything there. */
public void setupNavigationDrawer() {
drawerLayout = findViewById(R.id.drawer_layout);
@@ -986,6 +992,9 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings
Uri shortcutUri = Uri.parse(pathString);
String filename = RecentFilesAdapter.getUriFilename(this, shortcutUri);
+ if (filename == null)
+ continue;
+
Intent intent = getIntentToEdit(shortcutUri);
ShortcutInfo.Builder builder = new ShortcutInfo.Builder(this, filename)
.setShortLabel(filename)
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 4a06899a9..371b7ab03 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
@@ -22,6 +22,7 @@ import android.widget.TextView;
import org.libreoffice.androidapp.R;
import java.text.SimpleDateFormat;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -34,11 +35,11 @@ class RecentFilesAdapter extends RecyclerView.Adapter<RecentFilesAdapter.ViewHol
private final long MB = 1048576;
private LibreOfficeUIActivity mActivity;
- private List<Uri> recentUris;
+ private ArrayList<RecentFile> recentFiles;
RecentFilesAdapter(LibreOfficeUIActivity activity, List<Uri> recentUris) {
this.mActivity = activity;
- this.recentUris = recentUris;
+ initRecentFiles(recentUris);
}
@Override
@@ -47,6 +48,26 @@ class RecentFilesAdapter extends RecyclerView.Adapter<RecentFilesAdapter.ViewHol
return new ViewHolder(item);
}
+ /** Validate uris in case of removed/renamed documents and return RecentFile ArrayList from the valid uris */
+ public void initRecentFiles(List<Uri> recentUris) {
+ this.recentFiles = new ArrayList<>();
+ boolean invalidUriFound = false;
+ String joined = "";
+ for (Uri u: recentUris) {
+ String filename = getUriFilename(mActivity, u);
+ if (null != filename) {
+ long length = getUriFileLength(mActivity, u);
+ recentFiles.add(new RecentFile(u, filename, length));
+ joined = joined.concat(u.toString()+"\n");
+ }
+ else
+ invalidUriFound = true;
+ }
+ if (invalidUriFound) {
+ mActivity.getPrefs().edit().putString(mActivity.RECENT_DOCUMENTS_KEY, joined).apply();
+ }
+ }
+
/** Return the filename of the given Uri. */
public static String getUriFilename(Activity activity, Uri uri) {
String filename = "";
@@ -60,11 +81,8 @@ class RecentFilesAdapter extends RecyclerView.Adapter<RecentFilesAdapter.ViewHol
cursor.close();
}
- if (filename.isEmpty()) {
- List<String> segments = uri.getPathSegments();
- if (segments.size() > 0)
- filename = segments.get(segments.size() - 1);
- }
+ if (filename.isEmpty())
+ return null;
return filename;
}
@@ -91,17 +109,18 @@ class RecentFilesAdapter extends RecyclerView.Adapter<RecentFilesAdapter.ViewHol
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
- final Uri uri = recentUris.get(position);
+ final RecentFile file = recentFiles.get(position);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- mActivity.open(uri);
+ mActivity.open(file.uri);
}
});
- String filename = getUriFilename(mActivity, uri);
- long length = getUriFileLength(mActivity, uri);
+ String filename = file.filename;
+ long length = file.fileLength;
+
// TODO Date not avaiable now
//Date date = null;
@@ -155,12 +174,12 @@ class RecentFilesAdapter extends RecyclerView.Adapter<RecentFilesAdapter.ViewHol
@Override
public int getItemCount() {
- if (recentUris.size() == 0) {
+ if (recentFiles.size() == 0) {
mActivity.noRecentItemsTextView.setVisibility(View.VISIBLE);
} else {
mActivity.noRecentItemsTextView.setVisibility(View.GONE);
}
- return recentUris.size();
+ return recentFiles.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
@@ -180,6 +199,18 @@ class RecentFilesAdapter extends RecyclerView.Adapter<RecentFilesAdapter.ViewHol
}
}
}
+ /** Cache the name & size so that we don't have ask later. */
+ private class RecentFile {
+ public Uri uri;
+ public String filename;
+ public long fileLength;
+
+ public RecentFile(Uri uri, String filename, long fileLength) {
+ this.uri = uri;
+ this.filename = filename;
+ this.fileLength = fileLength;
+ }
+ }
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list