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)