From 91cef7c6b961133a66e2ee24af87d423bafa70ab Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 7 May 2019 17:15:50 +0200 Subject: [PATCH] Avatar improvements (including glitch while a call is incoming and device in landscape on small screens) --- .../org/linphone/activities/MainActivity.java | 6 ++ .../settings/AccountSettingsFragment.java | 12 ++-- .../settings/AdvancedSettingsFragment.java | 5 -- .../java/org/linphone/utils/ImageUtils.java | 8 +-- .../utils/LinphoneShortcutManager.java | 9 +-- .../org/linphone/views/ContactAvatar.java | 58 +++++------------- .../main/res/drawable-xhdpi/avatar_border.png | Bin 26312 -> 0 bytes app/src/main/res/drawable/avatar_border.xml | 5 ++ .../main/res/drawable/generated_avatar_bg.xml | 2 +- app/src/main/res/layout-land/call.xml | 8 +-- app/src/main/res/layout/call.xml | 4 +- app/src/main/res/layout/chat_device_group.xml | 2 + app/src/main/res/layout/contact_avatar.xml | 21 +++---- .../main/res/layout/contact_avatar_100.xml | 21 +++---- .../main/res/layout/contact_avatar_200.xml | 21 +++---- .../res/layout/contact_avatar_call_paused.xml | 21 +++---- 16 files changed, 83 insertions(+), 120 deletions(-) delete mode 100644 app/src/main/res/drawable-xhdpi/avatar_border.png create mode 100644 app/src/main/res/drawable/avatar_border.xml diff --git a/app/src/main/java/org/linphone/activities/MainActivity.java b/app/src/main/java/org/linphone/activities/MainActivity.java index cae5ee1a6..4cfdbd973 100644 --- a/app/src/main/java/org/linphone/activities/MainActivity.java +++ b/app/src/main/java/org/linphone/activities/MainActivity.java @@ -760,4 +760,10 @@ public abstract class MainActivity extends LinphoneGenericActivity Log.e(ex); } } + + // Others + + public SideMenuFragment getSideMenuFragment() { + return mSideMenuFragment; + } } diff --git a/app/src/main/java/org/linphone/settings/AccountSettingsFragment.java b/app/src/main/java/org/linphone/settings/AccountSettingsFragment.java index 4291fd3cc..2783c3824 100644 --- a/app/src/main/java/org/linphone/settings/AccountSettingsFragment.java +++ b/app/src/main/java/org/linphone/settings/AccountSettingsFragment.java @@ -419,8 +419,9 @@ public class AccountSettingsFragment extends SettingsFragment { core.setDefaultProxyConfig(mProxyConfig); mUseAsDefault.setEnabled(false); } - // FIXME TODO - // LinphoneActivity.instance().refreshAccounts(); + ((SettingsActivity) getActivity()) + .getSideMenuFragment() + .displayAccountsInSideMenu(); } else { Log.e("[Account Settings] No proxy config !"); } @@ -536,9 +537,10 @@ public class AccountSettingsFragment extends SettingsFragment { core.removeAuthInfo(mAuthInfo); } } - // FIXME TODO - /*LinphoneActivity.instance().displaySettings(); - LinphoneActivity.instance().refreshAccounts();*/ + ((SettingsActivity) getActivity()).popBackStack(); + ((SettingsActivity) getActivity()) + .getSideMenuFragment() + .displayAccountsInSideMenu(); } }); diff --git a/app/src/main/java/org/linphone/settings/AdvancedSettingsFragment.java b/app/src/main/java/org/linphone/settings/AdvancedSettingsFragment.java index 9be6935ac..2ee244c0c 100644 --- a/app/src/main/java/org/linphone/settings/AdvancedSettingsFragment.java +++ b/app/src/main/java/org/linphone/settings/AdvancedSettingsFragment.java @@ -187,12 +187,7 @@ public class AdvancedSettingsFragment extends SettingsFragment { i.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); i.addCategory(Intent.CATEGORY_DEFAULT); i.setData(Uri.parse("package:" + context.getPackageName())); - i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); - i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); - // FIXME TODO - // startActivityForResult(i, - // LinphoneActivity.ANDROID_APP_SETTINGS_ACTIVITY); startActivity(i); } }); diff --git a/app/src/main/java/org/linphone/utils/ImageUtils.java b/app/src/main/java/org/linphone/utils/ImageUtils.java index fa2b7a459..92e9cb339 100644 --- a/app/src/main/java/org/linphone/utils/ImageUtils.java +++ b/app/src/main/java/org/linphone/utils/ImageUtils.java @@ -21,7 +21,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. import android.content.Context; import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff; @@ -31,12 +30,11 @@ import android.net.Uri; import android.provider.MediaStore; import android.util.DisplayMetrics; import android.util.TypedValue; -import org.linphone.R; public class ImageUtils { public static Bitmap getRoundBitmapFromUri(Context context, Uri fromPictureUri) { - Bitmap bm; + Bitmap bm = null; Bitmap roundBm; if (fromPictureUri != null) { try { @@ -44,10 +42,8 @@ public class ImageUtils { MediaStore.Images.Media.getBitmap( context.getContentResolver(), fromPictureUri); } catch (Exception e) { - bm = BitmapFactory.decodeResource(context.getResources(), R.drawable.topbar_avatar); + return null; } - } else { - bm = BitmapFactory.decodeResource(context.getResources(), R.drawable.topbar_avatar); } if (bm != null) { roundBm = getRoundBitmap(bm); diff --git a/app/src/main/java/org/linphone/utils/LinphoneShortcutManager.java b/app/src/main/java/org/linphone/utils/LinphoneShortcutManager.java index 8583a3c29..1243f41c4 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneShortcutManager.java +++ b/app/src/main/java/org/linphone/utils/LinphoneShortcutManager.java @@ -27,7 +27,6 @@ import android.graphics.Bitmap; import android.graphics.drawable.Icon; import android.util.ArraySet; import java.util.Set; -import org.linphone.LinphoneService; import org.linphone.R; import org.linphone.chat.ChatActivity; import org.linphone.contacts.ContactsManager; @@ -59,9 +58,7 @@ public class LinphoneShortcutManager { Bitmap bm = null; if (contact != null && contact.getThumbnailUri() != null) { - bm = - ImageUtils.getRoundBitmapFromUri( - LinphoneService.instance(), contact.getThumbnailUri()); + bm = ImageUtils.getRoundBitmapFromUri(mContext, contact.getThumbnailUri()); } Icon icon = bm == null @@ -101,9 +98,7 @@ public class LinphoneShortcutManager { if (contact != null) { Bitmap bm = null; if (contact != null && contact.getThumbnailUri() != null) { - bm = - ImageUtils.getRoundBitmapFromUri( - LinphoneService.instance(), contact.getThumbnailUri()); + bm = ImageUtils.getRoundBitmapFromUri(mContext, contact.getThumbnailUri()); } Icon icon = bm == null diff --git a/app/src/main/java/org/linphone/views/ContactAvatar.java b/app/src/main/java/org/linphone/views/ContactAvatar.java index 705b6b10a..1b1ffe767 100644 --- a/app/src/main/java/org/linphone/views/ContactAvatar.java +++ b/app/src/main/java/org/linphone/views/ContactAvatar.java @@ -20,35 +20,33 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import android.graphics.Bitmap; -import android.provider.MediaStore; import android.view.View; import android.widget.ImageView; import android.widget.TextView; -import java.io.IOException; -import org.linphone.LinphoneService; import org.linphone.R; import org.linphone.contacts.LinphoneContact; import org.linphone.core.ChatRoomSecurityLevel; -import org.linphone.core.tools.Log; +import org.linphone.utils.ImageUtils; class ContactAvatarHolder { public final ImageView contactPicture; - public final ImageView avatarMask; public final ImageView avatarBorder; public final ImageView securityLevel; public final TextView generatedAvatar; + public final ImageView generatedAvatarBackground; public ContactAvatarHolder(View v) { contactPicture = v.findViewById(R.id.contact_picture); - avatarMask = v.findViewById(R.id.mask); securityLevel = v.findViewById(R.id.security_level); generatedAvatar = v.findViewById(R.id.generated_avatar); + generatedAvatarBackground = v.findViewById(R.id.generated_avatar_background); avatarBorder = v.findViewById(R.id.border); } public void init() { contactPicture.setVisibility(View.VISIBLE); generatedAvatar.setVisibility(View.VISIBLE); + generatedAvatarBackground.setVisibility(View.VISIBLE); securityLevel.setVisibility(View.GONE); avatarBorder.setVisibility(View.GONE); } @@ -99,8 +97,7 @@ public class ContactAvatar { } } - private static void displayAvatar( - String displayName, View v, boolean showBorder, int maskResource) { + public static void displayAvatar(String displayName, View v, boolean showBorder) { if (displayName == null || v == null) return; ContactAvatarHolder holder = new ContactAvatarHolder(v); @@ -112,31 +109,27 @@ public class ContactAvatar { // If display name is a phone number, use default avatar because generated one will be // +... holder.generatedAvatar.setVisibility(View.GONE); + holder.generatedAvatarBackground.setVisibility(View.GONE); } else { String generatedAvatar = generateAvatar(displayName); if (generatedAvatar != null && generatedAvatar.length() > 0) { holder.generatedAvatar.setText(generatedAvatar); holder.generatedAvatar.setVisibility(View.VISIBLE); + holder.generatedAvatarBackground.setVisibility(View.VISIBLE); } else { holder.generatedAvatar.setVisibility(View.GONE); + holder.generatedAvatarBackground.setVisibility(View.GONE); } } holder.securityLevel.setVisibility(View.GONE); - if (maskResource != 0) { - holder.avatarMask.setImageResource(maskResource); - } if (showBorder) { holder.avatarBorder.setVisibility(View.VISIBLE); } } - public static void displayAvatar(String displayName, View v, boolean showBorder) { - displayAvatar(displayName, v, showBorder, 0); - } - public static void displayAvatar(String displayName, View v) { - displayAvatar(displayName, v, false, 0); + displayAvatar(displayName, v, false); } public static void displayAvatar( @@ -145,8 +138,7 @@ public class ContactAvatar { setSecurityLevel(securityLevel, v); } - private static void displayAvatar( - LinphoneContact contact, View v, boolean showBorder, int maskResource) { + public static void displayAvatar(LinphoneContact contact, View v, boolean showBorder) { if (contact == null || v == null) return; ContactAvatarHolder holder = new ContactAvatarHolder(v); @@ -163,47 +155,28 @@ public class ContactAvatar { : contact.getFullName())); holder.generatedAvatar.setVisibility(View.GONE); + holder.generatedAvatarBackground.setVisibility(View.GONE); holder.contactPicture.setVisibility(View.VISIBLE); holder.securityLevel.setVisibility(View.GONE); - Bitmap bm = null; - try { - if (contact.getThumbnailUri() != null) { - bm = - MediaStore.Images.Media.getBitmap( - LinphoneService.instance().getContentResolver(), - contact.getThumbnailUri()); - } - } catch (IOException e) { - Log.e(e); - } + Bitmap bm = ImageUtils.getRoundBitmapFromUri(v.getContext(), contact.getThumbnailUri()); if (bm != null) { holder.contactPicture.setImageBitmap(bm); holder.contactPicture.setVisibility(View.VISIBLE); holder.generatedAvatar.setVisibility(View.GONE); + holder.generatedAvatarBackground.setVisibility(View.GONE); } else if (generated_avatars) { - holder.generatedAvatar.setText( - generateAvatar( - contact.getFullName() == null - ? contact.getFirstName() + " " + contact.getLastName() - : contact.getFullName())); holder.generatedAvatar.setVisibility(View.VISIBLE); + holder.generatedAvatarBackground.setVisibility(View.VISIBLE); } - if (maskResource != 0) { - holder.avatarMask.setImageResource(maskResource); - } if (showBorder) { holder.avatarBorder.setVisibility(View.VISIBLE); } } - public static void displayAvatar(LinphoneContact contact, View v, boolean showBorder) { - displayAvatar(contact, v, showBorder, 0); - } - public static void displayAvatar(LinphoneContact contact, View v) { - displayAvatar(contact, v, false, 0); + displayAvatar(contact, v, false); } public static void displayAvatar( @@ -224,6 +197,7 @@ public class ContactAvatar { ContactAvatarHolder holder = new ContactAvatarHolder(v); holder.contactPicture.setImageResource(R.drawable.chat_group_avatar); holder.generatedAvatar.setVisibility(View.GONE); + holder.generatedAvatarBackground.setVisibility(View.GONE); holder.securityLevel.setVisibility(View.GONE); holder.avatarBorder.setVisibility(View.GONE); } diff --git a/app/src/main/res/drawable-xhdpi/avatar_border.png b/app/src/main/res/drawable-xhdpi/avatar_border.png deleted file mode 100644 index 612e9b10cce8f76949994f0b273006067329cf20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26312 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 G + + + + diff --git a/app/src/main/res/drawable/generated_avatar_bg.xml b/app/src/main/res/drawable/generated_avatar_bg.xml index 52d05a405..87e6684b1 100644 --- a/app/src/main/res/drawable/generated_avatar_bg.xml +++ b/app/src/main/res/drawable/generated_avatar_bg.xml @@ -1,5 +1,5 @@ - + diff --git a/app/src/main/res/layout-land/call.xml b/app/src/main/res/layout-land/call.xml index c66924c6f..6913e6731 100644 --- a/app/src/main/res/layout-land/call.xml +++ b/app/src/main/res/layout-land/call.xml @@ -50,7 +50,7 @@ android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:alpha="0.8" - android:background="@color/white_color" + android:background="?attr/backgroundColor" android:orientation="vertical"> - + remote_pause diff --git a/app/src/main/res/layout/contact_avatar.xml b/app/src/main/res/layout/contact_avatar.xml index 3800162f0..96eae8a8d 100644 --- a/app/src/main/res/layout/contact_avatar.xml +++ b/app/src/main/res/layout/contact_avatar.xml @@ -12,33 +12,30 @@ android:adjustViewBounds="true" android:src="@drawable/avatar" /> + + - - + android:src="@drawable/avatar_border" /> + + - - + android:src="@drawable/avatar_border" /> + + - - + android:src="@drawable/avatar_border" /> + + - - + android:src="@drawable/avatar_border" />