Shortcuts to get to phone account settings screens

Stephen Paul Weber created

Helpful because they can be hard to find, and one or both of them is sometimes
straight up hidden on some ROMs.

Change summary

src/cheogram/java/eu/siacs/conversations/ui/ManageAccountActivity.java | 23 
src/cheogram/res/values/themes.xml                                     |  2 
src/main/res/layout/activity_manage_accounts.xml                       | 58 
src/main/res/values/colors.xml                                         |  1 
4 files changed, 81 insertions(+), 3 deletions(-)

Detailed changes

src/cheogram/java/eu/siacs/conversations/ui/ManageAccountActivity.java 🔗

@@ -1,6 +1,7 @@
 package eu.siacs.conversations.ui;
 
 import android.content.ActivityNotFoundException;
+import android.content.ComponentName;
 import android.content.Intent;
 import android.os.Bundle;
 import android.security.KeyChain;
@@ -28,6 +29,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import eu.siacs.conversations.Config;
 import eu.siacs.conversations.R;
 import eu.siacs.conversations.entities.Account;
+import eu.siacs.conversations.entities.Contact;
 import eu.siacs.conversations.services.XmppConnectionService;
 import eu.siacs.conversations.services.XmppConnectionService.OnAccountUpdate;
 import eu.siacs.conversations.ui.adapter.AccountAdapter;
@@ -72,6 +74,27 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda
         }
         invalidateOptionsMenu();
         mAccountAdapter.notifyDataSetChanged();
+
+        findViewById(R.id.phone_accounts).setVisibility(View.GONE);
+        findViewById(R.id.phone_accounts).setOnClickListener((View v) -> {
+            Intent intent = new Intent();
+            intent.setComponent(new ComponentName("com.android.server.telecom",
+                "com.android.server.telecom.settings.EnableAccountPreferenceActivity"));
+            startActivity(intent);
+        });
+        findViewById(R.id.phone_accounts_settings).setOnClickListener((View v) -> {
+            startActivity(new Intent(android.telecom.TelecomManager.ACTION_CHANGE_PHONE_ACCOUNTS));
+        });
+
+        outer:
+        for (Account account : xmppConnectionService.getAccounts()) {
+            for (Contact contact : account.getRoster().getContacts()) {
+                if (contact.getPresences().anyIdentity("gateway", "pstn")) {
+                    findViewById(R.id.phone_accounts).setVisibility(View.VISIBLE);
+                    break outer;
+                }
+            }
+        }
     }
 
     @Override

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

@@ -151,7 +151,7 @@
     <style name="ConversationsTheme.Dark" parent="Theme.AppCompat.NoActionBar">
         <item name="colorPrimary">@color/perpy</item>
         <item name="colorPrimaryDark">#1E0036</item>
-        <item name="colorAccent">#FFC700</item>
+        <item name="colorAccent">@color/yeller</item>
         <item name="popupOverlayStyle">@style/ThemeOverlay.AppCompat.Dark</item>
         <item name="android:navigationBarColor" tools:targetApi="21">@color/black</item>
 

src/main/res/layout/activity_manage_accounts.xml 🔗

@@ -3,7 +3,8 @@
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:background="?attr/color_background_primary"
-    android:orientation="vertical">
+    android:orientation="vertical"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <include layout="@layout/toolbar" />
 
@@ -15,4 +16,57 @@
         android:dividerHeight="0dp" >
     </ListView>
 
-</LinearLayout>
+    <RelativeLayout
+        android:id="@+id/phone_accounts"
+        android:visibility="gone"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="?selectableItemBackground"
+        android:paddingLeft="8dp"
+        android:paddingBottom="8dp"
+        android:paddingTop="8dp">
+
+        <com.makeramen.roundedimageview.RoundedImageView
+            android:id="@+id/phone_accounts_image"
+            android:layout_width="48dp"
+            android:layout_height="48dp"
+            android:layout_alignParentLeft="true"
+            android:src="@drawable/ic_call_white_48dp"
+            android:background="@color/yeller"
+            app:riv_corner_radius="2dp" />
+
+        <LinearLayout
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_toRightOf="@+id/phone_accounts_image"
+            android:orientation="vertical"
+            android:paddingLeft="@dimen/avatar_item_distance">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:scrollHorizontally="false"
+                android:singleLine="true"
+                android:text="Manage Phone Accounts"
+                android:textAppearance="@style/TextAppearance.Conversations.Subhead" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="Android system dialler integration"
+                android:textAppearance="@style/TextAppearance.Conversations.Body2" />
+        </LinearLayout>
+
+        <com.makeramen.roundedimageview.RoundedImageView
+            android:id="@+id/phone_accounts_settings"
+            android:layout_width="48dp"
+            android:layout_height="48dp"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:paddingRight="16dp"
+            android:src="?attr/icon_settings"
+            app:riv_corner_radius="2dp" />
+    </RelativeLayout>
+
+</LinearLayout>

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

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
 	<color name="perpy">#7401CF</color>
+	<color name="yeller">#FFC700</color>
 	<color name="black">#ff000000</color>
 	<color name="black87">#de000000</color>
 	<color name="black54">#8a000000</color>