show help button on certain error conditions in RTP session. fixes #3770
This commit is contained in:
		
							parent
							
								
									644ad99520
								
							
						
					
					
						commit
						b7f3b4333e
					
				
							
								
								
									
										11
									
								
								src/conversations/res/menu/activity_rtp_session.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/conversations/res/menu/activity_rtp_session.xml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					<?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">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <item
 | 
				
			||||||
 | 
					        android:id="@+id/action_help"
 | 
				
			||||||
 | 
					        android:icon="?attr/icon_help"
 | 
				
			||||||
 | 
					        android:title="@string/help"
 | 
				
			||||||
 | 
					        app:showAsAction="always"/>
 | 
				
			||||||
 | 
					</menu>
 | 
				
			||||||
@ -1,6 +1,7 @@
 | 
				
			|||||||
package eu.siacs.conversations;
 | 
					package eu.siacs.conversations;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import android.graphics.Bitmap;
 | 
					import android.graphics.Bitmap;
 | 
				
			||||||
 | 
					import android.net.Uri;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.Collections;
 | 
					import java.util.Collections;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
@ -35,6 +36,7 @@ public final class Config {
 | 
				
			|||||||
    public static final String LOGTAG = BuildConfig.LOGTAG;
 | 
					    public static final String LOGTAG = BuildConfig.LOGTAG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static final Jid BUG_REPORTS = Jid.of("bugs@conversations.im");
 | 
					    public static final Jid BUG_REPORTS = Jid.of("bugs@conversations.im");
 | 
				
			||||||
 | 
					    public static final Uri HELP = Uri.parse("https://help.conversations.im");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static final String DOMAIN_LOCK = null; //only allow account creation for this domain
 | 
					    public static final String DOMAIN_LOCK = null; //only allow account creation for this domain
 | 
				
			||||||
 | 
				
			|||||||
@ -3,6 +3,7 @@ package eu.siacs.conversations.ui;
 | 
				
			|||||||
import android.Manifest;
 | 
					import android.Manifest;
 | 
				
			||||||
import android.annotation.SuppressLint;
 | 
					import android.annotation.SuppressLint;
 | 
				
			||||||
import android.app.PictureInPictureParams;
 | 
					import android.app.PictureInPictureParams;
 | 
				
			||||||
 | 
					import android.content.ActivityNotFoundException;
 | 
				
			||||||
import android.content.Context;
 | 
					import android.content.Context;
 | 
				
			||||||
import android.content.Intent;
 | 
					import android.content.Intent;
 | 
				
			||||||
import android.content.pm.PackageManager;
 | 
					import android.content.pm.PackageManager;
 | 
				
			||||||
@ -17,6 +18,8 @@ import android.support.annotation.RequiresApi;
 | 
				
			|||||||
import android.support.annotation.StringRes;
 | 
					import android.support.annotation.StringRes;
 | 
				
			||||||
import android.util.Log;
 | 
					import android.util.Log;
 | 
				
			||||||
import android.util.Rational;
 | 
					import android.util.Rational;
 | 
				
			||||||
 | 
					import android.view.Menu;
 | 
				
			||||||
 | 
					import android.view.MenuItem;
 | 
				
			||||||
import android.view.View;
 | 
					import android.view.View;
 | 
				
			||||||
import android.view.WindowManager;
 | 
					import android.view.WindowManager;
 | 
				
			||||||
import android.widget.Toast;
 | 
					import android.widget.Toast;
 | 
				
			||||||
@ -81,6 +84,10 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
 | 
				
			|||||||
            RtpEndUserState.CONNECTIVITY_LOST_ERROR,
 | 
					            RtpEndUserState.CONNECTIVITY_LOST_ERROR,
 | 
				
			||||||
            RtpEndUserState.RETRACTED
 | 
					            RtpEndUserState.RETRACTED
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					    private static final List<RtpEndUserState> STATES_SHOWING_HELP_BUTTON = Arrays.asList(
 | 
				
			||||||
 | 
					            RtpEndUserState.APPLICATION_ERROR,
 | 
				
			||||||
 | 
					            RtpEndUserState.CONNECTIVITY_ERROR
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
    private static final String PROXIMITY_WAKE_LOCK_TAG = "conversations:in-rtp-session";
 | 
					    private static final String PROXIMITY_WAKE_LOCK_TAG = "conversations:in-rtp-session";
 | 
				
			||||||
    private static final int REQUEST_ACCEPT_CALL = 0x1111;
 | 
					    private static final int REQUEST_ACCEPT_CALL = 0x1111;
 | 
				
			||||||
    private WeakReference<JingleRtpConnection> rtpConnectionReference;
 | 
					    private WeakReference<JingleRtpConnection> rtpConnectionReference;
 | 
				
			||||||
@ -124,6 +131,45 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
 | 
				
			|||||||
        setSupportActionBar(binding.toolbar);
 | 
					        setSupportActionBar(binding.toolbar);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public boolean onCreateOptionsMenu(final Menu menu) {
 | 
				
			||||||
 | 
					        getMenuInflater().inflate(R.menu.activity_rtp_session, menu);
 | 
				
			||||||
 | 
					        final MenuItem help = menu.findItem(R.id.action_help);
 | 
				
			||||||
 | 
					        help.setVisible(isHelpButtonVisible());
 | 
				
			||||||
 | 
					        return super.onCreateOptionsMenu(menu);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private boolean isHelpButtonVisible() {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            return STATES_SHOWING_HELP_BUTTON.contains(requireRtpConnection().getEndUserState());
 | 
				
			||||||
 | 
					        } catch (IllegalStateException e) {
 | 
				
			||||||
 | 
					            final Intent intent = getIntent();
 | 
				
			||||||
 | 
					            final String state = intent != null ? intent.getStringExtra(EXTRA_LAST_REPORTED_STATE) : null;
 | 
				
			||||||
 | 
					            if (state != null) {
 | 
				
			||||||
 | 
					                return STATES_SHOWING_HELP_BUTTON.contains(RtpEndUserState.valueOf(state));
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                return false;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean onOptionsItemSelected(final MenuItem item) {
 | 
				
			||||||
 | 
					        if (item.getItemId() == R.id.action_help) {
 | 
				
			||||||
 | 
					            launchHelpInBrowser();
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return super.onOptionsItemSelected(item);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void launchHelpInBrowser() {
 | 
				
			||||||
 | 
					        final Intent intent = new Intent(Intent.ACTION_VIEW, Config.HELP);
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            startActivity(intent);
 | 
				
			||||||
 | 
					        } catch (final ActivityNotFoundException e) {
 | 
				
			||||||
 | 
					            Toast.makeText(this, R.string.no_application_found_to_open_link, Toast.LENGTH_LONG).show();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void endCall(View view) {
 | 
					    private void endCall(View view) {
 | 
				
			||||||
        endCall();
 | 
					        endCall();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -302,6 +348,7 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
 | 
				
			|||||||
                updateButtonConfiguration(state);
 | 
					                updateButtonConfiguration(state);
 | 
				
			||||||
                updateStateDisplay(state);
 | 
					                updateStateDisplay(state);
 | 
				
			||||||
                updateProfilePicture(state);
 | 
					                updateProfilePicture(state);
 | 
				
			||||||
 | 
					                invalidateOptionsMenu();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            binding.with.setText(account.getRoster().getContact(with).getDisplayName());
 | 
					            binding.with.setText(account.getRoster().getContact(with).getDisplayName());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -456,11 +503,12 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
 | 
				
			|||||||
        updateStateDisplay(currentState, media);
 | 
					        updateStateDisplay(currentState, media);
 | 
				
			||||||
        updateButtonConfiguration(currentState, media);
 | 
					        updateButtonConfiguration(currentState, media);
 | 
				
			||||||
        updateProfilePicture(currentState);
 | 
					        updateProfilePicture(currentState);
 | 
				
			||||||
 | 
					        invalidateOptionsMenu();
 | 
				
			||||||
        return false;
 | 
					        return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void initializeWithTerminatedSessionState(final Account account, final Jid with, final JingleConnectionManager.TerminatedRtpSession terminatedRtpSession) {
 | 
					    private void initializeWithTerminatedSessionState(final Account account, final Jid with, final JingleConnectionManager.TerminatedRtpSession terminatedRtpSession) {
 | 
				
			||||||
        Log.d(Config.LOGTAG,"initializeWithTerminatedSessionState()");
 | 
					        Log.d(Config.LOGTAG, "initializeWithTerminatedSessionState()");
 | 
				
			||||||
        if (terminatedRtpSession.state == RtpEndUserState.ENDED) {
 | 
					        if (terminatedRtpSession.state == RtpEndUserState.ENDED) {
 | 
				
			||||||
            finish();
 | 
					            finish();
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
@ -470,6 +518,8 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
 | 
				
			|||||||
        updateButtonConfiguration(state);
 | 
					        updateButtonConfiguration(state);
 | 
				
			||||||
        updateStateDisplay(state);
 | 
					        updateStateDisplay(state);
 | 
				
			||||||
        updateProfilePicture(state);
 | 
					        updateProfilePicture(state);
 | 
				
			||||||
 | 
					        updateCallDuration();
 | 
				
			||||||
 | 
					        invalidateOptionsMenu();
 | 
				
			||||||
        binding.with.setText(account.getRoster().getContact(with).getDisplayName());
 | 
					        binding.with.setText(account.getRoster().getContact(with).getDisplayName());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -956,6 +1006,7 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
 | 
				
			|||||||
                updateButtonConfiguration(state, media);
 | 
					                updateButtonConfiguration(state, media);
 | 
				
			||||||
                updateVideoViews(state);
 | 
					                updateVideoViews(state);
 | 
				
			||||||
                updateProfilePicture(state, contact);
 | 
					                updateProfilePicture(state, contact);
 | 
				
			||||||
 | 
					                invalidateOptionsMenu();
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
            if (END_CARD.contains(state)) {
 | 
					            if (END_CARD.contains(state)) {
 | 
				
			||||||
                final JingleRtpConnection rtpConnection = requireRtpConnection();
 | 
					                final JingleRtpConnection rtpConnection = requireRtpConnection();
 | 
				
			||||||
@ -1004,6 +1055,7 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
 | 
				
			|||||||
                updateStateDisplay(state);
 | 
					                updateStateDisplay(state);
 | 
				
			||||||
                updateButtonConfiguration(state);
 | 
					                updateButtonConfiguration(state);
 | 
				
			||||||
                updateProfilePicture(state);
 | 
					                updateProfilePicture(state);
 | 
				
			||||||
 | 
					                invalidateOptionsMenu();
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
            resetIntent(account, with, state, actionToMedia(currentIntent.getAction()));
 | 
					            resetIntent(account, with, state, actionToMedia(currentIntent.getAction()));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										
											BIN
										
									
								
								src/main/res/drawable-hdpi/ic_help_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/main/res/drawable-hdpi/ic_help_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 476 B  | 
							
								
								
									
										
											BIN
										
									
								
								src/main/res/drawable-mdpi/ic_help_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/main/res/drawable-mdpi/ic_help_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 304 B  | 
							
								
								
									
										
											BIN
										
									
								
								src/main/res/drawable-xhdpi/ic_help_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/main/res/drawable-xhdpi/ic_help_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 585 B  | 
							
								
								
									
										
											BIN
										
									
								
								src/main/res/drawable-xxhdpi/ic_help_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/main/res/drawable-xxhdpi/ic_help_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 842 B  | 
							
								
								
									
										
											BIN
										
									
								
								src/main/res/drawable-xxxhdpi/ic_help_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/main/res/drawable-xxxhdpi/ic_help_white_24dp.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 1.1 KiB  | 
@ -96,6 +96,7 @@
 | 
				
			|||||||
    <attr name="icon_refresh" format="reference" />
 | 
					    <attr name="icon_refresh" format="reference" />
 | 
				
			||||||
    <attr name="icon_remove" format="reference" />
 | 
					    <attr name="icon_remove" format="reference" />
 | 
				
			||||||
    <attr name="icon_search" format="reference" />
 | 
					    <attr name="icon_search" format="reference" />
 | 
				
			||||||
 | 
					    <attr name="icon_help" format="reference" />
 | 
				
			||||||
    <attr name="icon_secure" format="reference" />
 | 
					    <attr name="icon_secure" format="reference" />
 | 
				
			||||||
    <attr name="icon_settings" format="reference" />
 | 
					    <attr name="icon_settings" format="reference" />
 | 
				
			||||||
    <attr name="icon_share" format="reference" />
 | 
					    <attr name="icon_share" format="reference" />
 | 
				
			||||||
 | 
				
			|||||||
@ -917,6 +917,7 @@
 | 
				
			|||||||
    <string name="missed_call">Missed call</string>
 | 
					    <string name="missed_call">Missed call</string>
 | 
				
			||||||
    <string name="audio_call">Audio call</string>
 | 
					    <string name="audio_call">Audio call</string>
 | 
				
			||||||
    <string name="video_call">Video call</string>
 | 
					    <string name="video_call">Video call</string>
 | 
				
			||||||
 | 
					    <string name="help">Help</string>
 | 
				
			||||||
    <string name="microphone_unavailable">Your microphone is unavailable</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="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>
 | 
					    <string name="return_to_ongoing_call">Return to ongoing call</string>
 | 
				
			||||||
 | 
				
			|||||||
@ -114,6 +114,7 @@
 | 
				
			|||||||
        </item>
 | 
					        </item>
 | 
				
			||||||
        <item name="icon_remove" type="reference">@drawable/ic_delete_black_24dp</item>
 | 
					        <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_search" type="reference">@drawable/ic_search_white_24dp</item>
 | 
				
			||||||
 | 
					        <item name="icon_help" type="reference">@drawable/ic_help_white_24dp</item>
 | 
				
			||||||
        <item name="icon_secure" type="reference">@drawable/ic_lock_open_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_settings" type="reference">@drawable/ic_settings_black_24dp</item>
 | 
				
			||||||
        <item name="icon_share" type="reference">@drawable/ic_share_white_24dp</item>
 | 
					        <item name="icon_share" type="reference">@drawable/ic_share_white_24dp</item>
 | 
				
			||||||
@ -267,6 +268,7 @@
 | 
				
			|||||||
        </item>
 | 
					        </item>
 | 
				
			||||||
        <item name="icon_remove" type="reference">@drawable/ic_delete_white_24dp</item>
 | 
					        <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_search" type="reference">@drawable/ic_search_white_24dp</item>
 | 
				
			||||||
 | 
					        <item name="icon_help" type="reference">@drawable/ic_help_white_24dp</item>
 | 
				
			||||||
        <item name="icon_secure" type="reference">@drawable/ic_lock_open_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_settings" type="reference">@drawable/ic_settings_white_24dp</item>
 | 
				
			||||||
        <item name="icon_share" type="reference">@drawable/ic_share_white_24dp</item>
 | 
					        <item name="icon_share" type="reference">@drawable/ic_share_white_24dp</item>
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user