From 61206aaeda50c2a9144f9dd2382a908c6ca5f200 Mon Sep 17 00:00:00 2001 From: Amirhossein <amirhossein.naghshzan@savoirfairelinux.com> Date: Sun, 30 Aug 2020 22:22:54 -0400 Subject: [PATCH] QRCodeFragment: change QR activity to bottomSheet Change-Id: I5662d8c2640b6477a1fa55d34229dce35fbcbd8f --- ring-android/app/src/main/AndroidManifest.xml | 7 - .../account/JamiAccountSummaryFragment.java | 30 +-- .../java/cx/ring/client/QRCodeActivity.java | 102 ---------- .../cx/ring/fragments/QRCodeFragment.java | 186 ++++++++++++++++++ .../cx/ring/fragments/SmartListFragment.java | 39 +++- .../main/java/cx/ring/share/ScanFragment.java | 40 ++-- .../java/cx/ring/share/ShareFragment.java | 27 +-- .../res/drawable/background_bottom_sheet.xml | 8 + .../baseline_qr_code_2_black_24dp.xml | 9 + .../src/main/res/layout-land/frag_share.xml | 59 ------ .../res/layout-w720dp-land/frag_smartlist.xml | 29 ++- .../src/main/res/layout/activity_qrcode.xml | 36 ---- .../src/main/res/layout/frag_acc_summary.xml | 52 ++--- .../layout/frag_pending_contact_requests.xml | 3 +- .../app/src/main/res/layout/frag_qrcode.xml | 33 ++++ .../app/src/main/res/layout/frag_scan.xml | 23 +-- .../app/src/main/res/layout/frag_share.xml | 42 +--- .../src/main/res/layout/frag_smartlist.xml | 28 ++- .../app/src/main/res/menu/smartlist_menu.xml | 6 - .../app/src/main/res/values-night/colors.xml | 2 + .../app/src/main/res/values/colors.xml | 2 + .../app/src/main/res/values/dimens.xml | 6 +- .../app/src/main/res/values/styles.xml | 14 ++ .../cx/ring/smartlist/SmartListPresenter.java | 2 +- .../java/cx/ring/smartlist/SmartListView.java | 2 +- 25 files changed, 431 insertions(+), 356 deletions(-) delete mode 100644 ring-android/app/src/main/java/cx/ring/client/QRCodeActivity.java create mode 100644 ring-android/app/src/main/java/cx/ring/fragments/QRCodeFragment.java create mode 100644 ring-android/app/src/main/res/drawable/background_bottom_sheet.xml create mode 100644 ring-android/app/src/main/res/drawable/baseline_qr_code_2_black_24dp.xml delete mode 100644 ring-android/app/src/main/res/layout-land/frag_share.xml delete mode 100644 ring-android/app/src/main/res/layout/activity_qrcode.xml create mode 100644 ring-android/app/src/main/res/layout/frag_qrcode.xml diff --git a/ring-android/app/src/main/AndroidManifest.xml b/ring-android/app/src/main/AndroidManifest.xml index 21d9e6292..6aad03b04 100644 --- a/ring-android/app/src/main/AndroidManifest.xml +++ b/ring-android/app/src/main/AndroidManifest.xml @@ -368,13 +368,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. android:resource="@xml/file_paths" /> </provider> - <activity - android:name=".client.QRCodeActivity" - android:configChanges="screenSize|screenLayout|smallestScreenSize" - android:label="@string/title_activity_qrcode" - android:icon="@mipmap/ic_launcher" - android:resizeableActivity="true" - android:theme="@style/AppTheme" /> <activity android:name=".client.MediaViewerActivity" android:exported="false" diff --git a/ring-android/app/src/main/java/cx/ring/account/JamiAccountSummaryFragment.java b/ring-android/app/src/main/java/cx/ring/account/JamiAccountSummaryFragment.java index 6244e9296..ba1d0e81d 100644 --- a/ring-android/app/src/main/java/cx/ring/account/JamiAccountSummaryFragment.java +++ b/ring-android/app/src/main/java/cx/ring/account/JamiAccountSummaryFragment.java @@ -44,6 +44,7 @@ import android.provider.MediaStore; import android.text.Layout; import android.text.Spannable; import android.text.SpannableString; +import android.text.TextUtils; import android.text.style.AlignmentSpan; import android.text.style.RelativeSizeSpan; import android.text.style.StyleSpan; @@ -72,6 +73,7 @@ import cx.ring.R; import cx.ring.application.JamiApplication; import cx.ring.client.HomeActivity; import cx.ring.databinding.FragAccSummaryBinding; +import cx.ring.fragments.QRCodeFragment; import cx.ring.model.Account; import cx.ring.mvp.BaseSupportFragment; import cx.ring.services.AccountService; @@ -80,6 +82,7 @@ import cx.ring.utils.AndroidFileUtils; import cx.ring.utils.BitmapUtils; import cx.ring.utils.ContentUriHandler; import cx.ring.utils.KeyboardVisibilityManager; +import cx.ring.utils.StringUtils; import cx.ring.views.AvatarDrawable; import ezvcard.VCard; import ezvcard.property.FormattedName; @@ -189,21 +192,6 @@ public class JamiAccountSummaryFragment extends BaseSupportFragment<JamiAccountS binding.changePasswordBtn.setOnClickListener(v -> onPasswordChangeAsked()); binding.registerNameBtn.setOnClickListener(v -> showUsernameRegistrationPopup()); binding.ringPassword.setOnEditorActionListener(this::onPasswordEditorAction); - binding.registeredNameCopy.setOnClickListener(v -> { - ClipboardManager clipboard = (ClipboardManager) v.getContext().getSystemService(Context.CLIPBOARD_SERVICE); - if (clipboard != null) { - clipboard.setPrimaryClip(ClipData.newPlainText("Jami username", binding.registeredNameTxt.getText())); - Snackbar.make(binding.getRoot(), getString(R.string.conversation_action_copied_peer_number_clipboard, binding.registeredNameTxt.getText()), Snackbar.LENGTH_SHORT) - .setAnchorView(binding.layoutAddDevice) - .show(); - } - }); - binding.registeredNameShare.setOnClickListener(v -> { - Intent sendIntent = new Intent(Intent.ACTION_SEND) - .putExtra(Intent.EXTRA_TEXT, binding.registeredNameTxt.getText()) - .setType("text/plain"); - startActivity(Intent.createChooser(sendIntent, null)); - }); } public void setAccount(String accountId) { @@ -313,6 +301,8 @@ public class JamiAccountSummaryFragment extends BaseSupportFragment<JamiAccountS binding.groupRegisteringName.setVisibility(currentRegisteredName ? View.VISIBLE : View.GONE); binding.groupRegisterName.setVisibility((!hasRegisteredName && !currentRegisteredName) ? View.VISIBLE : View.GONE); binding.groupRegisteredName.setVisibility(hasRegisteredName ? View.VISIBLE : View.GONE); + binding.btnQr.setOnClickListener(v -> QRCodeFragment.newInstance(QRCodeFragment.INDEX_CODE).show(getParentFragmentManager(), QRCodeFragment.TAG)); + binding.btnShare.setOnClickListener(v -> shareAccount(hasRegisteredName? username : account.getUsername())); if (hasRegisteredName) { binding.registeredNameTxt.setText(username); } @@ -797,4 +787,14 @@ public class JamiAccountSummaryFragment extends BaseSupportFragment<JamiAccountS public void setFragmentVisibility(boolean isVisible) { mIsVisible = isVisible; } + + private void shareAccount(String username) { + if (!StringUtils.isEmpty(username)) { + Intent sharingIntent = new Intent(Intent.ACTION_SEND); + sharingIntent.setType("text/plain"); + sharingIntent.putExtra(Intent.EXTRA_SUBJECT, getText(R.string.account_contact_me)); + sharingIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.account_share_body, username, getText(R.string.app_website))); + startActivity(Intent.createChooser(sharingIntent, getText(R.string.share_via))); + } + } } diff --git a/ring-android/app/src/main/java/cx/ring/client/QRCodeActivity.java b/ring-android/app/src/main/java/cx/ring/client/QRCodeActivity.java deleted file mode 100644 index efdc192a4..000000000 --- a/ring-android/app/src/main/java/cx/ring/client/QRCodeActivity.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (C) 2004-2019 Savoir-faire Linux Inc. - * - * Authors: Adrien Béraud <adrien.beraud@savoirfairelinux.com> - * Rayan Osseiran <rayan.osseiran@savoirfairelinux.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ -package cx.ring.client; - -import android.content.Context; -import android.os.Bundle; - -import com.google.android.material.tabs.TabLayout; - -import androidx.annotation.Nullable; -import androidx.annotation.StringRes; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.widget.Toolbar; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentPagerAdapter; -import androidx.viewpager.widget.ViewPager; -import androidx.appcompat.app.AppCompatActivity; - -import cx.ring.BuildConfig; -import cx.ring.R; -import cx.ring.share.ScanFragment; -import cx.ring.share.ShareFragment; - -public class QRCodeActivity extends AppCompatActivity { - - public static final String ACTION_SCAN = BuildConfig.APPLICATION_ID + ".action.scan"; - - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_qrcode); - - ViewPager viewPager = findViewById(R.id.view_pager); - viewPager.setAdapter(new SectionsPagerAdapter(this, getSupportFragmentManager())); - TabLayout tabs = findViewById(R.id.tabs); - tabs.setupWithViewPager(viewPager); - - Toolbar toolbar = findViewById(R.id.qrToolbar); - setSupportActionBar(toolbar); - ActionBar supportActionBar = getSupportActionBar(); - if (supportActionBar != null) { - supportActionBar.setDisplayHomeAsUpEnabled(true); - supportActionBar.setDisplayShowHomeEnabled(true); - } - toolbar.setNavigationOnClickListener(v -> finish()); - } - - class SectionsPagerAdapter extends FragmentPagerAdapter { - @StringRes - private final int[] TAB_TITLES = new int[]{R.string.tab_code, R.string.tab_scan}; - private final Context mContext; - - SectionsPagerAdapter(Context context, FragmentManager fm) { - super(fm); - mContext = context; - } - - @Override - public Fragment getItem(int position) { - switch (position) { - case 0: - return new ShareFragment(); - case 1: - return new ScanFragment(); - default: - return null; - } - } - - @Nullable - @Override - public CharSequence getPageTitle(int position) { - return mContext.getResources().getString(TAB_TITLES[position]); - } - - @Override - public int getCount() { - return TAB_TITLES.length; - } - } - -} \ No newline at end of file diff --git a/ring-android/app/src/main/java/cx/ring/fragments/QRCodeFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/QRCodeFragment.java new file mode 100644 index 000000000..cf35820ad --- /dev/null +++ b/ring-android/app/src/main/java/cx/ring/fragments/QRCodeFragment.java @@ -0,0 +1,186 @@ +/* + * Copyright (C) 2004-2020 Savoir-faire Linux Inc. + * + * Authors: AmirHossein Naghshzan <amirhossein.naghshzan@savoirfairelinux.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +package cx.ring.fragments; + +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.StringRes; +import androidx.coordinatorlayout.widget.CoordinatorLayout; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentPagerAdapter; +import androidx.viewpager.widget.ViewPager; + +import com.google.android.material.bottomsheet.BottomSheetBehavior; +import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import com.google.android.material.tabs.TabLayout; + +import cx.ring.R; +import cx.ring.databinding.FragQrcodeBinding; +import cx.ring.share.ScanFragment; +import cx.ring.share.ShareFragment; +import cx.ring.utils.DeviceUtils; + +public class QRCodeFragment extends BottomSheetDialogFragment { + + public static final String TAG = QRCodeFragment.class.getSimpleName(); + public static final String ARG_START_PAGE_INDEX = "start_page"; + + public static final int INDEX_CODE = 0; + public static final int INDEX_SCAN = 1; + + public static QRCodeFragment newInstance(int startPage) { + QRCodeFragment fragment = new QRCodeFragment(); + + Bundle args = new Bundle(); + args.putInt(ARG_START_PAGE_INDEX, startPage); + fragment.setArguments(args); + + return fragment; + } + + private FragQrcodeBinding mBinding; + private int mStartPageIndex; + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + super.onCreateView(inflater, container, savedInstanceState); + + Bundle args = getArguments(); + mStartPageIndex = args.getInt(ARG_START_PAGE_INDEX, 0); + + mBinding = FragQrcodeBinding.inflate(inflater, container, false); + mBinding.viewPager.setAdapter(new SectionsPagerAdapter(getContext(), getChildFragmentManager())); + mBinding.tabs.setupWithViewPager(mBinding.viewPager); + + return mBinding.getRoot(); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + if (mStartPageIndex != 0) { + mBinding.tabs.getTabAt(mStartPageIndex).select(); + } + } + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + final Dialog dialog = super.onCreateDialog(savedInstanceState); + dialog.setOnShowListener(new DialogInterface.OnShowListener() { + @Override + public void onShow(DialogInterface dialogINterface) { + if (DeviceUtils.isTablet(getContext())) { + dialog.getWindow().setLayout( + ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.MATCH_PARENT); + } + } + }); + return dialog; + } + + class SectionsPagerAdapter extends FragmentPagerAdapter { + @StringRes + private final int[] TAB_TITLES = new int[]{R.string.tab_code, R.string.tab_scan}; + private final Context mContext; + + SectionsPagerAdapter(Context context, FragmentManager fm) { + super(fm); + mContext = context; + } + + @Override + public Fragment getItem(int position) { + switch (position) { + case 0: + return new ShareFragment(); + case 1: + return new ScanFragment(); + default: + return null; + } + } + + @Nullable + @Override + public CharSequence getPageTitle(int position) { + return mContext.getResources().getString(TAB_TITLES[position]); + } + + @Override + public int getCount() { + return TAB_TITLES.length; + } + } + + @Override + public void onResume() { + super.onResume(); + addGlobalLayoutListener(getView()); + } + + private void addGlobalLayoutListener(final View view) { + view.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { + @Override + public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { + setPeekHeight(v.getMeasuredHeight()); + v.removeOnLayoutChangeListener(this); + } + }); + } + + public void setPeekHeight(int peekHeight) { + BottomSheetBehavior behavior = getBottomSheetBehaviour(); + if (behavior == null) { + return; + } + + behavior.setPeekHeight(peekHeight); + } + + private BottomSheetBehavior getBottomSheetBehaviour() { + CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) ((View) getView().getParent()).getLayoutParams(); + CoordinatorLayout.Behavior behavior = layoutParams.getBehavior(); + if (behavior != null && behavior instanceof BottomSheetBehavior) { + return (BottomSheetBehavior) behavior; + } + + return null; + } + + @Override + public int getTheme() { + return R.style.BottomSheetDialogTheme; + } + +} \ No newline at end of file diff --git a/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java index 2aadedc5f..742930a8d 100644 --- a/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java +++ b/ring-android/app/src/main/java/cx/ring/fragments/SmartListFragment.java @@ -44,6 +44,7 @@ import androidx.appcompat.widget.Toolbar; import android.os.Handler; import android.text.InputType; import android.util.Log; +import android.util.TypedValue; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; @@ -64,7 +65,6 @@ import cx.ring.application.JamiApplication; import cx.ring.client.CallActivity; import cx.ring.client.ConversationActivity; import cx.ring.client.HomeActivity; -import cx.ring.client.QRCodeActivity; import cx.ring.databinding.FragSmartlistBinding; import cx.ring.model.CallContact; import cx.ring.model.Conversation; @@ -115,6 +115,8 @@ public class SmartListFragment extends BaseSupportFragment<SmartListPresenter> i binding.newconvFab.show(); setOverflowMenuVisible(menu, true); changeSeparatorHeight(false); + binding.qrCode.setVisibility(View.GONE); + setTabletQRLayout(false); return true; } @@ -124,6 +126,8 @@ public class SmartListFragment extends BaseSupportFragment<SmartListPresenter> i binding.newconvFab.hide(); setOverflowMenuVisible(menu, false); changeSeparatorHeight(true); + binding.qrCode.setVisibility(View.VISIBLE); + setTabletQRLayout(true); return true; } }); @@ -188,9 +192,6 @@ public class SmartListFragment extends BaseSupportFragment<SmartListPresenter> i mDialpadMenuItem.setIcon(R.drawable.baseline_keyboard_24); } return true; - case R.id.menu_scan_qr: - presenter.clickQRSearch(); - return true; case R.id.menu_settings: ((HomeActivity) getActivity()).goToSettings(); return true; @@ -242,6 +243,8 @@ public class SmartListFragment extends BaseSupportFragment<SmartListPresenter> i setHasOptionsMenu(true); super.onViewCreated(view, savedInstanceState); + binding.qrCode.setOnClickListener(v -> presenter.clickQRSearch()); + binding.confsList.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) { @@ -459,10 +462,11 @@ public class SmartListFragment extends BaseSupportFragment<SmartListPresenter> i } @Override - public void goToQRActivity() { - Intent intent = new Intent(QRCodeActivity.ACTION_SCAN) - .setClass(requireActivity(), QRCodeActivity.class); - startActivityForResult(intent, HomeActivity.REQUEST_CODE_QR_CONVERSATION); + public void goToQRFragment() { + QRCodeFragment qrCodeFragment = QRCodeFragment.newInstance(QRCodeFragment.INDEX_SCAN); + qrCodeFragment.show(getParentFragmentManager(), QRCodeFragment.TAG); + binding.qrCode.setVisibility(View.GONE); + setTabletQRLayout(false); } @Override @@ -510,4 +514,23 @@ public class SmartListFragment extends BaseSupportFragment<SmartListPresenter> i } } + private void setTabletQRLayout(boolean show) { + if (!DeviceUtils.isTablet(getContext())) + return; + + RelativeLayout.LayoutParams params = + (RelativeLayout.LayoutParams) binding.listCoordinator.getLayoutParams(); + if (show) { + params.addRule(RelativeLayout.BELOW, R.id.qr_code); + params.topMargin = 0; + } else { + params.removeRule(RelativeLayout.BELOW); + TypedValue value = new TypedValue(); + if (getActivity().getTheme().resolveAttribute(android.R.attr.actionBarSize, value, true)) { + params.topMargin = TypedValue.complexToDimensionPixelSize(value.data, getResources().getDisplayMetrics()); + } + } + binding.listCoordinator.setLayoutParams(params); + } + } diff --git a/ring-android/app/src/main/java/cx/ring/share/ScanFragment.java b/ring-android/app/src/main/java/cx/ring/share/ScanFragment.java index 7afc4c810..42ea009ae 100644 --- a/ring-android/app/src/main/java/cx/ring/share/ScanFragment.java +++ b/ring-android/app/src/main/java/cx/ring/share/ScanFragment.java @@ -32,8 +32,6 @@ import androidx.core.content.ContextCompat; import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; @@ -59,6 +57,9 @@ public class ScanFragment extends BaseSupportFragment { public static final String TAG = ScanFragment.class.getSimpleName(); + private boolean mIsVisible; + private boolean mIsStarted; + private DecoratedBarcodeView barcodeView; private TextView mErrorMessageTextView; @@ -84,14 +85,9 @@ public class ScanFragment extends BaseSupportFragment { @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); - if (isVisibleToUser) { - if (!hasCameraPermission()) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - requestPermissions(new String[]{Manifest.permission.CAMERA}, JamiApplication.PERMISSIONS_REQUEST); - } else { - displayNoPermissionsError(); - } - } + mIsVisible = isVisibleToUser; + if (mIsVisible && mIsStarted) { + checkPermission(); } } @@ -115,13 +111,17 @@ public class ScanFragment extends BaseSupportFragment { } @Override - public void onCreateOptionsMenu(Menu menu, @NonNull MenuInflater inflater) { - menu.clear(); + public void onStart() { + super.onStart(); + mIsStarted = true; + if (mIsVisible) + checkPermission(); } @Override - public void onPrepareOptionsMenu(Menu menu) { - menu.clear(); + public void onStop() { + super.onStop(); + mIsStarted = false; } private void showErrorPanel(final int textResId) { @@ -147,7 +147,6 @@ public class ScanFragment extends BaseSupportFragment { showErrorPanel(R.string.error_scan_no_camera_permissions); } - @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); @@ -198,4 +197,15 @@ public class ScanFragment extends BaseSupportFragment { getActivity().setResult(Activity.RESULT_OK, intent); getActivity().finish(); } + + private void checkPermission() { + if (!hasCameraPermission()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + requestPermissions(new String[]{Manifest.permission.CAMERA}, JamiApplication.PERMISSIONS_REQUEST); + } else { + displayNoPermissionsError(); + } + } + } + } diff --git a/ring-android/app/src/main/java/cx/ring/share/ShareFragment.java b/ring-android/app/src/main/java/cx/ring/share/ShareFragment.java index 6e31bc71b..2ad7f2b36 100644 --- a/ring-android/app/src/main/java/cx/ring/share/ShareFragment.java +++ b/ring-android/app/src/main/java/cx/ring/share/ShareFragment.java @@ -24,9 +24,6 @@ import android.graphics.Bitmap; import android.os.Bundle; import android.text.TextUtils; import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; @@ -69,27 +66,6 @@ public class ShareFragment extends BaseSupportFragment<SharePresenter> implement }); } - @Override - public void onCreateOptionsMenu(@NonNull Menu menu, MenuInflater inflater) { - inflater.inflate(R.menu.qr_menu, menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - // Handle item selection - switch (item.getItemId()) { - case R.id.menu_qr_share: - if (!isShareLocked) { - shareAccount(); - return true; - } else { - return false; - } - default: - return super.onOptionsItemSelected(item); - } - } - private void shareAccount() { if (!TextUtils.isEmpty(mUriToShow)) { Intent sharingIntent = new Intent(Intent.ACTION_SEND); @@ -105,7 +81,8 @@ public class ShareFragment extends BaseSupportFragment<SharePresenter> implement if (binding == null) return; - final QRCodeUtils.QRCodeData qrCodeData = viewModel.getAccountQRCodeData(0xFF000000, 0xFFFFFFFF); + final QRCodeUtils.QRCodeData qrCodeData = viewModel.getAccountQRCodeData( + getResources().getColor(R.color.colorPrimary), getResources().getColor(R.color.transparent)); if (qrCodeData == null) { binding.qrImage.setVisibility(View.INVISIBLE); binding.shareInstruction.setText(R.string.share_message_no_account); diff --git a/ring-android/app/src/main/res/drawable/background_bottom_sheet.xml b/ring-android/app/src/main/res/drawable/background_bottom_sheet.xml new file mode 100644 index 000000000..b80f7a640 --- /dev/null +++ b/ring-android/app/src/main/res/drawable/background_bottom_sheet.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <corners + android:topLeftRadius="@dimen/bottom_sheet_radius" + android:topRightRadius="@dimen/bottom_sheet_radius" /> + <solid android:color="@color/background_bottom_sheet" /> +</shape> \ No newline at end of file diff --git a/ring-android/app/src/main/res/drawable/baseline_qr_code_2_black_24dp.xml b/ring-android/app/src/main/res/drawable/baseline_qr_code_2_black_24dp.xml new file mode 100644 index 000000000..3461cb131 --- /dev/null +++ b/ring-android/app/src/main/res/drawable/baseline_qr_code_2_black_24dp.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M15,21h-2v-2h2V21zM13,14h-2v5h2V14zM21,12h-2v4h2V12zM19,10h-2v2h2V10zM7,12H5v2h2V12zM5,10H3v2h2V10zM12,5h2V3h-2V5zM4.5,4.5v3h3v-3H4.5zM9,9H3V3h6V9zM4.5,16.5v3h3v-3H4.5zM9,21H3v-6h6V21zM16.5,4.5v3h3v-3H16.5zM21,9h-6V3h6V9zM19,19v-3l-4,0v2h2v3h4v-2H19zM17,12l-4,0v2h4V12zM13,10H7v2h2v2h2v-2h2V10zM14,9V7h-2V5h-2v4L14,9zM6.75,5.25h-1.5v1.5h1.5V5.25zM6.75,17.25h-1.5v1.5h1.5V17.25zM18.75,5.25h-1.5v1.5h1.5V5.25z" + android:fillColor="#000000"/> +</vector> diff --git a/ring-android/app/src/main/res/layout-land/frag_share.xml b/ring-android/app/src/main/res/layout-land/frag_share.xml deleted file mode 100644 index 5bee57fe0..000000000 --- a/ring-android/app/src/main/res/layout-land/frag_share.xml +++ /dev/null @@ -1,59 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <TextView - android:id="@+id/share_instruction" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:layout_marginBottom="8dp" - android:gravity="center" - android:text="@string/share_message" - android:textColor="@color/textColorPrimary" - android:textSize="16sp" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="@+id/share_button" - app:layout_constraintHorizontal_bias="0.5" - app:layout_constraintStart_toStartOf="@+id/share_button" - app:layout_constraintTop_toTopOf="parent" /> - - - <ImageView - android:id="@+id/qr_image" - android:layout_width="@dimen/qr_code_size" - android:layout_height="@dimen/qr_code_size" - android:layout_marginTop="8dp" - android:layout_marginEnd="48dp" - android:layout_marginBottom="8dp" - android:background="@null" - android:gravity="center" - android:padding="@dimen/padding_small" - android:scaleType="fitCenter" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - - <com.google.android.material.button.MaterialButton - android:id="@+id/share_button" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="16dp" - android:layout_marginTop="8dp" - android:layout_marginEnd="16dp" - android:paddingTop="5dp" - android:paddingBottom="5dp" - android:text="@string/share_label" - android:theme="@style/ButtonColored" - app:layout_constraintEnd_toStartOf="@+id/qr_image" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/share_instruction" /> - - -</androidx.constraintlayout.widget.ConstraintLayout> - - - diff --git a/ring-android/app/src/main/res/layout-w720dp-land/frag_smartlist.xml b/ring-android/app/src/main/res/layout-w720dp-land/frag_smartlist.xml index 8cf4ad547..01728db3a 100644 --- a/ring-android/app/src/main/res/layout-w720dp-land/frag_smartlist.xml +++ b/ring-android/app/src/main/res/layout-w720dp-land/frag_smartlist.xml @@ -7,11 +7,36 @@ android:animateLayoutChanges="true" tools:context=".client.HomeActivity"> + <com.google.android.material.card.MaterialCardView + android:id="@+id/qr_code" + android:layout_width="300dp" + android:layout_height="wrap_content" + style="@style/Widget.MaterialComponents.Button.OutlinedButton" + android:layout_toLeftOf="@+id/separator" + android:layout_alignParentLeft="true" + android:layout_marginLeft="20dp" + android:layout_marginRight="20dp" + android:layout_marginTop="?actionBarSize" + android:visibility="gone" + tools:visibility="visible" > + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="QR Code" + android:textColor="@color/colorPrimary" + android:textSize="16sp" + android:layout_gravity="center" + android:drawableLeft="@drawable/baseline_qr_code_2_black_24dp" + android:drawableTint="@color/colorPrimary"/> + + </com.google.android.material.card.MaterialCardView> + <androidx.coordinatorlayout.widget.CoordinatorLayout android:id="@+id/list_coordinator" android:layout_width="320dp" - android:layout_height="match_parent" - android:layout_marginTop="?actionBarSize"> + android:layout_marginTop="?actionBarSize" + android:layout_height="match_parent"> <FrameLayout android:layout_width="match_parent" diff --git a/ring-android/app/src/main/res/layout/activity_qrcode.xml b/ring-android/app/src/main/res/layout/activity_qrcode.xml deleted file mode 100644 index d8a8ef1be..000000000 --- a/ring-android/app/src/main/res/layout/activity_qrcode.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - tools:context=".client.QRCodeActivity"> - - <com.google.android.material.appbar.AppBarLayout - android:id="@+id/qrAppBar" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:elevation="@dimen/toolbar_elevation" - style="@style/Widget.MaterialComponents.AppBarLayout.Surface"> - - <com.google.android.material.appbar.MaterialToolbar - android:id="@+id/qrToolbar" - android:layout_width="match_parent" - android:layout_height="?attr/actionBarSize" - android:layout_weight="1" - app:layout_scrollFlags="scroll|enterAlways" - app:popupTheme="@style/AppTheme" /> - - <com.google.android.material.tabs.TabLayout - android:id="@+id/tabs" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - </com.google.android.material.appbar.AppBarLayout> - - <androidx.viewpager.widget.ViewPager - android:id="@+id/view_pager" - android:layout_width="match_parent" - android:layout_height="match_parent" - app:layout_behavior="@string/appbar_scrolling_view_behavior" /> - -</androidx.coordinatorlayout.widget.CoordinatorLayout> \ No newline at end of file diff --git a/ring-android/app/src/main/res/layout/frag_acc_summary.xml b/ring-android/app/src/main/res/layout/frag_acc_summary.xml index 28f39de7a..0315ed8c5 100644 --- a/ring-android/app/src/main/res/layout/frag_acc_summary.xml +++ b/ring-android/app/src/main/res/layout/frag_acc_summary.xml @@ -124,12 +124,36 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. android:textSize="14sp" app:layout_constrainedWidth="true" app:layout_constraintBottom_toBottomOf="@id/user_photo" - app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintEnd_toStartOf="@+id/btn_share" app:layout_constraintHorizontal_bias="0" app:layout_constraintStart_toEndOf="@+id/user_photo" app:layout_constraintTop_toBottomOf="@+id/username" tools:text="@string/registered_username" /> + <androidx.appcompat.widget.AppCompatImageButton + android:id="@+id/btn_share" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/baseline_share_24" + android:background="?selectableItemBackgroundBorderless" + android:tint="@color/colorPrimary" + android:padding="8dp" + app:layout_constraintRight_toLeftOf="@+id/btn_qr" + app:layout_constraintTop_toTopOf="@id/subtitle" + app:layout_constraintBottom_toBottomOf="@id/subtitle" /> + + <androidx.appcompat.widget.AppCompatImageButton + android:id="@+id/btn_qr" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/baseline_qr_code_2_black_24dp" + android:background="?selectableItemBackgroundBorderless" + android:tint="@color/colorPrimary" + android:padding="8dp" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="@id/btn_share" + app:layout_constraintBottom_toBottomOf="@id/btn_share" /> + </androidx.constraintlayout.widget.ConstraintLayout> <TextView @@ -149,6 +173,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. android:singleLine="true" android:textAppearance="@style/TextAppearance.MaterialComponents.Subtitle2" android:textIsSelectable="true" + android:padding="4dp" tools:text="ring:8F29045378ACA68F2ACA2346078ACA68F2ACA290" /> <LinearLayout @@ -251,29 +276,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. android:textIsSelectable="true" tools:text="registered_name" /> - <ImageButton - android:id="@+id/registered_name_copy" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_margin="8dp" - android:layout_marginEnd="8dp" - android:background="?selectableItemBackgroundBorderless" - android:contentDescription="@android:string/copy" - android:padding="8dp" - android:src="@drawable/outline_file_copy_24" - android:tint="@color/grey_500" /> - - <ImageButton - android:id="@+id/registered_name_share" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_margin="8dp" - android:background="?selectableItemBackgroundBorderless" - android:contentDescription="@string/share_label" - android:padding="8dp" - android:src="@drawable/baseline_share_24" - android:tint="@color/grey_500" /> - </LinearLayout> <TextView @@ -328,7 +330,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. android:layout_height="wrap_content" android:layout_marginBottom="-16dp" android:elevation="4dp" - app:cardCornerRadius="16dp"> + app:cardCornerRadius="@dimen/bottom_sheet_radius"> <LinearLayout android:layout_width="match_parent" diff --git a/ring-android/app/src/main/res/layout/frag_pending_contact_requests.xml b/ring-android/app/src/main/res/layout/frag_pending_contact_requests.xml index 0f145ca94..3d923e8b2 100644 --- a/ring-android/app/src/main/res/layout/frag_pending_contact_requests.xml +++ b/ring-android/app/src/main/res/layout/frag_pending_contact_requests.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" @@ -44,7 +45,7 @@ <ImageView android:layout_width="128dp" android:layout_height="128dp" - android:tint="@color/darker_gray" + app:tint="@color/darker_gray" android:src="@drawable/baseline_group_add_24" android:contentDescription="@string/no_requests" /> diff --git a/ring-android/app/src/main/res/layout/frag_qrcode.xml b/ring-android/app/src/main/res/layout/frag_qrcode.xml new file mode 100644 index 000000000..b31edd2e7 --- /dev/null +++ b/ring-android/app/src/main/res/layout/frag_qrcode.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="QR Code" + android:layout_marginTop="12dp" + android:textSize="24sp" + android:textStyle="bold" + android:layout_gravity="center_horizontal" + android:textColor="@color/colorPrimary" + android:drawableLeft="@drawable/baseline_qr_code_2_black_24dp" + android:drawableTint="@color/colorPrimary"/> + + <com.google.android.material.tabs.TabLayout + android:id="@+id/tabs" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + app:tabSelectedTextColor="@color/colorPrimary" + app:tabIndicatorColor="@color/colorPrimary"/> + + <androidx.viewpager.widget.ViewPager + android:id="@+id/view_pager" + android:layout_width="match_parent" + android:layout_height="380dp" /> + +</LinearLayout> \ No newline at end of file diff --git a/ring-android/app/src/main/res/layout/frag_scan.xml b/ring-android/app/src/main/res/layout/frag_scan.xml index 6e3929777..c06fe06d5 100644 --- a/ring-android/app/src/main/res/layout/frag_scan.xml +++ b/ring-android/app/src/main/res/layout/frag_scan.xml @@ -1,11 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_marginTop="@dimen/padding_large"> - + android:layout_height="wrap_content"> <TextView android:id="@+id/error_msg_txt" @@ -16,22 +13,12 @@ android:padding="16dp" android:textColor="?attr/colorOnError" android:textSize="14sp" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" tools:visibility="gone" /> - <com.journeyapps.barcodescanner.DecoratedBarcodeView android:id="@+id/barcode_scanner" android:layout_width="match_parent" - android:layout_height="0dp" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent"> - - </com.journeyapps.barcodescanner.DecoratedBarcodeView> - + android:layout_height="match_parent" + android:layout_gravity="center_horizontal"/> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file +</FrameLayout> \ No newline at end of file diff --git a/ring-android/app/src/main/res/layout/frag_share.xml b/ring-android/app/src/main/res/layout/frag_share.xml index 32683ac84..c3710ce34 100644 --- a/ring-android/app/src/main/res/layout/frag_share.xml +++ b/ring-android/app/src/main/res/layout/frag_share.xml @@ -1,55 +1,33 @@ <?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" - android:layout_height="match_parent"> - + android:layout_height="wrap_content" + android:orientation="vertical" + android:gravity="center_horizontal"> <ImageView android:id="@+id/qr_image" android:layout_width="@dimen/qr_code_size" android:layout_height="@dimen/qr_code_size" - android:layout_marginTop="32dp" - android:gravity="center" + android:layout_marginTop="16dp" android:padding="@dimen/padding_small" - android:scaleType="fitCenter" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.5" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - tools:layout_conversion_wrapHeight="1050" - tools:layout_conversion_wrapWidth="1050" /> + android:scaleType="fitCenter" /> <TextView android:id="@+id/share_instruction" - android:layout_width="0dp" + android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="8dp" - android:gravity="center" android:text="@string/share_message" android:textColor="@color/textColorPrimary" - android:textSize="16sp" - app:layout_constraintBottom_toTopOf="@+id/share_button" - app:layout_constraintEnd_toEndOf="@+id/share_button" - app:layout_constraintHorizontal_bias="0.0" - app:layout_constraintStart_toStartOf="@+id/share_button" - tools:layout_conversion_wrapHeight="215" - tools:layout_conversion_wrapWidth="1440" /> + android:textSize="16sp" /> <com.google.android.material.button.MaterialButton android:id="@+id/share_button" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="center" android:layout_marginBottom="8dp" android:text="@string/share_your_account_information" - android:theme="@style/ButtonColored" - app:layout_constraintBottom_toTopOf="@+id/qr_image" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.5" - app:layout_constraintStart_toStartOf="parent" /> - + android:theme="@style/Widget.MaterialComponents.Button.OutlinedButton" /> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file +</LinearLayout> \ No newline at end of file diff --git a/ring-android/app/src/main/res/layout/frag_smartlist.xml b/ring-android/app/src/main/res/layout/frag_smartlist.xml index 376226e97..ccc390f53 100644 --- a/ring-android/app/src/main/res/layout/frag_smartlist.xml +++ b/ring-android/app/src/main/res/layout/frag_smartlist.xml @@ -23,10 +23,34 @@ along with this program; if not, write to the Free Software xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".client.HomeActivity"> + tools:context=".client.HomeActivity" + android:animateLayoutChanges="true"> + + <com.google.android.material.card.MaterialCardView + android:id="@+id/qr_code" + android:layout_width="@dimen/wizard_button_width" + android:layout_height="wrap_content" + style="@style/Widget.MaterialComponents.Button.OutlinedButton" + android:layout_centerHorizontal="true" + android:layout_marginTop="8dp" + android:visibility="gone" + tools:visibility="visible" > + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="QR Code" + android:textColor="@color/colorPrimary" + android:textSize="16sp" + android:layout_gravity="center" + android:drawableLeft="@drawable/baseline_qr_code_2_black_24dp" + android:drawableTint="@color/colorPrimary"/> + + </com.google.android.material.card.MaterialCardView> <androidx.coordinatorlayout.widget.CoordinatorLayout android:id="@+id/list_coordinator" + android:layout_below="@id/qr_code" android:layout_width="match_parent" android:layout_height="match_parent"> @@ -44,7 +68,7 @@ along with this program; if not, write to the Free Software <ImageView android:layout_width="128dp" android:layout_height="128dp" - android:tint="@color/darker_gray" + app:tint="@color/darker_gray" android:src="@drawable/baseline_forum_24" /> <TextView diff --git a/ring-android/app/src/main/res/menu/smartlist_menu.xml b/ring-android/app/src/main/res/menu/smartlist_menu.xml index 5b3141152..e59954d02 100644 --- a/ring-android/app/src/main/res/menu/smartlist_menu.xml +++ b/ring-android/app/src/main/res/menu/smartlist_menu.xml @@ -25,12 +25,6 @@ http://creativecommons.org/licenses/by/3.0/us/legalcode Used without any modification. --> - <item - android:id="@+id/menu_scan_qr" - android:icon="@drawable/ic_action_scan_qr" - android:title="@string/scan_qr" - app:showAsAction="always" - app:iconTint="?attr/colorControlNormal"/> <item android:id="@+id/menu_overflow" diff --git a/ring-android/app/src/main/res/values-night/colors.xml b/ring-android/app/src/main/res/values-night/colors.xml index a7e82e9b1..cfa92d054 100644 --- a/ring-android/app/src/main/res/values-night/colors.xml +++ b/ring-android/app/src/main/res/values-night/colors.xml @@ -22,4 +22,6 @@ <color name="conversation_primary_background">@color/blue_600</color> <color name="conversation_secondary_background">@color/grey_700</color> + <color name="background_bottom_sheet">@color/bottom_navigation</color> + </resources> diff --git a/ring-android/app/src/main/res/values/colors.xml b/ring-android/app/src/main/res/values/colors.xml index 1936b20f9..b764a79ab 100644 --- a/ring-android/app/src/main/res/values/colors.xml +++ b/ring-android/app/src/main/res/values/colors.xml @@ -43,4 +43,6 @@ <color name="background_status_recommended">#8ee0d0</color> <color name="background_status_required">#fee4e9</color> + <color name="background_bottom_sheet">@color/background</color> + </resources> diff --git a/ring-android/app/src/main/res/values/dimens.xml b/ring-android/app/src/main/res/values/dimens.xml index 1c0c11d38..27a79d493 100644 --- a/ring-android/app/src/main/res/values/dimens.xml +++ b/ring-android/app/src/main/res/values/dimens.xml @@ -65,7 +65,8 @@ along with this program; if not, write to the Free Software <dimen name="fab_margin_mini">16dp</dimen> <dimen name="text_margin">16dp</dimen> - <dimen name="qr_code_size">300dp</dimen> + <dimen name="qr_code_size">250dp</dimen> + <dimen name="qr_code_scanner_size">300dp</dimen> <dimen name="tv_avatar_size">320dp</dimen> @@ -93,4 +94,7 @@ along with this program; if not, write to the Free Software <!-- Account Summary --> <dimen name="summary_scrollview_padding_bottom">45dp</dimen> + + <dimen name="bottom_sheet_radius">16dp</dimen> + </resources> \ No newline at end of file diff --git a/ring-android/app/src/main/res/values/styles.xml b/ring-android/app/src/main/res/values/styles.xml index e1aeff446..f10c3fbfe 100644 --- a/ring-android/app/src/main/res/values/styles.xml +++ b/ring-android/app/src/main/res/values/styles.xml @@ -299,4 +299,18 @@ <item name="android:textSize">@dimen/wizard_text_size</item> </style> + <style name="BottomSheetDialogTheme" parent="BaseBottomSheetDialog"> + <item name="android:statusBarColor">@android:color/transparent</item> + <item name="android:navigationBarColor">@color/background</item> + </style> + + <style name="BottomSheet" parent="@style/Widget.Design.BottomSheet.Modal"> + <item name="android:background">@drawable/background_bottom_sheet</item> + </style> + + <style name="BaseBottomSheetDialog" parent="@style/Theme.Design.Light.BottomSheetDialog"> + <item name="android:windowIsFloating">false</item> + <item name="bottomSheetStyle">@style/BottomSheet</item> + </style> + </resources> \ No newline at end of file diff --git a/ring-android/libringclient/src/main/java/cx/ring/smartlist/SmartListPresenter.java b/ring-android/libringclient/src/main/java/cx/ring/smartlist/SmartListPresenter.java index fb25169d6..5972aee89 100644 --- a/ring-android/libringclient/src/main/java/cx/ring/smartlist/SmartListPresenter.java +++ b/ring-android/libringclient/src/main/java/cx/ring/smartlist/SmartListPresenter.java @@ -173,7 +173,7 @@ public class SmartListPresenter extends RootPresenter<SmartListView> { } public void clickQRSearch() { - getView().goToQRActivity(); + getView().goToQRFragment(); } void showConversations(Observable<List<Observable<SmartListViewModel>>> conversations) { diff --git a/ring-android/libringclient/src/main/java/cx/ring/smartlist/SmartListView.java b/ring-android/libringclient/src/main/java/cx/ring/smartlist/SmartListView.java index 13d4a4f72..d1ac36674 100644 --- a/ring-android/libringclient/src/main/java/cx/ring/smartlist/SmartListView.java +++ b/ring-android/libringclient/src/main/java/cx/ring/smartlist/SmartListView.java @@ -55,7 +55,7 @@ public interface SmartListView extends BaseView { void goToCallActivity(String accountId, String contactId); - void goToQRActivity(); + void goToQRFragment(); void scrollToTop(); } -- GitLab