diff --git a/app/build.gradle b/app/build.gradle
index 60fbf711..981f79dd 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -98,14 +98,17 @@ dependencies {
implementation 'com.mikepenz:materialdrawer:6.1.1'
implementation 'com.mikepenz:fontawesome-typeface:4.7.0.0@aar'
implementation 'com.mikepenz:google-material-typeface:3.0.1.2.original@aar'
- implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.15'
+ implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.19'
implementation 'com.bignerdranch.android:expandablerecyclerview:3.0.0-RC1'//TODO: deprecated!
+ implementation 'com.github.chrisbanes:PhotoView:2.3.0'
implementation 'me.zhanghai.android.materialprogressbar:library:1.4.2'
implementation 'com.jakewharton.timber:timber:4.7.1'
implementation 'ru.noties:markwon:2.0.2'
implementation 'net.gotev:uploadservice:3.5.2'
implementation 'net.gotev:uploadservice-okhttp:3.4.2' //TODO: Warning: v.3.5 depends on okhttp 3.13!
implementation 'com.itkacher.okhttpprofiler:okhttpprofiler:1.0.5' //Plugin: https://plugins.jetbrains.com/plugin/11249-okhttp-profiler
+ implementation 'com.github.bumptech.glide:glide:4.11.0'
+ annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
testImplementation 'junit:junit:4.12'
testImplementation 'org.powermock:powermock-core:2.0.2'
testImplementation 'org.powermock:powermock-module-junit4:2.0.2'
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 9cde3150..e7c4ece2 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -32,6 +32,14 @@
# Picasso
-dontwarn com.squareup.okhttp.**
+#Glide
+-keep public class * implements com.bumptech.glide.module.GlideModule
+-keep public class * extends com.bumptech.glide.module.AppGlideModule
+-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
+ **[] $VALUES;
+ public *;
+}
+
# Android-Iconics (fontawesome-typeface)
-keep class .R
-keep class **.R$* {
diff --git a/app/src/main/assets/apache_libraries.html b/app/src/main/assets/apache_libraries.html
index a75e08f3..c0c2e987 100644
--- a/app/src/main/assets/apache_libraries.html
+++ b/app/src/main/assets/apache_libraries.html
@@ -52,6 +52,9 @@
diff --git a/app/src/main/assets/other_libraries.html b/app/src/main/assets/other_libraries.html
new file mode 100644
index 00000000..53edb44c
--- /dev/null
+++ b/app/src/main/assets/other_libraries.html
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+Glide License
+
+License for everything not in third_party and not otherwise marked:
+
+Copyright 2014 Google, Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are
+permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this list of
+ conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ of conditions and the following disclaimer in the documentation and/or other materials
+ provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY GOOGLE, INC. ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE, INC. OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The views and conclusions contained in the software and documentation are those of the
+authors and should not be interpreted as representing official policies, either expressed
+or implied, of Google, Inc.
+---------------------------------------------------------------------------------------------
+License for third_party/disklrucache:
+
+Copyright 2012 Jake Wharton
+Copyright 2011 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+---------------------------------------------------------------------------------------------
+License for third_party/gif_decoder:
+
+Copyright (c) 2013 Xcellent Creations, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+---------------------------------------------------------------------------------------------
+License for third_party/gif_encoder/AnimatedGifEncoder.java and
+third_party/gif_encoder/LZWEncoder.java:
+
+No copyright asserted on the source code of this class. May be used for any
+purpose, however, refer to the Unisys LZW patent for restrictions on use of
+the associated LZWEncoder class. Please forward any corrections to
+kweiner@fmsware.com.
+
+-----------------------------------------------------------------------------
+License for third_party/gif_encoder/NeuQuant.java
+
+Copyright (c) 1994 Anthony Dekker
+
+NEUQUANT Neural-Net quantization algorithm by Anthony Dekker, 1994. See
+"Kohonen neural networks for optimal colour quantization" in "Network:
+Computation in Neural Systems" Vol. 5 (1994) pp 351-367. for a discussion of
+the algorithm.
+
+Any party obtaining a copy of these files from the author, directly or
+indirectly, is granted, free of charge, a full and unrestricted irrevocable,
+world-wide, paid up, royalty-free, nonexclusive right and license to deal in
+this software and documentation files (the "Software"), including without
+limitation the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to permit persons who
+receive copies from any such party to do so, with the only requirement being
+that this copyright notice remain intact.
+
+
+
+
diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/AboutActivity.java b/app/src/main/java/gr/thmmy/mthmmy/activities/AboutActivity.java
index 0f3e9981..1919608f 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/activities/AboutActivity.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/activities/AboutActivity.java
@@ -151,6 +151,10 @@ public class AboutActivity extends BaseActivity {
title=getString(R.string.epl_libraries);
fileUrl="file:///android_asset/epl_libraries.html";
break;
+ case "OTHER":
+ title=getString(R.string.other_libraries);
+ fileUrl="file:///android_asset/other_libraries.html";
+ break;
default:
break;
}
diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/main/recent/RecentFragment.java b/app/src/main/java/gr/thmmy/mthmmy/activities/main/recent/RecentFragment.java
index 6eff1d27..9435fecc 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/activities/main/recent/RecentFragment.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/activities/main/recent/RecentFragment.java
@@ -1,7 +1,6 @@
package gr.thmmy.mthmmy.activities.main.recent;
import android.os.AsyncTask;
-import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/main/unread/UnreadFragment.java b/app/src/main/java/gr/thmmy/mthmmy/activities/main/unread/UnreadFragment.java
index 53b7d20b..8b11cc3e 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/activities/main/unread/UnreadFragment.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/activities/main/unread/UnreadFragment.java
@@ -2,7 +2,6 @@
package gr.thmmy.mthmmy.activities.main.unread;
import android.os.AsyncTask;
-import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/profile/latestPosts/LatestPostsAdapter.java b/app/src/main/java/gr/thmmy/mthmmy/activities/profile/latestPosts/LatestPostsAdapter.java
index d2a4d1cb..5b401f01 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/activities/profile/latestPosts/LatestPostsAdapter.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/activities/profile/latestPosts/LatestPostsAdapter.java
@@ -1,5 +1,7 @@
package gr.thmmy.mthmmy.activities.profile.latestPosts;
+import android.annotation.SuppressLint;
+import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
@@ -16,6 +18,7 @@ import gr.thmmy.mthmmy.R;
import gr.thmmy.mthmmy.base.BaseFragment;
import gr.thmmy.mthmmy.model.PostSummary;
import gr.thmmy.mthmmy.model.TopicSummary;
+import gr.thmmy.mthmmy.utils.WebViewOnTouchClickListener;
import me.zhanghai.android.materialprogressbar.MaterialProgressBar;
/**
@@ -26,11 +29,13 @@ class LatestPostsAdapter extends RecyclerView.Adapter {
private static final int VIEW_TYPE_EMPTY = -1;
private static final int VIEW_TYPE_ITEM = 0;
private static final int VIEW_TYPE_LOADING = 1;
+ private final Context context;
private final LatestPostsFragment.LatestPostsFragmentInteractionListener interactionListener;
private final ArrayList parsedTopicSummaries;
- LatestPostsAdapter(BaseFragment.FragmentInteractionListener interactionListener,
+ LatestPostsAdapter(Context context, BaseFragment.FragmentInteractionListener interactionListener,
ArrayList parsedTopicSummaries) {
+ this.context = context;
this.interactionListener = (LatestPostsFragment.LatestPostsFragmentInteractionListener) interactionListener;
this.parsedTopicSummaries = parsedTopicSummaries;
}
@@ -64,6 +69,7 @@ class LatestPostsAdapter extends RecyclerView.Adapter {
return null;
}
+ @SuppressLint("ClickableViewAccessibility")
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
if (holder instanceof LatestPostViewHolder) {
@@ -75,6 +81,7 @@ class LatestPostsAdapter extends RecyclerView.Adapter {
latestPostViewHolder.post.setBackgroundColor(Color.argb(1, 255, 255, 255));
latestPostViewHolder.post.loadDataWithBaseURL("file:///android_asset/"
, topic.getPost(), "text/html", "UTF-8", null);
+ latestPostViewHolder.post.setOnTouchListener(new WebViewOnTouchClickListener(context));
latestPostViewHolder.latestPostsRow.setOnClickListener(v -> {
if (interactionListener != null) {
diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/profile/latestPosts/LatestPostsFragment.java b/app/src/main/java/gr/thmmy/mthmmy/activities/profile/latestPosts/LatestPostsFragment.java
index 11a1cb7c..b23cc601 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/activities/profile/latestPosts/LatestPostsFragment.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/activities/profile/latestPosts/LatestPostsFragment.java
@@ -6,7 +6,6 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
-import android.widget.Toast;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -86,7 +85,7 @@ public class LatestPostsFragment extends BaseFragment implements LatestPostsAdap
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_latest_posts, container, false);
- latestPostsAdapter = new LatestPostsAdapter(fragmentInteractionListener, parsedTopicSummaries);
+ latestPostsAdapter = new LatestPostsAdapter(this.getContext(), fragmentInteractionListener, parsedTopicSummaries);
RecyclerView mainContent = rootView.findViewById(R.id.profile_latest_posts_recycler);
mainContent.setAdapter(latestPostsAdapter);
final LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicAdapter.java b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicAdapter.java
index 0e885cc3..327fe44d 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicAdapter.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/TopicAdapter.java
@@ -73,6 +73,7 @@ import gr.thmmy.mthmmy.model.ThmmyFile;
import gr.thmmy.mthmmy.model.ThmmyPage;
import gr.thmmy.mthmmy.model.TopicItem;
import gr.thmmy.mthmmy.utils.CircleTransform;
+import gr.thmmy.mthmmy.utils.WebViewOnTouchClickListener;
import gr.thmmy.mthmmy.utils.parsing.ParseHelpers;
import gr.thmmy.mthmmy.utils.parsing.ThmmyParser;
import gr.thmmy.mthmmy.viewmodel.TopicViewModel;
@@ -362,6 +363,7 @@ class TopicAdapter extends RecyclerView.Adapter {
//Post's WebView parameters
holder.post.setClickable(true);
holder.post.setWebViewClient(new LinkLauncher());
+ holder.post.setOnTouchListener(new WebViewOnTouchClickListener(context));
//noinspection ConstantConditions
loadAvatar(currentPost.getThumbnailURL(), holder.thumbnail);
diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/tasks/PrepareForEditTask.java b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/tasks/PrepareForEditTask.java
index 6c971d33..5438132e 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/tasks/PrepareForEditTask.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/tasks/PrepareForEditTask.java
@@ -10,7 +10,6 @@ import org.jsoup.select.Selector;
import java.io.IOException;
import gr.thmmy.mthmmy.base.BaseApplication;
-import gr.thmmy.mthmmy.utils.parsing.ParseHelpers;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
diff --git a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/tasks/PrepareForReplyTask.java b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/tasks/PrepareForReplyTask.java
index 4f1f160c..b45bf50c 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/activities/topic/tasks/PrepareForReplyTask.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/activities/topic/tasks/PrepareForReplyTask.java
@@ -10,7 +10,6 @@ import org.jsoup.select.Selector;
import java.io.IOException;
import gr.thmmy.mthmmy.base.BaseApplication;
-import gr.thmmy.mthmmy.utils.parsing.ParseHelpers;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
diff --git a/app/src/main/java/gr/thmmy/mthmmy/base/BaseActivity.java b/app/src/main/java/gr/thmmy/mthmmy/base/BaseActivity.java
index 22357d76..bd21f61b 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/base/BaseActivity.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/base/BaseActivity.java
@@ -390,7 +390,7 @@ public abstract class BaseActivity extends AppCompatActivity {
DrawerBuilder drawerBuilder = new DrawerBuilder()
.withActivity(this)
.withToolbar(toolbar)
- .withDrawerWidthDp((int) BaseApplication.getInstance().getDpWidth() / 2)
+ .withDrawerWidthDp((int) BaseApplication.getInstance().getWidthInDp() / 2)
.withSliderBackgroundColor(ContextCompat.getColor(this, R.color.primary_light))
.withAccountHeader(accountHeader)
.withOnDrawerItemClickListener((view, position, drawerItem) -> {
diff --git a/app/src/main/java/gr/thmmy/mthmmy/base/BaseApplication.java b/app/src/main/java/gr/thmmy/mthmmy/base/BaseApplication.java
index 64ad4996..c52a8c98 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/base/BaseApplication.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/base/BaseApplication.java
@@ -68,7 +68,9 @@ public class BaseApplication extends Application {
private static final String SHARED_PREFS = "ThmmySharedPrefs";
//Display Metrics
- private static float dpWidth;
+ private static float widthDp;
+ private static int widthPxl, heightPxl;
+
public static BaseApplication getInstance() {
return baseApplication;
}
@@ -175,7 +177,11 @@ public class BaseApplication extends Application {
});
DisplayMetrics displayMetrics = getApplicationContext().getResources().getDisplayMetrics();
- dpWidth = displayMetrics.widthPixels / displayMetrics.density;
+
+ widthPxl = displayMetrics.widthPixels;
+ widthDp = widthPxl / displayMetrics.density;
+
+ heightPxl = displayMetrics.heightPixels;
displayRelativeTime = settingsSharedPrefs.getBoolean(DISPLAY_RELATIVE_TIME, false);
}
@@ -193,8 +199,16 @@ public class BaseApplication extends Application {
return sessionManager;
}
- public float getDpWidth() {
- return dpWidth;
+ public float getWidthInDp() {
+ return widthDp;
+ }
+
+ public int getWidthInPixels() {
+ return widthPxl;
+ }
+
+ public int getHeightInPixels() {
+ return heightPxl;
}
public boolean isDisplayRelativeTimeEnabled() {
diff --git a/app/src/main/java/gr/thmmy/mthmmy/session/SessionManager.java b/app/src/main/java/gr/thmmy/mthmmy/session/SessionManager.java
index a907e057..36def1de 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/session/SessionManager.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/session/SessionManager.java
@@ -19,7 +19,6 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import gr.thmmy.mthmmy.utils.parsing.ParseException;
-import gr.thmmy.mthmmy.utils.parsing.ParseHelpers;
import okhttp3.Cookie;
import okhttp3.FormBody;
import okhttp3.HttpUrl;
diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/NetworkTask.java b/app/src/main/java/gr/thmmy/mthmmy/utils/NetworkTask.java
index 950d9934..9ae5a309 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/utils/NetworkTask.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/utils/NetworkTask.java
@@ -11,7 +11,6 @@ import java.io.IOException;
import gr.thmmy.mthmmy.R;
import gr.thmmy.mthmmy.base.BaseApplication;
import gr.thmmy.mthmmy.utils.parsing.ParseException;
-import gr.thmmy.mthmmy.utils.parsing.ParseHelpers;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/WebViewOnTouchClickListener.java b/app/src/main/java/gr/thmmy/mthmmy/utils/WebViewOnTouchClickListener.java
new file mode 100644
index 00000000..43a5b40e
--- /dev/null
+++ b/app/src/main/java/gr/thmmy/mthmmy/utils/WebViewOnTouchClickListener.java
@@ -0,0 +1,79 @@
+package gr.thmmy.mthmmy.utils;
+
+import android.annotation.SuppressLint;
+import android.app.Dialog;
+import android.content.Context;
+import android.graphics.drawable.ColorDrawable;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+import android.view.Window;
+import android.webkit.WebView;
+
+import com.bumptech.glide.Glide;
+import com.github.chrisbanes.photoview.PhotoView;
+
+import gr.thmmy.mthmmy.base.BaseApplication;
+
+/**
+ * Workaround for WebView's inability to send onClick events (sends only onLongClickEvents)
+ * If an image is find when clicking it will be inflated as a zoomed/zoomable/pinchable PhotoView
+ */
+public class WebViewOnTouchClickListener implements View.OnTouchListener {
+ private final static int screenWidth = BaseApplication.getInstance().getWidthInPixels();
+ private final static int screenHeight = BaseApplication.getInstance().getHeightInPixels();
+
+ private final static long MAX_TOUCH_DURATION = 100;
+ private final Context context;
+ private long downTime;
+
+ public WebViewOnTouchClickListener(Context context){
+ this.context = context;
+ }
+
+ @SuppressLint("ClickableViewAccessibility")
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ switch (event.getAction()) {
+ case MotionEvent.ACTION_DOWN:
+ downTime = event.getEventTime();
+ break;
+ case MotionEvent.ACTION_UP:
+ if(event.getEventTime() - downTime <= MAX_TOUCH_DURATION)
+ onClick((WebView) v);
+ break;
+ default:
+ break;
+ }
+ return false;
+ }
+
+ private void onClick(WebView webView){
+ WebView.HitTestResult result = webView.getHitTestResult();
+ if(result.getType() == WebView.HitTestResult.IMAGE_TYPE){
+ String imageURL = result.getExtra();
+ showImage(imageURL);
+ }
+ webView.performClick();
+ }
+
+ private void showImage(String url) {
+ Dialog builder = new Dialog(context);
+ builder.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ builder.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
+ builder.getWindow().setBackgroundDrawable(
+ new ColorDrawable(android.graphics.Color.TRANSPARENT));
+
+ PhotoView photoView = new PhotoView(context);
+ photoView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+ photoView.getLayoutParams().width = screenWidth;
+ photoView.getLayoutParams().height = screenHeight;
+
+ Glide.with(context).load(url).fitCenter().into(photoView);
+ builder.addContentView(photoView, new ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.MATCH_PARENT));
+ builder.show();
+ }
+}
diff --git a/app/src/main/java/gr/thmmy/mthmmy/utils/parsing/ParseHelpers.java b/app/src/main/java/gr/thmmy/mthmmy/utils/parsing/ParseHelpers.java
index f5198410..50ca9870 100644
--- a/app/src/main/java/gr/thmmy/mthmmy/utils/parsing/ParseHelpers.java
+++ b/app/src/main/java/gr/thmmy/mthmmy/utils/parsing/ParseHelpers.java
@@ -1,9 +1,7 @@
package gr.thmmy.mthmmy.utils.parsing;
-import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
-import org.jsoup.nodes.TextNode;
import org.jsoup.select.Elements;
import java.util.ArrayList;
@@ -11,8 +9,6 @@ import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import timber.log.Timber;
-
/**
* This class consists exclusively of static classes (enums) and methods (excluding methods of inner
* classes). It can be used to resolve a page's language and state or fix embedded videos html code
diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml
index f41fe45f..87d99723 100644
--- a/app/src/main/res/layout/activity_about.xml
+++ b/app/src/main/res/layout/activity_about.xml
@@ -142,11 +142,22 @@
android:textColor="@color/accent" />
+
+ Apache v2.0 License libraries
The MIT License libraries
Eclipse Public License v1.0 libraries
+ Other libraries
Contact
Do not hesitate to contact us for any matter either by email at thmmynolife@gmail.com, or by joining our discord server at https://discord.gg/CVt3yrn.
Open Source