summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java')
-rw-r--r--app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java102
1 files changed, 76 insertions, 26 deletions
diff --git a/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java b/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java
index e566b65c0..86381e200 100644
--- a/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/SlideMediaActivity.java
@@ -24,6 +24,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
+import android.graphics.Color;
import android.graphics.Point;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
@@ -35,10 +36,12 @@ import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
+import android.view.Window;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
+import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
@@ -92,13 +95,13 @@ public class SlideMediaActivity extends BaseFragmentActivity implements OnDownlo
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
ContentResolver cR = context.getContentResolver();
- if( cR != null && uri != null) {
+ if (cR != null && uri != null) {
shareIntent.setType(cR.getType(uri));
try {
startActivity(shareIntent);
} catch (Exception ignored) {
}
- }else {
+ } else {
Toasty.error(context, context.getString(R.string.toast_error), Toasty.LENGTH_LONG).show();
}
} else {
@@ -123,8 +126,14 @@ public class SlideMediaActivity extends BaseFragmentActivity implements OnDownlo
default:
setTheme(R.style.TransparentDark);
}
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ ActivityCompat.postponeEnterTransition(SlideMediaActivity.this);
+
+ }
+ getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
setContentView(R.layout.activity_media_pager);
+
fullscreen = false;
media_description = findViewById(R.id.media_description);
final int med_desc_timeout = sharedpreferences.getInt(Helper.SET_MED_DESC_TIMEOUT, 3) * 1000;
@@ -136,39 +145,37 @@ public class SlideMediaActivity extends BaseFragmentActivity implements OnDownlo
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
- actionBar.setBackgroundDrawable(new ColorDrawable(bgColor));
+
+ actionBar.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
+ actionBar.setElevation(0);
+
LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);
assert inflater != null;
View view = inflater.inflate(R.layout.media_action_bar, new LinearLayout(SlideMediaActivity.this), false);
- view.setBackgroundColor(bgColor);
actionBar.setCustomView(view, new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
ImageView toolbar_close = actionBar.getCustomView().findViewById(R.id.toolbar_close);
TextView toolbar_title = actionBar.getCustomView().findViewById(R.id.toolbar_title);
ImageView media_save = actionBar.getCustomView().findViewById(R.id.media_save);
ImageView media_share = actionBar.getCustomView().findViewById(R.id.media_share);
- toolbar_close.setOnClickListener(v -> finish());
+ toolbar_close.setOnClickListener(v -> ActivityCompat.finishAfterTransition(this));
media_save.setOnClickListener(view12 -> {
int position = mPager.getCurrentItem();
Attachment attachment = attachments.get(position);
- if (attachment.getType().compareTo("image") == 0) {
- if (Build.VERSION.SDK_INT >= 23) {
- if (ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(SlideMediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Helper.EXTERNAL_STORAGE_REQUEST_CODE);
- } else {
- Helper.manageMove(SlideMediaActivity.this, attachment.getUrl(), false);
- }
+ if (Build.VERSION.SDK_INT >= 23) {
+ if (ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
+ ActivityCompat.requestPermissions(SlideMediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Helper.EXTERNAL_STORAGE_REQUEST_CODE_MEDIA_SAVE);
} else {
- Helper.manageMove(SlideMediaActivity.this, attachment.getUrl(), false);
- }
- } else {
- if (Build.VERSION.SDK_INT >= 23) {
- if (ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(SlideMediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Helper.EXTERNAL_STORAGE_REQUEST_CODE);
+ if (attachment.getType().compareTo("image") == 0) {
+ Helper.manageMove(SlideMediaActivity.this, attachment.getUrl(), false);
} else {
Helper.manageDownloadsNoPopup(SlideMediaActivity.this, attachment.getUrl());
downloadID = -1;
}
+ }
+ } else {
+ if (attachment.getType().compareTo("image") == 0) {
+ Helper.manageMove(SlideMediaActivity.this, attachment.getUrl(), false);
} else {
Helper.manageDownloadsNoPopup(SlideMediaActivity.this, attachment.getUrl());
downloadID = -1;
@@ -186,7 +193,7 @@ public class SlideMediaActivity extends BaseFragmentActivity implements OnDownlo
} else {
if (Build.VERSION.SDK_INT >= 23) {
if (ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(SlideMediaActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(SlideMediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Helper.EXTERNAL_STORAGE_REQUEST_CODE);
+ ActivityCompat.requestPermissions(SlideMediaActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Helper.EXTERNAL_STORAGE_REQUEST_CODE_MEDIA_SHARE);
} else {
downloadID = Helper.manageDownloadsNoPopup(SlideMediaActivity.this, attachment.getUrl());
}
@@ -208,6 +215,7 @@ public class SlideMediaActivity extends BaseFragmentActivity implements OnDownlo
mPager.setAdapter(mPagerAdapter);
mPager.setCurrentItem(mediaPosition - 1);
+ mPager.setOffscreenPageLimit(0);
registerReceiver(onDownloadComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
String description = attachments.get(mediaPosition - 1).getDescription();
@@ -216,10 +224,16 @@ public class SlideMediaActivity extends BaseFragmentActivity implements OnDownlo
media_description.setText(description);
media_description.setVisibility(View.VISIBLE);
- handler.postDelayed(() -> media_description.setVisibility(View.GONE), med_desc_timeout);
+ handler.postDelayed(() -> {
+ if (!media_description.hasSelection()) {
+ media_description.setVisibility(View.GONE);
+ }
+ }, med_desc_timeout);
} else {
- media_description.setVisibility(View.GONE);
+ if (!media_description.hasSelection()) {
+ media_description.setVisibility(View.GONE);
+ }
}
mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
public void onPageScrollStateChanged(int state) {
@@ -238,10 +252,16 @@ public class SlideMediaActivity extends BaseFragmentActivity implements OnDownlo
media_description.setText(description);
media_description.setVisibility(View.VISIBLE);
- handler.postDelayed(() -> media_description.setVisibility(View.GONE), med_desc_timeout);
+ handler.postDelayed(() -> {
+ if (!media_description.hasSelection()) {
+ media_description.setVisibility(View.GONE);
+ }
+ }, med_desc_timeout);
} else {
- media_description.setVisibility(View.GONE);
+ if (!media_description.hasSelection()) {
+ media_description.setVisibility(View.GONE);
+ }
}
}
});
@@ -258,11 +278,35 @@ public class SlideMediaActivity extends BaseFragmentActivity implements OnDownlo
}
@Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ switch (requestCode) {
+ case Helper.EXTERNAL_STORAGE_REQUEST_CODE_MEDIA_SAVE:
+ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ int position = mPager.getCurrentItem();
+ Attachment attachment = attachments.get(position);
+ if (attachment.getType().compareTo("image") == 0) {
+ Helper.manageMove(SlideMediaActivity.this, attachment.getUrl(), false);
+ } else {
+ Helper.manageDownloadsNoPopup(SlideMediaActivity.this, attachment.getUrl());
+ downloadID = -1;
+ }
+ } else { /*Todo: Toast "Storage Permission Required" */ }
+ return;
+ case Helper.EXTERNAL_STORAGE_REQUEST_CODE_MEDIA_SHARE:
+ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ int position = mPager.getCurrentItem();
+ Attachment attachment = attachments.get(position);
+ downloadID = Helper.manageDownloadsNoPopup(SlideMediaActivity.this, attachment.getUrl());
+ } else { /*Todo: Toast "Storage Permission Required" */ }
+ break;
+ }
+ }
+
+ @Override
public boolean dispatchTouchEvent(MotionEvent event) {
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
final int med_desc_timeout = sharedpreferences.getInt(Helper.SET_MED_DESC_TIMEOUT, 3) * 1000;
-
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = event.getX();
@@ -283,10 +327,16 @@ public class SlideMediaActivity extends BaseFragmentActivity implements OnDownlo
media_description.setText(description);
media_description.setVisibility(View.VISIBLE);
- handler.postDelayed(() -> media_description.setVisibility(View.GONE), med_desc_timeout);
+ handler.postDelayed(() -> {
+ if (!media_description.hasSelection()) {
+ media_description.setVisibility(View.GONE);
+ }
+ }, med_desc_timeout);
} else {
- media_description.setVisibility(View.GONE);
+ if (!media_description.hasSelection()) {
+ media_description.setVisibility(View.GONE);
+ }
}
}
}