From 92b33ef71c35f5525498119af102f59f19aefdb2 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 23 Nov 2018 18:09:34 +0100 Subject: [PATCH 01/10] Improved code related to top bar in some views --- .../java/org/linphone/LinphoneActivity.java | 17 +- .../org/linphone/fragments/AboutFragment.java | 6 - app/src/main/res/layout-land/about.xml | 40 +- app/src/main/res/layout-land/main.xml | 501 ++++++++--------- app/src/main/res/layout-sw533dp-land/main.xml | 507 +++++++++--------- app/src/main/res/layout-sw533dp/main.xml | 506 ++++++++--------- app/src/main/res/layout/about.xml | 34 -- app/src/main/res/layout/main.xml | 483 +++++++++-------- 8 files changed, 1035 insertions(+), 1059 deletions(-) diff --git a/app/src/main/java/org/linphone/LinphoneActivity.java b/app/src/main/java/org/linphone/LinphoneActivity.java index e3b166639..0b3863395 100644 --- a/app/src/main/java/org/linphone/LinphoneActivity.java +++ b/app/src/main/java/org/linphone/LinphoneActivity.java @@ -136,7 +136,8 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick private TextView missedCalls, missedChats; private RelativeLayout contacts, history, dialer, chat; private View contacts_selected, history_selected, dialer_selected, chat_selected; - private RelativeLayout mTopBar; + private LinearLayout mTopBar; + private TextView mTopBarTitle; private ImageView cancel; private FragmentsAvailable pendingFragmentTransaction, currentFragment, leftFragment; private Fragment fragment; @@ -303,6 +304,7 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick private void initButtons() { mTabBar = findViewById(R.id.footer); mTopBar = findViewById(R.id.top_bar); + mTopBarTitle = findViewById(R.id.top_bar_title); cancel = findViewById(R.id.cancel); cancel.setOnClickListener(this); @@ -847,6 +849,16 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick public void hideTopBar() { mTopBar.setVisibility(View.GONE); + mTopBarTitle.setText(""); + } + + public void showTopBar() { + mTopBar.setVisibility(View.VISIBLE); + } + + public void showTopBarWithTitle(String title) { + showTopBar(); + mTopBarTitle.setText(title); } @SuppressWarnings("incomplete-switch") @@ -880,9 +892,10 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick case SETTINGS: case ACCOUNT_SETTINGS: hideTabBar(hideBottomBar); - mTopBar.setVisibility(View.VISIBLE); + showTopBarWithTitle(getString(R.string.settings)); break; case ABOUT: + showTopBarWithTitle(getString(R.string.about)); hideTabBar(hideBottomBar); break; case CHAT_LIST: diff --git a/app/src/main/java/org/linphone/fragments/AboutFragment.java b/app/src/main/java/org/linphone/fragments/AboutFragment.java index b4bf6064e..3f5eb94ee 100644 --- a/app/src/main/java/org/linphone/fragments/AboutFragment.java +++ b/app/src/main/java/org/linphone/fragments/AboutFragment.java @@ -48,7 +48,6 @@ import org.linphone.mediastream.Log; public class AboutFragment extends Fragment implements OnClickListener { View sendLogButton = null; View resetLogButton = null; - ImageView cancel; CoreListenerStub mListener; private ProgressDialog progress; private boolean uploadInProgress; @@ -62,9 +61,6 @@ public class AboutFragment extends Fragment implements OnClickListener { aboutLiblinphoneVersion.setText(String.format(getString(R.string.about_liblinphone_version), LinphoneManager.getLc().getVersion())); aboutVersion.setText(String.format(getString(R.string.about_version), BuildConfig.VERSION_NAME)); - cancel = view.findViewById(R.id.cancel); - cancel.setOnClickListener(this); - sendLogButton = view.findViewById(R.id.send_log); sendLogButton.setOnClickListener(this); sendLogButton.setVisibility(LinphonePreferences.instance().isDebugEnabled() ? View.VISIBLE : View.GONE); @@ -162,8 +158,6 @@ public class AboutFragment extends Fragment implements OnClickListener { if (lc != null) { lc.resetLogCollection(); } - } else if (v == cancel) { - LinphoneActivity.instance().goToDialerFragment(); } } } diff --git a/app/src/main/res/layout-land/about.xml b/app/src/main/res/layout-land/about.xml index aeda1db2c..05198177f 100644 --- a/app/src/main/res/layout-land/about.xml +++ b/app/src/main/res/layout-land/about.xml @@ -1,42 +1,8 @@ - - - - - - - - - + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + xmlns:tools="http://schemas.android.com/tools" + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent"> - + - + - + - + - + - + - + - + - + - - + - + + - + - + - + - + - + - + - + - + - - + - + + - + - + - + - + - + - + - + - - + - + - - + - - + - + - + - - + + - + - + - + + - + - + - - + - + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw533dp-land/main.xml b/app/src/main/res/layout-sw533dp-land/main.xml index 302ca4dc2..ae19b1f2d 100644 --- a/app/src/main/res/layout-sw533dp-land/main.xml +++ b/app/src/main/res/layout-sw533dp-land/main.xml @@ -1,297 +1,306 @@ + xmlns:tools="http://schemas.android.com/tools" + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent"> - + - + - + - + - + - + - + - + - + - + - + - + - - + - - + + - + - + - + - + - + - + - + - + - + - - + - + - + + - + - + - + - + - + - + - - - + - - + - + - + - + - - + + - + - + - + - + + - + - + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw533dp/main.xml b/app/src/main/res/layout-sw533dp/main.xml index 83e455609..7a953c23f 100644 --- a/app/src/main/res/layout-sw533dp/main.xml +++ b/app/src/main/res/layout-sw533dp/main.xml @@ -1,296 +1,306 @@ + xmlns:tools="http://schemas.android.com/tools" + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent"> - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + - + - + - + - + - + - + - + - + - + - - + - + - + - + + - + - + - + - + - + - - - + - - + - + - + - + - - + - + + - + - + - + - + + - + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/about.xml b/app/src/main/res/layout/about.xml index e46a2083a..149e30e98 100644 --- a/app/src/main/res/layout/about.xml +++ b/app/src/main/res/layout/about.xml @@ -5,40 +5,6 @@ android:layout_height="match_parent" android:orientation="vertical"> - - - - - - - - - - + - + - + - + - + - + - + - + - + - - + - + + - + - + - + - + - + - + - + - + - - + - + + - + - + - + - + - + - + - + - - + - + - - + - - + - + - + - - + + - + - + - + + - - - + - - + - + + + + + + + + + + + \ No newline at end of file From 342ffe4981a8339b3f42f52de0df756434761e24 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Sat, 24 Nov 2018 09:46:31 +0100 Subject: [PATCH 02/10] Fixed firebase always disabled --- app/build.gradle | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 117a15693..deb28e1d7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,7 +5,7 @@ def getPackageName() { } def firebaseEnabled() { - File googleFile = new File('google-services.json') + File googleFile = new File('app/google-services.json') return googleFile.exists() } @@ -15,10 +15,6 @@ def isLocalAarAvailable() { return debugAar.exists() || releaseAar.exists() } -if (firebaseEnabled()) { - apply plugin: 'com.google.gms.google-services' -} - ///// Exclude Files ///// def excludeFiles = [] @@ -120,4 +116,8 @@ dependencies { releaseImplementation "org.linphone:liblinphone-sdk:${android.defaultConfig.versionName}" debugImplementation "org.linphone:liblinphone-sdk:${android.defaultConfig.versionName}-DEBUG" } +} + +if (firebaseEnabled()) { + apply plugin: 'com.google.gms.google-services' } \ No newline at end of file From 8b56833e32ffd8fca21c8362939f050c95adc5dd Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 26 Nov 2018 11:03:06 +0100 Subject: [PATCH 03/10] Hide back button in chat view on tablets --- .../org/linphone/chat/ChatMessagesFragment.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java index 097c8f8c5..b92bf6357 100644 --- a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java +++ b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java @@ -163,12 +163,16 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener, }); mBackButton = view.findViewById(R.id.back); - mBackButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - LinphoneActivity.instance().goToChatList(); - } - }); + if (getResources().getBoolean(R.bool.isTablet)) { + mBackButton.setVisibility(View.INVISIBLE); + } else { + mBackButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + LinphoneActivity.instance().goToChatList(); + } + }); + } mCallButton = view.findViewById(R.id.start_call); mCallButton.setOnClickListener(new View.OnClickListener() { From a421b91d627f0afe031f749714e6a75e510cfa51 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 26 Nov 2018 12:32:27 +0100 Subject: [PATCH 04/10] Updated google services version to remove compile warning --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 53b2ceeaa..dcc56c2aa 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { classpath 'com.android.tools.build:gradle:3.2.1' - classpath 'com.google.gms:google-services:3.1.0' + classpath 'com.google.gms:google-services:3.2.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files From ec0368d2546532e6424b64572dcd30d9769d2d3d Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 26 Nov 2018 13:53:07 +0100 Subject: [PATCH 05/10] Fixed back when in settings --- app/src/main/java/org/linphone/LinphoneActivity.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/org/linphone/LinphoneActivity.java b/app/src/main/java/org/linphone/LinphoneActivity.java index 0b3863395..404964729 100644 --- a/app/src/main/java/org/linphone/LinphoneActivity.java +++ b/app/src/main/java/org/linphone/LinphoneActivity.java @@ -1570,8 +1570,14 @@ public class LinphoneActivity extends LinphoneGenericActivity implements OnClick } break; case GROUP_CHAT: + hideTopBar(); // just in case LinphoneActivity.instance().goToChatList(); return true; + case SETTINGS: + case ABOUT: + hideTopBar(); // just in case + LinphoneActivity.instance().goToDialerFragment(); + return true; default: break; } From a895fde7eb9dcfbde6c5d0b63bd2a169beb72788 Mon Sep 17 00:00:00 2001 From: Erwan Croze Date: Mon, 26 Nov 2018 14:13:07 +0100 Subject: [PATCH 06/10] Update README --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index d6e05b96d..1f7f7efe7 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,18 @@ ln -s /linphone-sdk/build/linphone-sdk/bin/outputs/aar/lin 4. Rebuild the app in Android Studio. +## Native debugging + +1. Install LLDB from SDK Tools in Android-studio. + +2. In Android-studio go to Run->Edit Configurations->Debugger. + +3. Select 'Dual' or 'Native' and add the path to linphone-sdk libraries. + +4. Open native file and put your breakpoint on it. + +5. Debug app. + ## Create an apk with a different package name Before the 4.1 release, there were a lot of files to edit to change the package name. From 75a4e113d1aad041cd7188d8ed23948ee7b78fa3 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 26 Nov 2018 14:58:40 +0100 Subject: [PATCH 07/10] Fixed avatar for manually entered addresses in smart address book --- .../java/org/linphone/contacts/SearchContactsListAdapter.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/java/org/linphone/contacts/SearchContactsListAdapter.java b/app/src/main/java/org/linphone/contacts/SearchContactsListAdapter.java index a01db0245..688ed54cd 100644 --- a/app/src/main/java/org/linphone/contacts/SearchContactsListAdapter.java +++ b/app/src/main/java/org/linphone/contacts/SearchContactsListAdapter.java @@ -145,6 +145,9 @@ public class SearchContactsListAdapter extends RecyclerView.Adapter Date: Mon, 26 Nov 2018 15:55:38 +0100 Subject: [PATCH 08/10] Fixed display issue for security events --- .../main/java/org/linphone/chat/ChatMessagesAdapter.java | 5 ++++- .../main/java/org/linphone/chat/ChatRoomViewHolder.java | 8 ++++++-- app/src/main/res/drawable/event_decoration_red.xml | 4 ++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/linphone/chat/ChatMessagesAdapter.java b/app/src/main/java/org/linphone/chat/ChatMessagesAdapter.java index 1018d57d1..eeaba0b7a 100644 --- a/app/src/main/java/org/linphone/chat/ChatMessagesAdapter.java +++ b/app/src/main/java/org/linphone/chat/ChatMessagesAdapter.java @@ -364,7 +364,10 @@ public class ChatMessagesAdapter extends SelectableAdapter 0) { + remoteAddr = participants[0].getAddress(); + } else { + //TODO: error + } } else { remoteAddr = mRoom.getPeerAddress(); } diff --git a/app/src/main/res/drawable/event_decoration_red.xml b/app/src/main/res/drawable/event_decoration_red.xml index 839e8ff17..45232fb87 100644 --- a/app/src/main/res/drawable/event_decoration_red.xml +++ b/app/src/main/res/drawable/event_decoration_red.xml @@ -2,6 +2,6 @@ - - + + \ No newline at end of file From cb99b78ae53cbae1295f129cbbe035485ffedb38 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 26 Nov 2018 16:06:33 +0100 Subject: [PATCH 09/10] Fixed spacing between images in files upload list --- .../main/java/org/linphone/chat/ChatMessagesFragment.java | 8 +++++++- app/src/main/java/org/linphone/utils/ImageUtils.java | 8 ++++++++ app/src/main/res/layout/image_upload_cell.xml | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java index b92bf6357..572b827c5 100644 --- a/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java +++ b/app/src/main/java/org/linphone/chat/ChatMessagesFragment.java @@ -59,6 +59,7 @@ import org.linphone.LinphoneManager; import org.linphone.settings.LinphonePreferences; import org.linphone.LinphoneService; import org.linphone.utils.FileUtils; +import org.linphone.utils.ImageUtils; import org.linphone.utils.LinphoneUtils; import org.linphone.R; import org.linphone.LinphoneActivity; @@ -838,6 +839,11 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener, mSendMessageButton.setEnabled(true); } + private Bitmap scaleToFitHeight(Bitmap b, int height) { + float factor = height / (float) b.getHeight(); + return Bitmap.createScaledBitmap(b, (int) (b.getWidth() * factor), height, true); + } + private void addImageToPendingList(String path) { if (path == null) { Log.e("Can't add image to pending list because it's path is null..."); @@ -850,7 +856,7 @@ public class ChatMessagesFragment extends Fragment implements ChatRoomListener, ImageView image = pendingImage.findViewById(R.id.pendingImageForUpload); Bitmap bm = BitmapFactory.decodeFile(path); if (bm == null) return; - image.setImageBitmap(bm); + image.setImageBitmap(scaleToFitHeight(bm, (int) ImageUtils.dpToPixels(mContext, 100))); ImageView remove = pendingImage.findViewById(R.id.remove); remove.setTag(pendingImage); diff --git a/app/src/main/java/org/linphone/utils/ImageUtils.java b/app/src/main/java/org/linphone/utils/ImageUtils.java index f852365ab..bd60dad8e 100644 --- a/app/src/main/java/org/linphone/utils/ImageUtils.java +++ b/app/src/main/java/org/linphone/utils/ImageUtils.java @@ -20,6 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import android.content.Context; +import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; @@ -29,6 +30,7 @@ import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.net.Uri; import android.provider.MediaStore; +import android.util.TypedValue; import android.widget.ImageView; import org.linphone.R; @@ -131,4 +133,10 @@ public class ImageUtils { return output; } + + public static float dpToPixels(Context context, float dp) { + Resources r = context.getResources(); + float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, r.getDisplayMetrics()); + return px; + } } diff --git a/app/src/main/res/layout/image_upload_cell.xml b/app/src/main/res/layout/image_upload_cell.xml index 709bfe6bb..01fe3e63e 100644 --- a/app/src/main/res/layout/image_upload_cell.xml +++ b/app/src/main/res/layout/image_upload_cell.xml @@ -1,6 +1,6 @@ From 4590020cce51c14eda69c1b682009378d553c485 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 26 Nov 2018 16:08:00 +0100 Subject: [PATCH 10/10] Version bumped --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index deb28e1d7..535a9a7c7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -47,7 +47,7 @@ android { defaultConfig { minSdkVersion 21 targetSdkVersion 28 - versionCode 4103 + versionCode 4104 versionName "4.1" applicationId getPackageName() multiDexEnabled true