Embeds video for cards
This commit is contained in:
parent
3a36f602d3
commit
582cf9f1f1
|
@ -1497,6 +1497,7 @@ public class API {
|
||||||
card.setTitle(resobj.get("title").toString());
|
card.setTitle(resobj.get("title").toString());
|
||||||
card.setDescription(resobj.get("description").toString());
|
card.setDescription(resobj.get("description").toString());
|
||||||
card.setImage(resobj.get("image").toString());
|
card.setImage(resobj.get("image").toString());
|
||||||
|
card.setHtml(resobj.get("html").toString());
|
||||||
card.setType(resobj.get("type").toString());
|
card.setType(resobj.get("type").toString());
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
card = null;
|
card = null;
|
||||||
|
|
|
@ -29,6 +29,7 @@ public class Card{
|
||||||
private String description;
|
private String description;
|
||||||
private String image;
|
private String image;
|
||||||
private String type;
|
private String type;
|
||||||
|
private String html;
|
||||||
|
|
||||||
public Card(){}
|
public Card(){}
|
||||||
|
|
||||||
|
@ -74,4 +75,11 @@ public class Card{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getHtml() {
|
||||||
|
return html;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHtml(String html) {
|
||||||
|
this.html = html;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ package fr.gouv.etalab.mastodon.drawers;
|
||||||
* see <http://www.gnu.org/licenses>. */
|
* see <http://www.gnu.org/licenses>. */
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
|
import android.app.Activity;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
@ -47,8 +48,11 @@ import android.view.LayoutInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.webkit.WebView;
|
||||||
|
import android.webkit.WebViewClient;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
|
import android.widget.FrameLayout;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
|
@ -95,6 +99,7 @@ import fr.gouv.etalab.mastodon.interfaces.OnPostActionInterface;
|
||||||
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveEmojiInterface;
|
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveEmojiInterface;
|
||||||
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveFeedsInterface;
|
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveFeedsInterface;
|
||||||
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRepliesInterface;
|
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRepliesInterface;
|
||||||
|
import fr.gouv.etalab.mastodon.webview.MastalabWebViewClient;
|
||||||
|
|
||||||
import static fr.gouv.etalab.mastodon.activities.MainActivity.currentLocale;
|
import static fr.gouv.etalab.mastodon.activities.MainActivity.currentLocale;
|
||||||
import static fr.gouv.etalab.mastodon.helper.Helper.THEME_DARK;
|
import static fr.gouv.etalab.mastodon.helper.Helper.THEME_DARK;
|
||||||
|
@ -227,6 +232,8 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
||||||
LinearLayout status_cardview;
|
LinearLayout status_cardview;
|
||||||
ImageView status_cardview_image;
|
ImageView status_cardview_image;
|
||||||
TextView status_cardview_title, status_cardview_content, status_cardview_url;
|
TextView status_cardview_title, status_cardview_content, status_cardview_url;
|
||||||
|
FrameLayout status_cardview_video;
|
||||||
|
WebView status_cardview_webview;
|
||||||
public View getView(){
|
public View getView(){
|
||||||
return itemView;
|
return itemView;
|
||||||
}
|
}
|
||||||
|
@ -281,6 +288,8 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
||||||
status_cardview_title = itemView.findViewById(R.id.status_cardview_title);
|
status_cardview_title = itemView.findViewById(R.id.status_cardview_title);
|
||||||
status_cardview_content = itemView.findViewById(R.id.status_cardview_content);
|
status_cardview_content = itemView.findViewById(R.id.status_cardview_content);
|
||||||
status_cardview_url = itemView.findViewById(R.id.status_cardview_url);
|
status_cardview_url = itemView.findViewById(R.id.status_cardview_url);
|
||||||
|
status_cardview_video = itemView.findViewById(R.id.status_cardview_video);
|
||||||
|
status_cardview_webview = itemView.findViewById(R.id.status_cardview_webview);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -339,6 +348,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@SuppressLint("SetJavaScriptEnabled")
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, @SuppressLint("RecyclerView") final int position) {
|
public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, @SuppressLint("RecyclerView") final int position) {
|
||||||
|
|
||||||
|
@ -880,6 +890,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
||||||
else
|
else
|
||||||
holder.main_container.setBackgroundResource(R.color.mastodonC1___);
|
holder.main_container.setBackgroundResource(R.color.mastodonC1___);
|
||||||
if( status.getCard() != null){
|
if( status.getCard() != null){
|
||||||
|
|
||||||
holder.status_cardview_content.setText(status.getCard().getDescription());
|
holder.status_cardview_content.setText(status.getCard().getDescription());
|
||||||
holder.status_cardview_title.setText(status.getCard().getTitle());
|
holder.status_cardview_title.setText(status.getCard().getTitle());
|
||||||
holder.status_cardview_url.setText(status.getCard().getUrl());
|
holder.status_cardview_url.setText(status.getCard().getUrl());
|
||||||
|
@ -890,19 +901,40 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
|
||||||
.into(holder.status_cardview_image);
|
.into(holder.status_cardview_image);
|
||||||
}else
|
}else
|
||||||
holder.status_cardview_image.setVisibility(View.GONE);
|
holder.status_cardview_image.setVisibility(View.GONE);
|
||||||
holder.status_cardview.setVisibility(View.VISIBLE);
|
if( !status.getCard().getType().equals("video")) {
|
||||||
holder.status_cardview.setOnClickListener(new View.OnClickListener() {
|
holder.status_cardview.setVisibility(View.VISIBLE);
|
||||||
@Override
|
holder.status_cardview_video.setVisibility(View.GONE);
|
||||||
public void onClick(View view) {
|
holder.status_cardview.setOnClickListener(new View.OnClickListener() {
|
||||||
Intent intent = new Intent(context, WebviewActivity.class);
|
@Override
|
||||||
Bundle b = new Bundle();
|
public void onClick(View view) {
|
||||||
b.putString("url", status.getCard().getUrl());
|
Intent intent = new Intent(context, WebviewActivity.class);
|
||||||
intent.putExtras(b);
|
Bundle b = new Bundle();
|
||||||
context.startActivity(intent);
|
b.putString("url", status.getCard().getUrl());
|
||||||
|
intent.putExtras(b);
|
||||||
|
context.startActivity(intent);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}else {
|
||||||
|
holder.status_cardview.setVisibility(View.GONE);
|
||||||
|
holder.status_cardview_video.setVisibility(View.VISIBLE);
|
||||||
|
holder.status_cardview_webview.setWebViewClient(new WebViewClient() {
|
||||||
|
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
|
||||||
|
holder.status_cardview_video.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
holder.status_cardview_webview.getSettings().setJavaScriptEnabled(true);
|
||||||
|
String html = status.getCard().getHtml();
|
||||||
|
String src = status.getCard().getUrl();
|
||||||
|
if( html != null){
|
||||||
|
Matcher matcher = Pattern.compile("src=\"([^\"]+)\"").matcher(html);
|
||||||
|
if( matcher.find())
|
||||||
|
src = matcher.group(1);
|
||||||
}
|
}
|
||||||
});
|
holder.status_cardview_webview.loadUrl(src);
|
||||||
|
}
|
||||||
}else {
|
}else {
|
||||||
holder.status_cardview.setVisibility(View.GONE);
|
holder.status_cardview.setVisibility(View.GONE);
|
||||||
|
holder.status_cardview_video.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
}else {
|
}else {
|
||||||
|
|
|
@ -244,6 +244,16 @@
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
<FrameLayout
|
||||||
|
android:visibility="gone"
|
||||||
|
android:id="@+id/status_cardview_video"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="220dp">
|
||||||
|
<WebView
|
||||||
|
android:id="@+id/status_cardview_webview"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"/>
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/status_document_container"
|
android:id="@+id/status_document_container"
|
||||||
|
|
Loading…
Reference in New Issue