kopia lustrzana https://github.com/ryukoposting/Signal-Android
Add proper coloring to send buttons.
rodzic
cd8fa58d7e
commit
53c60e1f6d
|
@ -3,21 +3,24 @@ package org.thoughtcrime.securesms.contactshare;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.res.ColorStateList;
|
||||||
|
import android.graphics.Color;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import androidx.annotation.ColorInt;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.core.view.ViewCompat;
|
||||||
import androidx.lifecycle.ViewModelProviders;
|
import androidx.lifecycle.ViewModelProviders;
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import org.thoughtcrime.securesms.PassphraseRequiredActivity;
|
import org.thoughtcrime.securesms.PassphraseRequiredActivity;
|
||||||
import org.thoughtcrime.securesms.R;
|
import org.thoughtcrime.securesms.R;
|
||||||
import org.thoughtcrime.securesms.database.SignalDatabase;
|
|
||||||
import org.thoughtcrime.securesms.mms.GlideApp;
|
import org.thoughtcrime.securesms.mms.GlideApp;
|
||||||
import org.thoughtcrime.securesms.util.DynamicLanguage;
|
import org.thoughtcrime.securesms.util.DynamicLanguage;
|
||||||
import org.thoughtcrime.securesms.util.DynamicTheme;
|
import org.thoughtcrime.securesms.util.DynamicTheme;
|
||||||
|
@ -31,8 +34,9 @@ import static org.thoughtcrime.securesms.contactshare.ContactShareEditViewModel.
|
||||||
|
|
||||||
public class ContactShareEditActivity extends PassphraseRequiredActivity implements ContactShareEditAdapter.EventListener {
|
public class ContactShareEditActivity extends PassphraseRequiredActivity implements ContactShareEditAdapter.EventListener {
|
||||||
|
|
||||||
public static final String KEY_CONTACTS = "contacts";
|
public static final String KEY_CONTACTS = "contacts";
|
||||||
private static final String KEY_CONTACT_URIS = "contact_uris";
|
private static final String KEY_CONTACT_URIS = "contact_uris";
|
||||||
|
private static final String KEY_SEND_BUTTON_COLOR = "send_button_color";
|
||||||
private static final int CODE_NAME_EDIT = 55;
|
private static final int CODE_NAME_EDIT = 55;
|
||||||
|
|
||||||
private final DynamicTheme dynamicTheme = new DynamicTheme();
|
private final DynamicTheme dynamicTheme = new DynamicTheme();
|
||||||
|
@ -40,11 +44,12 @@ public class ContactShareEditActivity extends PassphraseRequiredActivity impleme
|
||||||
|
|
||||||
private ContactShareEditViewModel viewModel;
|
private ContactShareEditViewModel viewModel;
|
||||||
|
|
||||||
public static Intent getIntent(@NonNull Context context, @NonNull List<Uri> contactUris) {
|
public static Intent getIntent(@NonNull Context context, @NonNull List<Uri> contactUris, @ColorInt int sendButtonColor) {
|
||||||
ArrayList<Uri> contactUriList = new ArrayList<>(contactUris);
|
ArrayList<Uri> contactUriList = new ArrayList<>(contactUris);
|
||||||
|
|
||||||
Intent intent = new Intent(context, ContactShareEditActivity.class);
|
Intent intent = new Intent(context, ContactShareEditActivity.class);
|
||||||
intent.putParcelableArrayListExtra(KEY_CONTACT_URIS, contactUriList);
|
intent.putParcelableArrayListExtra(KEY_CONTACT_URIS, contactUriList);
|
||||||
|
intent.putExtra(KEY_SEND_BUTTON_COLOR, sendButtonColor);
|
||||||
return intent;
|
return intent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,6 +73,7 @@ public class ContactShareEditActivity extends PassphraseRequiredActivity impleme
|
||||||
}
|
}
|
||||||
|
|
||||||
View sendButton = findViewById(R.id.contact_share_edit_send);
|
View sendButton = findViewById(R.id.contact_share_edit_send);
|
||||||
|
ViewCompat.setBackgroundTintList(sendButton, ColorStateList.valueOf(getIntent().getIntExtra(KEY_SEND_BUTTON_COLOR, Color.RED)));
|
||||||
sendButton.setOnClickListener(v -> onSendClicked(viewModel.getFinalizedContacts()));
|
sendButton.setOnClickListener(v -> onSendClicked(viewModel.getFinalizedContacts()));
|
||||||
|
|
||||||
RecyclerView contactList = findViewById(R.id.contact_share_edit_list);
|
RecyclerView contactList = findViewById(R.id.contact_share_edit_list);
|
||||||
|
|
|
@ -1100,7 +1100,8 @@ public class ConversationFragment extends LoggingFragment implements Multiselect
|
||||||
|
|
||||||
MultiselectForwardFragmentArgs.create(requireContext(),
|
MultiselectForwardFragmentArgs.create(requireContext(),
|
||||||
multiselectParts,
|
multiselectParts,
|
||||||
args -> MultiselectForwardFragment.showBottomSheet(getChildFragmentManager(), args));
|
args -> MultiselectForwardFragment.showBottomSheet(getChildFragmentManager(),
|
||||||
|
args.withSendButtonTint(listener.getSendButtonTint())));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleResendMessage(final MessageRecord message) {
|
private void handleResendMessage(final MessageRecord message) {
|
||||||
|
@ -1426,6 +1427,7 @@ public class ConversationFragment extends LoggingFragment implements Multiselect
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface ConversationFragmentListener extends VoiceNoteMediaControllerOwner {
|
public interface ConversationFragmentListener extends VoiceNoteMediaControllerOwner {
|
||||||
|
int getSendButtonTint();
|
||||||
boolean isKeyboardOpen();
|
boolean isKeyboardOpen();
|
||||||
boolean isAttachmentKeyboardOpen();
|
boolean isAttachmentKeyboardOpen();
|
||||||
void openAttachmentKeyboard();
|
void openAttachmentKeyboard();
|
||||||
|
|
|
@ -1249,7 +1249,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
AttachmentManager.selectContactInfo(this, PICK_CONTACT);
|
AttachmentManager.selectContactInfo(this, PICK_CONTACT);
|
||||||
break;
|
break;
|
||||||
case LOCATION:
|
case LOCATION:
|
||||||
AttachmentManager.selectLocation(this, PICK_LOCATION);
|
AttachmentManager.selectLocation(this, PICK_LOCATION, getSendButtonColor(sendButton.getSelectedSendType()));
|
||||||
break;
|
break;
|
||||||
case PAYMENT:
|
case PAYMENT:
|
||||||
if (recipient.get().hasProfileKeyCredential()) {
|
if (recipient.get().hasProfileKeyCredential()) {
|
||||||
|
@ -2743,7 +2743,7 @@ public class ConversationParentFragment extends Fragment
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openContactShareEditor(Uri contactUri) {
|
private void openContactShareEditor(Uri contactUri) {
|
||||||
Intent intent = ContactShareEditActivity.getIntent(requireContext(), Collections.singletonList(contactUri));
|
Intent intent = ContactShareEditActivity.getIntent(requireContext(), Collections.singletonList(contactUri), getSendButtonColor(sendButton.getSelectedSendType()));
|
||||||
startActivityForResult(intent, GET_CONTACT_DETAILS);
|
startActivityForResult(intent, GET_CONTACT_DETAILS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3953,6 +3953,11 @@ public class ConversationParentFragment extends Fragment
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSendButtonTint() {
|
||||||
|
return getSendButtonColor(sendButton.getSelectedSendType());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isKeyboardOpen() {
|
public boolean isKeyboardOpen() {
|
||||||
return container.isKeyboardOpen();
|
return container.isKeyboardOpen();
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.thoughtcrime.securesms.conversation.mutiselect.forward
|
package org.thoughtcrime.securesms.conversation.mutiselect.forward
|
||||||
|
|
||||||
|
import android.content.res.ColorStateList
|
||||||
import android.graphics.Rect
|
import android.graphics.Rect
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
|
@ -13,6 +14,7 @@ import android.widget.EditText
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.annotation.PluralsRes
|
import androidx.annotation.PluralsRes
|
||||||
|
import androidx.core.view.ViewCompat
|
||||||
import androidx.core.view.doOnNextLayout
|
import androidx.core.view.doOnNextLayout
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
|
@ -95,6 +97,9 @@ class MultiselectForwardFragment :
|
||||||
private val isSelectionOnly: Boolean
|
private val isSelectionOnly: Boolean
|
||||||
get() = requireArguments().getBoolean(ARG_FORCE_SELECTION_ONLY, false)
|
get() = requireArguments().getBoolean(ARG_FORCE_SELECTION_ONLY, false)
|
||||||
|
|
||||||
|
private val sendButtonTint: Int
|
||||||
|
get() = requireArguments().getInt(ARG_SEND_BUTTON_TINT, -1)
|
||||||
|
|
||||||
override fun onGetLayoutInflater(savedInstanceState: Bundle?): LayoutInflater {
|
override fun onGetLayoutInflater(savedInstanceState: Bundle?): LayoutInflater {
|
||||||
return if (parentFragment != null) {
|
return if (parentFragment != null) {
|
||||||
requireParentFragment().onGetLayoutInflater(savedInstanceState)
|
requireParentFragment().onGetLayoutInflater(savedInstanceState)
|
||||||
|
@ -135,6 +140,10 @@ class MultiselectForwardFragment :
|
||||||
val sendButton: View = bottomBar.findViewById(R.id.share_confirm)
|
val sendButton: View = bottomBar.findViewById(R.id.share_confirm)
|
||||||
val backgroundHelper: View = bottomBar.findViewById(R.id.background_helper)
|
val backgroundHelper: View = bottomBar.findViewById(R.id.background_helper)
|
||||||
|
|
||||||
|
if (sendButtonTint != -1) {
|
||||||
|
ViewCompat.setBackgroundTintList(sendButton, ColorStateList.valueOf(sendButtonTint))
|
||||||
|
}
|
||||||
|
|
||||||
FullscreenHelper.configureBottomBarLayout(requireActivity(), bottomBarSpacer, bottomBar)
|
FullscreenHelper.configureBottomBarLayout(requireActivity(), bottomBarSpacer, bottomBar)
|
||||||
|
|
||||||
backgroundHelper.setBackgroundColor(callback.getDialogBackgroundColor())
|
backgroundHelper.setBackgroundColor(callback.getDialogBackgroundColor())
|
||||||
|
@ -439,6 +448,7 @@ class MultiselectForwardFragment :
|
||||||
const val ARG_FORCE_DISABLE_ADD_MESSAGE = "multiselect.forward.fragment.force.disable.add.message"
|
const val ARG_FORCE_DISABLE_ADD_MESSAGE = "multiselect.forward.fragment.force.disable.add.message"
|
||||||
const val ARG_FORCE_SELECTION_ONLY = "multiselect.forward.fragment.force.disable.add.message"
|
const val ARG_FORCE_SELECTION_ONLY = "multiselect.forward.fragment.force.disable.add.message"
|
||||||
const val ARG_SELECT_SINGLE_RECIPIENT = "multiselect.forward.framgent.select.single.recipient"
|
const val ARG_SELECT_SINGLE_RECIPIENT = "multiselect.forward.framgent.select.single.recipient"
|
||||||
|
const val ARG_SEND_BUTTON_TINT = "multiselect.forward.fragment.send.button.tint"
|
||||||
const val RESULT_KEY = "result_key"
|
const val RESULT_KEY = "result_key"
|
||||||
const val RESULT_SELECTION = "result_selection_recipients"
|
const val RESULT_SELECTION = "result_selection_recipients"
|
||||||
const val RESULT_SENT = "result_sent"
|
const val RESULT_SENT = "result_sent"
|
||||||
|
@ -478,6 +488,7 @@ class MultiselectForwardFragment :
|
||||||
putBoolean(ARG_FORCE_DISABLE_ADD_MESSAGE, multiselectForwardFragmentArgs.forceDisableAddMessage)
|
putBoolean(ARG_FORCE_DISABLE_ADD_MESSAGE, multiselectForwardFragmentArgs.forceDisableAddMessage)
|
||||||
putBoolean(ARG_FORCE_SELECTION_ONLY, multiselectForwardFragmentArgs.forceSelectionOnly)
|
putBoolean(ARG_FORCE_SELECTION_ONLY, multiselectForwardFragmentArgs.forceSelectionOnly)
|
||||||
putBoolean(ARG_SELECT_SINGLE_RECIPIENT, multiselectForwardFragmentArgs.selectSingleRecipient)
|
putBoolean(ARG_SELECT_SINGLE_RECIPIENT, multiselectForwardFragmentArgs.selectSingleRecipient)
|
||||||
|
putInt(ARG_SEND_BUTTON_TINT, multiselectForwardFragmentArgs.sendButtonTint)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.conversation.mutiselect.forward
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import androidx.annotation.ColorInt
|
||||||
import androidx.annotation.StringRes
|
import androidx.annotation.StringRes
|
||||||
import androidx.annotation.WorkerThread
|
import androidx.annotation.WorkerThread
|
||||||
import org.signal.core.util.StreamUtil
|
import org.signal.core.util.StreamUtil
|
||||||
|
@ -30,15 +31,18 @@ import java.util.function.Consumer
|
||||||
* @param forceSelectionOnly Force the fragment to only select recipients, never actually performing the send.
|
* @param forceSelectionOnly Force the fragment to only select recipients, never actually performing the send.
|
||||||
* @param selectSingleRecipient Only allow the selection of a single recipient.
|
* @param selectSingleRecipient Only allow the selection of a single recipient.
|
||||||
*/
|
*/
|
||||||
class MultiselectForwardFragmentArgs @JvmOverloads constructor(
|
data class MultiselectForwardFragmentArgs @JvmOverloads constructor(
|
||||||
val canSendToNonPush: Boolean,
|
val canSendToNonPush: Boolean,
|
||||||
val multiShareArgs: List<MultiShareArgs> = listOf(),
|
val multiShareArgs: List<MultiShareArgs> = listOf(),
|
||||||
@StringRes val title: Int = R.string.MultiselectForwardFragment__forward_to,
|
@StringRes val title: Int = R.string.MultiselectForwardFragment__forward_to,
|
||||||
val forceDisableAddMessage: Boolean = false,
|
val forceDisableAddMessage: Boolean = false,
|
||||||
val forceSelectionOnly: Boolean = false,
|
val forceSelectionOnly: Boolean = false,
|
||||||
val selectSingleRecipient: Boolean = false
|
val selectSingleRecipient: Boolean = false,
|
||||||
|
@ColorInt val sendButtonTint: Int = -1
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
fun withSendButtonTint(@ColorInt sendButtonTint: Int) = copy(sendButtonTint = sendButtonTint)
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun create(context: Context, mediaUri: Uri, mediaType: String, consumer: Consumer<MultiselectForwardFragmentArgs>) {
|
fun create(context: Context, mediaUri: Uri, mediaType: String, consumer: Consumer<MultiselectForwardFragmentArgs>) {
|
||||||
|
|
|
@ -4,6 +4,8 @@ import android.Manifest;
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.res.ColorStateList;
|
||||||
|
import android.graphics.Color;
|
||||||
import android.location.Address;
|
import android.location.Address;
|
||||||
import android.location.Geocoder;
|
import android.location.Geocoder;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
|
@ -12,10 +14,12 @@ import android.os.Bundle;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.animation.OvershootInterpolator;
|
import android.view.animation.OvershootInterpolator;
|
||||||
|
|
||||||
|
import androidx.annotation.ColorInt;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
|
import androidx.core.view.ViewCompat;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
import com.google.android.gms.maps.CameraUpdateFactory;
|
import com.google.android.gms.maps.CameraUpdateFactory;
|
||||||
|
@ -46,6 +50,7 @@ public final class PlacePickerActivity extends AppCompatActivity {
|
||||||
|
|
||||||
private static final int ANIMATION_DURATION = 250;
|
private static final int ANIMATION_DURATION = 250;
|
||||||
private static final OvershootInterpolator OVERSHOOT_INTERPOLATOR = new OvershootInterpolator();
|
private static final OvershootInterpolator OVERSHOOT_INTERPOLATOR = new OvershootInterpolator();
|
||||||
|
private static final String KEY_CHAT_COLOR = "chat_color";
|
||||||
|
|
||||||
private SingleAddressBottomSheet bottomSheet;
|
private SingleAddressBottomSheet bottomSheet;
|
||||||
private Address currentAddress;
|
private Address currentAddress;
|
||||||
|
@ -54,8 +59,8 @@ public final class PlacePickerActivity extends AppCompatActivity {
|
||||||
private AddressLookup addressLookup;
|
private AddressLookup addressLookup;
|
||||||
private GoogleMap googleMap;
|
private GoogleMap googleMap;
|
||||||
|
|
||||||
public static void startActivityForResultAtCurrentLocation(@NonNull Fragment fragment, int requestCode) {
|
public static void startActivityForResultAtCurrentLocation(@NonNull Fragment fragment, int requestCode, @ColorInt int chatColor) {
|
||||||
fragment.startActivityForResult(new Intent(fragment.requireActivity(), PlacePickerActivity.class), requestCode);
|
fragment.startActivityForResult(new Intent(fragment.requireActivity(), PlacePickerActivity.class).putExtra(KEY_CHAT_COLOR, chatColor), requestCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AddressData addressFromData(@NonNull Intent data) {
|
public static AddressData addressFromData(@NonNull Intent data) {
|
||||||
|
@ -71,9 +76,9 @@ public final class PlacePickerActivity extends AppCompatActivity {
|
||||||
View markerImage = findViewById(R.id.marker_image_view);
|
View markerImage = findViewById(R.id.marker_image_view);
|
||||||
View fab = findViewById(R.id.place_chosen_button);
|
View fab = findViewById(R.id.place_chosen_button);
|
||||||
|
|
||||||
|
ViewCompat.setBackgroundTintList(fab, ColorStateList.valueOf(getIntent().getIntExtra(KEY_CHAT_COLOR, Color.RED)));
|
||||||
fab.setOnClickListener(v -> finishWithAddress());
|
fab.setOnClickListener(v -> finishWithAddress());
|
||||||
|
|
||||||
|
|
||||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED ||
|
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED ||
|
||||||
ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED)
|
ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED)
|
||||||
{
|
{
|
||||||
|
|
|
@ -33,6 +33,7 @@ import android.util.Pair;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import androidx.annotation.ColorInt;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
|
@ -395,12 +396,12 @@ public class AttachmentManager {
|
||||||
.execute();
|
.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void selectLocation(Fragment fragment, int requestCode) {
|
public static void selectLocation(Fragment fragment, int requestCode, @ColorInt int chatColor) {
|
||||||
Permissions.with(fragment)
|
Permissions.with(fragment)
|
||||||
.request(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION)
|
.request(Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION)
|
||||||
.ifNecessary()
|
.ifNecessary()
|
||||||
.withPermanentDenialDialog(fragment.getString(R.string.AttachmentManager_signal_requires_location_information_in_order_to_attach_a_location))
|
.withPermanentDenialDialog(fragment.getString(R.string.AttachmentManager_signal_requires_location_information_in_order_to_attach_a_location))
|
||||||
.onAllGranted(() -> PlacePickerActivity.startActivityForResultAtCurrentLocation(fragment, requestCode))
|
.onAllGranted(() -> PlacePickerActivity.startActivityForResultAtCurrentLocation(fragment, requestCode, chatColor))
|
||||||
.execute();
|
.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,23 +1,27 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<FrameLayout 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_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent">
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/contact_share_edit_list"
|
android:id="@+id/contact_share_edit_list"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:paddingBottom="80dp"
|
android:clipToPadding="false"
|
||||||
android:clipToPadding="false"/>
|
android:paddingBottom="80dp" />
|
||||||
|
|
||||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
<ImageView
|
||||||
android:id="@+id/contact_share_edit_send"
|
android:id="@+id/contact_share_edit_send"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="40dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="40dp"
|
||||||
android:layout_gravity="end|bottom"
|
android:layout_gravity="end|bottom"
|
||||||
android:tint="@color/white"
|
android:layout_margin="@dimen/floating_action_button_margin"
|
||||||
|
android:background="@drawable/circle_tintable"
|
||||||
|
android:contentDescription="@string/conversation_activity__send"
|
||||||
|
android:scaleType="centerInside"
|
||||||
|
app:backgroundTint="@color/signal_colorPrimary"
|
||||||
app:srcCompat="@drawable/ic_send_lock_24"
|
app:srcCompat="@drawable/ic_send_lock_24"
|
||||||
android:layout_margin="@dimen/floating_action_button_margin"/>
|
app:tint="@color/white" />
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
|
@ -6,21 +6,6 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_gravity="bottom">
|
android:layout_gravity="bottom">
|
||||||
|
|
||||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
|
||||||
android:id="@+id/place_chosen_button"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_margin="16dp"
|
|
||||||
android:contentDescription="@string/PlacePickerActivity_accept_address"
|
|
||||||
android:scaleType="center"
|
|
||||||
android:tint="@color/white"
|
|
||||||
app:backgroundTint="?attr/colorPrimary"
|
|
||||||
app:elevation="3dp"
|
|
||||||
app:fabSize="normal"
|
|
||||||
app:layout_anchor="@id/root_bottom_sheet"
|
|
||||||
app:layout_anchorGravity="top|end"
|
|
||||||
app:srcCompat="@drawable/ic_check_24" />
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/root_bottom_sheet"
|
android:id="@+id/root_bottom_sheet"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -31,8 +16,8 @@
|
||||||
<ImageView
|
<ImageView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="3dp"
|
android:layout_height="3dp"
|
||||||
android:scaleType="fitXY"
|
android:background="@drawable/compose_divider_background"
|
||||||
android:background="@drawable/compose_divider_background"/>
|
android:scaleType="fitXY" />
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -48,35 +33,34 @@
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/text_view_place_name"
|
android:id="@+id/text_view_place_name"
|
||||||
|
style="@style/Signal.Text.TitleSmall"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
android:layout_marginTop="18dp"
|
android:layout_marginTop="16dp"
|
||||||
android:layout_marginEnd="16dp"
|
android:layout_marginEnd="70dp"
|
||||||
style="@style/Signal.Text.Body"
|
|
||||||
android:fontFamily="sans-serif-medium"
|
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
|
android:fontFamily="sans-serif-medium"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:textColor="@color/signal_text_primary"
|
android:textColor="@color/signal_text_primary"
|
||||||
tools:text="Short address" />
|
tools:text="Short address" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/text_view_place_address"
|
android:id="@+id/text_view_place_address"
|
||||||
|
style="@style/Signal.Text.BodyMedium"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="16dp"
|
android:layout_marginStart="16dp"
|
||||||
android:layout_marginTop="8dp"
|
android:layout_marginEnd="70dp"
|
||||||
android:layout_marginEnd="16dp"
|
|
||||||
style="@style/Signal.Text.Preview"
|
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:textColor="@color/signal_text_secondary"
|
android:textColor="@color/signal_text_secondary"
|
||||||
tools:text="Precise address" />
|
tools:text="Precise address" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<ProgressBar
|
<com.google.android.material.progressindicator.CircularProgressIndicator
|
||||||
android:id="@+id/progress_bar_place"
|
android:id="@+id/progress_bar_place"
|
||||||
style="?android:attr/progressBarStyle"
|
style="?circularProgressIndicatorStyle"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
|
@ -88,4 +72,20 @@
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/place_chosen_button"
|
||||||
|
android:layout_width="40dp"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
android:layout_margin="16dp"
|
||||||
|
android:background="@drawable/circle_tintable"
|
||||||
|
android:contentDescription="@string/PlacePickerActivity_accept_address"
|
||||||
|
android:scaleType="center"
|
||||||
|
app:backgroundTint="?attr/colorPrimary"
|
||||||
|
app:elevation="0dp"
|
||||||
|
app:fabSize="normal"
|
||||||
|
app:layout_anchor="@id/root_bottom_sheet"
|
||||||
|
app:layout_anchorGravity="center_vertical|end"
|
||||||
|
app:srcCompat="@drawable/ic_check_24"
|
||||||
|
app:tint="@color/white" />
|
||||||
|
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
|
@ -11,7 +11,7 @@
|
||||||
android:id="@+id/background_helper"
|
android:id="@+id/background_helper"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
app:layout_constraintBottom_toBottomOf="@id/selected_list"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="@id/selected_list" />
|
app:layout_constraintTop_toTopOf="@id/selected_list" />
|
||||||
|
@ -21,8 +21,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1dp"
|
android:layout_height="1dp"
|
||||||
android:background="@color/signal_divider_major"
|
android:background="@color/signal_divider_major"
|
||||||
app:layout_constraintBottom_toBottomOf="@id/share_confirm_frame"
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
app:layout_constraintTop_toTopOf="@id/share_confirm_frame" />
|
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/selected_list"
|
android:id="@+id/selected_list"
|
||||||
|
@ -41,45 +40,48 @@
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/add_message_wrapper"
|
android:id="@+id/add_message_wrapper"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@color/signal_colorSurface1"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/share_confirm_frame"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/selected_list">
|
app:layout_constraintTop_toBottomOf="@id/selected_list">
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.components.emoji.EmojiEditText
|
<org.thoughtcrime.securesms.components.emoji.EmojiEditText
|
||||||
android:id="@+id/add_message"
|
android:id="@+id/add_message"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="@dimen/dsl_settings_gutter"
|
android:layout_marginStart="16dp"
|
||||||
android:layout_marginEnd="@dimen/dsl_settings_gutter"
|
android:layout_marginEnd="8dp"
|
||||||
android:layout_marginBottom="8dp"
|
android:layout_marginBottom="8dp"
|
||||||
android:background="@drawable/rounded_rectangle_surface_variant"
|
android:background="@drawable/rounded_rectangle_surface_variant"
|
||||||
android:hint="@string/MultiselectForwardFragment__add_a_message"
|
android:hint="@string/MultiselectForwardFragment__add_a_message"
|
||||||
android:textColorHint="@color/signal_colorOnSurfaceVariant"
|
|
||||||
android:inputType="textCapSentences"
|
android:inputType="textCapSentences"
|
||||||
android:minHeight="44dp"
|
android:minHeight="44dp"
|
||||||
android:paddingStart="16dp"
|
android:paddingStart="16dp"
|
||||||
android:paddingEnd="16dp"
|
android:paddingEnd="16dp"
|
||||||
android:textAppearance="@style/Signal.Text.Body" />
|
android:textAppearance="@style/Signal.Text.Body"
|
||||||
|
android:textColorHint="@color/signal_colorOnSurfaceVariant" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/share_confirm_frame"
|
android:id="@+id/share_confirm_frame"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="2dp"
|
||||||
android:clipChildren="false"
|
android:clipChildren="false"
|
||||||
android:clipToPadding="false"
|
android:clipToPadding="false"
|
||||||
android:padding="16dp"
|
android:padding="8dp"
|
||||||
app:layout_constraintBottom_toBottomOf="@id/divider"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent">
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
|
||||||
|
|
||||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
<ImageView
|
||||||
android:id="@+id/share_confirm"
|
android:id="@+id/share_confirm"
|
||||||
android:layout_width="56dp"
|
android:layout_width="40dp"
|
||||||
android:layout_height="56dp"
|
android:layout_height="40dp"
|
||||||
|
android:background="@drawable/circle_tintable"
|
||||||
android:contentDescription="@string/ShareActivity__share"
|
android:contentDescription="@string/ShareActivity__share"
|
||||||
|
android:scaleType="centerInside"
|
||||||
app:backgroundTint="@color/signal_accent_primary"
|
app:backgroundTint="@color/signal_accent_primary"
|
||||||
app:srcCompat="@drawable/ic_send_24" />
|
app:srcCompat="@drawable/ic_send_24" />
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue