From b4df19177fb9964676fb5a446ba35417ffdc2025 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 15 Apr 2020 16:26:53 +0200 Subject: [PATCH] make seperate menu items for audio and video calls --- .../ui/ConversationFragment.java | 31 ++++++++++++++---- .../conversations/ui/RtpSessionActivity.java | 13 ++++++-- .../res/drawable-hdpi/ic_call_black_24dp.png | Bin 0 -> 326 bytes .../drawable-hdpi/ic_videocam_black_24dp.png | Bin 0 -> 169 bytes .../drawable-hdpi/ic_videocam_white_24dp.png | Bin 0 -> 173 bytes .../res/drawable-mdpi/ic_call_black_24dp.png | Bin 0 -> 244 bytes .../drawable-mdpi/ic_videocam_black_24dp.png | Bin 0 -> 127 bytes .../drawable-mdpi/ic_videocam_white_24dp.png | Bin 0 -> 131 bytes .../res/drawable-xhdpi/ic_call_black_24dp.png | Bin 0 -> 408 bytes .../drawable-xhdpi/ic_videocam_black_24dp.png | Bin 0 -> 171 bytes .../drawable-xhdpi/ic_videocam_white_24dp.png | Bin 0 -> 178 bytes .../drawable-xxhdpi/ic_call_black_24dp.png | Bin 0 -> 574 bytes .../ic_videocam_black_24dp.png | Bin 0 -> 224 bytes .../ic_videocam_white_24dp.png | Bin 0 -> 234 bytes .../drawable-xxxhdpi/ic_call_black_24dp.png | Bin 0 -> 758 bytes .../ic_videocam_black_24dp.png | Bin 0 -> 270 bytes .../ic_videocam_white_24dp.png | Bin 0 -> 290 bytes .../res/drawable/ic_call_black54_24dp.xml | 4 +++ .../res/drawable/ic_call_white70_24dp.xml | 4 +++ .../res/drawable/ic_videocam_black54_24dp.xml | 4 +++ .../res/drawable/ic_videocam_white70_24dp.xml | 4 +++ src/main/res/menu/fragment_conversation.xml | 13 +++++++- src/main/res/values/attrs.xml | 3 ++ src/main/res/values/strings.xml | 2 ++ src/main/res/values/themes.xml | 6 ++++ 25 files changed, 73 insertions(+), 11 deletions(-) create mode 100644 src/main/res/drawable-hdpi/ic_call_black_24dp.png create mode 100644 src/main/res/drawable-hdpi/ic_videocam_black_24dp.png create mode 100644 src/main/res/drawable-hdpi/ic_videocam_white_24dp.png create mode 100644 src/main/res/drawable-mdpi/ic_call_black_24dp.png create mode 100644 src/main/res/drawable-mdpi/ic_videocam_black_24dp.png create mode 100644 src/main/res/drawable-mdpi/ic_videocam_white_24dp.png create mode 100644 src/main/res/drawable-xhdpi/ic_call_black_24dp.png create mode 100644 src/main/res/drawable-xhdpi/ic_videocam_black_24dp.png create mode 100644 src/main/res/drawable-xhdpi/ic_videocam_white_24dp.png create mode 100644 src/main/res/drawable-xxhdpi/ic_call_black_24dp.png create mode 100644 src/main/res/drawable-xxhdpi/ic_videocam_black_24dp.png create mode 100644 src/main/res/drawable-xxhdpi/ic_videocam_white_24dp.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_call_black_24dp.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_videocam_black_24dp.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_videocam_white_24dp.png create mode 100644 src/main/res/drawable/ic_call_black54_24dp.xml create mode 100644 src/main/res/drawable/ic_call_white70_24dp.xml create mode 100644 src/main/res/drawable/ic_videocam_black54_24dp.xml create mode 100644 src/main/res/drawable/ic_videocam_white70_24dp.xml diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index cee0b54a6..9d704778b 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -140,6 +140,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke public static final int REQUEST_ADD_EDITOR_CONTENT = 0x0211; public static final int REQUEST_COMMIT_ATTACHMENTS = 0x0212; public static final int REQUEST_START_AUDIO_CALL = 0x213; + public static final int REQUEST_START_VIDEO_CALL = 0x214; public static final int ATTACHMENT_CHOICE_CHOOSE_IMAGE = 0x0301; public static final int ATTACHMENT_CHOICE_TAKE_PHOTO = 0x0302; public static final int ATTACHMENT_CHOICE_CHOOSE_FILE = 0x0303; @@ -1234,8 +1235,11 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke BlockContactDialog.show((XmppActivity) activity, conversation); } break; - case R.id.action_call: - checkPermissionAndTriggerRtpSession(); + case R.id.action_audio_call: + checkPermissionAndTriggerAudioCall(); + break; + case R.id.action_video_call: + checkPermissionAndTriggerVideoCall(); break; default: break; @@ -1243,21 +1247,31 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke return super.onOptionsItemSelected(item); } - private void checkPermissionAndTriggerRtpSession() { + private void checkPermissionAndTriggerAudioCall() { if (activity.xmppConnectionService.useTorToConnect() || conversation.getAccount().isOnion()) { Toast.makeText(activity, R.string.disable_tor_to_make_call, Toast.LENGTH_SHORT).show(); return; } if (hasPermissions(REQUEST_START_AUDIO_CALL, Manifest.permission.RECORD_AUDIO)) { - triggerRtpSession(); + triggerRtpSession(RtpSessionActivity.ACTION_MAKE_VOICE_CALL); + } + } + + private void checkPermissionAndTriggerVideoCall() { + if (activity.xmppConnectionService.useTorToConnect() || conversation.getAccount().isOnion()) { + Toast.makeText(activity, R.string.disable_tor_to_make_call, Toast.LENGTH_SHORT).show(); + return; + } + if (hasPermissions(REQUEST_START_VIDEO_CALL, Manifest.permission.RECORD_AUDIO, Manifest.permission.CAMERA)) { + triggerRtpSession(RtpSessionActivity.ACTION_MAKE_VIDEO_CALL); } } - private void triggerRtpSession() { + private void triggerRtpSession(final String action) { final Contact contact = conversation.getContact(); final Intent intent = new Intent(activity, RtpSessionActivity.class); - intent.setAction(RtpSessionActivity.ACTION_MAKE_VOICE_CALL); + intent.setAction(action); intent.putExtra(RtpSessionActivity.EXTRA_ACCOUNT, contact.getAccount().getJid().toEscapedString()); intent.putExtra(RtpSessionActivity.EXTRA_WITH, contact.getJid().asBareJid().toEscapedString()); startActivity(intent); @@ -1414,7 +1428,10 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke commitAttachments(); break; case REQUEST_START_AUDIO_CALL: - triggerRtpSession(); + triggerRtpSession(RtpSessionActivity.ACTION_MAKE_VOICE_CALL); + break; + case REQUEST_START_VIDEO_CALL: + triggerRtpSession(RtpSessionActivity.ACTION_MAKE_VIDEO_CALL); break; default: attachFile(requestCode); diff --git a/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java b/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java index 2d335ec75..22692f86b 100644 --- a/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java @@ -190,6 +190,7 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe @Override void onBackendConnected() { final Intent intent = getIntent(); + final String action = intent.getAction(); final Account account = extractAccount(intent); final Jid with = Jid.of(intent.getStringExtra(EXTRA_WITH)); final String sessionId = intent.getStringExtra(EXTRA_SESSION_ID); @@ -200,10 +201,16 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe requestPermissionsAndAcceptCall(); resetIntent(intent.getExtras()); } - } else if (asList(ACTION_MAKE_VIDEO_CALL, ACTION_MAKE_VOICE_CALL).contains(intent.getAction())) { - proposeJingleRtpSession(account, with, ImmutableSet.of(Media.AUDIO, Media.VIDEO)); + } else if (asList(ACTION_MAKE_VIDEO_CALL, ACTION_MAKE_VOICE_CALL).contains(action)) { + final Set media; + if (ACTION_MAKE_VIDEO_CALL.equals(action)) { + media = ImmutableSet.of(Media.AUDIO, Media.VIDEO); + } else { + media = ImmutableSet.of(Media.AUDIO); + } + proposeJingleRtpSession(account, with, media); binding.with.setText(account.getRoster().getContact(with).getDisplayName()); - } else if (Intent.ACTION_VIEW.equals(intent.getAction())) { + } else if (Intent.ACTION_VIEW.equals(action)) { final String extraLastState = intent.getStringExtra(EXTRA_LAST_REPORTED_STATE); if (extraLastState != null) { Log.d(Config.LOGTAG, "restored last state from intent extra"); diff --git a/src/main/res/drawable-hdpi/ic_call_black_24dp.png b/src/main/res/drawable-hdpi/ic_call_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..d4077acf91bca566c143501ecd3589960f297eef GIT binary patch literal 326 zcmV-M0lEH(P)4oZOd_E%#fpSbNL+;V=L!_+Etq8MiDoruwr~#$o6U*>g@g+b1re>d16c(P z9fdfOlatNt*Esn;<^JCODPGczkkO<)Sc@E`CVpr=l=ejE7NuM9U%b!vbbEA$5*f9Ur!iSto>EnZc+= zKcwy%$7q%Bkh)|HqcT2q#ROFu`*dkAk0a4ROg%7L$#n5?A3Sl#F*$#5gVY-vGE-TL z1ZDinbHQTF$hA{%@8jh(A*gX=2nltr4IyEPQ$Ee1Xp&8OJP(Bm45nCNi;`UmGDed9 Y0y5j*N*3HAS^xk507*qoM6N<$f^r^!$^ZZW literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/ic_videocam_black_24dp.png b/src/main/res/drawable-hdpi/ic_videocam_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..0a1e9b08ac01f46cbe0360bdb4df44b4ef2d114b GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8fv1aONCo5DD~fy#20U&L)h#(B z!ykI6D3qD_Io;4La1K1;Gr2x#(fWVFJ<~GIENXQs^-=t2ez7EA?&i;1H(i`^H^A(f zqW1*D(3YM+#blQkCT=Y`Ot1cL{QCTQy+^HU%hI>?ZbI9;ch0zdSj@HgD^uN(t*u*R S*WU)(&EV|k0wldT1B8K8iKmNWh{y5d1PRu~2?kC7U;UT= zr_N^cXMNj}ZsyAiX8k|Xl(j>y|G(%AHdBGz0OmV0M;L^lw`#y_Big-bALY&7E&hT#K| z8D5!l>tAs#u6t4M+fd4nXf~EIE5V7B=Mqe$oQv{eMZ%~AkCr5CG`FAhC0z?|`qFlU zX+EImR=AL7%cn4sXJ44xRamyF)3{C!^}xW3xjUzh4cnd^3E|S3fmc!XrPW^jW#(P{ uS%*zG;@@=JcBM)N#kvD$9(<@wEUI4=uVbN7%%kf70000R0E zB@$rzfKlM-fB6Xu7?;Q_nyA4m@N`K=MMHs9q13<2G0Z3Zl&)S@Vb}iFVci(~H*k$- dvd9Bg24TD2RUWTqYyg_d;OXk;vd$@?2>^H7D%Jo1 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_call_black_24dp.png b/src/main/res/drawable-xhdpi/ic_call_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..99f28bbeca97715d85975921dd64fbde691c7ed9 GIT binary patch literal 408 zcmV;J0cZY+P)Jz(nTd8(K&U>#oAFn^y`zjyGXQF#zM7()Aet$noem0I<%p-vB_K zOIkhy0F#7VQy1oIC^F2m$2s@BQssv}HMU74RQ&>86OIco?%@#t00006 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_videocam_black_24dp.png b/src/main/res/drawable-xhdpi/ic_videocam_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..b0a3b44d154ae04a54b04ceac0d7322a08f8bf68 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DB2O2`kP61PR}XR?HV|;Rct645 zWyYzqyE;z>o>WZWp5|eY|L&jo;#5mPL4U6McTOHmZB-Ae5w@=^n%`p0d}uD?!*dM< z=?*)L74Aq1yyLZKWV!a=SF$s9e%HhsKX=M?+Rr;9?Ej|p?+f`WN1n^Oxahp&eQwIR UE#vBiFre)Wp00i_>zopr08juyvH$=8 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_videocam_white_24dp.png b/src/main/res/drawable-xhdpi/ic_videocam_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..1b2583d34e8bafff26a20f89c9d7cacf4525617e GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DN>3NZkP61P*9^Is4S8Gw;|*rq z@i^Z5O~`&LSF^H2(&3uW+b>MJ-#(mEy!`0wC)efFl5M{lznoI4x{+;s;upRj$rU~^>bP0l+XkKQP@0n literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_call_black_24dp.png b/src/main/res/drawable-xxhdpi/ic_call_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..7c9d1b09c55f77d44877d4a354280ae5c2e1f645 GIT binary patch literal 574 zcmV-E0>S->P)!2PJ-H@rHV$L$%!{Psm^&nbmf4NDs!00GCXBW5P9(i&9mcltT_n9>4aSD3%Ow3uICgQ2 zjr=FWc(D&`CQobQ>*Xz@9Ht9Lp&X-lu|@Xg_43>xNU@I>XQUCw| literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_videocam_black_24dp.png b/src/main/res/drawable-xxhdpi/ic_videocam_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..0039e804eb1684ea4ebc31799709a087f572e5f5 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhawmV3H5hEy=Vy|MA+VFv-1hn?^8 z4~ug1g)FcZ2tQ~w=Lplx+X;0Q`O-fM6yDE!@w@{FUidGcwkmVlvbJqjp=XW1?wu~T z^_Jsx-sfxGL;v3?&|*&U<2W%#V1lKfLa~y=Gna-loeVRD8I9DLAQAzLOe`D%^2a{x z=bL%t*T#(tHXb^qa&Ey|=ZV3$mi+%IV|?53_`T+<7p`3W@mfYIs|#!;^C!uxN8C@h R>H?k2;OXk;vd$@?2>^U;U)TTu literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_videocam_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_videocam_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..44c28e2f2830f927973beaa3a143ddfe439f20ed GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhawHhQ`^hEy=Vyh zQBv~(_A|Uaeg>M$g-&EJ3;(E>F0WfsuqEq@i4qW8@}AzdO6rx>m9XRe^SrNqJ^A{6 z_JW14-f=$P%=XJsxKGL9nM=c&PKKGnj7I8ADSj*`=EzL26jUe%O0+bb;bi0#P;hAY zVbJ!!)MTmp67X<=dB~fI3~wU z@{lUI^G7ieZjAMal)^;3`-n6iIbafzGMLC0L!e&{0YwNj>JYFPfqps!R3Oj?hkzsk zJ$DG$k3jbv0@@I$!y(`b0<}2=yh5M@4gu2?BF+|!!zB=>gpBsb*yWqxF#_Fk2$-P^ zaZX|!t^sipP64fmvw$hxp8#}6p8thn1UeCM{xF*nX-%a0X=)HE;8TS8wFq{a-1A3d z&xZ{;=Z{i{Z~+53<|nY|`AalL5*3y*6FPq@YTO8!zYRs~f7(1inI~340#)`|0eu80 z67bSWXhfAgR=`){C=!G`2j@_w+WKFLzwAVn%hqS`nKBev#*mfJNq{0pFxDMKk$@g6 zV46A+dQvtg~hm-^*4iE*y^nL zd4DS`;0z|qU7*Z)e)!F?W6WYgZ;*oo06?uhUrGSfGmOb{&qx9_q%m>>pn^9!AHy_8 zb^w%e6*EUSZyHJK4uF+(>kfc`!whK-04S$}jOGA o57JDLVS-fne9!Yd&+|O*AE$UXZG6IlIsgCw07*qoM6N<$g3dij&;S4c literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxxhdpi/ic_videocam_black_24dp.png b/src/main/res/drawable-xxxhdpi/ic_videocam_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..be3ba821a49f63bf6e78284bdc8abce83bf5faeb GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%xcgu6nvShEy=Vy=j=mY$)LNuzco* zC)0`-nSML?sNwA||M^ZETG`m{nTua&)(unsH&MlN5)kdH{Gd4d`PsS2=RekaUbZP$ zvGI6(Cqi5A_ZGH25t@fmGv_`1sLn1jQzjs#$YJ71Mprew99aQoo*Tw&5(y2AY!VO7 z&)I*OS6piSl(<*ooO;`0bj@_iW7q#au+ihg#QZ15ud9DKf8T5RAZ6{2HxE2#J!{uD ov)J)5>qo`8)yJnpocE8RWU|_J_i3@NKo2r_y85}Sb4q9e0RN|LDgXcg literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxxhdpi/ic_videocam_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_videocam_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..ed20c0706292403018b019329a4608db85d99e06 GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%xcgUV6GXhEy=Vz2%$L>L9?7s4sjZ z`dg=nZ3NGX*QczyQwj`vc|$kX%>MU4_u27-XQ1Fsx=&8bpK^6=W#{+5{x0v--*iiI zK6_5eHWRkq-woYo`i}j$!>)2&V!wgH0wW@j83QAeoL2*oWZ@_>deZ&>ak+XyvA!1j^LK3P nm_Pheb$}Qopa5qqD6eI%v1Ev>S}gk$=xGK|S3j3^P6 + \ No newline at end of file diff --git a/src/main/res/drawable/ic_call_white70_24dp.xml b/src/main/res/drawable/ic_call_white70_24dp.xml new file mode 100644 index 000000000..f1a2e46a1 --- /dev/null +++ b/src/main/res/drawable/ic_call_white70_24dp.xml @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/main/res/drawable/ic_videocam_black54_24dp.xml b/src/main/res/drawable/ic_videocam_black54_24dp.xml new file mode 100644 index 000000000..5fe6bfea7 --- /dev/null +++ b/src/main/res/drawable/ic_videocam_black54_24dp.xml @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/main/res/drawable/ic_videocam_white70_24dp.xml b/src/main/res/drawable/ic_videocam_white70_24dp.xml new file mode 100644 index 000000000..83e61f012 --- /dev/null +++ b/src/main/res/drawable/ic_videocam_white70_24dp.xml @@ -0,0 +1,4 @@ + + \ No newline at end of file diff --git a/src/main/res/menu/fragment_conversation.xml b/src/main/res/menu/fragment_conversation.xml index c5a574279..b01e8cfa5 100644 --- a/src/main/res/menu/fragment_conversation.xml +++ b/src/main/res/menu/fragment_conversation.xml @@ -65,7 +65,18 @@ android:icon="?attr/icon_call" android:orderInCategory="35" android:title="@string/make_call" - app:showAsAction="always" /> + app:showAsAction="always"> + + + + + + + + diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 6aacd3673..854dfa3c6 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -908,6 +908,8 @@ Outgoing call Outgoing call ยท %s Missed call + Audio call + Video call View %1$d Participant View %1$d Participants diff --git a/src/main/res/values/themes.xml b/src/main/res/values/themes.xml index e07c3bf67..2f8ecc434 100644 --- a/src/main/res/values/themes.xml +++ b/src/main/res/values/themes.xml @@ -54,6 +54,9 @@ @drawable/ic_attach_photo @drawable/ic_attach_record + @drawable/ic_call_black54_24dp + @drawable/ic_videocam_black54_24dp + @drawable/message_bubble_received_white @drawable/message_bubble_sent @drawable/message_bubble_received @@ -164,6 +167,9 @@ @drawable/ic_send_videocam_offline_white @drawable/ic_send_voice_offline_white + @drawable/ic_call_white70_24dp + @drawable/ic_videocam_white70_24dp + @drawable/ic_attach_camera_white @drawable/ic_attach_videocam_white @drawable/ic_attach_document_white