transport selection refactor

Closes #1724
// FREEBIE
This commit is contained in:
Jake McGinty
2014-07-18 19:31:03 -07:00
parent 4a088410ae
commit 30232c1635
13 changed files with 446 additions and 96 deletions

View File

@@ -0,0 +1,90 @@
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;
public class SendButton extends ImageButton {
private TransportOptions transportOptions;
private EditText composeText;
@SuppressWarnings("unused")
public SendButton(Context context) {
super(context);
initialize();
}
@SuppressWarnings("unused")
public SendButton(Context context, AttributeSet attrs) {
super(context, attrs);
initialize();
}
@SuppressWarnings("unused")
public SendButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initialize();
}
private void initialize() {
transportOptions = new TransportOptions(getContext());
transportOptions.setOnTransportChangedListener(new OnTransportChangedListener() {
@Override
public void onChange(TransportOption newTransport) {
setImageResource(newTransport.drawable);
setContentDescription(newTransport.composeHint);
if (composeText != null) setComposeTextHint(newTransport.composeHint);
}
});
setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
if (transportOptions.getEnabledTransports().size() > 1) {
transportOptions.showPopup(SendButton.this);
return true;
}
return false;
}
});
}
public void setComposeTextView(EditText composeText) {
this.composeText = composeText;
}
public TransportOption getSelectedTransport() {
return transportOptions.getSelectedTransport();
}
public void initializeAvailableTransports(boolean isMediaMessage) {
transportOptions.initializeAvailableTransports(isMediaMessage);
}
public void disableTransport(String transport) {
transportOptions.disableTransport(transport);
}
public void setDefaultTransport(String transport) {
transportOptions.setDefaultTransport(transport);
}
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);
}
}
}