From c89f14b7370f2519dcbb8bc4d31226bdb8592684 Mon Sep 17 00:00:00 2001 From: tateisu Date: Mon, 18 Sep 2017 09:50:33 +0900 Subject: [PATCH] =?UTF-8?q?v1.5.5=20-=20=E3=82=A4=E3=83=B3=E3=82=B9?= =?UTF-8?q?=E3=82=BF=E3=83=B3=E3=82=B9=E6=83=85=E5=A0=B1=E3=82=AB=E3=83=A9?= =?UTF-8?q?=E3=83=A0=E3=81=AB=E3=82=A4=E3=83=B3=E3=82=B9=E3=82=BF=E3=83=B3?= =?UTF-8?q?=E3=82=B9=E3=81=AE=E3=82=B5=E3=83=A0=E3=83=8D=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E3=82=92=E8=A1=A8=E7=A4=BA=E3=81=99=E3=82=8B(=E3=83=9E?= =?UTF-8?q?=E3=82=B9=E3=83=88=E3=83=89=E3=83=B31.6.1=E4=BB=A5=E9=99=8D)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/misc.xml | 2 +- app/build.gradle | 4 +-- .../HeaderViewHolderInstance.java | 29 +++++++++++++++++++ .../subwaytooter/api/entity/TootInstance.java | 23 ++++++++++----- .../main/res/layout/lv_header_instance.xml | 22 ++++++++++++++ app/src/main/res/values-fr/strings.xml | 3 +- app/src/main/res/values-ja/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 8 files changed, 74 insertions(+), 11 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index fbb68289..5d199810 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -37,7 +37,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index f11c4fe4..15bae36a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { applicationId "jp.juggler.subwaytooter" minSdkVersion 21 targetSdkVersion 26 - versionCode 154 - versionName "1.5.4" + versionCode 155 + versionName "1.5.5" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/jp/juggler/subwaytooter/HeaderViewHolderInstance.java b/app/src/main/java/jp/juggler/subwaytooter/HeaderViewHolderInstance.java index 47c52252..d35024da 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/HeaderViewHolderInstance.java +++ b/app/src/main/java/jp/juggler/subwaytooter/HeaderViewHolderInstance.java @@ -1,6 +1,7 @@ package jp.juggler.subwaytooter; import android.content.Intent; +import android.net.Uri; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.SpannableStringBuilder; @@ -15,6 +16,7 @@ import jp.juggler.subwaytooter.util.LogCategory; import jp.juggler.subwaytooter.util.Utils; import jp.juggler.subwaytooter.view.MyLinkMovementMethod; import jp.juggler.subwaytooter.view.MyListView; +import jp.juggler.subwaytooter.view.MyNetworkImageView; class HeaderViewHolderInstance extends HeaderViewHolderBase implements View.OnClickListener { @@ -28,6 +30,7 @@ class HeaderViewHolderInstance extends HeaderViewHolderBase implements View.OnCl private final TextView tvUserCount; private final TextView tvTootCount; private final TextView tvDomainCount; + private final MyNetworkImageView ivThumbnail; HeaderViewHolderInstance( ActMain arg_activity, Column arg_column, MyListView parent ){ super( arg_activity, arg_column @@ -65,8 +68,11 @@ class HeaderViewHolderInstance extends HeaderViewHolderBase implements View.OnCl tvUserCount = viewRoot.findViewById( R.id.tvUserCount ); tvTootCount = viewRoot.findViewById( R.id.tvTootCount ); tvDomainCount = viewRoot.findViewById( R.id.tvDomainCount ); + ivThumbnail = viewRoot.findViewById( R.id.ivThumbnail ); + btnInstance.setOnClickListener( this ); btnEmail.setOnClickListener( this ); + ivThumbnail.setOnClickListener( this ); tvDescription.setMovementMethod( MyLinkMovementMethod.getInstance() ); } @@ -89,6 +95,7 @@ class HeaderViewHolderInstance extends HeaderViewHolderBase implements View.OnCl btnEmail.setText( "?" ); btnEmail.setEnabled( false ); tvDescription.setText( "?" ); + ivThumbnail.setImageUrl(App1.pref,0f,null); }else{ btnInstance.setText( supplyEmpty( instance.uri ) ); btnInstance.setEnabled( ! TextUtils.isEmpty( instance.uri ) ); @@ -124,16 +131,24 @@ class HeaderViewHolderInstance extends HeaderViewHolderBase implements View.OnCl tvDomainCount.setText( "" + instance.stats.domain_count ); } + + if( TextUtils.isEmpty( instance.thumbnail )){ + ivThumbnail.setImageUrl(App1.pref,0f,null); + }else{ + ivThumbnail.setImageUrl(App1.pref,0f,instance.thumbnail,instance.thumbnail); + } } } @Override public void onClick( View v ){ switch( v.getId() ){ + case R.id.btnInstance: if( instance != null && instance.uri != null ){ activity.openChromeTab( activity.nextPosition( column ), column.access_info, "https://" + instance.uri + "/about", true ); } break; + case R.id.btnEmail: if( instance != null && instance.email != null ){ try{ @@ -149,6 +164,20 @@ class HeaderViewHolderInstance extends HeaderViewHolderBase implements View.OnCl } } break; + + case R.id.ivThumbnail: + if( instance != null && !TextUtils.isEmpty( instance.thumbnail )){ + try{ + Intent intent = new Intent( Intent.ACTION_VIEW ); + intent.setData( Uri.parse(instance.thumbnail) ); + activity.startActivity( intent ); + + }catch( Throwable ex ){ + ex.printStackTrace(); + Utils.showToast( activity, true, "missing web browser" ); + } + } + break; } } diff --git a/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootInstance.java b/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootInstance.java index 0ef8e700..af84802a 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootInstance.java +++ b/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootInstance.java @@ -27,19 +27,26 @@ public class TootInstance { public String version; - // バージョンの内部表現 - public VersionString decoded_version; - - // いつ取得したか - public long time_parse; - + // インスタンスのサムネイル。推奨サイズ1200x630px。マストドン1.6.1以降。 + public String thumbnail; + + // ユーザ数等の数字。マストドン1.6以降。 + public Stats stats; public static class Stats { public long user_count; public long status_count; public long domain_count; } - public Stats stats; + //////////////////////////////////////////////// + // 以下は内部で使用する + + // バージョンの内部表現 + public VersionString decoded_version; + + // いつ取得したか + public long time_parse; + @Nullable public static TootInstance parse( JSONObject src ){ @@ -56,6 +63,8 @@ public class TootInstance { dst.stats = parseStats( src.optJSONObject( "stats" ) ); + dst.thumbnail = Utils.optStringX( src, "thumbnail" ); + return dst; }catch( Throwable ex ){ log.trace( ex ); diff --git a/app/src/main/res/layout/lv_header_instance.xml b/app/src/main/res/layout/lv_header_instance.xml index c520dbe6..c43c8ebb 100644 --- a/app/src/main/res/layout/lv_header_instance.xml +++ b/app/src/main/res/layout/lv_header_instance.xml @@ -128,6 +128,28 @@ + + + + + + + + + + + + + + Missing MIME type. MIME type %1$s is not acceptable.\nSupported MIME types are image/jpeg, image/png, image/gif, video/webm, video/mp4 . + Thumbnail (Mastodon 1.6.1 or later) - + diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index e847a82f..21c80975 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -779,4 +779,5 @@ マストドン1.6未満では利用できません MIMEタイプが不明です MIMEタイプ %1$s には対応できません。対応できるMIMEタイプは image/jpeg, image/png, image/gif, video/webm, video/mp4 です + サムネイル(マストドン1.6.1以降) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6e01a7ae..2884dc11 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -483,5 +483,6 @@ Not provided under Mastodon 1.6 Missing MIME type. MIME type %1$s is not acceptable.\nSupported MIME types are image/jpeg, image/png, image/gif, video/webm, video/mp4 . + Thumbnail (Mastodon 1.6.1 or later)