diff --git a/patches/vanitasvitae-Add-first-image-viewer-design.patch b/patches/vanitasvitae-Add-first-image-viewer-design.patch new file mode 100644 index 00000000..ffb9ecab --- /dev/null +++ b/patches/vanitasvitae-Add-first-image-viewer-design.patch @@ -0,0 +1,240 @@ +From 90ae580fa732962127156a333b5d879cd4a80d36 Mon Sep 17 00:00:00 2001 +From: vanitasvitae +Date: Mon, 10 Apr 2017 21:43:24 +0200 +Subject: [PATCH] Add first image viewer design + +--- + app/build.gradle | 1 + + .../activity/ImageViewFragment.java | 77 +++++++++++++++++++ + .../activity/MainActivity.java | 4 + + .../service/ImageDownloadTask.java | 17 ++++ + .../web/ContextMenuWebView.java | 16 ++++ + .../main/res/layout/image_view__fragment.xml | 19 +++++ + 6 files changed, 134 insertions(+) + create mode 100644 app/src/main/java/com/github/dfa/diaspora_android/activity/ImageViewFragment.java + create mode 100644 app/src/main/res/layout/image_view__fragment.xml + +diff --git a/app/build.gradle b/app/build.gradle +index 5449e9fc..c46301ed 100644 +--- a/app/build.gradle ++++ b/app/build.gradle +@@ -85,6 +85,7 @@ dependencies { + compile 'info.guardianproject.netcipher:netcipher:2.0.0-alpha1' + compile 'info.guardianproject.netcipher:netcipher-webkit:2.0.0-alpha1' + compile 'com.github.DASAR:ShiftColorPicker:v0.5' ++ compile 'com.davemorrissey.labs:subsampling-scale-image-view:3.6.0' + apt 'com.jakewharton:butterknife-compiler:8.0.1' + } + +diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/ImageViewFragment.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/ImageViewFragment.java +new file mode 100644 +index 00000000..164e37ae +--- /dev/null ++++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/ImageViewFragment.java +@@ -0,0 +1,77 @@ ++package com.github.dfa.diaspora_android.activity; ++ ++import android.graphics.Bitmap; ++import android.os.Bundle; ++import android.view.LayoutInflater; ++import android.view.Menu; ++import android.view.MenuInflater; ++import android.view.View; ++import android.view.ViewGroup; ++import android.widget.ProgressBar; ++ ++import com.davemorrissey.labs.subscaleview.ImageSource; ++import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; ++import com.github.dfa.diaspora_android.R; ++import com.github.dfa.diaspora_android.service.ImageDownloadTask; ++import com.github.dfa.diaspora_android.ui.theme.ThemedFragment; ++import com.github.dfa.diaspora_android.util.AppLog; ++ ++import butterknife.BindView; ++import butterknife.ButterKnife; ++ ++/** ++ * Created by vanitas on 10.04.17. ++ */ ++ ++public class ImageViewFragment extends ThemedFragment { ++ public static final String TAG = "com.github.dfa.diaspora_android.ImageViewFragment"; ++ public static final String IMAGE_SOURCE = "IMAGE_SOURCE"; ++ ++ @BindView(R.id.imageView) ++ SubsamplingScaleImageView imageView; ++ @BindView(R.id.marker_progress) ++ ProgressBar progressBar; ++ ++ @Override ++ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ++ AppLog.d(this, "onCreateView()"); ++ View view = inflater.inflate(R.layout.image_view__fragment, container, false); ++ ButterKnife.bind(this, view); ++ return view; ++ } ++ ++ @Override ++ public void onViewCreated(View view, Bundle savedInstanceState) { ++ super.onViewCreated(view, savedInstanceState); ++ new ImageDownloadTask.ImageViewFragmentDownloadTask(this) ++ .execute(getArguments().getString(IMAGE_SOURCE)); ++ imageView.setMaxScale(5); ++ imageView.setDoubleTapZoomStyle(SubsamplingScaleImageView.ZOOM_FOCUS_CENTER); ++ imageView.setZoomEnabled(true); ++ } ++ ++ @Override ++ protected void applyColorToViews() { ++ ++ } ++ ++ @Override ++ public String getFragmentTag() { ++ return TAG; ++ } ++ ++ @Override ++ public void onCreateBottomOptionsMenu(Menu menu, MenuInflater inflater) { ++ ++ } ++ ++ @Override ++ public boolean onBackPressed() { ++ return false; ++ } ++ ++ public void showBitmap(Bitmap bitmap) { ++ progressBar.setVisibility(View.GONE); ++ imageView.setImage(ImageSource.bitmap(bitmap)); ++ } ++} +diff --git a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java +index 8019fb6d..031b624f 100644 +--- a/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java ++++ b/app/src/main/java/com/github/dfa/diaspora_android/activity/MainActivity.java +@@ -321,6 +321,10 @@ protected CustomFragment getFragment(String fragmentTag) { + PodSelectionFragment psf = new PodSelectionFragment(); + fm.beginTransaction().add(psf, fragmentTag).commit(); + return psf; ++ case ImageViewFragment.TAG: ++ ImageViewFragment ivf = new ImageViewFragment(); ++ fm.beginTransaction().add(ivf, fragmentTag).commit(); ++ return ivf; + default: + AppLog.e(this, "Invalid Fragment Tag: " + fragmentTag + + "\nAdd Fragments Tag to getFragment()'s switch case."); +diff --git a/app/src/main/java/com/github/dfa/diaspora_android/service/ImageDownloadTask.java b/app/src/main/java/com/github/dfa/diaspora_android/service/ImageDownloadTask.java +index 0834ee95..f11cfb82 100644 +--- a/app/src/main/java/com/github/dfa/diaspora_android/service/ImageDownloadTask.java ++++ b/app/src/main/java/com/github/dfa/diaspora_android/service/ImageDownloadTask.java +@@ -24,6 +24,9 @@ + import android.support.annotation.Nullable; + import android.widget.ImageView; + ++import com.davemorrissey.labs.subscaleview.ImageSource; ++import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView; ++import com.github.dfa.diaspora_android.activity.ImageViewFragment; + import com.github.dfa.diaspora_android.util.AppLog; + + import java.io.FileOutputStream; +@@ -95,4 +98,18 @@ protected void onPostExecute(Bitmap result) { + imageView.setImageBitmap(result); + } + } ++ ++ public static class ImageViewFragmentDownloadTask extends ImageDownloadTask { ++ ImageViewFragment ivf; ++ ++ public ImageViewFragmentDownloadTask(ImageViewFragment imageViewFragment) { ++ super(null, null); ++ this.ivf = imageViewFragment; ++ } ++ ++ @Override ++ protected void onPostExecute(Bitmap result) { ++ ivf.showBitmap(result); ++ } ++ } + } +diff --git a/app/src/main/java/com/github/dfa/diaspora_android/web/ContextMenuWebView.java b/app/src/main/java/com/github/dfa/diaspora_android/web/ContextMenuWebView.java +index c4c0e278..6c8947bd 100644 +--- a/app/src/main/java/com/github/dfa/diaspora_android/web/ContextMenuWebView.java ++++ b/app/src/main/java/com/github/dfa/diaspora_android/web/ContextMenuWebView.java +@@ -30,6 +30,7 @@ + import android.content.pm.PackageManager; + import android.graphics.Bitmap; + import android.net.Uri; ++import android.os.Bundle; + import android.os.Environment; + import android.support.v4.content.LocalBroadcastManager; + import android.util.AttributeSet; +@@ -38,6 +39,7 @@ + import android.widget.Toast; + + import com.github.dfa.diaspora_android.R; ++import com.github.dfa.diaspora_android.activity.ImageViewFragment; + import com.github.dfa.diaspora_android.activity.MainActivity; + import com.github.dfa.diaspora_android.service.ImageDownloadTask; + +@@ -53,6 +55,7 @@ + public static final int ID_SAVE_IMAGE = 10; + public static final int ID_IMAGE_EXTERNAL_BROWSER = 11; + public static final int ID_COPY_IMAGE_LINK = 15; ++ public static final int ID_VIEW_IMAGE = 16; + public static final int ID_COPY_LINK = 12; + public static final int ID_SHARE_LINK = 13; + public static final int ID_SHARE_IMAGE = 14; +@@ -82,6 +85,18 @@ public boolean onMenuItemClick(MenuItem item) { + HitTestResult result = getHitTestResult(); + String url = result.getExtra(); + switch (item.getItemId()) { ++ ++ case ID_VIEW_IMAGE: { ++ ImageViewFragment ivf = new ImageViewFragment(); ++ Bundle b = new Bundle(); ++ b.putString(ImageViewFragment.IMAGE_SOURCE, url); ++ ivf.setArguments(b); ++ ((MainActivity) parentActivity).getSupportFragmentManager().beginTransaction() ++ .addToBackStack(null) ++ .replace(R.id.fragment_container, ivf).commit(); ++ break; ++ } ++ + //Save image to external memory + case ID_SAVE_IMAGE: { + boolean writeToStoragePermitted = true; +@@ -224,6 +239,7 @@ protected void onPostExecute(Bitmap result) { + menu.add(0, ID_IMAGE_EXTERNAL_BROWSER, 0, context.getString(R.string.context_menu_open_external_browser)).setOnMenuItemClickListener(handler); + menu.add(0, ID_SHARE_IMAGE, 0, context.getString(R.string.context_menu_share_image)).setOnMenuItemClickListener(handler); + menu.add(0, ID_COPY_IMAGE_LINK, 0, context.getString(R.string.context_menu_copy_image_link)).setOnMenuItemClickListener(handler); ++ menu.add(0, ID_VIEW_IMAGE, 0, "View").setOnMenuItemClickListener(handler); + } else if (result.getType() == HitTestResult.ANCHOR_TYPE || + result.getType() == HitTestResult.SRC_ANCHOR_TYPE) { + // Menu options for a hyperlink. +diff --git a/app/src/main/res/layout/image_view__fragment.xml b/app/src/main/res/layout/image_view__fragment.xml +new file mode 100644 +index 00000000..2b91c501 +--- /dev/null ++++ b/app/src/main/res/layout/image_view__fragment.xml +@@ -0,0 +1,19 @@ ++ ++ ++ ++ ++ +\ No newline at end of file