show switch to chat button during audio call. fixes #3825

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java | 27 ++
src/main/res/drawable-hdpi/ic_question_answer_white_24dp.png    |  0 
src/main/res/drawable-mdpi/ic_question_answer_white_24dp.png    |  0 
src/main/res/drawable-xhdpi/ic_question_answer_white_24dp.png   |  0 
src/main/res/drawable-xxhdpi/ic_question_answer_white_24dp.png  |  0 
src/main/res/drawable-xxxhdpi/ic_question_answer_white_24dp.png |  0 
src/main/res/menu/activity_rtp_session.xml                      |  9 
src/main/res/values/attrs.xml                                   |  1 
src/main/res/values/strings.xml                                 |  1 
src/main/res/values/themes.xml                                  |  2 
10 files changed, 35 insertions(+), 5 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java 🔗

@@ -88,6 +88,10 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
             RtpEndUserState.APPLICATION_ERROR,
             RtpEndUserState.CONNECTIVITY_ERROR
     );
+    private static final List<RtpEndUserState> STATES_SHOWING_SWITCH_TO_CHAT = Arrays.asList(
+            RtpEndUserState.CONNECTING,
+            RtpEndUserState.CONNECTED
+    );
     private static final String PROXIMITY_WAKE_LOCK_TAG = "conversations:in-rtp-session";
     private static final int REQUEST_ACCEPT_CALL = 0x1111;
     private WeakReference<JingleRtpConnection> rtpConnectionReference;
@@ -135,7 +139,9 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
     public boolean onCreateOptionsMenu(final Menu menu) {
         getMenuInflater().inflate(R.menu.activity_rtp_session, menu);
         final MenuItem help = menu.findItem(R.id.action_help);
+        final MenuItem gotoChat = menu.findItem(R.id.action_goto_chat);
         help.setVisible(isHelpButtonVisible());
+        gotoChat.setVisible(isSwitchToConversationVisible());
         return super.onCreateOptionsMenu(menu);
     }
 
@@ -153,10 +159,25 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
         }
     }
 
+    private boolean isSwitchToConversationVisible() {
+        final JingleRtpConnection connection = this.rtpConnectionReference != null ? this.rtpConnectionReference.get() : null;
+        return connection != null && STATES_SHOWING_SWITCH_TO_CHAT.contains(connection.getEndUserState());
+    }
+
+    private void switchToConversation() {
+        final Contact contact = getWith();
+        final Conversation conversation = xmppConnectionService.findOrCreateConversation(contact.getAccount(), contact.getJid(), false, true);
+        switchToConversation(conversation);
+    }
+
     public boolean onOptionsItemSelected(final MenuItem item) {
-        if (item.getItemId() == R.id.action_help) {
-            launchHelpInBrowser();
-            return true;
+        switch (item.getItemId()) {
+            case R.id.action_help:
+                launchHelpInBrowser();
+                break;
+            case R.id.action_goto_chat:
+                switchToConversation();
+                break;
         }
         return super.onOptionsItemSelected(item);
     }

src/main/res/menu/activity_rtp_session.xml 🔗

@@ -1,11 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android"
-      xmlns:app="http://schemas.android.com/apk/res-auto">
+    xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <item
         android:id="@+id/action_help"
         android:icon="?attr/icon_help"
         android:title="@string/help"
-        app:showAsAction="always"/>
+        app:showAsAction="always" />
+    <item
+        android:id="@+id/action_goto_chat"
+        android:icon="?attr/icon_goto_chat"
+        android:title="@string/switch_to_conversation"
+        app:showAsAction="always" />
 </menu>

src/main/res/values/attrs.xml 🔗

@@ -97,6 +97,7 @@
     <attr name="icon_remove" format="reference" />
     <attr name="icon_search" format="reference" />
     <attr name="icon_help" format="reference" />
+    <attr name="icon_goto_chat" format="reference" />
     <attr name="icon_secure" format="reference" />
     <attr name="icon_settings" format="reference" />
     <attr name="icon_share" format="reference" />

src/main/res/values/strings.xml 🔗

@@ -918,6 +918,7 @@
     <string name="audio_call">Audio call</string>
     <string name="video_call">Video call</string>
     <string name="help">Help</string>
+    <string name="switch_to_conversation">Switch to conversation</string>
     <string name="microphone_unavailable">Your microphone is unavailable</string>
     <string name="only_one_call_at_a_time">You can only have one call at a time.</string>
     <string name="return_to_ongoing_call">Return to ongoing call</string>

src/main/res/values/themes.xml 🔗

@@ -115,6 +115,7 @@
         <item name="icon_remove" type="reference">@drawable/ic_delete_black_24dp</item>
         <item name="icon_search" type="reference">@drawable/ic_search_white_24dp</item>
         <item name="icon_help" type="reference">@drawable/ic_help_white_24dp</item>
+        <item name="icon_goto_chat" type="reference">@drawable/ic_question_answer_white_24dp</item>
         <item name="icon_secure" type="reference">@drawable/ic_lock_open_white_24dp</item>
         <item name="icon_settings" type="reference">@drawable/ic_settings_black_24dp</item>
         <item name="icon_share" type="reference">@drawable/ic_share_white_24dp</item>
@@ -269,6 +270,7 @@
         <item name="icon_remove" type="reference">@drawable/ic_delete_white_24dp</item>
         <item name="icon_search" type="reference">@drawable/ic_search_white_24dp</item>
         <item name="icon_help" type="reference">@drawable/ic_help_white_24dp</item>
+        <item name="icon_goto_chat" type="reference">@drawable/ic_question_answer_white_24dp</item>
         <item name="icon_secure" type="reference">@drawable/ic_lock_open_white_24dp</item>
         <item name="icon_settings" type="reference">@drawable/ic_settings_white_24dp</item>
         <item name="icon_share" type="reference">@drawable/ic_share_white_24dp</item>