adapt invite activity and some strings, tackles #28

This commit is contained in:
B. Petersen
2018-09-15 17:51:38 +02:00
parent a62146985d
commit 53a7fcf0bf
4 changed files with 9 additions and 194 deletions
+1 -1
View File
@@ -21,7 +21,7 @@
android:contentDescription="@string/email_address"
android:fontFamily="sans-serif"
android:gravity="center_vertical"
android:hint="@string/contact_selection_activity__enter_name_or_number"
android:hint="@string/contact_selection_activity__enter_name_or_email"
android:inputType="textPersonName"
android:textCursorDrawable="@null"
android:textSize="18sp" />
+1 -55
View File
@@ -27,7 +27,7 @@
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="20sp"
android:text="@string/InviteActivity_friends_dont_let_friends_text_unencrypted"
android:text="@string/InviteActivity_friends_dont_let_friends"
android:gravity="center_horizontal"
android:layout_marginBottom="30dp"
android:layout_marginTop="18dp"
@@ -64,62 +64,8 @@
android:layout_height="wrap_content"
tools:ignore="ButtonStyle" />
<Button android:id="@+id/sms_button"
android:drawableLeft="@drawable/ic_message_black_18dp"
android:drawableStart="@drawable/ic_message_black_18dp"
android:drawablePadding="10dp"
android:text="@string/InviteActivity_choose_contacts"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="ButtonStyle" />
</LinearLayout>
</LinearLayout>
</ScrollView>
<LinearLayout android:id="@+id/sms_send_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical"
android:visibility="gone">
<org.thoughtcrime.securesms.components.ContactFilterToolbar
android:id="@+id/contact_filter"
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="4dp"
android:theme="@style/TextSecure.LightActionBar" />
<fragment android:id="@+id/contact_selection_list_fragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:name="org.thoughtcrime.securesms.ContactSelectionListFragment"
tools:layout="@layout/contact_selection_list_fragment"/>
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:padding="10dp"
android:orientation="horizontal">
<Button android:id="@+id/cancel_sms_button"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/InviteActivity_cancel" />
<Button android:id="@+id/send_sms_button"
style="@style/Widget.AppCompat.Button.Borderless"
android:textColor="@color/signal_primary"
android:enabled="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Send to 0 friends"/>
</LinearLayout>
</LinearLayout>
</FrameLayout>
+3
View File
@@ -359,8 +359,10 @@
<item quantity="other">Send %d SMS invites?</item>
</plurals>
<string name="InviteActivity_lets_switch_to_signal">Let\'s switch to Delta Chat: %1$s</string>
<string name="InviteActivity_lets_switch_to_delta_chat">Let\'s switch to Delta Chat - %1$s - you can text me at %2$s</string>
<string name="InviteActivity_no_app_to_share_to">It looks like you don\'t have any apps to share to.</string>
<string name="InviteActivity_friends_dont_let_friends_text_unencrypted">Friends don\'t let friends chat unencrypted.</string>
<string name="InviteActivity_friends_dont_let_friends">Friends don\'t let friends locked in messaging silos.</string>
<!-- MessageDetailsRecipient -->
<string name="MessageDetailsRecipient_failed_to_send">Failed to send</string>
@@ -724,6 +726,7 @@
<!-- contact_selection_activity -->
<string name="contact_selection_activity__enter_name_or_number">Enter name or number</string>
<string name="contact_selection_activity__enter_name_or_email">Enter name or email address</string>
<!-- contact_selection_group_activity -->
<string name="contact_selection_group_activity__no_contacts">No contacts.</string>
@@ -26,6 +26,7 @@ import android.widget.Toast;
import org.thoughtcrime.securesms.components.ContactFilterToolbar;
import org.thoughtcrime.securesms.components.ContactFilterToolbar.OnFilterChangedListener;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.contacts.ContactsCursorLoader.DisplayMode;
import org.thoughtcrime.securesms.database.Address;
import org.thoughtcrime.securesms.database.DatabaseFactory;
@@ -38,12 +39,9 @@ import org.thoughtcrime.securesms.util.task.ProgressDialogAsyncTask;
import java.util.concurrent.ExecutionException;
public class InviteActivity extends PassphraseRequiredActionBarActivity implements ContactSelectionListFragment.OnContactSelectedListener {
public class InviteActivity extends PassphraseRequiredActionBarActivity {
private ContactSelectionListFragment contactsFragment;
private EditText inviteText;
private ViewGroup smsSendFrame;
private Button smsSendButton;
private Animation slideInAnimation;
private Animation slideOutAnimation;
private ImageView heart;
@@ -66,29 +64,17 @@ public class InviteActivity extends PassphraseRequiredActionBarActivity implemen
slideOutAnimation = loadAnimation(R.anim.slide_to_bottom);
View shareButton = ViewUtil.findById(this, R.id.share_button);
View smsButton = ViewUtil.findById(this, R.id.sms_button);
Button smsCancelButton = ViewUtil.findById(this, R.id.cancel_sms_button);
ContactFilterToolbar contactFilter = ViewUtil.findById(this, R.id.contact_filter);
inviteText = ViewUtil.findById(this, R.id.invite_text);
smsSendFrame = ViewUtil.findById(this, R.id.sms_send_frame);
smsSendButton = ViewUtil.findById(this, R.id.send_sms_button);
heart = ViewUtil.findById(this, R.id.heart);
contactsFragment = (ContactSelectionListFragment)getSupportFragmentManager().findFragmentById(R.id.contact_selection_list_fragment);
inviteText.setText(getString(R.string.InviteActivity_lets_switch_to_signal, "https://sgnl.link/1KpeYmF"));
updateSmsButtonText();
String selfMail = DcHelper.getContext(this).getConfig("addr", "");
inviteText.setText(getString(R.string.InviteActivity_lets_switch_to_delta_chat, "https://delta.chat", selfMail));
if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
heart.getViewTreeObserver().addOnPreDrawListener(new HeartPreDrawListener());
}
contactsFragment.setOnContactSelectedListener(this);
shareButton.setOnClickListener(new ShareClickListener());
smsButton.setOnClickListener(new SmsClickListener());
smsCancelButton.setOnClickListener(new SmsCancelClickListener());
smsSendButton.setOnClickListener(new SmsSendClickListener());
contactFilter.setOnFilterChangedListener(new ContactFilterChangedListener());
contactFilter.setNavigationIcon(R.drawable.ic_search_white_24dp);
}
private Animation loadAnimation(@AnimRes int animResId) {
@@ -97,44 +83,6 @@ public class InviteActivity extends PassphraseRequiredActionBarActivity implemen
return animation;
}
@Override
public void onContactSelected(String number) {
updateSmsButtonText();
}
@Override
public void onContactDeselected(String number) {
updateSmsButtonText();
}
private void sendSmsInvites() {
new SendSmsInvitesAsyncTask(this, inviteText.getText().toString())
.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
contactsFragment.getSelectedContacts()
.toArray(new String[contactsFragment.getSelectedContacts().size()]));
}
private void updateSmsButtonText() {
smsSendButton.setText(getResources().getQuantityString(R.plurals.InviteActivity_send_sms_to_friends,
contactsFragment.getSelectedContacts().size(),
contactsFragment.getSelectedContacts().size()));
smsSendButton.setEnabled(!contactsFragment.getSelectedContacts().isEmpty());
}
@Override public void onBackPressed() {
if (smsSendFrame.getVisibility() == View.VISIBLE) {
cancelSmsSelection();
} else {
super.onBackPressed();
}
}
private void cancelSmsSelection() {
contactsFragment.reset();
updateSmsButtonText();
ViewUtil.animateOut(smsSendFrame, slideOutAnimation, View.GONE);
}
private class ShareClickListener implements OnClickListener {
@Override
public void onClick(View v) {
@@ -150,41 +98,6 @@ public class InviteActivity extends PassphraseRequiredActionBarActivity implemen
}
}
private class SmsClickListener implements OnClickListener {
@Override
public void onClick(View v) {
ViewUtil.animateIn(smsSendFrame, slideInAnimation);
}
}
private class SmsCancelClickListener implements OnClickListener {
@Override
public void onClick(View v) {
cancelSmsSelection();
}
}
private class SmsSendClickListener implements OnClickListener {
@Override
public void onClick(View v) {
new AlertDialog.Builder(InviteActivity.this)
.setTitle(getResources().getQuantityString(R.plurals.InviteActivity_send_sms_invites,
contactsFragment.getSelectedContacts().size(),
contactsFragment.getSelectedContacts().size()))
.setMessage(inviteText.getText().toString())
.setPositiveButton(R.string.yes, (dialog, which) -> sendSmsInvites())
.setNegativeButton(R.string.no, (dialog, which) -> dialog.dismiss())
.show();
}
}
private class ContactFilterChangedListener implements OnFilterChangedListener {
@Override
public void onFilterChanged(String filter) {
contactsFragment.setQueryFilter(filter);
}
}
private class HeartPreDrawListener implements OnPreDrawListener {
@Override
@TargetApi(VERSION_CODES.LOLLIPOP)
@@ -201,51 +114,4 @@ public class InviteActivity extends PassphraseRequiredActionBarActivity implemen
return false;
}
}
@SuppressLint("StaticFieldLeak")
private class SendSmsInvitesAsyncTask extends ProgressDialogAsyncTask<String,Void,Void> {
private final String message;
SendSmsInvitesAsyncTask(Context context, String message) {
super(context, R.string.InviteActivity_sending, R.string.InviteActivity_sending);
this.message = message;
}
@Override
protected Void doInBackground(String... numbers) {
final Context context = getContext();
if (context == null) return null;
for (String number : numbers) {
Recipient recipient = Recipient.from(context, Address.fromExternal(context, number), false);
int subscriptionId = recipient.getDefaultSubscriptionId().or(-1);
MessageSender.send(context, new OutgoingTextMessage(recipient, message, subscriptionId), -1L, true, null);
if (recipient.getContactUri() != null) {
DatabaseFactory.getRecipientDatabase(context).setSeenInviteReminder(recipient, true);
}
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
final Context context = getContext();
if (context == null) return;
ViewUtil.animateOut(smsSendFrame, slideOutAnimation, View.GONE).addListener(new Listener<Boolean>() {
@Override
public void onSuccess(Boolean result) {
contactsFragment.reset();
}
@Override
public void onFailure(ExecutionException e) {}
});
Toast.makeText(context, R.string.InviteActivity_invitations_sent, Toast.LENGTH_LONG).show();
}
}
}