From 12f35c1b9a92f2e82825947485735f3673e21575 Mon Sep 17 00:00:00 2001 From: tateisu Date: Wed, 18 Apr 2018 01:29:50 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=95=E3=82=A9=E3=83=AD=E3=83=BC=E3=83=AA?= =?UTF-8?q?=E3=82=AF=E3=82=A8=E3=82=B9=E3=83=88=E4=B8=80=E8=A6=A7=E3=81=AB?= =?UTF-8?q?=E6=89=BF=E8=AA=8D/=E5=8D=B4=E4=B8=8B=E3=83=9C=E3=82=BF?= =?UTF-8?q?=E3=83=B3=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + apng_sample/build.gradle | 2 +- app/build.gradle | 4 +- .../java/jp/juggler/subwaytooter/Column.kt | 2 +- .../jp/juggler/subwaytooter/ItemViewHolder.kt | 47 ++++++++++++++++++ .../juggler/subwaytooter/dialog/DlgConfirm.kt | 2 +- app/src/main/res/drawable-hdpi/ic_check.png | Bin 0 -> 324 bytes .../main/res/drawable-hdpi/ic_check_dark.png | Bin 0 -> 291 bytes app/src/main/res/drawable-mdpi/ic_check.png | Bin 0 -> 208 bytes .../main/res/drawable-mdpi/ic_check_dark.png | Bin 0 -> 196 bytes app/src/main/res/drawable-xhdpi/ic_check.png | Bin 0 -> 305 bytes .../main/res/drawable-xhdpi/ic_check_dark.png | Bin 0 -> 289 bytes app/src/main/res/drawable-xxhdpi/ic_check.png | Bin 0 -> 506 bytes .../res/drawable-xxhdpi/ic_check_dark.png | Bin 0 -> 462 bytes app/src/main/res/menu/menu_navi_drawer.xml | 2 +- app/src/main/res/values-fr/strings.xml | 6 ++- app/src/main/res/values-ja/strings.xml | 4 ++ app/src/main/res/values/attrs.xml | 1 + app/src/main/res/values/strings.xml | 4 ++ app/src/main/res/values/styles.xml | 2 + build.gradle | 4 +- 21 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_check.png create mode 100644 app/src/main/res/drawable-hdpi/ic_check_dark.png create mode 100644 app/src/main/res/drawable-mdpi/ic_check.png create mode 100644 app/src/main/res/drawable-mdpi/ic_check_dark.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_check.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_check_dark.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_check.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_check_dark.png diff --git a/.gitignore b/.gitignore index 7fde0f54..41d4c0f5 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ /local.properties /.idea/workspace.xml /.idea/libraries +/.idea/assetWizardSettings.xml .DS_Store /build /captures diff --git a/apng_sample/build.gradle b/apng_sample/build.gradle index 7c52b339..21d0c3d5 100644 --- a/apng_sample/build.gradle +++ b/apng_sample/build.gradle @@ -37,7 +37,7 @@ dependencies { implementation project(':apng_android') - implementation 'com.android.support:appcompat-v7:27.1.0' + implementation "com.android.support:appcompat-v7:$asl_version" testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' diff --git a/app/build.gradle b/app/build.gradle index b4bef549..2a3badd3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,8 +12,8 @@ android { minSdkVersion 21 targetSdkVersion 27 - versionCode 237 - versionName "2.3.7" + versionCode 238 + versionName "2.3.8" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/jp/juggler/subwaytooter/Column.kt b/app/src/main/java/jp/juggler/subwaytooter/Column.kt index 0b20a1c4..6a811e20 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/Column.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/Column.kt @@ -206,7 +206,7 @@ class Column( TYPE_DOMAIN_BLOCKS -> R.attr.ic_domain_block TYPE_SEARCH, TYPE_SEARCH_MSP, TYPE_SEARCH_TS -> R.attr.ic_search TYPE_INSTANCE_INFORMATION -> R.attr.ic_info - TYPE_FOLLOW_REQUESTS -> R.attr.ic_account_add + TYPE_FOLLOW_REQUESTS -> R.attr.ic_follow_wait TYPE_LIST_LIST -> R.attr.ic_list_list TYPE_LIST_MEMBER -> R.attr.ic_list_member TYPE_LIST_TL -> R.attr.ic_list_tl diff --git a/app/src/main/java/jp/juggler/subwaytooter/ItemViewHolder.kt b/app/src/main/java/jp/juggler/subwaytooter/ItemViewHolder.kt index d64b88cb..07cd7dd9 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/ItemViewHolder.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/ItemViewHolder.kt @@ -111,6 +111,10 @@ internal class ItemViewHolder( private lateinit var btnListTL : Button private lateinit var btnListMore : ImageButton + private lateinit var llFollowRequest : View + private lateinit var btnFollowRequestAccept : View + private lateinit var btnFollowRequestDeny : View + private lateinit var llExtra : LinearLayout private lateinit var tvApplication : TextView @@ -163,6 +167,9 @@ internal class ItemViewHolder( llFollow.setOnLongClickListener(this) btnFollow.setOnClickListener(this) + btnFollowRequestAccept.setOnClickListener(this) + btnFollowRequestDeny.setOnClickListener(this) + // ロングタップ ivThumbnail.setOnLongClickListener(this) @@ -309,6 +316,7 @@ internal class ItemViewHolder( llStatus.visibility = View.GONE llSearchTag.visibility = View.GONE llList.visibility = View.GONE + llFollowRequest.visibility = View.GONE llExtra.removeAllViews() var c : Int @@ -478,6 +486,10 @@ internal class ItemViewHolder( val relation = UserRelation.load(access_info.db_id, who.id) Styler.setFollowIcon(activity, btnFollow, ivFollowedBy, relation, who) + + if(column.column_type == Column.TYPE_FOLLOW_REQUESTS) { + llFollowRequest.visibility = View.VISIBLE + } } private fun showStatus(activity : ActMain, status : TootStatus) { @@ -950,6 +962,18 @@ internal class ItemViewHolder( .show(activity, item.title) } + btnFollowRequestAccept -> follow_account?.let { who -> + DlgConfirm.openSimple(activity,activity.getString(R.string.follow_accept_confirm,AcctColor.getNickname(access_info.getFullAcct(who)))){ + Action_Follow.authorizeFollowRequest(activity, access_info, who, true) + } + } + + btnFollowRequestDeny -> follow_account?.let { who -> + DlgConfirm.openSimple(activity,activity.getString(R.string.follow_deny_confirm,AcctColor.getNickname(access_info.getFullAcct(who)))){ + Action_Follow.authorizeFollowRequest(activity, access_info, who, false) + } + } + else -> when(v.id) { R.id.ivCardThumbnail -> status_showing?.card?.url?.let { url -> if(url.isNotEmpty()) App1.openCustomTab(activity, url) @@ -1844,6 +1868,29 @@ internal class ItemViewHolder( startMargin = dip(4) } } + + llFollowRequest = linearLayout { + lparams(matchParent, wrapContent) { + topMargin = dip(6) + } + gravity = Gravity.END + + btnFollowRequestAccept = imageButton { + background = ContextCompat.getDrawable(context, R.drawable.btn_bg_transparent) + contentDescription = context.getString(R.string.follow_accept) + imageResource = Styler.getAttributeResourceId(context, R.attr.ic_check) + setPadding(0,0,0,0) + }.lparams(dip(48f),dip(32f)) + + btnFollowRequestDeny = imageButton { + background = ContextCompat.getDrawable(context, R.drawable.btn_bg_transparent) + contentDescription = context.getString(R.string.follow_deny) + imageResource = Styler.getAttributeResourceId(context, R.attr.btn_close) + setPadding(0,0,0,0) + }.lparams(dip(48f),dip(32f)){ + startMargin = dip(4) + } + } } } diff --git a/app/src/main/java/jp/juggler/subwaytooter/dialog/DlgConfirm.kt b/app/src/main/java/jp/juggler/subwaytooter/dialog/DlgConfirm.kt index 594408ea..f6461e62 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/dialog/DlgConfirm.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/dialog/DlgConfirm.kt @@ -45,7 +45,7 @@ object DlgConfirm { } @SuppressLint("InflateParams") - fun openSimple(activity : Activity, message : String, callback : EmptyCallback) { + fun openSimple(activity : Activity, message : String, callback : ()->Unit ) { val view = activity.layoutInflater.inflate(R.layout.dlg_confirm, null, false) val tvMessage = view.findViewById(R.id.tvMessage) val cbSkipNext = view.findViewById(R.id.cbSkipNext) diff --git a/app/src/main/res/drawable-hdpi/ic_check.png b/app/src/main/res/drawable-hdpi/ic_check.png new file mode 100644 index 0000000000000000000000000000000000000000..9e4bf301e899315ccf80993ebb5db59adb198181 GIT binary patch literal 324 zcmV-K0lWT*P);-XqmysLw?|Yu!D!PB zuG4SA8z^mhlQ)psNFj{LQyXeSZK#c%IF8q{k6d(maM}bxu#p1S<_F7fN-U<0@B6DZ zeCJfE0?OUSNP%;+4Zf9_awS~3+teinCTP`3zH_i_l|R4R43-$vNkZ=B^EcNXQj>Jj z$@jy%^pLXZul&>G#zmlnL)p!soCVP$y4phz+qJ zHt!1`#P={gIBYchLl+#^l-LX#dH6mG@1hb0Vz&tkh_Cvp(-JMjZWEPozm$+`C-GFp zZlfh`nG$B<{-fAd^^y7(C!M^l@+0*Lr>d}7iIasm+Z1rZIolL)f;!vea2jBKgCsa% p9El4h@WLl0FvC+6MN!n2dI29vujRZ{tZ4uM002ovPDHLkV1jK1eA55` literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_check.png b/app/src/main/res/drawable-mdpi/ic_check.png new file mode 100644 index 0000000000000000000000000000000000000000..036f9143de2e82de3e037f686d629da9946e7b02 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJ>7Fi*Ar-fh6C_v{Cy4a0B;@6t zOV7yAuuqsad&UeChQj@=t*wU~BJG4*dV706vt9aB#Lmv%7kJuTS6*rwGw%czsSpmM z8Sj8h5q7Cdyrvr%=PPFjy>W2f(Xc}(O+(L};p&IWI_EeonNlnT%rBZ8d|1R1t8@H0 z$F9h}~)oo>z7_xigDE5yVlv!iDS`@Xba=_s+R?g-naUjod)Uz0i6v6*>NIAx9Obr zp7&gP`X?iP&JR3_F|n>MPM1GcJ2ayv|6JbFr<^-Zu9@gASNQ}%EY6&j78!bVW9*fs zdvq$Y#IwYGB^{^Mn6Fe?QSm(W;Ncrh8wIb_e0a6%-U*}cQv|Qnz72Mp@cT{3zgIyn z6SBXp`v2Kb@XG1qE(Xf~y;+Js6)Vk{I$!YMzk_L7O|ygVZWr{C&$M?nsGm2#>w(k1 pSeEclhdK0~vJ2LnVg|eWkFkEJ@)m2mx$G4nzNf37%Q~loCIC^!e|7)> literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_check_dark.png b/app/src/main/res/drawable-xhdpi/ic_check_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..4609b2d62023429dfea90d7a3be31d5dbd14ef7c GIT binary patch literal 289 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=FFaiwLn>~)ow1Skkb!`!vemSO z3A|Dg>{en6T$7|-rdOzcp17csGn0$sT&CU6I5#Ub zU_9vQ;uunK>+OxRUQB@!4T-Bm zUBxemda!iWFZeAc>Ztok=$4znyS+_WQ%kqc6;|$8!1?lLOQoE|tuKea&z)&L$Bh|i z78um^x-EX}xBT*azvb=Q1ULMNTmOB|y7LDU3R0C>w??hKoVWe=rT5?Wf1b*hIBnm( z8$JuI?e*+ii~d9vbW&b+1b=T>YNp0Ie;&&j;=H&yMseKWK#Mcu%C zlkg1Xo1AARzF~RhQPxzfVtvqZ(p=jUK>l-&vTtbeOhEZYp!@-ulYTWo?Vkj6V4Ujd;uunK>+KC|FXljzhKD~i z7Pnd#@FzWFy5l0{D$vxsdxO8AKuq_tFNW1!&rh|m6dJfbn|Gkbe$J%>w&kBrrkG4p z@kF4yD81>AXS|-_eEUS?Kb>c`X-UeZ)9a;-`!jF-?AW<=W|e5MNn~>>Cd28yjohB(PiGIOw;wIsS;v)b(~{ujGCyJTrQ>);1*afQ0o|zPM@s zf4y$lJZri^O4+(3FrGH1OE@65TM?QguC6=xy!#XHQ>u!5K(D?UE=h@MGYfhQ1{{Oa} zmVcISU0c{P*QIa6 Pull notification check interval (unit: minutes, default:15, min:15) + accept + deny + Approve the follow request from %1$s ? + Reject the follow request from %1$s ? - + diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index e85b3ed0..2d3d9249 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -916,4 +916,8 @@ アクセストークンをアプリサーバに送信する 通常は"pull"通知(すこし遅れる)を利用できます。それは端末上で動作するのでアプリサーバは必要ありません。しかしカスタム通知リスナを使う場合やSTがサポートする限られたインスタンスのユーザである場合は"push"通知を利用することができます。ただしアクセストークンをアプリサーバに送信する必要があります(これはマストドンの欠陥です)。 Pull通知の確認間隔 (単位:分, デフォルト:15, 最低: 15) + 承認 + 却下 + %1$sからのフォローリクエストを承認しますか? + %1$sからのフォローリクエストを却下しますか? diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 30cebff1..80f0ef59 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -138,5 +138,6 @@ + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 02f72ffe..ed6224c6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -623,4 +623,8 @@ \nBut if you want to use "custom notification listener", or if you are the member of very limited instances that is supported by ST\'s app server, \nyou can use "push" notifications, but you have to allow sending access tokens to the app server. (this is mastodon's defect) Pull notification check interval (unit: minutes, default:15, min:15) + accept + deny + Approve the follow request from %1$s ? + Reject the follow request from %1$s ? diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 0feea2b6..0cd58c40 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -109,6 +109,7 @@ @drawable/ic_right @drawable/ic_volume_up @drawable/ic_face + @drawable/ic_check @@ -222,6 +223,7 @@ @drawable/ic_right_dark @drawable/ic_volume_up_dark @drawable/ic_face_dark + @drawable/ic_check_dark diff --git a/build.gradle b/build.gradle index 1583f975..f501d807 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ buildscript { ext.kotlin_coroutines_version = '0.21.2' ext.anko_version='0.10.4' ext.asl_version='27.1.1' - ext.firebase_version='12.0.1' + ext.firebase_version='15.0.0' repositories { jcenter() @@ -12,7 +12,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.0' + classpath 'com.android.tools.build:gradle:3.1.1' classpath 'com.google.gms:google-services:3.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" }