diff --git a/app/src/main/java/com/keylesspalace/tusky/SFragment.java b/app/src/main/java/com/keylesspalace/tusky/SFragment.java
index bd187e25..aea5b552 100644
--- a/app/src/main/java/com/keylesspalace/tusky/SFragment.java
+++ b/app/src/main/java/com/keylesspalace/tusky/SFragment.java
@@ -18,6 +18,7 @@ package com.keylesspalace.tusky;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.media.ImageReader;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
@@ -36,6 +37,7 @@ import com.android.volley.toolbox.JsonObjectRequest;
import org.json.JSONObject;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -203,10 +205,26 @@ public class SFragment extends Fragment {
popup.show();
}
+ private boolean fileExtensionMatches(String url, String extension) {
+ extension = "." + extension;
+ int parametersStart = url.indexOf('?');
+ if (parametersStart == -1) {
+ return url.toLowerCase().endsWith(extension);
+ } else {
+ int start = parametersStart - extension.length();
+ return start > 0 && url.substring(start, parametersStart).equals(extension);
+ }
+ }
+
protected void viewMedia(String url, Status.MediaAttachment.Type type) {
switch (type) {
case IMAGE: {
- Fragment newFragment = ViewMediaFragment.newInstance(url);
+ Fragment newFragment;
+ if (fileExtensionMatches(url, "gif")) {
+ newFragment = ViewGifFragment.newInstance(url);
+ } else {
+ newFragment = ViewMediaFragment.newInstance(url);
+ }
FragmentManager manager = getFragmentManager();
manager.beginTransaction()
.add(R.id.overlay_fragment_container, newFragment)
diff --git a/app/src/main/java/com/keylesspalace/tusky/ViewGifFragment.java b/app/src/main/java/com/keylesspalace/tusky/ViewGifFragment.java
new file mode 100644
index 00000000..b75ca396
--- /dev/null
+++ b/app/src/main/java/com/keylesspalace/tusky/ViewGifFragment.java
@@ -0,0 +1,58 @@
+/* Copyright 2017 Andrew Dawson
+ *
+ * This file is part of Tusky.
+ *
+ * Tusky is free software: you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License as published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
+ * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+ * Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with Tusky. If not, see
+ * . */
+
+package com.keylesspalace.tusky;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.webkit.WebView;
+
+public class ViewGifFragment extends Fragment {
+ public static ViewGifFragment newInstance(String url) {
+ Bundle arguments = new Bundle();
+ ViewGifFragment fragment = new ViewGifFragment();
+ arguments.putString("url", url);
+ fragment.setArguments(arguments);
+ return fragment;
+ }
+
+ @Nullable
+ @Override
+ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
+ @Nullable Bundle savedInstanceState) {
+ View rootView = inflater.inflate(R.layout.fragment_view_gif, container, false);
+
+ String url = getArguments().getString("url");
+ WebView gifView = (WebView) rootView.findViewById(R.id.gif_view);
+ gifView.loadUrl(url);
+
+ rootView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ dismiss();
+ }
+ });
+
+ return rootView;
+ }
+
+ private void dismiss() {
+ getFragmentManager().popBackStack();
+ }
+}
diff --git a/app/src/main/res/layout/fragment_view_gif.xml b/app/src/main/res/layout/fragment_view_gif.xml
new file mode 100644
index 00000000..3a783484
--- /dev/null
+++ b/app/src/main/res/layout/fragment_view_gif.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file