mirror of
https://github.com/oxen-io/session-android.git
synced 2025-10-24 16:00:02 +00:00
Remove encrypted SMS transport, simplify transport options.
Closes #2647 // FREEBIE
This commit is contained in:
36
src/org/thoughtcrime/securesms/components/ComposeText.java
Normal file
36
src/org/thoughtcrime/securesms/components/ComposeText.java
Normal file
@@ -0,0 +1,36 @@
|
||||
package org.thoughtcrime.securesms.components;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableString;
|
||||
import android.text.style.RelativeSizeSpan;
|
||||
import android.util.AttributeSet;
|
||||
import android.widget.EditText;
|
||||
|
||||
public class ComposeText extends EditText {
|
||||
public ComposeText(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public ComposeText(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public ComposeText(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
public ComposeText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
}
|
||||
|
||||
public void setHint(@NonNull String hint) {
|
||||
SpannableString span = new SpannableString(hint);
|
||||
span.setSpan(new RelativeSizeSpan(0.8f), 0, hint.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
|
||||
super.setHint(span);
|
||||
}
|
||||
}
|
||||
@@ -1,65 +0,0 @@
|
||||
package org.thoughtcrime.securesms.components;
|
||||
|
||||
import android.content.Context;
|
||||
import android.preference.DialogPreference;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.widget.CheckBox;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||
|
||||
public class OutgoingSmsPreference extends DialogPreference {
|
||||
private CheckBox dataUsers;
|
||||
private CheckBox askForFallback;
|
||||
private CheckBox neverFallbackMms;
|
||||
private CheckBox nonDataUsers;
|
||||
|
||||
|
||||
public OutgoingSmsPreference(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
setPersistent(false);
|
||||
setDialogLayoutResource(R.layout.outgoing_sms_preference);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onBindDialogView(final View view) {
|
||||
super.onBindDialogView(view);
|
||||
dataUsers = (CheckBox) view.findViewById(R.id.data_users);
|
||||
askForFallback = (CheckBox) view.findViewById(R.id.ask_before_fallback_data);
|
||||
neverFallbackMms = (CheckBox) view.findViewById(R.id.never_send_mms);
|
||||
nonDataUsers = (CheckBox) view.findViewById(R.id.non_data_users);
|
||||
|
||||
dataUsers.setChecked(TextSecurePreferences.isFallbackSmsAllowed(getContext()));
|
||||
askForFallback.setChecked(TextSecurePreferences.isFallbackSmsAskRequired(getContext()));
|
||||
neverFallbackMms.setChecked(!TextSecurePreferences.isFallbackMmsEnabled(getContext()));
|
||||
nonDataUsers.setChecked(TextSecurePreferences.isDirectSmsAllowed(getContext()));
|
||||
|
||||
dataUsers.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
updateEnabledViews();
|
||||
}
|
||||
});
|
||||
|
||||
updateEnabledViews();
|
||||
}
|
||||
|
||||
private void updateEnabledViews() {
|
||||
askForFallback.setEnabled(dataUsers.isChecked());
|
||||
neverFallbackMms.setEnabled(dataUsers.isChecked());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDialogClosed(boolean positiveResult) {
|
||||
super.onDialogClosed(positiveResult);
|
||||
|
||||
if (positiveResult) {
|
||||
TextSecurePreferences.setFallbackSmsAllowed(getContext(), dataUsers.isChecked());
|
||||
TextSecurePreferences.setFallbackSmsAskRequired(getContext(), askForFallback.isChecked());
|
||||
TextSecurePreferences.setDirectSmsAllowed(getContext(), nonDataUsers.isChecked());
|
||||
TextSecurePreferences.setFallbackMmsEnabled(getContext(), !neverFallbackMms.isChecked());
|
||||
if (getOnPreferenceChangeListener() != null) getOnPreferenceChangeListener().onPreferenceChange(this, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,6 @@ import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||
import org.thoughtcrime.securesms.crypto.MasterSecret;
|
||||
|
||||
public class PushRegistrationReminder extends Reminder {
|
||||
public static final long REMINDER_INTERVAL_MS = 3 * 24 * 60 * 60 * 1000;
|
||||
|
||||
public PushRegistrationReminder(final Context context, final MasterSecret masterSecret) {
|
||||
super(R.drawable.ic_push_registration_reminder,
|
||||
@@ -27,18 +26,16 @@ public class PushRegistrationReminder extends Reminder {
|
||||
context.startActivity(intent);
|
||||
}
|
||||
};
|
||||
final OnClickListener cancelListener = new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
TextSecurePreferences.setLastPushReminderTime(context, System.currentTimeMillis());
|
||||
}
|
||||
};
|
||||
|
||||
setOkListener(okListener);
|
||||
setCancelListener(cancelListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDismissable() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean isEligible(Context context) {
|
||||
return !TextSecurePreferences.isPushRegistered(context) &&
|
||||
(TextSecurePreferences.getLastPushReminderTime(context) + REMINDER_INTERVAL_MS < System.currentTimeMillis());
|
||||
return !TextSecurePreferences.isPushRegistered(context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,8 +55,9 @@ public class ReminderView extends LinearLayout {
|
||||
title.setText(reminder.getTitleResId());
|
||||
text.setText(reminder.getTextResId());
|
||||
|
||||
this.setOnClickListener(reminder.getOkListener());
|
||||
|
||||
if (reminder.isDismissable()) {
|
||||
this.setOnClickListener(reminder.getOkListener());
|
||||
cancel.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
@@ -64,10 +65,11 @@ public class ReminderView extends LinearLayout {
|
||||
if (reminder.getCancelListener() != null) reminder.getCancelListener().onClick(v);
|
||||
}
|
||||
});
|
||||
container.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
cancel.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
container.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
public void hide() {
|
||||
|
||||
@@ -1,94 +1,101 @@
|
||||
package org.thoughtcrime.securesms.components;
|
||||
|
||||
import android.content.Context;
|
||||
import android.text.Spannable;
|
||||
import android.text.SpannableString;
|
||||
import android.text.style.RelativeSizeSpan;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageButton;
|
||||
|
||||
import org.thoughtcrime.securesms.TransportOption;
|
||||
import org.thoughtcrime.securesms.TransportOptions;
|
||||
import org.thoughtcrime.securesms.TransportOptions.OnTransportChangedListener;
|
||||
import org.thoughtcrime.securesms.TransportOptionsPopup;
|
||||
|
||||
public class SendButton extends ImageButton {
|
||||
private TransportOptions transportOptions;
|
||||
private EditText composeText;
|
||||
public class SendButton extends ImageButton
|
||||
implements TransportOptions.OnTransportChangedListener,
|
||||
TransportOptionsPopup.SelectedListener,
|
||||
View.OnLongClickListener
|
||||
{
|
||||
|
||||
private final TransportOptions transportOptions;
|
||||
private final TransportOptionsPopup transportOptionsPopup;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public SendButton(Context context) {
|
||||
super(context);
|
||||
initialize();
|
||||
this.transportOptions = initializeTransportOptions(false);
|
||||
this.transportOptionsPopup = initializeTransportOptionsPopup();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public SendButton(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
initialize();
|
||||
this.transportOptions = initializeTransportOptions(false);
|
||||
this.transportOptionsPopup = initializeTransportOptionsPopup();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public SendButton(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs, defStyle);
|
||||
initialize();
|
||||
this.transportOptions = initializeTransportOptions(false);
|
||||
this.transportOptionsPopup = initializeTransportOptionsPopup();
|
||||
}
|
||||
|
||||
private void initialize() {
|
||||
transportOptions = new TransportOptions(getContext());
|
||||
transportOptions.addOnTransportChangedListener(new OnTransportChangedListener() {
|
||||
@Override
|
||||
public void onChange(TransportOption newTransport) {
|
||||
setImageResource(newTransport.drawable);
|
||||
setContentDescription(newTransport.composeHint);
|
||||
if (composeText != null) setComposeTextHint(newTransport.composeHint);
|
||||
}
|
||||
});
|
||||
private TransportOptions initializeTransportOptions(boolean media) {
|
||||
TransportOptions transportOptions = new TransportOptions(getContext(), media);
|
||||
transportOptions.addOnTransportChangedListener(this);
|
||||
|
||||
setOnLongClickListener(new OnLongClickListener() {
|
||||
@Override
|
||||
public boolean onLongClick(View view) {
|
||||
if (transportOptions.getEnabledTransports().size() > 1) {
|
||||
transportOptions.showPopup(SendButton.this);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
});
|
||||
setOnLongClickListener(this);
|
||||
|
||||
return transportOptions;
|
||||
}
|
||||
|
||||
private TransportOptionsPopup initializeTransportOptionsPopup() {
|
||||
return new TransportOptionsPopup(getContext(), this);
|
||||
}
|
||||
|
||||
public boolean isManualSelection() {
|
||||
return transportOptions.isManualSelection();
|
||||
}
|
||||
|
||||
public void addOnTransportChangedListener(OnTransportChangedListener listener) {
|
||||
transportOptions.addOnTransportChangedListener(listener);
|
||||
}
|
||||
|
||||
public void setComposeTextView(EditText composeText) {
|
||||
this.composeText = composeText;
|
||||
}
|
||||
|
||||
public TransportOption getSelectedTransport() {
|
||||
return transportOptions.getSelectedTransport();
|
||||
}
|
||||
|
||||
public void initializeAvailableTransports(boolean isMediaMessage) {
|
||||
transportOptions.initializeAvailableTransports(isMediaMessage);
|
||||
public void resetAvailableTransports(boolean isMediaMessage) {
|
||||
transportOptions.reset(isMediaMessage);
|
||||
}
|
||||
|
||||
public void disableTransport(String transport) {
|
||||
transportOptions.disableTransport(transport);
|
||||
public void disableTransport(TransportOption.Type type) {
|
||||
transportOptions.disableTransport(type);
|
||||
}
|
||||
|
||||
public void setDefaultTransport(String transport) {
|
||||
transportOptions.setDefaultTransport(transport);
|
||||
public void setDefaultTransport(TransportOption.Type type) {
|
||||
transportOptions.setDefaultTransport(type);
|
||||
}
|
||||
|
||||
private void setComposeTextHint(String hint) {
|
||||
if (hint == null) {
|
||||
this.composeText.setHint(null);
|
||||
} else {
|
||||
SpannableString span = new SpannableString(hint);
|
||||
span.setSpan(new RelativeSizeSpan(0.8f), 0, hint.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
|
||||
this.composeText.setHint(span);
|
||||
@Override
|
||||
public void onSelected(TransportOption option) {
|
||||
transportOptions.setSelectedTransport(option.getType());
|
||||
transportOptionsPopup.dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChange(TransportOption newTransport) {
|
||||
setImageResource(newTransport.getDrawable());
|
||||
setContentDescription(newTransport.getDescription());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
if (transportOptions.getEnabledTransports().size() > 1) {
|
||||
transportOptionsPopup.display(getContext(), SendButton.this, transportOptions.getEnabledTransports());
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user