aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Schneppe <christian.schneppe@pix-art.de>2020-02-16 10:48:14 +0100
committerChristian Schneppe <christian.schneppe@pix-art.de>2020-02-16 10:48:14 +0100
commitd5f16907242bf78a2d5d016af2c29c35757b34b7 (patch)
tree1f7355dbd917782d11bfcb772169a610be3b225c
parent827ae43d8b881b07d043b4050b9d6a30d7362787 (diff)
add ability to delete own files from MediaViewerActivity
-rw-r--r--src/main/java/de/pixart/messenger/ui/MediaViewerActivity.java90
-rw-r--r--src/main/res/menu/media_viewer.xml6
-rw-r--r--src/main/res/values/strings.xml1
3 files changed, 70 insertions, 27 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/MediaViewerActivity.java b/src/main/java/de/pixart/messenger/ui/MediaViewerActivity.java
index 8de0deb8a..8fe8f18ed 100644
--- a/src/main/java/de/pixart/messenger/ui/MediaViewerActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/MediaViewerActivity.java
@@ -37,6 +37,7 @@ import com.google.android.exoplayer2.source.ProgressiveMediaSource;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.util.Util;
+import com.leinardi.android.speeddial.SpeedDialActionItem;
import java.io.File;
import java.io.FileNotFoundException;
@@ -109,28 +110,7 @@ public class MediaViewerActivity extends XmppActivity implements AudioManager.On
getWindow().setAttributes(layout);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
- binding.speedDial.inflate(R.menu.media_viewer);
- binding.speedDial.setOnActionSelectedListener(actionItem -> {
- switch (actionItem.getId()) {
- case R.id.action_share:
- share();
- break;
- case R.id.action_open:
- open();
- break;
- /*
- case R.id.action_delete:
- if (mFile == null || !mFile.toString().startsWith("/") || mFile.toString().contains(FileBackend.getConversationsDirectory("null"))) {
- deleteFile();
- }
- break;
- */
- default:
- return false;
- }
- return false;
- });
- showFab();
+ //binding.speedDial.inflate(R.menu.media_viewer);
}
private void share() {
@@ -146,7 +126,7 @@ public class MediaViewerActivity extends XmppActivity implements AudioManager.On
}
private void deleteFile() {
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setNegativeButton(R.string.cancel, null);
builder.setTitle(R.string.delete_file_dialog);
builder.setMessage(R.string.delete_file_dialog_msg);
@@ -228,6 +208,54 @@ public class MediaViewerActivity extends XmppActivity implements AudioManager.On
}
}
}
+ if (isDeletableFile(mFile)) {
+ binding.speedDial.addActionItem(new SpeedDialActionItem.Builder(R.id.action_delete, R.drawable.ic_delete_white_24dp)
+ .setLabel(R.string.action_delete)
+ .create()
+ );
+ }
+ binding.speedDial.addActionItem(new SpeedDialActionItem.Builder(R.id.action_open, R.drawable.ic_open_in_new_white_24dp)
+ .setLabel(R.string.open_with)
+ .create()
+ );
+ binding.speedDial.addActionItem(new SpeedDialActionItem.Builder(R.id.action_share, R.drawable.ic_share_white_24dp)
+ .setLabel(R.string.share)
+ .create()
+ );
+
+ if (isDeletableFile(mFile)) {
+ binding.speedDial.setOnActionSelectedListener(actionItem -> {
+ switch (actionItem.getId()) {
+ case R.id.action_share:
+ share();
+ break;
+ case R.id.action_open:
+ open();
+ break;
+ case R.id.action_delete:
+ deleteFile();
+ break;
+ default:
+ return false;
+ }
+ return false;
+ });
+ } else {
+ binding.speedDial.setOnActionSelectedListener(actionItem -> {
+ switch (actionItem.getId()) {
+ case R.id.action_share:
+ share();
+ break;
+ case R.id.action_open:
+ open();
+ break;
+ default:
+ return false;
+ }
+ return false;
+ });
+ }
+ showFab();
}
private void DisplayImage(final File file, final Uri uri) {
@@ -309,14 +337,18 @@ public class MediaViewerActivity extends XmppActivity implements AudioManager.On
private void releaseAudiFocus() {
AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
- am.abandonAudioFocus(this);
+ if (am != null) {
+ am.abandonAudioFocus(this);
+ }
}
private void requestAudioFocus() {
AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
- am.requestAudioFocus(this,
- AudioManager.STREAM_MUSIC,
- AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
+ if (am != null) {
+ am.requestAudioFocus(this,
+ AudioManager.STREAM_MUSIC,
+ AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
+ }
}
private int getRotation(Uri image) {
@@ -462,4 +494,8 @@ public class MediaViewerActivity extends XmppActivity implements AudioManager.On
Log.i(Config.LOGTAG, "Audio focus failed.");
}
}
+
+ private boolean isDeletableFile(File file) {
+ return (file == null || !file.toString().startsWith("/") || file.toString().contains(FileBackend.getConversationsDirectory("null")));
+ }
} \ No newline at end of file
diff --git a/src/main/res/menu/media_viewer.xml b/src/main/res/menu/media_viewer.xml
index 36a89214c..c14181d24 100644
--- a/src/main/res/menu/media_viewer.xml
+++ b/src/main/res/menu/media_viewer.xml
@@ -10,4 +10,10 @@
android:icon="@drawable/ic_open_in_new_white_24dp"
android:orderInCategory="20"
android:title="@string/action_open" />
+ <item
+ android:id="@+id/action_delete"
+ android:icon="@drawable/ic_delete_white_24dp"
+ android:orderInCategory="20"
+ android:title="@string/action_delete"
+ android:visible="false" />
</menu> \ No newline at end of file
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 8f3123dba..45ba43d61 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -1004,4 +1004,5 @@
<string name="pref_use_colored_muc_names">Colorize nicknames</string>
<string name="show_videos_images_only">Only images/videos</string>
<string name="show_avatar">Show avatar</string>
+ <string name="action_delete">Delete</string>
</resources>