Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-03-25 22:50:06 +0300
committerStefan Niedermann <info@niedermann.it>2021-03-25 22:50:06 +0300
commita118ee3da56b977be2476c712f075125d78fd524 (patch)
treec89eb1e0a77914114d2c1086450e98fdc7637dfa /app/src/main/java/it/niedermann/nextcloud
parent7ae471d95d832d0f6f3460666ae7be76a9d714bc (diff)
Fix #587 Compress images before uploading as attachment
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java30
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java16
2 files changed, 34 insertions, 12 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java
index 0cb59c006..1da79a067 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/CardAttachmentsFragment.java
@@ -3,6 +3,7 @@ package it.niedermann.nextcloud.deck.ui.card.attachments;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.content.res.ColorStateList;
import android.graphics.Bitmap;
import android.net.Uri;
@@ -24,6 +25,7 @@ import androidx.core.app.SharedElementCallback;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
+import androidx.preference.PreferenceManager;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -96,6 +98,7 @@ public class CardAttachmentsFragment extends BrandedFragment implements Attachme
private EditCardViewModel editViewModel;
private PreviewDialogViewModel previewViewModel;
private BottomSheetBehavior<LinearLayout> mBottomSheetBehaviour;
+ private boolean compressImagesOnUpload = true;
private RecyclerView.ItemDecoration galleryItemDecoration;
@@ -235,6 +238,8 @@ public class CardAttachmentsFragment extends BrandedFragment implements Attachme
}
@Nullable Context context = requireContext();
applyBrand(readBrandMainColor(context));
+ final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext());
+ compressImagesOnUpload = sharedPreferences.getBoolean(getString(R.string.pref_key_compress_image_attachments), true);
return binding.getRoot();
}
@@ -413,16 +418,21 @@ public class CardAttachmentsFragment extends BrandedFragment implements Attachme
try {
final File originalFile = copyContentUriToTempFile(requireContext(), sourceUri, editViewModel.getAccount().getId(), editViewModel.getFullCard().getLocalId());
requireActivity().runOnUiThread(() -> {
- if (MimeTypeUtil.isImage(mimeType)) {
- JavaCompressor.compress(
- (AppCompatActivity) requireActivity(),
- originalFile,
- (status, file) -> uploadNewAttachmentFromFile(status ? file : originalFile, mimeType),
- new ResolutionConstraint(1920, 1920),
- new SizeConstraint(1_000_000, 10, 10, 10),
- new FormatConstraint(Bitmap.CompressFormat.JPEG),
- new QualityConstraint(80)
- );
+ if (compressImagesOnUpload && MimeTypeUtil.isImage(mimeType)) {
+ try {
+ JavaCompressor.compress(
+ (AppCompatActivity) requireActivity(),
+ originalFile,
+ (status, file) -> uploadNewAttachmentFromFile(status && file != null ? file : originalFile, mimeType),
+ new ResolutionConstraint(1920, 1920),
+ new SizeConstraint(1_000_000, 10, 10, 10),
+ new FormatConstraint(Bitmap.CompressFormat.JPEG),
+ new QualityConstraint(80)
+ );
+ } catch (Throwable t) {
+ DeckLog.logError(t);
+ uploadNewAttachmentFromFile(originalFile, mimeType);
+ }
} else {
uploadNewAttachmentFromFile(originalFile, mimeType);
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java
index 91c7ad995..ef9e7ccc0 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java
@@ -23,6 +23,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
private BrandedSwitchPreference wifiOnlyPref;
private BrandedSwitchPreference compactPref;
+ private BrandedSwitchPreference compressImageAttachmentsPref;
private BrandedSwitchPreference debuggingPref;
private BrandedSwitchPreference eTagPref;
@@ -31,7 +32,6 @@ public class SettingsFragment extends PreferenceFragmentCompat {
setPreferencesFromResource(R.xml.settings, rootKey);
wifiOnlyPref = findPreference(getString(R.string.pref_key_wifi_only));
-
if (wifiOnlyPref != null) {
wifiOnlyPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> {
final Boolean syncOnWifiOnly = (Boolean) newValue;
@@ -54,8 +54,19 @@ public class SettingsFragment extends PreferenceFragmentCompat {
DeckLog.error("Could not find preference with key:", getString(R.string.pref_key_dark_theme));
}
- compactPref = findPreference(getString(R.string.pref_key_compact));
+ compressImageAttachmentsPref = findPreference(getString(R.string.pref_key_compress_image_attachments));
+ if (compressImageAttachmentsPref != null) {
+ compressImageAttachmentsPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> {
+ setAppTheme(Integer.parseInt((String) newValue));
+ requireActivity().setResult(Activity.RESULT_OK);
+ ActivityCompat.recreate(requireActivity());
+ return true;
+ });
+ } else {
+ DeckLog.error("Could not find preference with key:", getString(R.string.pref_key_compress_image_attachments));
+ }
+ compactPref = findPreference(getString(R.string.pref_key_compact));
final ListPreference backgroundSyncPref = findPreference(getString(R.string.pref_key_background_sync));
if (backgroundSyncPref != null) {
backgroundSyncPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> {
@@ -87,6 +98,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
DeckApplication.readCurrentAccountColor().observe(getViewLifecycleOwner(), (mainColor) -> {
wifiOnlyPref.applyBrand(mainColor);
compactPref.applyBrand(mainColor);
+ compressImageAttachmentsPref.applyBrand(mainColor);
debuggingPref.applyBrand(mainColor);
eTagPref.applyBrand(mainColor);
});